import { Contract, SignerProvider, Address, Token, ContractState, node, TestContractResult, InputAsset, Asset, Fields, SignDeployContractTxResult } from "@alephium/web3";
export declare type _LocalTokenPoolFields = {
    tokenBridgeId: string;
    tokenChainId: bigint;
    bridgeTokenId: string;
    totalBridged: bigint;
    decimals_: bigint;
};
export declare type _LocalTokenPoolState = _LocalTokenPoolFields & Omit<ContractState, "fields">;
export declare class LocalTokenPool {
    static readonly contract: Contract;
    readonly address: Address;
    readonly contractId: string;
    readonly groupIndex: number;
    deployResult: SignDeployContractTxResult | undefined;
    private constructor();
    static deploy(signer: SignerProvider, tokenBridgeId: string, tokenChainId: bigint, bridgeTokenId: string, totalBridged: bigint, decimals_: bigint, _extraParams?: {
        initialAttoAlphAmount?: bigint;
        initialTokenAmounts?: Token[];
        issueTokenAmount?: bigint;
        gasAmount?: number;
        gasPrice?: bigint;
    }): Promise<LocalTokenPool>;
    static connect(address: string, deployResult?: SignDeployContractTxResult): LocalTokenPool;
    fetchState(): Promise<_LocalTokenPoolState>;
    static stateForTest(tokenBridgeId: string, tokenChainId: bigint, bridgeTokenId: string, totalBridged: bigint, decimals_: bigint, asset?: Asset, address?: string): ContractState;
    static testCompleteTransfer(args: {
        emitterChainId: bigint;
        amount: bigint;
        vaaTokenId: string;
        vaaTokenChainId: bigint;
        recipient: string;
        normalizedArbiterFee: bigint;
        caller: string;
    }, _initFields: _LocalTokenPoolFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [];
    }>;
    static testPrepareTransfer(args: {
        callerContractId: string;
        toAddress: string;
        amount: bigint;
        arbiterFee: bigint;
        nonce: string;
    }, _initFields: _LocalTokenPoolFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [string, bigint];
    }>;
    static testPrepareCompleteTransfer(args: {
        callerContractId: string;
        emitterChainId: bigint;
        amount: bigint;
        vaaTokenId: string;
        vaaTokenChainId: bigint;
        normalizedArbiterFee: bigint;
    }, _initFields: _LocalTokenPoolFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint, bigint];
    }>;
    static testNormalizeAmount(args: {
        amount: bigint;
        decimals: bigint;
    }, _initFields: _LocalTokenPoolFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint];
    }>;
    static testDeNormalizeAmount(args: {
        amount: bigint;
        decimals: bigint;
    }, _initFields: _LocalTokenPoolFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [bigint];
    }>;
    static testTransfer(args: {
        fromAddress: string;
        toAddress: string;
        amount: bigint;
        arbiterFee: bigint;
        nonce: string;
    }, _initFields: _LocalTokenPoolFields | Fields, _extraParams?: {
        group?: number;
        address?: string;
        initialAsset?: Asset;
        existingContracts?: ContractState[];
        inputAssets?: InputAsset[];
    }): Promise<Omit<TestContractResult, "returns"> & {
        returns: [string];
    }>;
    normalizeAmountCall(amount: bigint, decimals: bigint, _extraParams?: {
        worldStateBlockHash?: string;
        txId?: string;
        existingContracts?: string[];
        inputAssets?: node.TestInputAsset[];
    }): Promise<bigint>;
    deNormalizeAmountCall(amount: bigint, decimals: bigint, _extraParams?: {
        worldStateBlockHash?: string;
        txId?: string;
        existingContracts?: string[];
        inputAssets?: node.TestInputAsset[];
    }): Promise<bigint>;
    transferCall(fromAddress: string, toAddress: string, amount: bigint, arbiterFee: bigint, nonce: string, _extraParams?: {
        worldStateBlockHash?: string;
        txId?: string;
        existingContracts?: string[];
        inputAssets?: node.TestInputAsset[];
    }): Promise<string>;
}
