import { ContractFactory, ContractTransactionResponse } from "ethers";
import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
import type { NonPayableOverrides } from "../../../common";
import type { RateLimiter, RateLimiterInterface } from "../../../contracts/Library/RateLimiter";
type RateLimiterConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
export declare class RateLimiter__factory extends ContractFactory {
    constructor(...args: RateLimiterConstructorParams);
    getDeployTransaction(overrides?: NonPayableOverrides & {
        from?: string;
    }): Promise<ContractDeployTransaction>;
    deploy(overrides?: NonPayableOverrides & {
        from?: string;
    }): Promise<RateLimiter & {
        deploymentTransaction(): ContractTransactionResponse;
    }>;
    connect(runner: ContractRunner | null): RateLimiter__factory;
    static readonly bytecode = "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220207e732af0b2ce14c4e0def6414323bd3c9ed99187880b73c708b9de631b097564736f6c634300081a0033";
    static readonly abi: readonly [{
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "capacity";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "requested";
            readonly type: "uint256";
        }];
        readonly name: "AggregateValueMaxCapacityExceeded";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "minWaitInSeconds";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "available";
            readonly type: "uint256";
        }];
        readonly name: "AggregateValueRateLimitReached";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "BucketOverfilled";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "bool";
                readonly name: "isEnabled";
                readonly type: "bool";
            }, {
                readonly internalType: "uint256";
                readonly name: "capacity";
                readonly type: "uint256";
            }, {
                readonly internalType: "uint256";
                readonly name: "rate";
                readonly type: "uint256";
            }];
            readonly internalType: "struct RateLimiter.Config";
            readonly name: "config";
            readonly type: "tuple";
        }];
        readonly name: "DisabledNonZeroRateLimit";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "bool";
                readonly name: "isEnabled";
                readonly type: "bool";
            }, {
                readonly internalType: "uint256";
                readonly name: "capacity";
                readonly type: "uint256";
            }, {
                readonly internalType: "uint256";
                readonly name: "rate";
                readonly type: "uint256";
            }];
            readonly internalType: "struct RateLimiter.Config";
            readonly name: "rateLimiterConfig";
            readonly type: "tuple";
        }];
        readonly name: "InvalidRatelimitRate";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "OnlyCallableByAdminOrOwner";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "RateLimitMustBeDisabled";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "capacity";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "requested";
            readonly type: "uint256";
        }, {
            readonly internalType: "address";
            readonly name: "tokenAddress";
            readonly type: "address";
        }];
        readonly name: "TokenMaxCapacityExceeded";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "minWaitInSeconds";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "available";
            readonly type: "uint256";
        }, {
            readonly internalType: "address";
            readonly name: "tokenAddress";
            readonly type: "address";
        }];
        readonly name: "TokenRateLimitReached";
        readonly type: "error";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "bool";
                readonly name: "isEnabled";
                readonly type: "bool";
            }, {
                readonly internalType: "uint256";
                readonly name: "capacity";
                readonly type: "uint256";
            }, {
                readonly internalType: "uint256";
                readonly name: "rate";
                readonly type: "uint256";
            }];
            readonly indexed: false;
            readonly internalType: "struct RateLimiter.Config";
            readonly name: "config";
            readonly type: "tuple";
        }];
        readonly name: "ConfigChanged";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "tokens";
            readonly type: "uint256";
        }];
        readonly name: "TokensConsumed";
        readonly type: "event";
    }];
    static createInterface(): RateLimiterInterface;
    static connect(address: string, runner?: ContractRunner | null): RateLimiter;
}
export {};
