class Contract extends ManagedTransaction {

    protected static <T extends Contract> RemoteCall<T> deployRemoteCall(
            final Class<T> type,
            final Web3j web3j, final Credentials credentials,
            final BigInteger gasPrice, final BigInteger gasLimit,
            final String binary, final String encodedConstructor, final BigInteger value) {
        return new RemoteCall<T>(new Callable<T>() {
            @Override
            public T call() throws Exception {
                return deploy(
                        type, web3j, credentials, gasPrice, gasLimit, binary,
                        encodedConstructor, value);
            }
        });
    }

    protected  Contract(String contractBinary, String contractAddress,
                       Web3j web3j, TransactionManager transactionManager,
                       BigInteger gasPrice, BigInteger gasLimit);
    protected  Contract(String contractBinary, String contractAddress,
                       Web3j web3j, Credentials credentials,
                       BigInteger gasPrice, BigInteger gasLimit);
    @Deprecated protected  Contract(String contractAddress,
                       Web3j web3j, TransactionManager transactionManager,
                       BigInteger gasPrice, BigInteger gasLimit);
    @Deprecated protected  Contract(String contractAddress,
                       Web3j web3j, Credentials credentials,
                       BigInteger gasPrice, BigInteger gasLimit);

}