namespace google {
namespace cloud {
namespace vpcaccess {
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN

class VpcAccessServiceConnectionIdempotencyPolicy {
 public:
  virtual ~VpcAccessServiceConnectionIdempotencyPolicy();

  /// Create a new copy of this object.
  virtual std::unique_ptr<VpcAccessServiceConnectionIdempotencyPolicy> clone()
      const;

  virtual google::cloud::Idempotency CreateConnector(
      google::cloud::vpcaccess::v1::CreateConnectorRequest const& request);

  virtual google::cloud::Idempotency GetConnector(
      google::cloud::vpcaccess::v1::GetConnectorRequest const& request);

  virtual google::cloud::Idempotency ListConnectors(
      google::cloud::vpcaccess::v1::ListConnectorsRequest request);

  virtual google::cloud::Idempotency DeleteConnector(
      google::cloud::vpcaccess::v1::DeleteConnectorRequest const& request);
};

std::unique_ptr<VpcAccessServiceConnectionIdempotencyPolicy>
MakeDefaultVpcAccessServiceConnectionIdempotencyPolicy();

GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
}  // namespace vpcaccess
}  // namespace cloud
}  // namespace google

#endif  // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_VPCACCESS_VPC_ACCESS_CONNECTION_IDEMPOTENCY_POLICY_H
