// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TPM_MANAGER_COMMON_TPM_NVRAM_INTERFACE_H_
#define TPM_MANAGER_COMMON_TPM_NVRAM_INTERFACE_H_

#include <base/callback.h>

#include <tpm_manager/proto_bindings/tpm_manager.pb.h>

#include "tpm_manager/common/export.h"

namespace tpm_manager {

// The command interface for working with TPM NVRAM. Inherited by both IPC proxy
// and service classes. All methods are asynchronous because all TPM operations
// may take a long time to finish.
class TPM_MANAGER_EXPORT TpmNvramInterface {
 public:
  virtual ~TpmNvramInterface() = default;

  // Processes a DefineSpaceRequest and responds with a DefineSpaceReply.
  using DefineSpaceCallback = base::Callback<void(const DefineSpaceReply&)>;
  virtual void DefineSpace(const DefineSpaceRequest& request,
                           const DefineSpaceCallback& callback) = 0;

  // Processes a DestroySpaceRequest and responds with a DestroySpaceReply.
  using DestroySpaceCallback = base::Callback<void(const DestroySpaceReply&)>;
  virtual void DestroySpace(const DestroySpaceRequest& request,
                            const DestroySpaceCallback& callback) = 0;

  // Processes a WriteSpaceRequest and responds with a WriteSpaceReply.
  using WriteSpaceCallback = base::Callback<void(const WriteSpaceReply&)>;
  virtual void WriteSpace(const WriteSpaceRequest& request,
                          const WriteSpaceCallback& callback) = 0;

  // Processes a ReadSpaceRequest and responds with a ReadSpaceReply.
  using ReadSpaceCallback = base::Callback<void(const ReadSpaceReply&)>;
  virtual void ReadSpace(const ReadSpaceRequest& request,
                         const ReadSpaceCallback& callback) = 0;

  // Processes a LockSpaceRequest and responds with a LockSpaceReply.
  using LockSpaceCallback = base::Callback<void(const LockSpaceReply&)>;
  virtual void LockSpace(const LockSpaceRequest& request,
                         const LockSpaceCallback& callback) = 0;

  // Processes a ListSpacesRequest and responds with a ListSpacesReply.
  using ListSpacesCallback = base::Callback<void(const ListSpacesReply&)>;
  virtual void ListSpaces(const ListSpacesRequest& request,
                          const ListSpacesCallback& callback) = 0;

  // Processes a GetSpaceInfoRequest and responds with a GetSpaceInfoReply.
  using GetSpaceInfoCallback = base::Callback<void(const GetSpaceInfoReply&)>;
  virtual void GetSpaceInfo(const GetSpaceInfoRequest& request,
                            const GetSpaceInfoCallback& callback) = 0;
};

}  // namespace tpm_manager

#endif  // TPM_MANAGER_COMMON_TPM_NVRAM_INTERFACE_H_
