/*
 * Copyright 2019 ConsenSys AG.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */
package tech.pegasys.pantheon.tests.acceptance.dsl.privacy;

import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.eea.EeaSendRawTransactionTransaction;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv.PrivCreatePrivacyGroupTransaction;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv.PrivCreatePrivacyGroupWithoutOptionalParamsTransaction;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv.PrivFindPrivacyGroupTransaction;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv.PrivGetTransactionCountTransaction;

import java.util.List;

public class PrivateTransactions {

  public PrivateTransactions() {}

  public EeaSendRawTransactionTransaction deployPrivateSmartContract(
      final String signedRawPrivateTransaction) {
    return new EeaSendRawTransactionTransaction(signedRawPrivateTransaction);
  }

  public EeaSendRawTransactionTransaction createPrivateRawTransaction(
      final String signedRawPrivateTransaction) {
    return new EeaSendRawTransactionTransaction(signedRawPrivateTransaction);
  }

  public PrivGetTransactionCountTransaction getTransactionCount(
      final String address, final String privacyGroupId) {
    return new PrivGetTransactionCountTransaction(address, privacyGroupId);
  }

  public PrivCreatePrivacyGroupTransaction createPrivacyGroup(
      final List<String> addresses, final String name, final String description) {
    return new PrivCreatePrivacyGroupTransaction(addresses, name, description);
  }

  public PrivCreatePrivacyGroupWithoutOptionalParamsTransaction
      createPrivacyGroupWithoutOptionalParams(final List<String> addresses) {
    return new PrivCreatePrivacyGroupWithoutOptionalParamsTransaction(addresses);
  }

  public PrivFindPrivacyGroupTransaction findPrivacyGroup(final List<String> addresses) {
    return new PrivFindPrivacyGroupTransaction(addresses);
  }
}
