import { Address, ContractState, TestContractResult, HexString, ContractFactory, CallContractParams, CallContractResult, TestContractParams, ContractInstance } from "@alephium/web3";
export declare namespace SequenceTestTypes {
    type Fields = {
        start: bigint;
        firstNext256: bigint;
        secondNext256: bigint;
        unexecutedSequenceTemplateId: HexString;
    };
    type State = ContractState<Fields>;
    interface CallMethodTable {
        check: {
            params: CallContractParams<{
                seq: bigint;
            }>;
            result: CallContractResult<boolean>;
        };
    }
    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<SequenceTestInstance, SequenceTestTypes.Fields> {
    at(address: string): SequenceTestInstance;
    testSetExecutedMethod(params: TestContractParams<SequenceTestTypes.Fields, {
        offset: bigint;
        current: bigint;
    }>): Promise<TestContractResult<bigint>>;
    testCompactMethod(params: Omit<TestContractParams<SequenceTestTypes.Fields, never>, "testArgs">): Promise<TestContractResult<null>>;
    testCheckSequenceInSubContractMethod(params: TestContractParams<SequenceTestTypes.Fields, {
        seq: bigint;
    }>): Promise<TestContractResult<null>>;
    testCheckSequenceMethod(params: TestContractParams<SequenceTestTypes.Fields, {
        seq: bigint;
    }>): Promise<TestContractResult<boolean>>;
    testCheckMethod(params: TestContractParams<SequenceTestTypes.Fields, {
        seq: bigint;
    }>): Promise<TestContractResult<boolean>>;
}
export declare const SequenceTest: Factory;
export declare class SequenceTestInstance extends ContractInstance {
    constructor(address: Address);
    fetchState(): Promise<SequenceTestTypes.State>;
    callCheckMethod(params: SequenceTestTypes.CallMethodParams<"check">): Promise<SequenceTestTypes.CallMethodResult<"check">>;
    multicall<Calls extends SequenceTestTypes.MultiCallParams>(calls: Calls): Promise<SequenceTestTypes.MultiCallResults<Calls>>;
}
export {};
