UNPKG

superfuse-wizard

Version:

Interactive smart contract generator based on Superchain 's interoperability standard.

104 lines (82 loc) 2.72 kB
import type { CommonOptions} from './common-options'; import { defaults as infoDefaults } from "./set-info"; import type { ClockMode} from '../smart-contracts/set-clock-mode'; export const chainOptions = [false,'localhost', 'optimism', 'base'] as const; export type Chain = typeof chainOptions[number]; export const opSecOptions = [false, 'address', 'key', 'mnemonic'] as const; export type OpSec = typeof opSecOptions[number]; export const commonDefaults: Required<CommonOptions> = { //contract access: false, upgradeable: false, contractInfo: infoDefaults, //deploy deployInfo: infoDefaults, //test testInfo: infoDefaults, } as const; export function withCommonDefaults(opts: CommonOptions): Required<CommonOptions> { return { access: opts.access ?? false, upgradeable: opts.upgradeable ?? false, contractInfo: opts.contractInfo ?? {}, deployInfo: opts.deployInfo ?? {}, testInfo: opts.testInfo ?? {}, }; } export const defaults: Required<SharedL2NativeSuperchainERC20Options> = { //contract contractName: 'L2NativeSuperchainERC20', contractFile: 'L2NativeSuperchainERC20.sol', tokenName: 'L2NativeToken', tokenSymbol: 'NS', decimals: '18', ownerAddress: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', burnable: false, pausable: false, premint: '0', mintable: false, minterAddress: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', permit: false, votes: 'blocknumber', //true flashmint: false, access: commonDefaults.access, upgradeable: commonDefaults.upgradeable, contractInfo: commonDefaults.contractInfo, //deploy deployName: 'DeployL2NativeSuperchainERC20Script', conventionNumber: '000', chain: 'optimism', opSec: 'mnemonic', deployerAddress: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', deployInfo: commonDefaults.deployInfo, //test testName: 'L2NativeSuperchainERC20Test', testInfo: commonDefaults.testInfo, } as const; export interface SharedL2NativeSuperchainERC20Options extends CommonOptions { contractName: string; contractFile: string; tokenName: string; tokenSymbol: string; decimals: string; ownerAddress?: string; burnable?: boolean; pausable?: boolean; premint?: string; minterAddress?: string; mintable?: boolean; permit?: boolean; /** * Whether to keep track of historical balances for voting in on-chain governance, and optionally specify the clock mode. * Setting `true` is equivalent to 'blocknumber'. Setting a clock mode implies voting is enabled. */ votes: boolean | ClockMode; flashmint?: boolean; deployName: string; conventionNumber: string; chain: Chain; opSec: OpSec; deployerAddress: string; testName: string; }