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 SectorFactoryInterface extends utils.Interface {
    functions: {
        "acceptOwnership()": FunctionFragment;
        "addVaultType(string,address)": FunctionFragment;
        "beacons(string)": FunctionFragment;
        "deployVault(string,bytes)": FunctionFragment;
        "getAllVaultTypes()": FunctionFragment;
        "getVaultById(string,uint256,uint256)": FunctionFragment;
        "getVaultById(string,uint256)": FunctionFragment;
        "implementation(string)": FunctionFragment;
        "owner()": FunctionFragment;
        "pendingOwner()": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "totalVaultTypes()": FunctionFragment;
        "totalVaults()": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "vaultTypes(uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "acceptOwnership" | "addVaultType" | "beacons" | "deployVault" | "getAllVaultTypes" | "getVaultById(string,uint256,uint256)" | "getVaultById(string,uint256)" | "implementation" | "owner" | "pendingOwner" | "renounceOwnership" | "totalVaultTypes" | "totalVaults" | "transferOwnership" | "vaultTypes"): FunctionFragment;
    encodeFunctionData(functionFragment: "acceptOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "addVaultType", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "beacons", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "deployVault", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "getAllVaultTypes", values?: undefined): string;
    encodeFunctionData(functionFragment: "getVaultById(string,uint256,uint256)", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "getVaultById(string,uint256)", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "implementation", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingOwner", values?: undefined): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalVaultTypes", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalVaults", values?: undefined): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "vaultTypes", values: [PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: "acceptOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addVaultType", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "beacons", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deployVault", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAllVaultTypes", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getVaultById(string,uint256,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getVaultById(string,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "implementation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalVaultTypes", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalVaults", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vaultTypes", data: BytesLike): Result;
    events: {
        "AddVault(address,string)": EventFragment;
        "OwnershipTransferInitiated(address,address)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AddVault"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferInitiated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
}
export interface AddVaultEventObject {
    vault: string;
    vaultType: string;
}
export type AddVaultEvent = TypedEvent<[string, string], AddVaultEventObject>;
export type AddVaultEventFilter = TypedEventFilter<AddVaultEvent>;
export interface OwnershipTransferInitiatedEventObject {
    owner: string;
    pendingOwner: string;
}
export type OwnershipTransferInitiatedEvent = TypedEvent<[
    string,
    string
], OwnershipTransferInitiatedEventObject>;
export type OwnershipTransferInitiatedEventFilter = TypedEventFilter<OwnershipTransferInitiatedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface SectorFactory extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: SectorFactoryInterface;
    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: {
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addVaultType(_vaultType: PromiseOrValue<string>, _beacon: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        beacons(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        deployVault(_vaultType: PromiseOrValue<string>, _callData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getAllVaultTypes(overrides?: CallOverrides): Promise<[string[]]>;
        "getVaultById(string,uint256,uint256)"(_vaultType: PromiseOrValue<string>, chainId: PromiseOrValue<BigNumberish>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        "getVaultById(string,uint256)"(_vaultType: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        implementation(_vaultType: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pendingOwner(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        totalVaultTypes(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalVaults(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        vaultTypes(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
    };
    acceptOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addVaultType(_vaultType: PromiseOrValue<string>, _beacon: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    beacons(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    deployVault(_vaultType: PromiseOrValue<string>, _callData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getAllVaultTypes(overrides?: CallOverrides): Promise<string[]>;
    "getVaultById(string,uint256,uint256)"(_vaultType: PromiseOrValue<string>, chainId: PromiseOrValue<BigNumberish>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    "getVaultById(string,uint256)"(_vaultType: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    implementation(_vaultType: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    pendingOwner(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    totalVaultTypes(overrides?: CallOverrides): Promise<BigNumber>;
    totalVaults(overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    vaultTypes(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    callStatic: {
        acceptOwnership(overrides?: CallOverrides): Promise<void>;
        addVaultType(_vaultType: PromiseOrValue<string>, _beacon: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        beacons(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        deployVault(_vaultType: PromiseOrValue<string>, _callData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        getAllVaultTypes(overrides?: CallOverrides): Promise<string[]>;
        "getVaultById(string,uint256,uint256)"(_vaultType: PromiseOrValue<string>, chainId: PromiseOrValue<BigNumberish>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        "getVaultById(string,uint256)"(_vaultType: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        implementation(_vaultType: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        pendingOwner(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        totalVaultTypes(overrides?: CallOverrides): Promise<BigNumber>;
        totalVaults(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        vaultTypes(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "AddVault(address,string)"(vault?: null, vaultType?: null): AddVaultEventFilter;
        AddVault(vault?: null, vaultType?: null): AddVaultEventFilter;
        "OwnershipTransferInitiated(address,address)"(owner?: null, pendingOwner?: null): OwnershipTransferInitiatedEventFilter;
        OwnershipTransferInitiated(owner?: null, pendingOwner?: null): OwnershipTransferInitiatedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
    };
    estimateGas: {
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addVaultType(_vaultType: PromiseOrValue<string>, _beacon: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        beacons(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deployVault(_vaultType: PromiseOrValue<string>, _callData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getAllVaultTypes(overrides?: CallOverrides): Promise<BigNumber>;
        "getVaultById(string,uint256,uint256)"(_vaultType: PromiseOrValue<string>, chainId: PromiseOrValue<BigNumberish>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        "getVaultById(string,uint256)"(_vaultType: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        implementation(_vaultType: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pendingOwner(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        totalVaultTypes(overrides?: CallOverrides): Promise<BigNumber>;
        totalVaults(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        vaultTypes(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addVaultType(_vaultType: PromiseOrValue<string>, _beacon: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        beacons(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deployVault(_vaultType: PromiseOrValue<string>, _callData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getAllVaultTypes(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        "getVaultById(string,uint256,uint256)"(_vaultType: PromiseOrValue<string>, chainId: PromiseOrValue<BigNumberish>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        "getVaultById(string,uint256)"(_vaultType: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        implementation(_vaultType: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        totalVaultTypes(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalVaults(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(_pendingOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        vaultTypes(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
