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 declare namespace ITemplateFactory {
    type DeploymentInfoStruct = {
        exists: PromiseOrValue<boolean>;
        block: PromiseOrValue<BigNumberish>;
        timestamp: PromiseOrValue<BigNumberish>;
        sender: PromiseOrValue<string>;
        templateId: PromiseOrValue<BytesLike>;
        version: PromiseOrValue<BigNumberish>;
        args: PromiseOrValue<BytesLike>;
        functionCalls: PromiseOrValue<BytesLike>[];
        cloned: PromiseOrValue<boolean>;
    };
    type DeploymentInfoStructOutput = [
        boolean,
        BigNumber,
        BigNumber,
        string,
        string,
        BigNumber,
        string,
        string[],
        boolean
    ] & {
        exists: boolean;
        block: BigNumber;
        timestamp: BigNumber;
        sender: string;
        templateId: string;
        version: BigNumber;
        args: string;
        functionCalls: string[];
        cloned: boolean;
    };
    type VersionStruct = {
        deprecated: PromiseOrValue<boolean>;
        implementation: PromiseOrValue<string>;
        creationCode: PromiseOrValue<BytesLike>;
        totalParts: PromiseOrValue<BigNumberish>;
        partsUploaded: PromiseOrValue<BigNumberish>;
        instances: PromiseOrValue<string>[];
    };
    type VersionStructOutput = [
        boolean,
        string,
        string,
        BigNumber,
        BigNumber,
        string[]
    ] & {
        deprecated: boolean;
        implementation: string;
        creationCode: string;
        totalParts: BigNumber;
        partsUploaded: BigNumber;
        instances: string[];
    };
}
export interface ITemplateFactoryInterface extends utils.Interface {
    functions: {
        "cloneTemplate(bytes32,uint256,bytes[],bytes32)": FunctionFragment;
        "deployRole(bytes32)": FunctionFragment;
        "deployTemplate(bytes32,uint256,bytes,bytes[],bytes32)": FunctionFragment;
        "deployedByFactory(address)": FunctionFragment;
        "deploymentInfo(address)": FunctionFragment;
        "deprecateVersion(bytes32,uint256)": FunctionFragment;
        "disableTemplate(bytes32)": FunctionFragment;
        "enableTemplate(bytes32)": FunctionFragment;
        "functionCall(address,bytes)": FunctionFragment;
        "initCodeHash(bytes32,uint256,bytes)": FunctionFragment;
        "latestVersion(bytes32)": FunctionFragment;
        "predictCloneAddress(bytes32,uint256,bytes32)": FunctionFragment;
        "predictDeployAddress(bytes32,uint256,bytes,bytes32)": FunctionFragment;
        "templateInstances(bytes32)": FunctionFragment;
        "undeprecateVersion(bytes32,uint256)": FunctionFragment;
        "updateDeployRole(bytes32,bytes32)": FunctionFragment;
        "uploadTemplate(bytes32,bytes,uint256,address)": FunctionFragment;
        "uploadTemplatePart(bytes32,uint256,bytes)": FunctionFragment;
        "version(bytes32,uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "cloneTemplate" | "deployRole" | "deployTemplate" | "deployedByFactory" | "deploymentInfo" | "deprecateVersion" | "disableTemplate" | "enableTemplate" | "functionCall" | "initCodeHash" | "latestVersion" | "predictCloneAddress" | "predictDeployAddress" | "templateInstances" | "undeprecateVersion" | "updateDeployRole" | "uploadTemplate" | "uploadTemplatePart" | "version"): FunctionFragment;
    encodeFunctionData(functionFragment: "cloneTemplate", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>[],
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "deployRole", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "deployTemplate", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>[],
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "deployedByFactory", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "deploymentInfo", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "deprecateVersion", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "disableTemplate", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "enableTemplate", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "functionCall", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "initCodeHash", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "latestVersion", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "predictCloneAddress", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "predictDeployAddress", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "templateInstances", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "undeprecateVersion", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "updateDeployRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "uploadTemplate", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "uploadTemplatePart", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "version", values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: "cloneTemplate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deployRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deployTemplate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deployedByFactory", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deploymentInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deprecateVersion", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "disableTemplate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "enableTemplate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "functionCall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initCodeHash", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "latestVersion", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "predictCloneAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "predictDeployAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "templateInstances", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "undeprecateVersion", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateDeployRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "uploadTemplate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "uploadTemplatePart", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
    events: {
        "DeployRoleUpdated(bytes32,bytes32,bytes32,address)": EventFragment;
        "FunctionCalled(address,bytes,bytes,address)": EventFragment;
        "TemplateCloned(address,bytes32,uint256,bytes[],address)": EventFragment;
        "TemplateDeployed(address,bytes32,uint256,bytes,bytes[],address)": EventFragment;
        "TemplateDisabled(bytes32,address)": EventFragment;
        "TemplateEnabled(bytes32,address)": EventFragment;
        "TemplateVersionCreated(bytes32,uint256,address,address)": EventFragment;
        "TemplateVersionDeprecated(bytes32,uint256,address)": EventFragment;
        "TemplateVersionUndeprecated(bytes32,uint256,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "DeployRoleUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FunctionCalled"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateCloned"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateDeployed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateDisabled"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateEnabled"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateVersionCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateVersionDeprecated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TemplateVersionUndeprecated"): EventFragment;
}
export interface DeployRoleUpdatedEventObject {
    templateId: string;
    prevRole: string;
    newRole: string;
    sender: string;
}
export declare type DeployRoleUpdatedEvent = TypedEvent<[
    string,
    string,
    string,
    string
], DeployRoleUpdatedEventObject>;
export declare type DeployRoleUpdatedEventFilter = TypedEventFilter<DeployRoleUpdatedEvent>;
export interface FunctionCalledEventObject {
    target: string;
    data: string;
    result: string;
    sender: string;
}
export declare type FunctionCalledEvent = TypedEvent<[
    string,
    string,
    string,
    string
], FunctionCalledEventObject>;
export declare type FunctionCalledEventFilter = TypedEventFilter<FunctionCalledEvent>;
export interface TemplateClonedEventObject {
    instance: string;
    templateId: string;
    version: BigNumber;
    functionCalls: string[];
    sender: string;
}
export declare type TemplateClonedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string[],
    string
], TemplateClonedEventObject>;
export declare type TemplateClonedEventFilter = TypedEventFilter<TemplateClonedEvent>;
export interface TemplateDeployedEventObject {
    instance: string;
    templateId: string;
    version: BigNumber;
    args: string;
    functionCalls: string[];
    sender: string;
}
export declare type TemplateDeployedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string,
    string[],
    string
], TemplateDeployedEventObject>;
export declare type TemplateDeployedEventFilter = TypedEventFilter<TemplateDeployedEvent>;
export interface TemplateDisabledEventObject {
    templateId: string;
    sender: string;
}
export declare type TemplateDisabledEvent = TypedEvent<[
    string,
    string
], TemplateDisabledEventObject>;
export declare type TemplateDisabledEventFilter = TypedEventFilter<TemplateDisabledEvent>;
export interface TemplateEnabledEventObject {
    templateId: string;
    sender: string;
}
export declare type TemplateEnabledEvent = TypedEvent<[
    string,
    string
], TemplateEnabledEventObject>;
export declare type TemplateEnabledEventFilter = TypedEventFilter<TemplateEnabledEvent>;
export interface TemplateVersionCreatedEventObject {
    templateId: string;
    version: BigNumber;
    implementation: string;
    sender: string;
}
export declare type TemplateVersionCreatedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    string
], TemplateVersionCreatedEventObject>;
export declare type TemplateVersionCreatedEventFilter = TypedEventFilter<TemplateVersionCreatedEvent>;
export interface TemplateVersionDeprecatedEventObject {
    templateId: string;
    version: BigNumber;
    sender: string;
}
export declare type TemplateVersionDeprecatedEvent = TypedEvent<[
    string,
    BigNumber,
    string
], TemplateVersionDeprecatedEventObject>;
export declare type TemplateVersionDeprecatedEventFilter = TypedEventFilter<TemplateVersionDeprecatedEvent>;
export interface TemplateVersionUndeprecatedEventObject {
    templateId: string;
    version: BigNumber;
    sender: string;
}
export declare type TemplateVersionUndeprecatedEvent = TypedEvent<[
    string,
    BigNumber,
    string
], TemplateVersionUndeprecatedEventObject>;
export declare type TemplateVersionUndeprecatedEventFilter = TypedEventFilter<TemplateVersionUndeprecatedEvent>;
export interface ITemplateFactory extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ITemplateFactoryInterface;
    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: {
        cloneTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deployRole(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        deployTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deployedByFactory(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        deploymentInfo(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[ITemplateFactory.DeploymentInfoStructOutput]>;
        deprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        disableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        functionCall(target: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initCodeHash(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        latestVersion(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[BigNumber]>;
        predictCloneAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        predictDeployAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        templateInstances(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string[]]>;
        undeprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateDeployRole(templateId: PromiseOrValue<BytesLike>, _deployRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        uploadTemplate(templateId: PromiseOrValue<BytesLike>, initialPart: PromiseOrValue<BytesLike>, totalParts: PromiseOrValue<BigNumberish>, implementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        uploadTemplatePart(templateId: PromiseOrValue<BytesLike>, version: PromiseOrValue<BigNumberish>, part: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        version(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[ITemplateFactory.VersionStructOutput]>;
    };
    cloneTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deployRole(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    deployTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deployedByFactory(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    deploymentInfo(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<ITemplateFactory.DeploymentInfoStructOutput>;
    deprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    disableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    functionCall(target: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initCodeHash(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    latestVersion(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
    predictCloneAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    predictDeployAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    templateInstances(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string[]>;
    undeprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateDeployRole(templateId: PromiseOrValue<BytesLike>, _deployRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    uploadTemplate(templateId: PromiseOrValue<BytesLike>, initialPart: PromiseOrValue<BytesLike>, totalParts: PromiseOrValue<BigNumberish>, implementation: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    uploadTemplatePart(templateId: PromiseOrValue<BytesLike>, version: PromiseOrValue<BigNumberish>, part: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    version(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ITemplateFactory.VersionStructOutput>;
    callStatic: {
        cloneTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        deployRole(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        deployTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        deployedByFactory(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        deploymentInfo(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<ITemplateFactory.DeploymentInfoStructOutput>;
        deprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        disableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        enableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        functionCall(target: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        initCodeHash(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        latestVersion(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        predictCloneAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        predictDeployAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        templateInstances(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string[]>;
        undeprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        updateDeployRole(templateId: PromiseOrValue<BytesLike>, _deployRole: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        uploadTemplate(templateId: PromiseOrValue<BytesLike>, initialPart: PromiseOrValue<BytesLike>, totalParts: PromiseOrValue<BigNumberish>, implementation: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        uploadTemplatePart(templateId: PromiseOrValue<BytesLike>, version: PromiseOrValue<BigNumberish>, part: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        version(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ITemplateFactory.VersionStructOutput>;
    };
    filters: {
        "DeployRoleUpdated(bytes32,bytes32,bytes32,address)"(templateId?: PromiseOrValue<BytesLike> | null, prevRole?: null, newRole?: null, sender?: PromiseOrValue<string> | null): DeployRoleUpdatedEventFilter;
        DeployRoleUpdated(templateId?: PromiseOrValue<BytesLike> | null, prevRole?: null, newRole?: null, sender?: PromiseOrValue<string> | null): DeployRoleUpdatedEventFilter;
        "FunctionCalled(address,bytes,bytes,address)"(target?: PromiseOrValue<string> | null, data?: null, result?: null, sender?: PromiseOrValue<string> | null): FunctionCalledEventFilter;
        FunctionCalled(target?: PromiseOrValue<string> | null, data?: null, result?: null, sender?: PromiseOrValue<string> | null): FunctionCalledEventFilter;
        "TemplateCloned(address,bytes32,uint256,bytes[],address)"(instance?: PromiseOrValue<string> | null, templateId?: PromiseOrValue<BytesLike> | null, version?: null, functionCalls?: null, sender?: PromiseOrValue<string> | null): TemplateClonedEventFilter;
        TemplateCloned(instance?: PromiseOrValue<string> | null, templateId?: PromiseOrValue<BytesLike> | null, version?: null, functionCalls?: null, sender?: PromiseOrValue<string> | null): TemplateClonedEventFilter;
        "TemplateDeployed(address,bytes32,uint256,bytes,bytes[],address)"(instance?: PromiseOrValue<string> | null, templateId?: PromiseOrValue<BytesLike> | null, version?: null, args?: null, functionCalls?: null, sender?: PromiseOrValue<string> | null): TemplateDeployedEventFilter;
        TemplateDeployed(instance?: PromiseOrValue<string> | null, templateId?: PromiseOrValue<BytesLike> | null, version?: null, args?: null, functionCalls?: null, sender?: PromiseOrValue<string> | null): TemplateDeployedEventFilter;
        "TemplateDisabled(bytes32,address)"(templateId?: PromiseOrValue<BytesLike> | null, sender?: PromiseOrValue<string> | null): TemplateDisabledEventFilter;
        TemplateDisabled(templateId?: PromiseOrValue<BytesLike> | null, sender?: PromiseOrValue<string> | null): TemplateDisabledEventFilter;
        "TemplateEnabled(bytes32,address)"(templateId?: PromiseOrValue<BytesLike> | null, sender?: PromiseOrValue<string> | null): TemplateEnabledEventFilter;
        TemplateEnabled(templateId?: PromiseOrValue<BytesLike> | null, sender?: PromiseOrValue<string> | null): TemplateEnabledEventFilter;
        "TemplateVersionCreated(bytes32,uint256,address,address)"(templateId?: PromiseOrValue<BytesLike> | null, version?: PromiseOrValue<BigNumberish> | null, implementation?: null, sender?: PromiseOrValue<string> | null): TemplateVersionCreatedEventFilter;
        TemplateVersionCreated(templateId?: PromiseOrValue<BytesLike> | null, version?: PromiseOrValue<BigNumberish> | null, implementation?: null, sender?: PromiseOrValue<string> | null): TemplateVersionCreatedEventFilter;
        "TemplateVersionDeprecated(bytes32,uint256,address)"(templateId?: PromiseOrValue<BytesLike> | null, version?: PromiseOrValue<BigNumberish> | null, sender?: PromiseOrValue<string> | null): TemplateVersionDeprecatedEventFilter;
        TemplateVersionDeprecated(templateId?: PromiseOrValue<BytesLike> | null, version?: PromiseOrValue<BigNumberish> | null, sender?: PromiseOrValue<string> | null): TemplateVersionDeprecatedEventFilter;
        "TemplateVersionUndeprecated(bytes32,uint256,address)"(templateId?: PromiseOrValue<BytesLike> | null, version?: PromiseOrValue<BigNumberish> | null, sender?: PromiseOrValue<string> | null): TemplateVersionUndeprecatedEventFilter;
        TemplateVersionUndeprecated(templateId?: PromiseOrValue<BytesLike> | null, version?: PromiseOrValue<BigNumberish> | null, sender?: PromiseOrValue<string> | null): TemplateVersionUndeprecatedEventFilter;
    };
    estimateGas: {
        cloneTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deployRole(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        deployTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deployedByFactory(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deploymentInfo(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        disableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        functionCall(target: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initCodeHash(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        latestVersion(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        predictCloneAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        predictDeployAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        templateInstances(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        undeprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateDeployRole(templateId: PromiseOrValue<BytesLike>, _deployRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        uploadTemplate(templateId: PromiseOrValue<BytesLike>, initialPart: PromiseOrValue<BytesLike>, totalParts: PromiseOrValue<BigNumberish>, implementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        uploadTemplatePart(templateId: PromiseOrValue<BytesLike>, version: PromiseOrValue<BigNumberish>, part: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        version(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        cloneTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deployRole(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deployTemplate(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, functionCalls: PromiseOrValue<BytesLike>[], salt: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deployedByFactory(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deploymentInfo(instance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        disableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enableTemplate(templateId: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        functionCall(target: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initCodeHash(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        latestVersion(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        predictCloneAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        predictDeployAddress(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, args: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        templateInstances(templateId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        undeprecateVersion(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateDeployRole(templateId: PromiseOrValue<BytesLike>, _deployRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        uploadTemplate(templateId: PromiseOrValue<BytesLike>, initialPart: PromiseOrValue<BytesLike>, totalParts: PromiseOrValue<BigNumberish>, implementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        uploadTemplatePart(templateId: PromiseOrValue<BytesLike>, version: PromiseOrValue<BigNumberish>, part: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        version(templateId: PromiseOrValue<BytesLike>, _version: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=ITemplateFactory.d.ts.map