class DelegateContract extends BaseContract {

    public RemoteCall<CallResponse<Delegation>> getDelegateInfo(String nodeId, String delAddr, BigInteger stakingBlockNum) {

        Function function = new Function(FunctionType.GET_DELEGATEINFO_FUNC_TYPE,
                Arrays.asList(new Uint64(stakingBlockNum)
                        , new BytesType(Bech32.addressDecode(delAddr))
                        , new BytesType(Numeric.hexStringToByteArray(nodeId))));

        return executeRemoteCallObjectValueReturn(function, Delegation.class);
    }

    private  DelegateContract(String contractAddress, Web3j web3j);
    private  DelegateContract(String contractAddress, long chainId, Web3j web3j, Credentials credentials);
    private  DelegateContract(String contractAddress, Web3j web3j, TransactionManager transactionManager);

}