dop-stick
Version:
Source control tooling for versionable-upgradeable smart contracts
112 lines • 3.24 kB
TypeScript
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