import { BaseContract, Interface } from "ethers";
export type DeployUpgradeOptions = {
    versions?: (number | undefined)[];
    libraries?: ({
        [libraryName: string]: string;
    } | undefined)[];
    logOutput?: boolean;
};
export type UpgradeOptions = {
    version?: number;
    libraries?: {
        [libraryName: string]: string;
    };
    logOutput?: boolean;
};
export declare const deployProxy: (contractName: string, args: any[], libraries?: {
    [libraryName: string]: string;
}, version?: number, logOutput?: boolean) => Promise<BaseContract>;
export declare const deployAndInitializeLatest: (contractName: string, initializerCalls: {
    name: string;
    args: any[];
}[], libraries?: {
    [libraryName: string]: string;
}, logOutput?: boolean) => Promise<BaseContract>;
export declare const deployProxyOnly: (contractName: string, libraries?: {
    [libraryName: string]: string;
}, logOutput?: boolean) => Promise<string>;
export declare const deployProxyWithoutInitialization: (contractName: string, libraries?: {
    [libraryName: string]: string;
}, logOutput?: boolean) => Promise<string>;
export declare const initializeProxy: (proxyAddress: string, contractName: string, args: any[], libraries?: {
    [libraryName: string]: string;
}, version?: number) => Promise<BaseContract>;
export declare const upgradeProxy: (previousVersionContractName: string, newVersionContractName: string, proxyAddress: string, args: any[] | undefined, options: UpgradeOptions) => Promise<BaseContract>;
export declare const deployAndUpgrade: (contractNames: string[], args: any[][], options: DeployUpgradeOptions) => Promise<BaseContract>;
export declare function getInitializerData(contractInterface: Interface, args: any[], version?: number): string;
export declare const deployUpgradeableWithoutInitialization: (contractName: string, libraries?: {
    [libraryName: string]: string;
}, logOutput?: boolean) => Promise<string>;
export declare const initializeProxyAllVersions: (contractName: string, proxyAddress: string, initializerCalls: {
    version?: number;
    args: any[];
}[], logOutput?: boolean) => Promise<BaseContract>;
