import { Debugger } from 'debug'; import { ethers } from 'ethers'; import type { types } from '@abacus-network/utils'; import { AbacusContracts, AbacusFactories } from '../contracts'; import { MultiProvider } from '../providers/MultiProvider'; import { BeaconProxyAddresses, ProxiedContract } from '../proxy'; import { ChainMap, ChainName } from '../types'; import { ContractVerificationInput } from './verify/types'; export interface DeployerOptions { logger?: Debugger; } export declare abstract class AbacusDeployer { protected readonly multiProvider: MultiProvider; protected readonly configMap: ChainMap; protected readonly factories: Factories; protected readonly options?: DeployerOptions | undefined; deployedContracts: Partial>; verificationInputs: ChainMap; protected logger: Debugger; constructor(multiProvider: MultiProvider, configMap: ChainMap, factories: Factories, options?: DeployerOptions | undefined); abstract deployContracts(chain: Chain, config: Config): Promise; deploy(partialDeployment?: Partial>): Promise>; protected deployContractFromFactory(chain: Chain, factory: F, contractName: string, args: Parameters): Promise>; deployContract(chain: Chain, contractName: K, args: Parameters): Promise>; protected deployProxy(chain: Chain, implementation: C, beaconAddress: string, initArgs: Parameters): Promise>; /** * Deploys the UpgradeBeacon, Implementation and Proxy for a given contract * */ deployProxiedContract>>(chain: Chain, contractName: K, deployArgs: Parameters, ubcAddress: types.Address, initArgs: Parameters): Promise>; /** * Sets up a new proxy with the same beacon and implementation * */ duplicateProxiedContract(chain: Chain, proxy: ProxiedContract, initArgs: Parameters): Promise>; } //# sourceMappingURL=AbacusDeployer.d.ts.map