UNPKG

dop-stick

Version:

Source control tooling for versionable-upgradeable smart contracts

112 lines 3.24 kB
import { BigNumber, Contract, ContractTransaction } from 'ethers'; import { FacetCut } from './diamond'; import { DiamondStandardsConfig, InitializationConfig } from './config'; export type PromiseOrValue<T> = T | Promise<T>; export declare enum FacetCutAction { Add = 0, Replace = 1, Remove = 2 } export interface UpgradeDetailsStruct { moduleAddress: string; action: number; selectors: string[]; } export interface TransactionConfig { gasLimit?: string; gasPrice?: string; maxFeePerGas?: string; maxPriorityFeePerGas?: string; } export interface IUpgradeService extends Contract { diamondCut(cuts: FacetCut[], init: string, calldata: string): Promise<ContractTransaction>; versionedUpgrade(upgradeDetails: UpgradeDetailsStruct[], currentVersion: string, newVersion: string, txConfig?: TransactionConfig): Promise<ContractTransaction>; functions: { [key: string]: (...args: any[]) => Promise<any>; diamondCut: (cuts: FacetCut[], init: string, calldata: string) => Promise<ContractTransaction>; versionedUpgrade: (upgradeDetails: UpgradeDetailsStruct[], currentVersion: string, newVersion: string, txConfig?: TransactionConfig) => Promise<ContractTransaction>; }; } export interface UpgradeActionResult { gasUsed: BigNumber; transactionHash: string; successCount: number; failedSelectors: string[]; retryAttempts?: Array<RetryAttempt>; results?: { added: string[]; replaced: string[]; removed: string[]; failed: string[]; }; } export interface ModuleUpgradeResult { moduleName: string; deployedAddress: string; originalAction: number; wasRetried: boolean; retryAction?: number; retrySuccess?: boolean; deploymentTime: string; gasUsed: string; costInEth: string; functions: { signature: string; selector: string; status: string; }[]; error?: string; } export interface UpgradeContext { startTime: number; moduleResults: ModuleUpgradeResult[]; totalGasUsed: BigNumber; successfulModules: number; successfulSelectors: number; failedUpgrades: Array<{ module: string; selectors: string[]; error: string; }>; } export interface RetryAttempt { selector: string; originalAction: string; retryAction: string; success: boolean; gasUsed: string; error?: string; } export interface DopStickConfig { paths: { typechain: string; upgrades: string; }; contracts: { upgradeService: { name: string; path?: string; }; diamond: { address: string; name: string; standards?: DiamondStandardsConfig; }; diamondCut: { name: string; }; }; gas: { maxRetries: number; maxFeePerGas: string; maxPriorityFeePerGas: string; }; security: { ownershipValidation: boolean; selectorCollisionCheck: boolean; facetAddressValidation: boolean; estimateGasBeforeUpgrade: boolean; }; initialization: InitializationConfig; } //# sourceMappingURL=contracts.d.ts.map