import { Contract, SignerProvider, Address, Token, ContractState, node, TestContractResult, InputAsset, Asset, Fields, SignDeployContractTxResult } from "@alephium/web3";
export declare type _TokenBridgeForChainFields = {
    governance: string;
    localChainId: bigint;
    localTokenBridgeId: string;
    remoteChainId: bigint;
    remoteTokenBridgeId: string;
    start: bigint;
    firstNext256: bigint;
    secondNext256: bigint;
    unexecutedSequenceTemplateId: string;
    sendSequence: bigint;
};
export declare type _TokenBridgeForChainState = _TokenBridgeForChainFields & Omit<ContractState, "fields">;
export declare class TokenBridgeForChain {
    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, localTokenBridgeId: string, remoteChainId: bigint, remoteTokenBridgeId: string, start: bigint, firstNext256: bigint, secondNext256: bigint, unexecutedSequenceTemplateId: string, sendSequence: bigint, _extraParams?: {
        initialAttoAlphAmount?: bigint;
        initialTokenAmounts?: Token[];
        issueTokenAmount?: bigint;
        gasAmount?: number;
        gasPrice?: bigint;
    }): Promise<TokenBridgeForChain>;
    static connect(address: string, deployResult?: SignDeployContractTxResult): TokenBridgeForChain;
    fetchState(): Promise<_TokenBridgeForChainState>;
    static stateForTest(governance: string, localChainId: bigint, localTokenBridgeId: string, remoteChainId: bigint, remoteTokenBridgeId: string, start: bigint, firstNext256: bigint, secondNext256: bigint, unexecutedSequenceTemplateId: string, sendSequence: bigint, asset?: Asset, address?: string): ContractState;
    static testSetExecuted(args: {
        offset: bigint;
        current: bigint;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint];
    }>;
    static testCompact(_initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testCheckSequenceInSubContract(args: {
        seq: bigint;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testCheckSequence(args: {
        seq: bigint;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [boolean];
    }>;
    static testNextSendSequence(_initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint];
    }>;
    static testCheckCompleteTransfer(args: {
        vaa: string;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [boolean, string];
    }>;
    static testParseCompleteTransfer(args: {
        payload: string;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint, string, bigint, string, bigint];
    }>;
    static testCompleteTransfer(args: {
        vaa: string;
        caller: string;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testDestroyUnexecutedSequenceContracts(args: {
        paths: string;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testDeposit(args: {
        from: string;
        alphAmount: bigint;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testWithdraw(args: {
        alphAmount: bigint;
    }, _initFields: _TokenBridgeForChainFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    nextSendSequenceCall(_extraParams?: {
        worldStateBlockHash?: string;
        txId?: string;
        existingContracts?: string[];
        inputAssets?: node.TestInputAsset[];
    }): Promise<bigint>;
}
