import { Contract, SignerProvider, Address, Token, ContractState, node, TestContractResult, InputAsset, Asset, Fields, SignDeployContractTxResult } from "@alephium/web3";
export declare type _TokenBridgeFields = {
    governance: string;
    localChainId: bigint;
    receivedSequence: bigint;
    sendSequence: bigint;
    tokenBridgeFactory: string;
    minimalConsistencyLevel: bigint;
    refundAddress: string;
};
export declare type _TokenBridgeState = _TokenBridgeFields & Omit<ContractState, "fields">;
export declare class TokenBridge {
    static readonly contract: Contract;
    readonly address: Address;
    readonly contractId: string;
    readonly groupIndex: number;
    deployResult: SignDeployContractTxResult | undefined;
    private constructor();
    static deploy(signer: SignerProvider, governance: string, localChainId: bigint, receivedSequence: bigint, sendSequence: bigint, tokenBridgeFactory: string, minimalConsistencyLevel: bigint, refundAddress: string, _extraParams?: {
        initialAttoAlphAmount?: bigint;
        initialTokenAmounts?: Token[];
        issueTokenAmount?: bigint;
        gasAmount?: number;
        gasPrice?: bigint;
    }): Promise<TokenBridge>;
    static connect(address: string, deployResult?: SignDeployContractTxResult): TokenBridge;
    fetchState(): Promise<_TokenBridgeState>;
    static stateForTest(governance: string, localChainId: bigint, receivedSequence: bigint, sendSequence: bigint, tokenBridgeFactory: string, minimalConsistencyLevel: bigint, refundAddress: string, asset?: Asset, address?: string): ContractState;
    static testParseAndVerifyGovernanceVAA(args: {
        vaa: string;
        action: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint, string];
    }>;
    static testCreateAttestTokenHandler(args: {
        payer: string;
        createContractAlphAmount: bigint;
        remoteChainId: bigint;
        remoteTokenBridgeId: string;
        isLocal: boolean;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testCreateLocalAttestTokenHandler(args: {
        payer: string;
        createContractAlphAmount: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testParseAndVerifyRegisterChain(args: {
        vaa: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint, string];
    }>;
    static testRegisterChain(args: {
        vaa: string;
        payer: string;
        createContractAlphAmount: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testUpgradeContract(args: {
        vaa: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testDestroyUnexecutedSequenceContracts(args: {
        vaa: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testUpdateMinimalConsistencyLevel(args: {
        vaa: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testGetRefundAddress(_initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [string];
    }>;
    static testUpdateRefundAddress(args: {
        vaa: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testParseConractUpgrade(args: {
        payload: string;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [string, string, string, string];
    }>;
    static testGetMessageFee(_initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint];
    }>;
    static testAttestToken(args: {
        payer: string;
        localTokenId: string;
        decimals: bigint;
        symbol: string;
        name: string;
        nonce: string;
        consistencyLevel: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testNextSendSequence(_initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint];
    }>;
    static testCreateLocalTokenPool(args: {
        localTokenId: string;
        decimals: bigint;
        payer: string;
        createContractAlphAmount: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testCreateRemoteTokenPool(args: {
        bridgeTokenId: string;
        tokenChainId: bigint;
        decimals: bigint;
        symbol: string;
        name: string;
        msgSequence: bigint;
        payer: string;
        createContractAlphAmount: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testUpdateRemoteTokenPool(args: {
        bridgeTokenId: string;
        tokenChainId: bigint;
        symbol: string;
        name: string;
        msgSequence: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testTransferToken(args: {
        fromAddress: string;
        bridgeTokenId: string;
        tokenChainId: bigint;
        toChainId: bigint;
        toAddress: string;
        tokenAmount: bigint;
        messageFee: bigint;
        arbiterFee: bigint;
        nonce: string;
        consistencyLevel: bigint;
    }, _initFields: _TokenBridgeFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    getRefundAddressCall(_extraParams?: {
        worldStateBlockHash?: string;
        txId?: string;
        existingContracts?: string[];
        inputAssets?: node.TestInputAsset[];
    }): Promise<string>;
    getMessageFeeCall(_extraParams?: {
        worldStateBlockHash?: string;
        txId?: string;
        existingContracts?: string[];
        inputAssets?: node.TestInputAsset[];
    }): Promise<bigint>;
}
