UNPKG

dop-stick

Version:

Source control tooling for versionable-upgradeable smart contracts

200 lines 5.52 kB
import { BigNumber } from 'ethers'; import { DiamondCutActionType, FacetCut } from './diamond'; /** * Represents statistics for the upgrade process */ export interface UpgradeStats { successfulModules: number; totalModules: number; successfulSelectors: number; totalSelectors: number; totalGasUsed: BigNumber; totalCostInEth: string; failedUpgrades: FailedUpgrade[]; } /** * Represents a failed upgrade attempt */ export interface FailedUpgrade { module: string; selectors: string[]; error: string; } /** * Result of a single module upgrade operation */ export interface UpgradeModuleResult { moduleName: string; originalFacetName?: string; deployedAddress: string; originalAction: number; wasRetried: boolean; retryAction?: number; retrySuccess?: boolean; deploymentTime: string; deploymentHash?: string; gasUsed: string; costInEth: string; functions: { signature: string; selector: string; status: string; }[]; error?: string; } /** * Context for the entire upgrade process */ export interface UpgradeContext { startTime: number; endTime?: number; duration?: number; error?: string; moduleResults: UpgradeModuleResult[]; successfulModules: number; successfulSelectors: number; failedUpgrades: { module: string; selectors: string[]; error: string; }[]; totalGasUsed: BigNumber; upgradeTxHash?: string; upgradeBlockNumber?: number; upgradeGasUsed?: string; upgradeCostInEth?: string; warnings?: UpgradeWarning[]; } /** * Structure of the upgrade.json file */ export interface UpgradeJson { upgrades: UpgradeModule[]; } /** * Single module configuration in upgrade.json */ export interface UpgradeModule { module: string; add?: string[]; replace?: string[]; remove?: string[]; } /** * Represents a module's functions grouped for batch processing */ export interface BatchedModuleFunctions { /** Name of the module */ moduleName: string; /** All function signatures for this module */ functionSignatures: string[]; /** Original action mapping for each function */ originalActions: Map<string, DiamondCutActionType>; /** Suggested action mapping for each function (after validation) */ suggestedActions?: Map<string, DiamondCutActionType>; } /** * Result of batch validation for a single module */ export interface ModuleBatchValidationResult { /** Name of the module */ moduleName: string; /** Whether the validation passed */ isValid: boolean; /** Array of error messages */ errors: string[]; /** Array of warning messages */ warnings: string[]; /** Details of any function collisions found */ collisions: Map<string, boolean>; /** Map of function signatures to their suggested actions */ suggestedChanges: Map<string, DiamondCutActionType>; /** Map of original function signatures to their original actions */ originalSignatures: Map<string, DiamondCutActionType>; /** Array of function signatures */ functionSignatures: string[]; needsReview: boolean; pendingMissingFunctions?: string[]; pendingRemovals: Array<{ signature: string; reason: string; }>; pendingSuggestions: Array<{ signature: string; originalAction: DiamondCutActionType; suggestedAction: DiamondCutActionType; reason: string; }>; pendingDiscardedFunctions: Array<{ signature: string; reason: string; }>; } /** * Extends the FacetCut interface to include module information */ export interface ExtendedFacetCut extends FacetCut { /** Name of the module this cut belongs to */ moduleName: string; functionSignatures?: string[]; changed?: boolean; originalAction?: DiamondCutActionType; removedReason?: 'missing' | 'invalid'; removedFunctions?: Array<{ signature: string; reason: 'missing' | 'invalid' | 'discarded'; }>; originalFacetName?: string; } export type UpgradeEntry = string | DetailedUpgradeModule; export interface DetailedUpgradeModule { module: string; add?: string[]; replace?: string[]; remove?: string[]; } export interface BaseUpgradeConfig { fail_all_if_one_fails: boolean; add_or_replace: boolean; } export interface UpgradeConfig extends BaseUpgradeConfig { modules: (string | UpgradeModule)[]; upgrades?: (string | UpgradeModule)[]; } /** * Represents a batch validation error */ export interface BatchValidationError { moduleName: string; error: string; details?: string; } /** * Represents a pre-deployment check */ export type PreDeploymentCheckType = 'cuts' | 'emergency' | 'gas' | 'balance' | 'libraries'; export type PreDeploymentCheckStatus = 'success' | 'warning' | 'failed'; export interface PreDeploymentCheckDetails { moduleCount?: number; functionCount?: number; error?: string; gasPrice?: string; current?: string; minimum?: string; balance?: string; blockDelay?: number; blockNumber?: number; count?: number; libraries?: string[]; } export interface PreDeploymentCheck { type: PreDeploymentCheckType; status: PreDeploymentCheckStatus; details?: PreDeploymentCheckDetails; } export interface UpgradeWarning { timestamp: number; message: string; severity: 'LOW' | 'MEDIUM' | 'HIGH'; } //# sourceMappingURL=upgrade.d.ts.map