package io.emax.cosigner.ethereum.token.gethrpc.tokencontract;
import io.emax.cosigner.ethereum.core.gethrpc.EthereumRpc;
import io.emax.cosigner.ethereum.token.TokenConfiguration;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
public interface TokenContractParametersInterface {
String FUNCTION = "function";
String NONCE = "nonce";
String SENDER = "sender";
String RECIPIENTS = "recipients";
String AMOUNT = "amount";
String PARAM = "param";
String SIGV = "sigV";
String SIGR = "sigR";
String SIGS = "sigS";
Long getNonce(EthereumRpc ethereumRpc, String contractAddress);
String calculateAdminHash(EthereumRpc ethereumRpc, String contractAddress);
String calculateAdminHash(EthereumRpc ethereumRpc, String contractAddress, Long nonce);
String calculateTxHash(EthereumRpc ethereumRpc, String contractAddress,
List<String> recipients, List<String> amounts);
String calculateTxHash(Long nonce, List<String> recipients, List<String> amounts);
String createAdminContract(String adminAddress, List<String> ownerAddresses,
int numSignaturesRequired);
String createAdminContract(String adminAddress, List<String> ownerAddresses,
int numSignaturesRequired, long securityValue);
String createTokenContract(String parentAddress);
String createTokenContract(String parentAddress, String name, String symbol, int decimals);
String createStorageContract(TokenConfiguration config, String tokenContract, String adminAddress,
List<String> ownerAddresses, int numSignaturesRequired);
String createStorageContract(TokenConfiguration config, String tokenContract, String adminAddress,
List<String> ownerAddresses, int numSignaturesRequired, long securityValue, String name,
String symbol, int decimals);
String setTokenChild(long nonce, String childAddress, List<String> sigV, List<String> sigR,
List<String> sigS);
String createTokens(long nonce, String recipient, long numTokens, List<String> sigV,
List<String> sigR, List<String> sigS);
String destroyTokens(long nonce, String sender, long numTokens, List<String> sigV,
List<String> sigR, List<String> sigS);
String reconcile(long nonce, Map<String, BigInteger> addressChanges, List<String> sigV,
List<String> sigR, List<String> sigS);
String getBalance(String address);
String getTotalBalance();
String deposit(TokenConfiguration config, String recipient, BigInteger amount);
String tokenTransfer(String recipient, BigInteger amount);
String transfer(long nonce, String sender, List<String> recipients, List<BigInteger> amount,
List<String> sigV, List<String> sigR, List<String> sigS);
String approve(String grantee, BigInteger amount);
String allowance(String owner, String grantee);
Map<String, List<String>> parseTransfer(String bytecode);
Map<String, List<String>> parseAdminFunction(String bytecode);
String rebuildAdminFunction(Map<String, List<String>> params);
}