import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export interface PoolTogetherV3TokenFaucetInterface extends utils.Interface {
    functions: {
        'asset()': FunctionFragment;
        'beforeTokenMint(address,uint256,address,address)': FunctionFragment;
        'beforeTokenTransfer(address,address,uint256,address)': FunctionFragment;
        'claim(address)': FunctionFragment;
        'deposit(uint256)': FunctionFragment;
        'drip()': FunctionFragment;
        'dripRatePerSecond()': FunctionFragment;
        'exchangeRateMantissa()': FunctionFragment;
        'initialize(address,address,uint256)': FunctionFragment;
        'lastDripTimestamp()': FunctionFragment;
        'measure()': FunctionFragment;
        'owner()': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'setDripRatePerSecond(uint256)': FunctionFragment;
        'supportsInterface(bytes4)': FunctionFragment;
        'totalUnclaimed()': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'userStates(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'asset' | 'beforeTokenMint' | 'beforeTokenTransfer' | 'claim' | 'deposit' | 'drip' | 'dripRatePerSecond' | 'exchangeRateMantissa' | 'initialize' | 'lastDripTimestamp' | 'measure' | 'owner' | 'renounceOwnership' | 'setDripRatePerSecond' | 'supportsInterface' | 'totalUnclaimed' | 'transferOwnership' | 'userStates'): FunctionFragment;
    encodeFunctionData(functionFragment: 'asset', values?: undefined): string;
    encodeFunctionData(functionFragment: 'beforeTokenMint', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'beforeTokenTransfer', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'claim', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'drip', values?: undefined): string;
    encodeFunctionData(functionFragment: 'dripRatePerSecond', values?: undefined): string;
    encodeFunctionData(functionFragment: 'exchangeRateMantissa', values?: undefined): string;
    encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'lastDripTimestamp', values?: undefined): string;
    encodeFunctionData(functionFragment: 'measure', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setDripRatePerSecond', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'totalUnclaimed', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'userStates', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'asset', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'beforeTokenMint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'beforeTokenTransfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'drip', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'dripRatePerSecond', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exchangeRateMantissa', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastDripTimestamp', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'measure', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setDripRatePerSecond', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalUnclaimed', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'userStates', data: BytesLike): Result;
    events: {
        'Claimed(address,uint256)': EventFragment;
        'Deposited(address,uint256)': EventFragment;
        'DripRateChanged(uint256)': EventFragment;
        'Dripped(uint256)': EventFragment;
        'Initialized(address,address,uint256)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Claimed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposited'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'DripRateChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Dripped'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Initialized'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
}
export interface ClaimedEventObject {
    user: string;
    newTokens: BigNumber;
}
export declare type ClaimedEvent = TypedEvent<[string, BigNumber], ClaimedEventObject>;
export declare type ClaimedEventFilter = TypedEventFilter<ClaimedEvent>;
export interface DepositedEventObject {
    user: string;
    amount: BigNumber;
}
export declare type DepositedEvent = TypedEvent<[string, BigNumber], DepositedEventObject>;
export declare type DepositedEventFilter = TypedEventFilter<DepositedEvent>;
export interface DripRateChangedEventObject {
    dripRatePerSecond: BigNumber;
}
export declare type DripRateChangedEvent = TypedEvent<[BigNumber], DripRateChangedEventObject>;
export declare type DripRateChangedEventFilter = TypedEventFilter<DripRateChangedEvent>;
export interface DrippedEventObject {
    newTokens: BigNumber;
}
export declare type DrippedEvent = TypedEvent<[BigNumber], DrippedEventObject>;
export declare type DrippedEventFilter = TypedEventFilter<DrippedEvent>;
export interface InitializedEventObject {
    asset: string;
    measure: string;
    dripRatePerSecond: BigNumber;
}
export declare type InitializedEvent = TypedEvent<[string, string, BigNumber], InitializedEventObject>;
export declare type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PoolTogetherV3TokenFaucet extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: PoolTogetherV3TokenFaucetInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        asset(overrides?: CallOverrides): Promise<[string]>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claim(user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deposit(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        drip(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        dripRatePerSecond(overrides?: CallOverrides): Promise<[BigNumber]>;
        exchangeRateMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        initialize(_asset: PromiseOrValue<string>, _measure: PromiseOrValue<string>, _dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        lastDripTimestamp(overrides?: CallOverrides): Promise<[number]>;
        measure(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setDripRatePerSecond(_dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        totalUnclaimed(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        userStates(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            lastExchangeRateMantissa: BigNumber;
            balance: BigNumber;
        }>;
    };
    asset(overrides?: CallOverrides): Promise<string>;
    beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claim(user: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deposit(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    drip(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    dripRatePerSecond(overrides?: CallOverrides): Promise<BigNumber>;
    exchangeRateMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    initialize(_asset: PromiseOrValue<string>, _measure: PromiseOrValue<string>, _dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    lastDripTimestamp(overrides?: CallOverrides): Promise<number>;
    measure(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setDripRatePerSecond(_dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    totalUnclaimed(overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    userStates(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        lastExchangeRateMantissa: BigNumber;
        balance: BigNumber;
    }>;
    callStatic: {
        asset(overrides?: CallOverrides): Promise<string>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        claim(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deposit(amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        drip(overrides?: CallOverrides): Promise<BigNumber>;
        dripRatePerSecond(overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRateMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_asset: PromiseOrValue<string>, _measure: PromiseOrValue<string>, _dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        lastDripTimestamp(overrides?: CallOverrides): Promise<number>;
        measure(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        setDripRatePerSecond(_dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        totalUnclaimed(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        userStates(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            lastExchangeRateMantissa: BigNumber;
            balance: BigNumber;
        }>;
    };
    filters: {
        'Claimed(address,uint256)'(user?: PromiseOrValue<string> | null, newTokens?: null): ClaimedEventFilter;
        Claimed(user?: PromiseOrValue<string> | null, newTokens?: null): ClaimedEventFilter;
        'Deposited(address,uint256)'(user?: PromiseOrValue<string> | null, amount?: null): DepositedEventFilter;
        Deposited(user?: PromiseOrValue<string> | null, amount?: null): DepositedEventFilter;
        'DripRateChanged(uint256)'(dripRatePerSecond?: null): DripRateChangedEventFilter;
        DripRateChanged(dripRatePerSecond?: null): DripRateChangedEventFilter;
        'Dripped(uint256)'(newTokens?: null): DrippedEventFilter;
        Dripped(newTokens?: null): DrippedEventFilter;
        'Initialized(address,address,uint256)'(asset?: PromiseOrValue<string> | null, measure?: PromiseOrValue<string> | null, dripRatePerSecond?: null): InitializedEventFilter;
        Initialized(asset?: PromiseOrValue<string> | null, measure?: PromiseOrValue<string> | null, dripRatePerSecond?: null): InitializedEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
    };
    estimateGas: {
        asset(overrides?: CallOverrides): Promise<BigNumber>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claim(user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deposit(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        drip(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        dripRatePerSecond(overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRateMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_asset: PromiseOrValue<string>, _measure: PromiseOrValue<string>, _dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        lastDripTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
        measure(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setDripRatePerSecond(_dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        totalUnclaimed(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        userStates(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        asset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claim(user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deposit(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        drip(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        dripRatePerSecond(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exchangeRateMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_asset: PromiseOrValue<string>, _measure: PromiseOrValue<string>, _dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        lastDripTimestamp(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        measure(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setDripRatePerSecond(_dripRatePerSecond: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalUnclaimed(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        userStates(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
