import type { BaseContract, BigNumber, 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 PickleRegistryInterface extends utils.Interface {
    functions: {
        'addCurators(address[])': FunctionFragment;
        'curators(address)': FunctionFragment;
        'demoteVault(address)': FunctionFragment;
        'developmentVaults()': FunctionFragment;
        'governance()': FunctionFragment;
        'productionVaults()': FunctionFragment;
        'promoteVault(address)': FunctionFragment;
        'registerVault(address)': FunctionFragment;
        'removeCurators(address[])': FunctionFragment;
        'removeVault(address)': FunctionFragment;
        'setGovernance(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'addCurators' | 'curators' | 'demoteVault' | 'developmentVaults' | 'governance' | 'productionVaults' | 'promoteVault' | 'registerVault' | 'removeCurators' | 'removeVault' | 'setGovernance'): FunctionFragment;
    encodeFunctionData(functionFragment: 'addCurators', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'curators', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'demoteVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'developmentVaults', values?: undefined): string;
    encodeFunctionData(functionFragment: 'governance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'productionVaults', values?: undefined): string;
    encodeFunctionData(functionFragment: 'promoteVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'registerVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'removeCurators', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'removeVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setGovernance', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'addCurators', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'curators', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'demoteVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'developmentVaults', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'productionVaults', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'promoteVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'registerVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeCurators', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setGovernance', data: BytesLike): Result;
    events: {
        'DemoteVault(address)': EventFragment;
        'PromoteVault(address)': EventFragment;
        'RegisterVault(address)': EventFragment;
        'RemoveVault(address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'DemoteVault'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PromoteVault'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RegisterVault'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RemoveVault'): EventFragment;
}
export interface DemoteVaultEventObject {
    vault: string;
}
export declare type DemoteVaultEvent = TypedEvent<[string], DemoteVaultEventObject>;
export declare type DemoteVaultEventFilter = TypedEventFilter<DemoteVaultEvent>;
export interface PromoteVaultEventObject {
    vault: string;
}
export declare type PromoteVaultEvent = TypedEvent<[string], PromoteVaultEventObject>;
export declare type PromoteVaultEventFilter = TypedEventFilter<PromoteVaultEvent>;
export interface RegisterVaultEventObject {
    vault: string;
}
export declare type RegisterVaultEvent = TypedEvent<[string], RegisterVaultEventObject>;
export declare type RegisterVaultEventFilter = TypedEventFilter<RegisterVaultEvent>;
export interface RemoveVaultEventObject {
    vault: string;
}
export declare type RemoveVaultEvent = TypedEvent<[string], RemoveVaultEventObject>;
export declare type RemoveVaultEventFilter = TypedEventFilter<RemoveVaultEvent>;
export interface PickleRegistry extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: PickleRegistryInterface;
    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: {
        addCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        curators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        demoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        developmentVaults(overrides?: CallOverrides): Promise<[string[]]>;
        governance(overrides?: CallOverrides): Promise<[string]>;
        productionVaults(overrides?: CallOverrides): Promise<[string[]]>;
        promoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        registerVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setGovernance(_governance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    addCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    curators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    demoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    developmentVaults(overrides?: CallOverrides): Promise<string[]>;
    governance(overrides?: CallOverrides): Promise<string>;
    productionVaults(overrides?: CallOverrides): Promise<string[]>;
    promoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    registerVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setGovernance(_governance: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        addCurators(_curators: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        curators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        demoteVault(_vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        developmentVaults(overrides?: CallOverrides): Promise<string[]>;
        governance(overrides?: CallOverrides): Promise<string>;
        productionVaults(overrides?: CallOverrides): Promise<string[]>;
        promoteVault(_vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        registerVault(_vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        removeCurators(_curators: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        removeVault(_vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setGovernance(_governance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'DemoteVault(address)'(vault?: null): DemoteVaultEventFilter;
        DemoteVault(vault?: null): DemoteVaultEventFilter;
        'PromoteVault(address)'(vault?: null): PromoteVaultEventFilter;
        PromoteVault(vault?: null): PromoteVaultEventFilter;
        'RegisterVault(address)'(vault?: null): RegisterVaultEventFilter;
        RegisterVault(vault?: null): RegisterVaultEventFilter;
        'RemoveVault(address)'(vault?: null): RemoveVaultEventFilter;
        RemoveVault(vault?: null): RemoveVaultEventFilter;
    };
    estimateGas: {
        addCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        curators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        demoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        developmentVaults(overrides?: CallOverrides): Promise<BigNumber>;
        governance(overrides?: CallOverrides): Promise<BigNumber>;
        productionVaults(overrides?: CallOverrides): Promise<BigNumber>;
        promoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        registerVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setGovernance(_governance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        addCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        curators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        demoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        developmentVaults(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        governance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        productionVaults(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        promoteVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        registerVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeCurators(_curators: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeVault(_vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setGovernance(_governance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
