class Contract extends ManagedTransaction {

    public static <T extends Contract> RemoteCall<T> deployRemoteCall(
            Class<T> type,
            Chain3j chain3j, Credentials credentials,
            BigInteger gasPrice, BigInteger gasLimit,
            String binary, String encodedConstructor, BigInteger value) {
        return new RemoteCall<>(() -> deploy(
                type, chain3j, credentials, gasPrice, gasLimit, binary,
                encodedConstructor, value));
    }

    protected  Contract(String contractBinary, String contractAddress,
                       Chain3j chain3j, TransactionManager transactionManager,
                       ContractGasProvider gasProvider);
    protected  Contract(String contractBinary, String contractAddress,
                       Chain3j chain3j, Credentials credentials,
                       ContractGasProvider gasProvider);
    @Deprecated protected  Contract(String contractBinary, String contractAddress,
                       Chain3j chain3j, TransactionManager transactionManager,
                       BigInteger gasPrice, BigInteger gasLimit);
    @Deprecated protected  Contract(String contractBinary, String contractAddress,
                       Chain3j chain3j, Credentials credentials,
                       BigInteger gasPrice, BigInteger gasLimit);
    @Deprecated protected  Contract(String contractAddress,
                       Chain3j chain3j, TransactionManager transactionManager,
                       BigInteger gasPrice, BigInteger gasLimit);
    @Deprecated protected  Contract(String contractAddress,
                       Chain3j chain3j, Credentials credentials,
                       BigInteger gasPrice, BigInteger gasLimit);

}