UNPKG

dop-stick

Version:

Source control tooling for versionable-upgradeable smart contracts

133 lines 4.61 kB
import { BigNumber } from 'ethers'; import { DiamondCutActionType } from './types/diamond'; export declare function _initializeSDK(): void; import { upgrade as originalUpgrade, deployModule as originalDeployModule } from './upgrade'; import { mine as originalMine } from "./mine"; import { BaseDiamondInfo } from './info'; /** * Upgrades an existing diamond contract with new or modified facets. * Handles the entire upgrade process including compilation, deployment, and diamond cuts. * * @param config - Configuration object for the upgrade process * @param config.paths - Contract and artifact paths * @param config.paths.contracts - Path to contract source files * @param config.paths.artifacts - Path to compiled contract artifacts * @param config.compiler - Compiler settings * @param config.compiler.name - Compiler name (e.g., 'hardhat', 'foundry') * @param config.modules - Array of module names to upgrade * @param config.parallelization - Parallel processing settings * @param config.parallelization.enabled - Enable parallel processing * @param config.parallelization.maxConcurrent - Maximum concurrent operations * @param config.fail_all_if_one_fails - Stop all upgrades if any module fails * * @returns Promise<UpgradeContext> - Detailed results of the upgrade process * @throws {Error} If compilation fails, deployment fails, or diamond cut fails * * Example usage: * ```ts * const config = { * paths: { * contracts: './contracts', * artifacts: './artifacts' * }, * compiler: { * name: 'hardhat' * }, * modules: ['TokenModule', 'StakingModule'], * parallelization: { * enabled: true, * maxConcurrent: 3 * }, * fail_all_if_one_fails: true * }; * * const result = await upgrade(config); * ``` * * The upgrade process includes: * 1. Compilation check of contracts * 2. Parallel or sequential module deployment * 3. Pre-deployment validation * 4. Batched diamond cuts * 5. Automatic retry with different cut actions on failure * 6. Detailed reporting and gas usage tracking */ export declare const upgrade: typeof originalUpgrade; /** * Deploys a new module to be used with a diamond contract. * * @param config - Configuration for module deployment * @returns Promise<string> - Deployed module address * * Example: * ```ts * const moduleAddress = await deployModule({ * paths: { contracts: './contracts' }, * module: 'MyNewModule' * }); * ``` */ export declare const deployModule: typeof originalDeployModule; /** * Deploys a new diamond contract with specified facets. * * @param config - Configuration for diamond deployment * @returns Promise<string> - Deployed diamond address * * Example: * ```ts * const diamondAddress = await mine({ * paths: { contracts: './contracts' }, * modules: ['BaseModule', 'ExtendedModule'], * compiler: { name: 'hardhat' } * }); * ``` */ export declare const mine: typeof originalMine; declare const DiamondInfo: typeof BaseDiamondInfo; export { DiamondInfo }; export { DiamondCutAction } from './types/diamond'; export { diamondHelper } from './utils/diamondHelpers'; export { InitializationHelper, InitializationData } from './utils/initialization'; export { configLoader } from './utils/configLoader'; export { sleep, formatDuration, isDefined, safeStringify, ensureSuffix } from './utils/common'; export interface UpgradeContext { startTime: number; moduleResults: ModuleUpgradeResult[]; totalGasUsed: BigNumber; successfulModules: number; successfulSelectors: number; failedUpgrades: Array<{ module: string; selectors: string[]; error: string; }>; } export interface ModuleUpgradeResult { moduleName: string; deployedAddress: string; originalAction: DiamondCutActionType; wasRetried: boolean; retryAction?: DiamondCutActionType; retrySuccess?: boolean; deploymentTime: string; gasUsed: string; costInEth: string; functions: { signature: string; selector: string; status: string; }[]; error?: string; } export interface GasInfo { gasLimit: BigNumber; gasPrice: BigNumber; maxFeePerGas?: BigNumber; maxPriorityFeePerGas?: BigNumber; } export type { DiamondCutActionType, FacetCut, FacetInfo, DiamondCutParams, } from './types/diamond'; export type { IUpgradeService, TransactionConfig, UpgradeDetailsStruct, } from './types/contracts'; export type { DopStickConfig, } from './types/config'; export declare function initializeEnvironment(): void; //# sourceMappingURL=index.d.ts.map