import { Address, ContractState, TestContractResult, HexString, ContractFactory, CallContractParams, CallContractResult, TestContractParams, ContractInstance } from "@alephium/web3";
export declare namespace RemoteTokenPoolTypes {
    type Fields = {
        tokenBridgeId: HexString;
        tokenChainId: bigint;
        bridgeTokenId: HexString;
        totalBridged: bigint;
        symbol_: HexString;
        name_: HexString;
        decimals_: bigint;
        sequence_: bigint;
    };
    type State = ContractState<Fields>;
}
declare class Factory extends ContractFactory<RemoteTokenPoolInstance, RemoteTokenPoolTypes.Fields> {
    at(address: string): RemoteTokenPoolInstance;
    testCompleteTransferMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        emitterChainId: bigint;
        amount: bigint;
        vaaTokenId: HexString;
        vaaTokenChainId: bigint;
        recipient: HexString;
        normalizedArbiterFee: bigint;
        caller: HexString;
    }>): Promise<TestContractResult<null>>;
    testPrepareTransferMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        callerContractId: HexString;
        toAddress: HexString;
        amount: bigint;
        arbiterFee: bigint;
        nonce: HexString;
    }>): Promise<TestContractResult<[HexString, bigint]>>;
    testPrepareCompleteTransferMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        callerContractId: HexString;
        emitterChainId: bigint;
        amount: bigint;
        vaaTokenId: HexString;
        vaaTokenChainId: bigint;
        normalizedArbiterFee: bigint;
    }>): Promise<TestContractResult<[bigint, bigint]>>;
    testNormalizeAmountMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        amount: bigint;
        decimals: bigint;
    }>): Promise<TestContractResult<bigint>>;
    testDeNormalizeAmountMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        amount: bigint;
        decimals: bigint;
    }>): Promise<TestContractResult<bigint>>;
    testNameMethod(params: Omit<TestContractParams<RemoteTokenPoolTypes.Fields, never>, "testArgs">): Promise<TestContractResult<HexString>>;
    testSymbolMethod(params: Omit<TestContractParams<RemoteTokenPoolTypes.Fields, never>, "testArgs">): Promise<TestContractResult<HexString>>;
    testDecimalsMethod(params: Omit<TestContractParams<RemoteTokenPoolTypes.Fields, never>, "testArgs">): Promise<TestContractResult<bigint>>;
    testUpdateDetailsMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        symbol: HexString;
        name: HexString;
        sequence: bigint;
    }>): Promise<TestContractResult<null>>;
    testTransferMethod(params: TestContractParams<RemoteTokenPoolTypes.Fields, {
        fromAddress: HexString;
        toAddress: HexString;
        amount: bigint;
        arbiterFee: bigint;
        nonce: HexString;
    }>): Promise<TestContractResult<HexString>>;
}
export declare const RemoteTokenPool: Factory;
export declare class RemoteTokenPoolInstance extends ContractInstance {
    constructor(address: Address);
    fetchState(): Promise<RemoteTokenPoolTypes.State>;
    callNormalizeAmountMethod(params: CallContractParams<{
        amount: bigint;
        decimals: bigint;
    }>): Promise<CallContractResult<bigint>>;
    callDeNormalizeAmountMethod(params: CallContractParams<{
        amount: bigint;
        decimals: bigint;
    }>): Promise<CallContractResult<bigint>>;
    callNameMethod(params?: Omit<CallContractParams<{}>, "args">): Promise<CallContractResult<HexString>>;
    callSymbolMethod(params?: Omit<CallContractParams<{}>, "args">): Promise<CallContractResult<HexString>>;
    callDecimalsMethod(params?: Omit<CallContractParams<{}>, "args">): Promise<CallContractResult<bigint>>;
    callTransferMethod(params: CallContractParams<{
        fromAddress: HexString;
        toAddress: HexString;
        amount: bigint;
        arbiterFee: bigint;
        nonce: HexString;
    }>): Promise<CallContractResult<HexString>>;
}
export {};
