import { Address, ContractState, TestContractResult, ContractFactory, CallContractParams, CallContractResult, TestContractParams, ContractInstance } from "@alephium/web3";
export declare namespace MathTestTypes {
    type State = Omit<ContractState<any>, "fields">;
    interface CallMethodTable {
        normalizeAmount: {
            params: CallContractParams<{
                amount: bigint;
                decimals: bigint;
            }>;
            result: CallContractResult<bigint>;
        };
        deNormalizeAmount: {
            params: CallContractParams<{
                amount: bigint;
                decimals: bigint;
            }>;
            result: CallContractResult<bigint>;
        };
    }
    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<MathTestInstance, {}> {
    at(address: string): MathTestInstance;
    testNormalizeAmountMethod(params: Omit<TestContractParams<never, {
        amount: bigint;
        decimals: bigint;
    }>, "initialFields">): Promise<TestContractResult<bigint>>;
    testDeNormalizeAmountMethod(params: Omit<TestContractParams<never, {
        amount: bigint;
        decimals: bigint;
    }>, "initialFields">): Promise<TestContractResult<bigint>>;
}
export declare const MathTest: Factory;
export declare class MathTestInstance extends ContractInstance {
    constructor(address: Address);
    fetchState(): Promise<MathTestTypes.State>;
    callNormalizeAmountMethod(params: MathTestTypes.CallMethodParams<"normalizeAmount">): Promise<MathTestTypes.CallMethodResult<"normalizeAmount">>;
    callDeNormalizeAmountMethod(params: MathTestTypes.CallMethodParams<"deNormalizeAmount">): Promise<MathTestTypes.CallMethodResult<"deNormalizeAmount">>;
    multicall<Calls extends MathTestTypes.MultiCallParams>(calls: Calls): Promise<MathTestTypes.MultiCallResults<Calls>>;
}
export {};
