class DefaultPrivacyController implements PrivacyController {

  @Override
  public String sendTransaction(
      final PrivateTransaction privateTransaction,
      final String enclavePublicKey,
      final Optional<PrivacyGroup> maybePrivacyGroup) {
    try {
      LOG.trace("Storing private transaction in enclave");
      final SendResponse sendResponse =
          sendRequest(privateTransaction, enclavePublicKey, maybePrivacyGroup);
      return sendResponse.getKey();
    } catch (final Exception e) {
      LOG.error("Failed to store private transaction in enclave", e);
      throw e;
    }
  }

  public  DefaultPrivacyController(
      final Blockchain blockchain,
      final PrivacyParameters privacyParameters,
      final Optional<BigInteger> chainId,
      final PrivateMarkerTransactionFactory privateMarkerTransactionFactory,
      final PrivateTransactionSimulator privateTransactionSimulator,
      final PrivateNonceProvider privateNonceProvider,
      final PrivateWorldStateReader privateWorldStateReader);
  public  DefaultPrivacyController(
      final Blockchain blockchain,
      final PrivateStateStorage privateStateStorage,
      final Enclave enclave,
      final PrivateTransactionValidator privateTransactionValidator,
      final PrivateMarkerTransactionFactory privateMarkerTransactionFactory,
      final PrivateTransactionSimulator privateTransactionSimulator,
      final PrivateNonceProvider privateNonceProvider,
      final PrivateWorldStateReader privateWorldStateReader,
      final PrivateStateRootResolver privateStateRootResolver);

}