import type { Deployments } from '../Deployments'; import { TAddress } from '../../../models/TAddress'; import { TEth } from '../../../models/TEth'; import { IAccount } from '../../../models/TAccount'; import { Constructor } from '../../../utils/types'; import { ContractBase } from '../../ContractBase'; import { DeploymentsStorage } from '../storage/DeploymentsStorage'; export interface IProxy extends ContractBase { changeAdmin?: any; } export interface IProxyAdmin extends ContractBase { upgradeAndCall: any; } export interface IBeaconProxy extends ContractBase { $constructor(deployer: IAccount, beacon: TEth.Address, initData: TEth.Hex): any; } export interface IBeacon extends ContractBase { $constructor(deployer: IAccount, implementation: TEth.Address, initialOwner?: TEth.Address): any; implementation(): Promise; upgradeTo(sender: IAccount, newImplementation: TAddress): any; } interface IDeploymentCtx { ImplementationContract: Constructor; deployer: IAccount; owner?: IAccount; deployments: Deployments; implementation: { address: TAddress; initData: TEth.Hex; }; options?: { skipStorageLayoutCheck?: boolean; }; upgradeImplementation?: boolean; } interface IProxyDeploymentCtx extends IDeploymentCtx { proxyId: string; TransparentProxy?: { Proxy?: Constructor; ProxyAdmin?: Constructor; }; Beacon?: { Beacon?: Constructor; BeaconProxy?: Constructor; }; } interface IBeaconDeploymentCtx extends IDeploymentCtx { beaconId: string; beaconProxyId: string; Beacon?: { Beacon?: Constructor; BeaconProxy?: Constructor; }; } export declare class ProxyDeployment { private store; private opts; constructor(store: DeploymentsStorage, opts: { TransparentProxy?: { Proxy?: Constructor; ProxyAdmin?: Constructor; }; Beacon?: { Beacon?: Constructor; BeaconProxy?: Constructor; }; }); ensureProxy(ctx: IProxyDeploymentCtx): Promise<{ contractProxy: ContractBase; contractProxyDeployment: import("../storage/DeploymentsStorage").IDeployment; contractProxyAdmin: IProxyAdmin; }>; ensureBeaconProxy(ctx: IBeaconDeploymentCtx): Promise<{ contractBeacon: IBeacon; contractBeaconDeployment: import("../storage/DeploymentsStorage").IDeployment; contractBeaconProxy: IBeaconProxy; contractBeaconProxyDeployment: import("../storage/DeploymentsStorage").IDeployment; }>; protected ensureTransparentProxy(ctx: IProxyDeploymentCtx): Promise<{ contractProxy: ContractBase; contractProxyDeployment: import("../storage/DeploymentsStorage").IDeployment; contractProxyAdmin: IProxyAdmin; }>; private getOpenzeppelinUpgradable; protected ensureBeaconInner(ctx: IBeaconDeploymentCtx): Promise<{ contractBeacon: IBeacon; contractBeaconDeployment: import("../storage/DeploymentsStorage").IDeployment; contractBeaconProxy: IBeaconProxy; contractBeaconProxyDeployment: import("../storage/DeploymentsStorage").IDeployment; }>; private saveStorageLayout; private requireCompatibleStorageLayout; private getOzVersionByBeacon; } export {};