dop-stick
Version:
Source control tooling for versionable-upgradeable smart contracts
67 lines • 3.51 kB
TypeScript
/**
* @fileoverview Main upgrade module for handling diamond upgrades
* Supports both parallel and sequential upgrade processes
*/
import { ethers, Signer } from 'ethers';
import { DopStickConfig } from './types/config';
import { UpgradeContext, ExtendedFacetCut, UpgradeModuleResult } from './types/upgrade';
import { IDeploymentTimelineAdapter, IParallelDeploymentTimelineAdapter } from './utils/logsAndMetrics/adapters/types';
declare function getSigner(): Promise<Signer>;
export declare function executeUpgradeInBatches(cuts: ExtendedFacetCut[], config: DopStickConfig, context: UpgradeContext): Promise<void>;
/**
* Main upgrade function that orchestrates the entire upgrade process
* @param config - DopStick configuration object containing upgrade settings
* @returns Promise<UpgradeContext> - Context object containing upgrade results
* @throws {Error} If upgrade process fails at any stage
*/
export declare function upgrade(config: DopStickConfig): Promise<UpgradeContext>;
/**
* Deploys a single module as part of the upgrade process
* @param moduleName - Name of the module to deploy
* @param moduleIndex - Current index in the deployment sequence
* @param totalModules - Total number of modules to deploy
* @param context - Current upgrade context
* @param config - Optional DopStick configuration
* @returns Promise<string> - Deployed contract address
* @throws {Error} If deployment fails or private key is missing
*/
declare function deployModule(moduleName: string, moduleIndex: number, totalModules: number, context: UpgradeContext, config?: DopStickConfig): Promise<string>;
/**
* Executes a diamond upgrade with rollback support
* @param finalCuts - Array of facet cuts to be applied
* @param config - DopStick configuration object
* @param context - Upgrade context for tracking progress and results
* @throws {Error} If diamond address is missing or upgrade fails
*/
declare function executeUpgrade(finalCuts: ExtendedFacetCut[], config: DopStickConfig, context: UpgradeContext): Promise<void>;
/**
* Processes module groups sequentially
* @param cuts - Array of ExtendedFacetCut objects to process
* @param config - DopStick configuration
* @returns Promise<UpgradeModuleResult[]> Results of module processing
*/
declare function processModuleGroups(finalCuts: ExtendedFacetCut[], config: DopStickConfig, deploymentLogger: DeploymentLogger): Promise<UpgradeModuleResult[]>;
/**
* Process module groups in parallel using separate wallets
* @param cuts - Array of ExtendedFacetCut objects to process
* @param config - DopStick configuration
* @returns Promise<UpgradeModuleResult[]> Array of results for each module
* @throws {Error} If parallel processing fails
*/
declare function processModuleGroupsParallel(cuts: ExtendedFacetCut[], config: DopStickConfig, deploymentLogger: IParallelDeploymentTimelineAdapter): Promise<UpgradeModuleResult[]>;
/**
* Exports for external use
*/
export { deployModule, executeUpgrade, getSigner, type UpgradeContext, type UpgradeModuleResult, processModuleGroups, processModuleGroupsParallel, upgrade as parallelUpgrade };
/**
* Type declarations for module augmentation
*/
declare module 'hardhat/types/runtime' {
interface HardhatRuntimeEnvironment {
upgrades: {
deployProxy: (Contract: any, args: any[], opts?: any) => Promise<ethers.Contract>;
};
}
}
type DeploymentLogger = IDeploymentTimelineAdapter | IParallelDeploymentTimelineAdapter;
//# sourceMappingURL=upgrade.d.ts.map