import { Address, ContractState, TestContractResult, HexString, ContractFactory, CallContractParams, CallContractResult, TestContractParams, ContractInstance } from "@alephium/web3";
export declare namespace TokenBridgeFactoryTypes {
    type Fields = {
        localTokenPoolTemplateId: HexString;
        remoteTokenPoolTemplateId: HexString;
        tokenBridgeForChainTemplateId: HexString;
        attestTokenHandlerTemplateId: HexString;
        unexecutedSequenceTemplateId: HexString;
    };
    type State = ContractState<Fields>;
    interface CallMethodTable {
        parseConractUpgrade: {
            params: CallContractParams<{
                payload: HexString;
            }>;
            result: CallContractResult<[HexString, HexString, HexString, HexString]>;
        };
        getLocalTokenPoolTemplateId: {
            params: Omit<CallContractParams<{}>, "args">;
            result: CallContractResult<HexString>;
        };
        getRemoteTokenPoolTemplateId: {
            params: Omit<CallContractParams<{}>, "args">;
            result: CallContractResult<HexString>;
        };
        getTokenBridgeForChainTemplateId: {
            params: Omit<CallContractParams<{}>, "args">;
            result: CallContractResult<HexString>;
        };
        getAttestTokenHandlerTemplateId: {
            params: Omit<CallContractParams<{}>, "args">;
            result: CallContractResult<HexString>;
        };
        getUnexecutedSequenceTemplateId: {
            params: Omit<CallContractParams<{}>, "args">;
            result: CallContractResult<HexString>;
        };
    }
    type CallMethodParams<T extends keyof CallMethodTable> = CallMethodTable[T]["params"];
    type CallMethodResult<T extends keyof CallMethodTable> = CallMethodTable[T]["result"];
    type MultiCallParams = Partial<{
        [Name in keyof CallMethodTable]: CallMethodTable[Name]["params"];
    }>;
    type MultiCallResults<T extends MultiCallParams> = {
        [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable ? CallMethodTable[MaybeName]["result"] : undefined;
    };
}
declare class Factory extends ContractFactory<TokenBridgeFactoryInstance, TokenBridgeFactoryTypes.Fields> {
    at(address: string): TokenBridgeFactoryInstance;
    tests: {
        parseConractUpgrade: (params: TestContractParams<TokenBridgeFactoryTypes.Fields, {
            payload: HexString;
        }>) => Promise<TestContractResult<[HexString, HexString, HexString, HexString]>>;
        getLocalTokenPoolTemplateId: (params: Omit<TestContractParams<TokenBridgeFactoryTypes.Fields, never>, "testArgs">) => Promise<TestContractResult<HexString>>;
        getRemoteTokenPoolTemplateId: (params: Omit<TestContractParams<TokenBridgeFactoryTypes.Fields, never>, "testArgs">) => Promise<TestContractResult<HexString>>;
        getTokenBridgeForChainTemplateId: (params: Omit<TestContractParams<TokenBridgeFactoryTypes.Fields, never>, "testArgs">) => Promise<TestContractResult<HexString>>;
        getAttestTokenHandlerTemplateId: (params: Omit<TestContractParams<TokenBridgeFactoryTypes.Fields, never>, "testArgs">) => Promise<TestContractResult<HexString>>;
        getUnexecutedSequenceTemplateId: (params: Omit<TestContractParams<TokenBridgeFactoryTypes.Fields, never>, "testArgs">) => Promise<TestContractResult<HexString>>;
    };
}
export declare const TokenBridgeFactory: Factory;
export declare class TokenBridgeFactoryInstance extends ContractInstance {
    constructor(address: Address);
    fetchState(): Promise<TokenBridgeFactoryTypes.State>;
    methods: {
        parseConractUpgrade: (params: TokenBridgeFactoryTypes.CallMethodParams<"parseConractUpgrade">) => Promise<TokenBridgeFactoryTypes.CallMethodResult<"parseConractUpgrade">>;
        getLocalTokenPoolTemplateId: (params?: Omit<CallContractParams<{}>, "args"> | undefined) => Promise<TokenBridgeFactoryTypes.CallMethodResult<"getLocalTokenPoolTemplateId">>;
        getRemoteTokenPoolTemplateId: (params?: Omit<CallContractParams<{}>, "args"> | undefined) => Promise<TokenBridgeFactoryTypes.CallMethodResult<"getRemoteTokenPoolTemplateId">>;
        getTokenBridgeForChainTemplateId: (params?: Omit<CallContractParams<{}>, "args"> | undefined) => Promise<TokenBridgeFactoryTypes.CallMethodResult<"getTokenBridgeForChainTemplateId">>;
        getAttestTokenHandlerTemplateId: (params?: Omit<CallContractParams<{}>, "args"> | undefined) => Promise<TokenBridgeFactoryTypes.CallMethodResult<"getAttestTokenHandlerTemplateId">>;
        getUnexecutedSequenceTemplateId: (params?: Omit<CallContractParams<{}>, "args"> | undefined) => Promise<TokenBridgeFactoryTypes.CallMethodResult<"getUnexecutedSequenceTemplateId">>;
    };
    multicall<Calls extends TokenBridgeFactoryTypes.MultiCallParams>(calls: Calls): Promise<TokenBridgeFactoryTypes.MultiCallResults<Calls>>;
}
export {};
