import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../common.js";
export declare namespace IInterfold {
    type PricingConfigStruct = {
        keyGenFixedPerNode: BigNumberish;
        keyGenPerEncryptionProof: BigNumberish;
        coordinationPerPair: BigNumberish;
        availabilityPerNodePerSec: BigNumberish;
        decryptionPerNode: BigNumberish;
        publicationBase: BigNumberish;
        verificationPerProof: BigNumberish;
        protocolTreasury: AddressLike;
        marginBps: BigNumberish;
        protocolShareBps: BigNumberish;
        dkgUtilizationBps: BigNumberish;
        computeUtilizationBps: BigNumberish;
        decryptUtilizationBps: BigNumberish;
        minCommitteeSize: BigNumberish;
        minThreshold: BigNumberish;
    };
    type PricingConfigStructOutput = [keyGenFixedPerNode: bigint, keyGenPerEncryptionProof: bigint, coordinationPerPair: bigint, availabilityPerNodePerSec: bigint, decryptionPerNode: bigint, publicationBase: bigint, verificationPerProof: bigint, protocolTreasury: string, marginBps: bigint, protocolShareBps: bigint, dkgUtilizationBps: bigint, computeUtilizationBps: bigint, decryptUtilizationBps: bigint, minCommitteeSize: bigint, minThreshold: bigint] & {
        keyGenFixedPerNode: bigint;
        keyGenPerEncryptionProof: bigint;
        coordinationPerPair: bigint;
        availabilityPerNodePerSec: bigint;
        decryptionPerNode: bigint;
        publicationBase: bigint;
        verificationPerProof: bigint;
        protocolTreasury: string;
        marginBps: bigint;
        protocolShareBps: bigint;
        dkgUtilizationBps: bigint;
        computeUtilizationBps: bigint;
        decryptUtilizationBps: bigint;
        minCommitteeSize: bigint;
        minThreshold: bigint;
    };
    type E3TimeoutConfigStruct = {
        dkgWindow: BigNumberish;
        computeWindow: BigNumberish;
        decryptionWindow: BigNumberish;
    };
    type E3TimeoutConfigStructOutput = [dkgWindow: bigint, computeWindow: bigint, decryptionWindow: bigint] & {
        dkgWindow: bigint;
        computeWindow: bigint;
        decryptionWindow: bigint;
    };
}
export interface InterfoldPricingInterface extends Interface {
    getFunction(nameOrSignature: "computeNodeAmounts" | "defaultPricingConfig" | "quote" | "validateCommitteeThresholds" | "validateMarkFailedStage" | "validatePricingConfig" | "validatePublishCiphertext" | "validateQuoteThresholds" | "validateRequest" | "validateTimeoutConfig"): FunctionFragment;
    encodeFunctionData(functionFragment: 'computeNodeAmounts', values: [BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'defaultPricingConfig', values?: undefined): string;
    encodeFunctionData(functionFragment: 'quote', values: [IInterfold.PricingConfigStruct, IInterfold.E3TimeoutConfigStruct, BigNumberish, [BigNumberish, BigNumberish], BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'validateCommitteeThresholds', values: [[BigNumberish, BigNumberish], BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'validateMarkFailedStage', values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'validatePricingConfig', values: [IInterfold.PricingConfigStruct]): string;
    encodeFunctionData(functionFragment: 'validatePublishCiphertext', values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BytesLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'validateQuoteThresholds', values: [[BigNumberish, BigNumberish], BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'validateRequest', values: [[BigNumberish, BigNumberish], BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'validateTimeoutConfig', values: [IInterfold.E3TimeoutConfigStruct, BigNumberish]): string;
    decodeFunctionResult(functionFragment: 'computeNodeAmounts', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'defaultPricingConfig', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'quote', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validateCommitteeThresholds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validateMarkFailedStage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validatePricingConfig', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validatePublishCiphertext', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validateQuoteThresholds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validateRequest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'validateTimeoutConfig', data: BytesLike): Result;
}
export interface InterfoldPricing extends BaseContract {
    connect(runner?: ContractRunner | null): InterfoldPricing;
    waitForDeployment(): Promise<this>;
    interface: InterfoldPricingInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    computeNodeAmounts: TypedContractMethod<[
        cnAmount: BigNumberish,
        n: BigNumberish,
        e3Id: BigNumberish
    ], [
        bigint[]
    ], 'view'>;
    defaultPricingConfig: TypedContractMethod<[
    ], [
        IInterfold.PricingConfigStructOutput
    ], 'view'>;
    quote: TypedContractMethod<[
        pc: IInterfold.PricingConfigStruct,
        tc: IInterfold.E3TimeoutConfigStruct,
        sortitionWindow: BigNumberish,
        threshold: [BigNumberish, BigNumberish],
        inputWindowStart: BigNumberish,
        inputWindowEnd: BigNumberish
    ], [
        bigint
    ], 'view'>;
    validateCommitteeThresholds: TypedContractMethod<[
        threshold: [BigNumberish, BigNumberish],
        minCommitteeSize: BigNumberish,
        minThreshold: BigNumberish
    ], [
        void
    ], 'view'>;
    validateMarkFailedStage: TypedContractMethod<[
        e3Id: BigNumberish,
        current: BigNumberish
    ], [
        void
    ], 'view'>;
    validatePricingConfig: TypedContractMethod<[
        config: IInterfold.PricingConfigStruct
    ], [
        void
    ], 'view'>;
    validatePublishCiphertext: TypedContractMethod<[
        e3Id: BigNumberish,
        current: BigNumberish,
        computeDeadline: BigNumberish,
        inputWindowEnd: BigNumberish,
        ciphertextOutput: BytesLike,
        nowTs: BigNumberish
    ], [
        void
    ], 'view'>;
    validateQuoteThresholds: TypedContractMethod<[
        threshold: [BigNumberish, BigNumberish],
        committeeSize: BigNumberish,
        minCommitteeSize: BigNumberish,
        minThreshold: BigNumberish
    ], [
        void
    ], 'view'>;
    validateRequest: TypedContractMethod<[
        inputWindow: [BigNumberish, BigNumberish],
        nowTs: BigNumberish,
        computeWindow: BigNumberish,
        decryptionWindow: BigNumberish,
        maxDuration: BigNumberish,
        quotedFee: BigNumberish
    ], [
        void
    ], 'view'>;
    validateTimeoutConfig: TypedContractMethod<[
        config: IInterfold.E3TimeoutConfigStruct,
        maxTimeoutWindow: BigNumberish
    ], [
        void
    ], 'view'>;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: 'computeNodeAmounts'): TypedContractMethod<[
        cnAmount: BigNumberish,
        n: BigNumberish,
        e3Id: BigNumberish
    ], [
        bigint[]
    ], 'view'>;
    getFunction(nameOrSignature: 'defaultPricingConfig'): TypedContractMethod<[
    ], [
        IInterfold.PricingConfigStructOutput
    ], 'view'>;
    getFunction(nameOrSignature: 'quote'): TypedContractMethod<[
        pc: IInterfold.PricingConfigStruct,
        tc: IInterfold.E3TimeoutConfigStruct,
        sortitionWindow: BigNumberish,
        threshold: [BigNumberish, BigNumberish],
        inputWindowStart: BigNumberish,
        inputWindowEnd: BigNumberish
    ], [
        bigint
    ], 'view'>;
    getFunction(nameOrSignature: 'validateCommitteeThresholds'): TypedContractMethod<[
        threshold: [BigNumberish, BigNumberish],
        minCommitteeSize: BigNumberish,
        minThreshold: BigNumberish
    ], [
        void
    ], 'view'>;
    getFunction(nameOrSignature: 'validateMarkFailedStage'): TypedContractMethod<[
        e3Id: BigNumberish,
        current: BigNumberish
    ], [
        void
    ], 'view'>;
    getFunction(nameOrSignature: 'validatePricingConfig'): TypedContractMethod<[
        config: IInterfold.PricingConfigStruct
    ], [
        void
    ], 'view'>;
    getFunction(nameOrSignature: 'validatePublishCiphertext'): TypedContractMethod<[
        e3Id: BigNumberish,
        current: BigNumberish,
        computeDeadline: BigNumberish,
        inputWindowEnd: BigNumberish,
        ciphertextOutput: BytesLike,
        nowTs: BigNumberish
    ], [
        void
    ], 'view'>;
    getFunction(nameOrSignature: 'validateQuoteThresholds'): TypedContractMethod<[
        threshold: [BigNumberish, BigNumberish],
        committeeSize: BigNumberish,
        minCommitteeSize: BigNumberish,
        minThreshold: BigNumberish
    ], [
        void
    ], 'view'>;
    getFunction(nameOrSignature: 'validateRequest'): TypedContractMethod<[
        inputWindow: [BigNumberish, BigNumberish],
        nowTs: BigNumberish,
        computeWindow: BigNumberish,
        decryptionWindow: BigNumberish,
        maxDuration: BigNumberish,
        quotedFee: BigNumberish
    ], [
        void
    ], 'view'>;
    getFunction(nameOrSignature: 'validateTimeoutConfig'): TypedContractMethod<[
        config: IInterfold.E3TimeoutConfigStruct,
        maxTimeoutWindow: BigNumberish
    ], [
        void
    ], 'view'>;
    filters: {};
}
//# sourceMappingURL=InterfoldPricing.d.ts.map