@whetstone-research/doppler-sdk 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +66 -1
  2. package/dist/DopplerSDK.js +19 -19
  3. package/dist/DopplerSDK.mjs +18 -18
  4. package/dist/abis/index.d.mts +32 -1
  5. package/dist/abis/index.d.ts +32 -1
  6. package/dist/abis/index.js +26 -22
  7. package/dist/abis/index.mjs +1 -1
  8. package/dist/addresses.d.mts +1 -0
  9. package/dist/addresses.d.ts +1 -0
  10. package/dist/addresses.js +7 -7
  11. package/dist/addresses.mjs +2 -2
  12. package/dist/builders/DynamicAuctionBuilder.js +10 -10
  13. package/dist/builders/DynamicAuctionBuilder.mjs +9 -9
  14. package/dist/builders/MulticurveBuilder.d.mts +16 -0
  15. package/dist/builders/MulticurveBuilder.d.ts +16 -0
  16. package/dist/builders/MulticurveBuilder.js +10 -10
  17. package/dist/builders/MulticurveBuilder.mjs +9 -9
  18. package/dist/builders/StaticAuctionBuilder.js +10 -10
  19. package/dist/builders/StaticAuctionBuilder.mjs +9 -9
  20. package/dist/builders/index.js +18 -18
  21. package/dist/builders/index.mjs +11 -11
  22. package/dist/builders/shared.js +11 -11
  23. package/dist/builders/shared.mjs +7 -7
  24. package/dist/{chunk-LOVD3NCN.js → chunk-3MVW6UIW.js} +18 -2
  25. package/dist/chunk-3MVW6UIW.js.map +1 -0
  26. package/dist/{chunk-DVAQB7TB.mjs → chunk-3NFSMMBF.mjs} +3 -3
  27. package/dist/{chunk-DVAQB7TB.mjs.map → chunk-3NFSMMBF.mjs.map} +1 -1
  28. package/dist/{chunk-PBWOCVDZ.mjs → chunk-4TAAZ6W3.mjs} +248 -51
  29. package/dist/chunk-4TAAZ6W3.mjs.map +1 -0
  30. package/dist/{chunk-4DUE547M.js → chunk-6BQY5EPB.js} +4 -2
  31. package/dist/chunk-6BQY5EPB.js.map +1 -0
  32. package/dist/{chunk-HVM7KZJM.mjs → chunk-6HFZ6XMV.mjs} +4 -4
  33. package/dist/{chunk-HVM7KZJM.mjs.map → chunk-6HFZ6XMV.mjs.map} +1 -1
  34. package/dist/{chunk-EG6O2TUX.js → chunk-7Z2UGWE7.js} +26 -26
  35. package/dist/{chunk-EG6O2TUX.js.map → chunk-7Z2UGWE7.js.map} +1 -1
  36. package/dist/{chunk-O2DZH23A.mjs → chunk-CYY5IATT.mjs} +9 -5
  37. package/dist/chunk-CYY5IATT.mjs.map +1 -0
  38. package/dist/{chunk-BZKX3J3R.mjs → chunk-E2NF4AQB.mjs} +18 -3
  39. package/dist/chunk-E2NF4AQB.mjs.map +1 -0
  40. package/dist/{chunk-B4B7BXLI.js → chunk-E6ACC5S6.js} +24 -24
  41. package/dist/{chunk-B4B7BXLI.js.map → chunk-E6ACC5S6.js.map} +1 -1
  42. package/dist/{chunk-K5CV3MIH.mjs → chunk-FQ3PVXZU.mjs} +5 -5
  43. package/dist/{chunk-K5CV3MIH.mjs.map → chunk-FQ3PVXZU.mjs.map} +1 -1
  44. package/dist/{chunk-WQKBQRBS.mjs → chunk-GCT3IZ3E.mjs} +12 -12
  45. package/dist/{chunk-WQKBQRBS.mjs.map → chunk-GCT3IZ3E.mjs.map} +1 -1
  46. package/dist/{chunk-LDZCTC5Q.mjs → chunk-H5SUGQ2C.mjs} +45 -7
  47. package/dist/chunk-H5SUGQ2C.mjs.map +1 -0
  48. package/dist/{chunk-PE47QUJV.mjs → chunk-HH7HQ4HC.mjs} +3 -3
  49. package/dist/{chunk-PE47QUJV.mjs.map → chunk-HH7HQ4HC.mjs.map} +1 -1
  50. package/dist/{chunk-LXUF7RNX.mjs → chunk-IWJOPXYN.mjs} +4 -3
  51. package/dist/chunk-IWJOPXYN.mjs.map +1 -0
  52. package/dist/{chunk-MBOKYN2Y.js → chunk-K3TEDYUG.js} +20 -20
  53. package/dist/{chunk-MBOKYN2Y.js.map → chunk-K3TEDYUG.js.map} +1 -1
  54. package/dist/{chunk-NVVEUALG.mjs → chunk-MH74WYVZ.mjs} +5 -5
  55. package/dist/{chunk-NVVEUALG.mjs.map → chunk-MH74WYVZ.mjs.map} +1 -1
  56. package/dist/{chunk-ZVH7VBH5.mjs → chunk-N74ICDSX.mjs} +118 -20
  57. package/dist/chunk-N74ICDSX.mjs.map +1 -0
  58. package/dist/{chunk-C7GN6GPG.js → chunk-OROTK4OT.js} +51 -27
  59. package/dist/chunk-OROTK4OT.js.map +1 -0
  60. package/dist/{chunk-Z7ZGPSQF.js → chunk-P4BT5GDO.js} +76 -72
  61. package/dist/chunk-P4BT5GDO.js.map +1 -0
  62. package/dist/{chunk-YBDWQTUH.mjs → chunk-QFQXHDC7.mjs} +76 -9
  63. package/dist/chunk-QFQXHDC7.mjs.map +1 -0
  64. package/dist/{chunk-RKJ2466C.mjs → chunk-QOGBOT2M.mjs} +3 -3
  65. package/dist/{chunk-RKJ2466C.mjs.map → chunk-QOGBOT2M.mjs.map} +1 -1
  66. package/dist/{chunk-3ALNQHGL.js → chunk-RLUMYHPI.js} +76 -9
  67. package/dist/chunk-RLUMYHPI.js.map +1 -0
  68. package/dist/{chunk-5FJCRKQ6.js → chunk-RXUJ4DUB.js} +28 -28
  69. package/dist/{chunk-5FJCRKQ6.js.map → chunk-RXUJ4DUB.js.map} +1 -1
  70. package/dist/{chunk-MGLI4N4B.js → chunk-SAX7P3MH.js} +22 -22
  71. package/dist/{chunk-MGLI4N4B.js.map → chunk-SAX7P3MH.js.map} +1 -1
  72. package/dist/{chunk-3ORKVXQL.js → chunk-TJCMFITE.js} +27 -27
  73. package/dist/{chunk-3ORKVXQL.js.map → chunk-TJCMFITE.js.map} +1 -1
  74. package/dist/{chunk-TL7U67CX.js → chunk-UIPSHVT4.js} +11 -11
  75. package/dist/{chunk-TL7U67CX.js.map → chunk-UIPSHVT4.js.map} +1 -1
  76. package/dist/{chunk-5ZPBKSNS.mjs → chunk-UY4TVYEU.mjs} +3 -3
  77. package/dist/{chunk-5ZPBKSNS.mjs.map → chunk-UY4TVYEU.mjs.map} +1 -1
  78. package/dist/{chunk-PQUS2LCD.js → chunk-UZTVXZP3.js} +16 -16
  79. package/dist/{chunk-PQUS2LCD.js.map → chunk-UZTVXZP3.js.map} +1 -1
  80. package/dist/{chunk-HMZEYBFO.mjs → chunk-V32Q2S3U.mjs} +4 -4
  81. package/dist/{chunk-HMZEYBFO.mjs.map → chunk-V32Q2S3U.mjs.map} +1 -1
  82. package/dist/{chunk-7F4O7NPS.js → chunk-V5GPJ6S2.js} +26 -26
  83. package/dist/{chunk-7F4O7NPS.js.map → chunk-V5GPJ6S2.js.map} +1 -1
  84. package/dist/{chunk-DOWDXOTK.mjs → chunk-VGCXJRUV.mjs} +51 -27
  85. package/dist/chunk-VGCXJRUV.mjs.map +1 -0
  86. package/dist/{chunk-J32XSN44.js → chunk-WYRM5BAI.js} +344 -147
  87. package/dist/chunk-WYRM5BAI.js.map +1 -0
  88. package/dist/{chunk-OUUFER2X.mjs → chunk-X7FRTHUL.mjs} +4 -4
  89. package/dist/{chunk-OUUFER2X.mjs.map → chunk-X7FRTHUL.mjs.map} +1 -1
  90. package/dist/{chunk-E54BP2GN.js → chunk-Y6VZD4C6.js} +53 -15
  91. package/dist/chunk-Y6VZD4C6.js.map +1 -0
  92. package/dist/{chunk-5MP6AMPB.js → chunk-YFJUIO2A.js} +132 -34
  93. package/dist/chunk-YFJUIO2A.js.map +1 -0
  94. package/dist/{chunk-WHQHXYPB.js → chunk-YKRDFXU3.js} +5 -5
  95. package/dist/{chunk-WHQHXYPB.js.map → chunk-YKRDFXU3.js.map} +1 -1
  96. package/dist/constants.d.mts +7 -1
  97. package/dist/constants.d.ts +7 -1
  98. package/dist/constants.js +51 -47
  99. package/dist/constants.mjs +1 -1
  100. package/dist/deployments.generated.d.mts +72 -5
  101. package/dist/deployments.generated.d.ts +72 -5
  102. package/dist/deployments.generated.js +2 -2
  103. package/dist/deployments.generated.mjs +1 -1
  104. package/dist/entities/DopplerFactory.d.mts +2 -0
  105. package/dist/entities/DopplerFactory.d.ts +2 -0
  106. package/dist/entities/DopplerFactory.js +8 -8
  107. package/dist/entities/DopplerFactory.mjs +7 -7
  108. package/dist/entities/auction/DynamicAuction.js +5 -5
  109. package/dist/entities/auction/DynamicAuction.mjs +4 -4
  110. package/dist/entities/auction/MulticurvePool.d.mts +9 -3
  111. package/dist/entities/auction/MulticurvePool.d.ts +9 -3
  112. package/dist/entities/auction/MulticurvePool.js +7 -6
  113. package/dist/entities/auction/MulticurvePool.mjs +6 -5
  114. package/dist/entities/auction/StaticAuction.js +5 -5
  115. package/dist/entities/auction/StaticAuction.mjs +4 -4
  116. package/dist/entities/auction/index.js +11 -10
  117. package/dist/entities/auction/index.mjs +8 -7
  118. package/dist/entities/quoter/Quoter.js +5 -5
  119. package/dist/entities/quoter/Quoter.mjs +4 -4
  120. package/dist/entities/quoter/index.js +5 -5
  121. package/dist/entities/quoter/index.mjs +4 -4
  122. package/dist/entities/token/derc20/Derc20.js +3 -3
  123. package/dist/entities/token/derc20/Derc20.mjs +2 -2
  124. package/dist/entities/token/derc20/index.js +3 -3
  125. package/dist/entities/token/derc20/index.mjs +2 -2
  126. package/dist/entities/token/index.js +3 -3
  127. package/dist/entities/token/index.mjs +2 -2
  128. package/dist/index.d.mts +3 -3
  129. package/dist/index.d.ts +3 -3
  130. package/dist/index.js +110 -102
  131. package/dist/index.js.map +1 -1
  132. package/dist/index.mjs +18 -18
  133. package/dist/index.mjs.map +1 -1
  134. package/dist/types.d.mts +32 -1
  135. package/dist/types.d.ts +32 -1
  136. package/dist/types.js +8 -8
  137. package/dist/types.mjs +3 -3
  138. package/dist/utils/airlock.js +7 -7
  139. package/dist/utils/airlock.mjs +3 -3
  140. package/dist/utils/index.js +10 -10
  141. package/dist/utils/index.mjs +5 -5
  142. package/dist/utils/tokenAddressMiner.d.mts +7 -0
  143. package/dist/utils/tokenAddressMiner.d.ts +7 -0
  144. package/dist/utils/tokenAddressMiner.js +3 -3
  145. package/dist/utils/tokenAddressMiner.mjs +2 -2
  146. package/package.json +1 -1
  147. package/dist/chunk-3ALNQHGL.js.map +0 -1
  148. package/dist/chunk-4DUE547M.js.map +0 -1
  149. package/dist/chunk-5MP6AMPB.js.map +0 -1
  150. package/dist/chunk-BZKX3J3R.mjs.map +0 -1
  151. package/dist/chunk-C7GN6GPG.js.map +0 -1
  152. package/dist/chunk-DOWDXOTK.mjs.map +0 -1
  153. package/dist/chunk-E54BP2GN.js.map +0 -1
  154. package/dist/chunk-J32XSN44.js.map +0 -1
  155. package/dist/chunk-LDZCTC5Q.mjs.map +0 -1
  156. package/dist/chunk-LOVD3NCN.js.map +0 -1
  157. package/dist/chunk-LXUF7RNX.mjs.map +0 -1
  158. package/dist/chunk-O2DZH23A.mjs.map +0 -1
  159. package/dist/chunk-PBWOCVDZ.mjs.map +0 -1
  160. package/dist/chunk-YBDWQTUH.mjs.map +0 -1
  161. package/dist/chunk-Z7ZGPSQF.js.map +0 -1
  162. package/dist/chunk-ZVH7VBH5.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/builders/MulticurveBuilder.ts"],"names":[],"mappings":"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","file":"chunk-N74ICDSX.mjs","sourcesContent":["import type { Address } from 'viem';\nimport {\n DEFAULT_V3_YEARLY_MINT_RATE,\n DECAY_MAX_START_FEE,\n FEE_TIERS,\n TICK_SPACINGS,\n V4_MAX_FEE,\n WAD,\n ZERO_ADDRESS,\n} from '../constants';\n\nimport {\n marketCapToTicksForMulticurve,\n marketCapToTickForMulticurve,\n validateMarketCapParameters,\n} from '../utils';\nimport {\n isNoOpEnabledChain,\n isLaunchpadEnabledChain,\n type CreateMulticurveParams,\n type GovernanceOption,\n type MigrationConfig,\n type VestingConfig,\n type TokenConfig,\n type MulticurveMarketCapCurvesConfig,\n type MulticurveMarketCapPreset,\n type ModuleAddressOverrides,\n type RehypeDopplerHookConfig,\n type MulticurveInitializerConfig,\n} from '../types';\nimport { type SupportedChainId } from '../addresses';\nimport {\n type BaseAuctionBuilder,\n type MarketCapPresetOverrides,\n buildCurvesFromPresets,\n} from './shared';\n\nexport class MulticurveBuilder<\n C extends SupportedChainId,\n> implements BaseAuctionBuilder<C> {\n private token?: TokenConfig;\n private sale?: CreateMulticurveParams<C>['sale'];\n private pool?: CreateMulticurveParams<C>['pool'];\n private initializer?: CreateMulticurveParams<C>['initializer'];\n private schedule?: CreateMulticurveParams<C>['schedule'];\n private dopplerHook?: RehypeDopplerHookConfig;\n private vesting?: VestingConfig;\n private governance?: GovernanceOption<C>;\n private migration?: MigrationConfig;\n private integrator?: Address;\n private userAddress?: Address;\n private moduleAddresses?: ModuleAddressOverrides;\n private gasLimit?: bigint;\n // Stored from withCurves() for graduationMarketCap conversion in build()\n private numerairePrice?: number;\n private tokenDecimals?: number;\n private numeraireDecimals?: number;\n // Deferred curves config - converted to pool in build()\n private curvesConfig?: {\n numerairePrice: number;\n curves: Array<{\n marketCap: { start: number; end: number | 'max' };\n numPositions: number;\n shares: bigint;\n }>;\n tokenSupply?: bigint;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n fee?: number;\n tickSpacing?: number;\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n };\n public chainId: C;\n\n constructor(chainId: C) {\n this.chainId = chainId;\n }\n\n static forChain<C extends SupportedChainId>(\n chainId: C,\n ): MulticurveBuilder<C> {\n return new MulticurveBuilder(chainId);\n }\n\n tokenConfig(\n params:\n | {\n type?: 'standard';\n name: string;\n symbol: string;\n tokenURI: string;\n yearlyMintRate?: bigint;\n }\n | {\n type: 'doppler404';\n name: string;\n symbol: string;\n baseURI: string;\n unit?: bigint;\n },\n ): this {\n if (params && 'type' in params && params.type === 'doppler404') {\n this.token = {\n type: 'doppler404',\n name: params.name,\n symbol: params.symbol,\n baseURI: params.baseURI,\n unit: params.unit,\n };\n } else {\n this.token = {\n type: 'standard',\n name: params.name,\n symbol: params.symbol,\n tokenURI: params.tokenURI,\n yearlyMintRate: params.yearlyMintRate ?? DEFAULT_V3_YEARLY_MINT_RATE,\n };\n }\n return this;\n }\n\n saleConfig(params: {\n initialSupply: bigint;\n numTokensToSell: bigint;\n numeraire: Address;\n }): this {\n this.sale = {\n initialSupply: params.initialSupply,\n numTokensToSell: params.numTokensToSell,\n numeraire: params.numeraire,\n };\n return this;\n }\n\n poolConfig(params: {\n fee: number;\n tickSpacing: number;\n curves: {\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n shares: bigint;\n }[];\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n }): this {\n // Mutual exclusion: cannot use poolConfig() after withCurves()\n if (this.curvesConfig) {\n throw new Error(\n 'Cannot use poolConfig() after withCurves(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or poolConfig() for manual tick configuration.',\n );\n }\n\n const sortedBeneficiaries = params.beneficiaries\n ? [...params.beneficiaries].sort((a, b) => {\n const aAddr = a.beneficiary.toLowerCase();\n const bAddr = b.beneficiary.toLowerCase();\n return aAddr < bAddr ? -1 : aAddr > bAddr ? 1 : 0;\n })\n : undefined;\n\n this.pool = {\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n curves: params.curves,\n beneficiaries: sortedBeneficiaries,\n };\n return this;\n }\n\n withMarketCapPresets(params?: {\n fee?: number;\n tickSpacing?: number;\n presets?: MulticurveMarketCapPreset[];\n overrides?: MarketCapPresetOverrides;\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n }): this {\n // Mutual exclusion: cannot use withMarketCapPresets() after withCurves()\n if (this.curvesConfig) {\n throw new Error(\n 'Cannot use withMarketCapPresets() after withCurves(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or withMarketCapPresets() for preset-based configuration.',\n );\n }\n\n const { fee, tickSpacing, curves } = buildCurvesFromPresets({\n fee: params?.fee,\n tickSpacing: params?.tickSpacing,\n presets: params?.presets,\n overrides: params?.overrides,\n });\n\n return this.poolConfig({\n fee,\n tickSpacing,\n curves,\n beneficiaries: params?.beneficiaries,\n });\n }\n\n /**\n * Configure multicurve using market cap ranges (no tick math required).\n *\n * This is the recommended way to configure multicurve pools. Simply specify\n * market cap ranges in USD for each curve.\n *\n * Curves can be provided in any order - they will be automatically sorted\n * by market cap (ascending) before validation and processing. Curves must\n * be contiguous or overlapping (no gaps allowed).\n *\n * V4 pools support custom fees (0-100,000). Standard fee tiers auto-derive\n * tickSpacing; custom fees require explicit tickSpacing parameter.\n *\n * @param params - Market cap configuration with curves defined by market cap ranges\n * @returns Builder instance for chaining\n *\n * @example Standard fee tier\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000,\n * curves: [...],\n * fee: 500, // Standard tier, tickSpacing auto-derived\n * })\n * ```\n *\n * @example Custom fee\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000,\n * curves: [...],\n * fee: 2500, // Custom 0.25% fee\n * tickSpacing: 10, // Required for custom fees\n * })\n * ```\n */\n withCurves(params: MulticurveMarketCapCurvesConfig): this {\n // Mutual exclusion: cannot use withCurves() after poolConfig()/withMarketCapPresets()\n if (this.pool) {\n throw new Error(\n 'Cannot use withCurves() after poolConfig()/withMarketCapPresets(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or poolConfig() for manual tick configuration.',\n );\n }\n\n // Validate numerairePrice\n if (params.numerairePrice <= 0) {\n throw new Error('numerairePrice must be greater than 0');\n }\n\n // Validate curves array\n if (!params.curves || params.curves.length === 0) {\n throw new Error('curves array must contain at least one curve');\n }\n\n // Validate each curve (basic validation that doesn't require saleConfig)\n for (let i = 0; i < params.curves.length; i++) {\n const curve = params.curves[i];\n this.validateCurveRange(\n curve.marketCap.start,\n curve.marketCap.end,\n curve.numPositions,\n curve.shares,\n `curves[${i}]`,\n );\n }\n\n // Sort curves by market cap (start, then end) for deterministic ordering\n const sortedCurves = this.sortCurvesByMarketCap(params.curves);\n\n // Validate curve contiguity (no gaps allowed, overlaps OK)\n this.validateCurveContiguity(sortedCurves);\n\n // Validate total shares sum to exactly WAD\n const totalShares = sortedCurves.reduce((sum, c) => sum + c.shares, 0n);\n if (totalShares !== WAD) {\n throw new Error(\n `Total curve shares must equal 100% (${WAD}). Got ${totalShares} (${Number((totalShares * 10000n) / WAD) / 100}%)`,\n );\n }\n\n // Validate fee if provided\n if (params.fee !== undefined && params.fee > V4_MAX_FEE) {\n throw new Error(\n `Fee ${params.fee} exceeds maximum allowed for V4 pools (${V4_MAX_FEE} = 10%). ` +\n `Use a fee between 0 and ${V4_MAX_FEE}.`,\n );\n }\n\n // Store for later use in build() (graduationMarketCap conversion)\n this.numerairePrice = params.numerairePrice;\n this.tokenDecimals = params.tokenDecimals;\n this.numeraireDecimals = params.numeraireDecimals;\n\n // Store config for deferred conversion in build()\n this.curvesConfig = {\n numerairePrice: params.numerairePrice,\n curves: sortedCurves,\n tokenSupply: params.tokenSupply,\n tokenDecimals: params.tokenDecimals,\n numeraireDecimals: params.numeraireDecimals,\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n beneficiaries: params.beneficiaries,\n };\n\n return this;\n }\n\n /**\n * Sort curves by market cap (start, then end) for deterministic ordering\n */\n private sortCurvesByMarketCap<\n T extends { marketCap: { start: number; end: number | 'max' } },\n >(curves: T[]): T[] {\n return [...curves].sort((a, b) => {\n const startDiff = a.marketCap.start - b.marketCap.start;\n if (startDiff !== 0) return startDiff;\n const aEnd = a.marketCap.end === 'max' ? Infinity : a.marketCap.end;\n const bEnd = b.marketCap.end === 'max' ? Infinity : b.marketCap.end;\n return aEnd - bEnd;\n });\n }\n\n private validateCurveRange(\n startMarketCap: number,\n endMarketCap: number | 'max',\n numPositions: number,\n shares: bigint,\n label: string,\n ): void {\n if (startMarketCap <= 0) {\n throw new Error(`${label}: marketCap.start must be greater than 0`);\n }\n if (endMarketCap !== 'max' && endMarketCap <= 0) {\n throw new Error(`${label}: marketCap.end must be greater than 0`);\n }\n if (endMarketCap !== 'max' && startMarketCap >= endMarketCap) {\n throw new Error(\n `${label}: startMarketCap ($${startMarketCap.toLocaleString()}) must be less than endMarketCap ($${endMarketCap.toLocaleString()})`,\n );\n }\n if (numPositions <= 0) {\n throw new Error(`${label}: numPositions must be greater than 0`);\n }\n if (shares <= 0n) {\n throw new Error(`${label}: shares must be greater than 0`);\n }\n }\n\n private validateCurveContiguity(\n sortedCurves: { marketCap: { start: number; end: number | 'max' } }[],\n ): void {\n if (sortedCurves.length <= 1) {\n return;\n }\n\n for (let i = 1; i < sortedCurves.length; i++) {\n const prevCurve = sortedCurves[i - 1];\n const currCurve = sortedCurves[i];\n const prevEnd =\n prevCurve.marketCap.end === 'max'\n ? Infinity\n : prevCurve.marketCap.end;\n const prevEndLabel =\n prevCurve.marketCap.end === 'max'\n ? 'max'\n : `$${prevCurve.marketCap.end.toLocaleString()}`;\n const currEndLabel =\n currCurve.marketCap.end === 'max'\n ? 'max'\n : `$${currCurve.marketCap.end.toLocaleString()}`;\n\n if (currCurve.marketCap.start > prevEnd) {\n throw new Error(\n `Gap detected between market cap ranges: ` +\n `$${prevCurve.marketCap.start.toLocaleString()}-${prevEndLabel} ` +\n `and $${currCurve.marketCap.start.toLocaleString()}-${currEndLabel}. ` +\n `Curves must be contiguous or overlapping.`,\n );\n }\n }\n }\n\n /**\n * Configure a RehypeDopplerHook for the pool.\n *\n * When configured, the hook will be initialized with the pool and will handle:\n * - Custom swap fees\n * - Fee distribution to beneficiaries, LPs, and buyback destinations\n *\n * IMPORTANT:\n * - The hook address must be whitelisted in the DopplerHookInitializer\n * - Fee distribution percentages must sum to exactly WAD (1e18 = 100%)\n *\n * @example\n * ```typescript\n * builder.withRehypeDopplerHook({\n * hookAddress: '0x...',\n * buybackDestination: '0x...',\n * customFee: 3000, // 0.3%\n * assetBuybackPercentWad: parseEther('0.2'), // 20%\n * numeraireBuybackPercentWad: parseEther('0.2'), // 20%\n * beneficiaryPercentWad: parseEther('0.3'), // 30%\n * lpPercentWad: parseEther('0.3'), // 30%\n * })\n * ```\n */\n withRehypeDopplerHook(params: RehypeDopplerHookConfig): this {\n this.assertCanSetInitializer('rehype');\n\n const totalDistribution =\n params.assetBuybackPercentWad +\n params.numeraireBuybackPercentWad +\n params.beneficiaryPercentWad +\n params.lpPercentWad;\n if (totalDistribution !== WAD) {\n throw new Error(\n `DopplerHook fee distribution must sum to ${WAD} (100%), but got ${totalDistribution}`,\n );\n }\n\n // Validate mutual exclusivity of graduation threshold options\n if (params.graduationMarketCap !== undefined && params.farTick !== undefined) {\n throw new Error(\n 'Cannot specify both graduationMarketCap and farTick. Use one or the other.',\n );\n }\n\n this.dopplerHook = params;\n this.initializer = { type: 'rehype', config: params };\n return this;\n }\n\n withVesting(params?: {\n duration?: bigint;\n cliffDuration?: number;\n recipients?: Address[];\n amounts?: bigint[];\n }): this {\n if (!params) {\n this.vesting = undefined;\n return this;\n }\n this.vesting = {\n duration: Number(params.duration ?? 0n),\n cliffDuration: params.cliffDuration ?? 0,\n recipients: params.recipients,\n amounts: params.amounts,\n };\n return this;\n }\n\n private parseStartTimeSeconds(\n value: number | bigint | Date,\n label: string,\n ): number {\n let startTimeSeconds: number;\n if (value instanceof Date) {\n startTimeSeconds = Math.floor(value.getTime() / 1000);\n } else if (typeof value === 'bigint') {\n startTimeSeconds = Number(value);\n } else {\n startTimeSeconds = Number(value);\n }\n\n if (\n !Number.isFinite(startTimeSeconds) ||\n !Number.isInteger(startTimeSeconds)\n ) {\n throw new Error(\n `${label} must be an integer number of seconds since Unix epoch`,\n );\n }\n\n if (startTimeSeconds < 0) {\n throw new Error(`${label} cannot be negative`);\n }\n\n const UINT32_MAX = 0xffffffff;\n if (startTimeSeconds > UINT32_MAX) {\n throw new Error(\n `${label} must fit within uint32 (seconds since Unix epoch up to year 2106)`,\n );\n }\n\n return startTimeSeconds;\n }\n\n private assertCanSetInitializer(\n nextType: MulticurveInitializerConfig['type'],\n ): void {\n const currentType = this.initializer?.type;\n if (\n currentType === undefined ||\n currentType === 'standard' ||\n currentType === nextType\n ) {\n return;\n }\n throw new Error(\n `Cannot set multicurve initializer to '${nextType}' because it is already configured as '${currentType}'`,\n );\n }\n\n /**\n * Configure decay multicurve initializer settings.\n *\n * The pool's terminal fee is always taken from `poolConfig().fee`.\n * `startFee` must be greater than or equal to that terminal fee.\n * `startTime` is optional and defaults to `0` when omitted.\n */\n withDecay(params?: {\n startTime?: number | bigint | Date;\n startFee: number;\n durationSeconds: number | bigint;\n }): this {\n if (!params) {\n if (this.initializer?.type === 'decay') {\n this.initializer = { type: 'standard' };\n }\n return this;\n }\n\n this.assertCanSetInitializer('decay');\n\n const startTime =\n params.startTime === undefined\n ? 0\n : this.parseStartTimeSeconds(params.startTime, 'Decay startTime');\n const startFee = Number(params.startFee);\n const durationSeconds = Number(params.durationSeconds);\n\n if (!Number.isFinite(startFee) || !Number.isInteger(startFee)) {\n throw new Error('Decay startFee must be an integer');\n }\n if (startFee < 0 || startFee > DECAY_MAX_START_FEE) {\n throw new Error(\n `Decay startFee must be between 0 and ${DECAY_MAX_START_FEE} (80%)`,\n );\n }\n if (!Number.isFinite(durationSeconds) || !Number.isInteger(durationSeconds)) {\n throw new Error('Decay durationSeconds must be an integer');\n }\n if (durationSeconds < 0) {\n throw new Error('Decay durationSeconds cannot be negative');\n }\n const UINT32_MAX = 0xffffffff;\n if (durationSeconds > UINT32_MAX) {\n throw new Error('Decay durationSeconds must fit within uint32');\n }\n\n this.schedule = undefined;\n this.initializer = {\n type: 'decay',\n startTime,\n startFee,\n durationSeconds,\n };\n return this;\n }\n\n withSchedule(params?: { startTime: number | bigint | Date }): this {\n if (!params) {\n if (this.initializer?.type === 'scheduled') {\n this.initializer = { type: 'standard' };\n }\n this.schedule = undefined;\n return this;\n }\n\n this.assertCanSetInitializer('scheduled');\n const startTimeSeconds = this.parseStartTimeSeconds(\n params.startTime,\n 'Schedule startTime',\n );\n this.schedule = { startTime: startTimeSeconds };\n this.initializer = { type: 'scheduled', startTime: startTimeSeconds };\n return this;\n }\n\n withGovernance(params: GovernanceOption<C>): this {\n this.governance = params;\n return this;\n }\n\n withMigration(migration: MigrationConfig): this {\n this.migration = migration;\n return this;\n }\n\n withUserAddress(address: Address): this {\n this.userAddress = address;\n return this;\n }\n\n withIntegrator(address?: Address): this {\n this.integrator = address ?? ZERO_ADDRESS;\n return this;\n }\n\n withGasLimit(gas?: bigint): this {\n this.gasLimit = gas;\n return this;\n }\n\n private overrideModule<K extends keyof ModuleAddressOverrides>(\n key: K,\n address: NonNullable<ModuleAddressOverrides[K]>,\n ): this {\n this.moduleAddresses = {\n ...this.moduleAddresses,\n [key]: address,\n } as ModuleAddressOverrides;\n return this;\n }\n\n withTokenFactory(address: Address): this {\n return this.overrideModule('tokenFactory', address);\n }\n withAirlock(address: Address): this {\n return this.overrideModule('airlock', address);\n }\n withV4MulticurveInitializer(address: Address): this {\n return this.overrideModule('v4MulticurveInitializer', address);\n }\n withV4ScheduledMulticurveInitializer(address: Address): this {\n return this.overrideModule('v4ScheduledMulticurveInitializer', address);\n }\n withV4DecayMulticurveInitializer(address: Address): this {\n return this.overrideModule('v4DecayMulticurveInitializer', address);\n }\n withGovernanceFactory(address: Address): this {\n return this.overrideModule('governanceFactory', address);\n }\n withV2Migrator(address: Address): this {\n return this.overrideModule('v2Migrator', address);\n }\n\n withV4Migrator(address: Address): this {\n return this.overrideModule('v4Migrator', address);\n }\n withNoOpMigrator(address: Address): this {\n return this.overrideModule('noOpMigrator', address);\n }\n withDopplerHookInitializer(address: Address): this {\n return this.overrideModule('dopplerHookInitializer', address);\n }\n\n build(): CreateMulticurveParams<C> {\n if (!this.token) throw new Error('tokenConfig is required');\n if (!this.sale) throw new Error('saleConfig is required');\n if (!this.migration) throw new Error('migration configuration is required');\n if (!this.userAddress) throw new Error('userAddress is required');\n\n // Convert deferred curves config to pool if set\n if (this.curvesConfig && !this.pool) {\n const config = this.curvesConfig;\n\n // Get token supply from config or saleConfig\n const tokenSupply = config.tokenSupply ?? this.sale.initialSupply;\n if (!tokenSupply) {\n throw new Error(\n 'tokenSupply must be provided (either via saleConfig() or withCurves() params)',\n );\n }\n\n // Get fee and tick spacing\n const fee = config.fee ?? FEE_TIERS.MEDIUM;\n const tickSpacing =\n config.tickSpacing ?? (TICK_SPACINGS as Record<number, number>)[fee];\n\n if (tickSpacing === undefined) {\n throw new Error(\n `Custom fee ${fee} requires explicit tickSpacing. ` +\n `Standard fees (100, 500, 3000, 10000) auto-derive tickSpacing.`,\n );\n }\n\n // Validate first curve market caps (the launch price)\n const firstCurve = config.curves[0];\n const startValidation = validateMarketCapParameters(\n firstCurve.marketCap.start,\n tokenSupply,\n config.tokenDecimals,\n );\n const endValidation =\n firstCurve.marketCap.end === 'max'\n ? { valid: true, warnings: [] }\n : validateMarketCapParameters(\n firstCurve.marketCap.end,\n tokenSupply,\n config.tokenDecimals,\n );\n const allWarnings = [\n ...startValidation.warnings,\n ...endValidation.warnings,\n ];\n if (allWarnings.length > 0) {\n console.warn('First curve market cap validation warnings:');\n allWarnings.forEach((w) => console.warn(` - ${w}`));\n }\n\n // Convert all curves to ticks\n const curves: {\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n shares: bigint;\n }[] = [];\n\n for (const curve of config.curves) {\n const curveTicks = marketCapToTicksForMulticurve({\n marketCapLower: curve.marketCap.start,\n marketCapUpper: curve.marketCap.end,\n tokenSupply,\n numerairePriceUSD: config.numerairePrice,\n tickSpacing,\n tokenDecimals: config.tokenDecimals ?? 18,\n numeraireDecimals: config.numeraireDecimals ?? 18,\n });\n\n curves.push({\n tickLower: curveTicks.tickLower,\n tickUpper: curveTicks.tickUpper,\n numPositions: curve.numPositions,\n shares: curve.shares,\n });\n }\n\n // Sort beneficiaries by address if provided\n const sortedBeneficiaries = config.beneficiaries\n ? [...config.beneficiaries].sort((a, b) => {\n const aAddr = a.beneficiary.toLowerCase();\n const bAddr = b.beneficiary.toLowerCase();\n return aAddr < bAddr ? -1 : aAddr > bAddr ? 1 : 0;\n })\n : undefined;\n\n // Set pool config\n this.pool = {\n fee,\n tickSpacing,\n curves,\n beneficiaries: sortedBeneficiaries,\n };\n }\n\n if (!this.pool) throw new Error('poolConfig is required');\n\n // Validate noOp migration requires beneficiaries\n // NoOpMigrator is designed for locked pools with beneficiaries. Without beneficiaries,\n // the pool status is \"Initialized\" (not \"Locked\"), meaning exitLiquidity() can be called.\n // But NoOpMigrator.migrate() always reverts, so the entire graduation transaction fails\n // and liquidity becomes trapped.\n if (this.migration.type === 'noOp') {\n const hasBeneficiaries =\n this.pool.beneficiaries && this.pool.beneficiaries.length > 0;\n if (!hasBeneficiaries) {\n throw new Error(\n 'noOp migration requires beneficiaries. Without beneficiaries, the pool would be stuck after reaching ' +\n 'graduation - exitLiquidity() succeeds but NoOpMigrator.migrate() always reverts, causing the entire ' +\n 'transaction to fail. Either add beneficiaries or use a different migration type (uniswapV2, uniswapV4).',\n );\n }\n }\n\n // Convert graduationMarketCap to farTick if using rehype\n let dopplerHook = this.dopplerHook;\n if (dopplerHook?.graduationMarketCap !== undefined) {\n // Use numerairePrice from: 1) explicit in dopplerHook, 2) stored from withCurves()\n const numerairePrice = dopplerHook.numerairePrice ?? this.numerairePrice;\n\n if (!numerairePrice) {\n throw new Error(\n 'graduationMarketCap requires numerairePrice. ' +\n 'Either use withCurves() (which provides numerairePrice), ' +\n 'or pass numerairePrice explicitly in withRehypeDopplerHook().',\n );\n }\n\n if (dopplerHook.graduationMarketCap <= 0) {\n throw new Error('graduationMarketCap must be greater than 0');\n }\n\n const farTick = marketCapToTickForMulticurve({\n marketCapUSD: dopplerHook.graduationMarketCap,\n tokenSupply: this.sale.initialSupply,\n numerairePriceUSD: numerairePrice,\n tickSpacing: this.pool.tickSpacing,\n tokenDecimals: this.tokenDecimals ?? 18,\n numeraireDecimals: this.numeraireDecimals ?? 18,\n });\n\n // Validate farTick is within curve boundaries\n const allTickUppers = this.pool.curves.map((c) => c.tickUpper);\n const allTickLowers = this.pool.curves.map((c) => c.tickLower);\n const maxTickUpper = Math.max(...allTickUppers);\n const minTickLower = Math.min(...allTickLowers);\n\n if (farTick < minTickLower) {\n throw new Error(\n `graduationMarketCap converts to tick ${farTick}, which is below the lowest curve tick (${minTickLower})`,\n );\n }\n if (farTick > maxTickUpper) {\n throw new Error(\n `graduationMarketCap converts to tick ${farTick}, which is above the highest curve tick (${maxTickUpper})`,\n );\n }\n\n // Store computed farTick on dopplerHook for encoding\n dopplerHook = { ...dopplerHook, farTick };\n }\n\n const initializer =\n this.initializer ??\n (dopplerHook\n ? { type: 'rehype', config: dopplerHook }\n : this.schedule\n ? { type: 'scheduled', startTime: this.schedule.startTime }\n : { type: 'standard' });\n\n if (initializer.type === 'scheduled' && dopplerHook) {\n throw new Error(\n \"Cannot combine scheduled multicurve with rehype initializer. Use exactly one initializer mode.\",\n );\n }\n if (initializer.type === 'decay' && dopplerHook) {\n throw new Error(\n \"Cannot combine decay multicurve with rehype initializer. Use exactly one initializer mode.\",\n );\n }\n if (initializer.type === 'decay') {\n const startFee = Number(initializer.startFee);\n const terminalFee = Number(this.pool.fee);\n\n if (startFee < terminalFee) {\n throw new Error(\n `Decay startFee (${startFee}) must be greater than or equal to terminal pool fee (${terminalFee})`,\n );\n }\n\n if (startFee > terminalFee && initializer.durationSeconds <= 0) {\n throw new Error(\n 'Decay durationSeconds must be greater than 0 when startFee is greater than pool.fee',\n );\n }\n }\n\n const schedule =\n initializer.type === 'scheduled'\n ? { startTime: initializer.startTime }\n : undefined;\n dopplerHook =\n initializer.type === 'rehype' ? initializer.config : undefined;\n\n // Default governance: noOp on supported chains, default on others (e.g., Ink)\n const governance =\n this.governance ??\n (isNoOpEnabledChain(this.chainId)\n ? { type: 'noOp' as const }\n : { type: 'default' as const });\n\n if (\n governance.type === 'launchpad' &&\n !isLaunchpadEnabledChain(this.chainId)\n ) {\n throw new Error(\n `Launchpad governance is not supported on chain ${this.chainId}. Use a supported chain or a different governance type.`,\n );\n }\n\n return {\n token: this.token,\n sale: this.sale,\n pool: this.pool,\n initializer,\n schedule,\n dopplerHook,\n vesting: this.vesting,\n governance: governance as GovernanceOption<C>,\n migration: this.migration,\n integrator: this.integrator ?? ZERO_ADDRESS,\n userAddress: this.userAddress,\n modules: this.moduleAddresses,\n gas: this.gasLimit,\n };\n }\n}\n"]}
@@ -1,10 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkOF7BIKXV_js = require('./chunk-OF7BIKXV.js');
4
+ var chunk2ZM4JVFC_js = require('./chunk-2ZM4JVFC.js');
4
5
  var chunkVGOEXLQ2_js = require('./chunk-VGOEXLQ2.js');
5
6
  var viem = require('viem');
6
7
 
7
8
  var DEFAULT_MAX_ITERATIONS = 1e6;
9
+ var TOKEN_FACTORY_80_ADDRESS = "0xf0B5141dD9096254B2ca624dff26024f46087229";
10
+ function isTokenFactory80(tokenFactory) {
11
+ return tokenFactory.toLowerCase() === TOKEN_FACTORY_80_ADDRESS.toLowerCase();
12
+ }
8
13
  var STANDARD_TOKEN_DATA_ABI = [
9
14
  { type: "string" },
10
15
  { type: "string" },
@@ -20,20 +25,22 @@ var DOPPLER404_TOKEN_DATA_ABI = [
20
25
  { type: "string" },
21
26
  { type: "uint256" }
22
27
  ];
23
- function normalizePrefix(prefix) {
24
- const normalized = prefix.trim().toLowerCase().replace(/^0x/, "");
28
+ function normalizeHexFragment(value, label) {
29
+ const normalized = value.trim().toLowerCase().replace(/^0x/, "");
25
30
  if (normalized.length === 0) {
26
31
  throw new Error(
27
- "TokenAddressMiner: prefix must contain at least one hex character"
32
+ `TokenAddressMiner: ${label} must contain at least one hex character`
28
33
  );
29
34
  }
30
35
  if (normalized.length > 40) {
31
36
  throw new Error(
32
- "TokenAddressMiner: prefix cannot exceed 40 hex characters"
37
+ `TokenAddressMiner: ${label} cannot exceed 40 hex characters`
33
38
  );
34
39
  }
35
40
  if (!/^[0-9a-f]+$/i.test(normalized)) {
36
- throw new Error("TokenAddressMiner: prefix must be a hexadecimal string");
41
+ throw new Error(
42
+ `TokenAddressMiner: ${label} must be a hexadecimal string`
43
+ );
37
44
  }
38
45
  return normalized;
39
46
  }
@@ -74,6 +81,7 @@ function computeCreate2AddressFast(buffer) {
74
81
  function buildTokenInitHash(params) {
75
82
  const {
76
83
  variant,
84
+ tokenFactory,
77
85
  tokenData,
78
86
  initialSupply,
79
87
  recipient,
@@ -138,16 +146,18 @@ function buildTokenInitHash(params) {
138
146
  tokenURI
139
147
  ]
140
148
  );
149
+ const defaultBytecode = isTokenFactory80(tokenFactory) ? chunk2ZM4JVFC_js.derc2080_default : chunkOF7BIKXV_js.derc20_default;
141
150
  return viem.keccak256(
142
151
  viem.encodePacked(
143
152
  ["bytes", "bytes"],
144
- [customBytecode ?? chunkOF7BIKXV_js.derc20_default, initHashData]
153
+ [customBytecode ?? defaultBytecode, initHashData]
145
154
  )
146
155
  );
147
156
  }
148
157
  function mineTokenAddress(params) {
149
158
  const {
150
159
  prefix,
160
+ suffix,
151
161
  tokenFactory,
152
162
  initialSupply,
153
163
  recipient,
@@ -167,9 +177,16 @@ function mineTokenAddress(params) {
167
177
  if (startSalt < 0n) {
168
178
  throw new Error("TokenAddressMiner: startSalt cannot be negative");
169
179
  }
170
- const normalizedPrefix = normalizePrefix(prefix);
180
+ const prefixTrimmed = prefix.trim();
181
+ const suffixTrimmed = suffix?.trim();
182
+ const normalizedPrefix = prefixTrimmed.length === 0 ? void 0 : normalizeHexFragment(prefixTrimmed, "prefix");
183
+ const normalizedSuffix = !suffixTrimmed || suffixTrimmed.length === 0 ? void 0 : normalizeHexFragment(suffixTrimmed, "suffix");
184
+ if (!normalizedPrefix && !normalizedSuffix) {
185
+ throw new Error("TokenAddressMiner: must provide prefix and/or suffix");
186
+ }
171
187
  const tokenInitHash = buildTokenInitHash({
172
188
  variant: tokenVariant,
189
+ tokenFactory,
173
190
  tokenData,
174
191
  initialSupply,
175
192
  recipient,
@@ -179,7 +196,8 @@ function mineTokenAddress(params) {
179
196
  const hookConfig = hook ? {
180
197
  deployer: hook.deployer,
181
198
  initCodeHash: hook.initCodeHash,
182
- prefix: hook.prefix ? normalizePrefix(hook.prefix) : void 0
199
+ prefix: hook.prefix && hook.prefix.trim().length > 0 ? normalizeHexFragment(hook.prefix, "prefix") : void 0,
200
+ suffix: hook.suffix && hook.suffix.trim().length > 0 ? normalizeHexFragment(hook.suffix, "suffix") : void 0
183
201
  } : void 0;
184
202
  const maxSalt = startSalt + BigInt(maxIterations);
185
203
  let iterations = 0;
@@ -188,30 +206,36 @@ function mineTokenAddress(params) {
188
206
  for (let salt = startSalt; salt < maxSalt; salt++) {
189
207
  updateSaltInBuffer(tokenBuffer, salt);
190
208
  const candidateRaw = computeCreate2AddressFast(tokenBuffer);
209
+ const candidateHex = candidateRaw.slice(2);
191
210
  iterations++;
192
- if (candidateRaw.slice(2).startsWith(normalizedPrefix)) {
193
- let hookAddressRaw;
194
- if (hookBuffer) {
195
- updateSaltInBuffer(hookBuffer, salt);
196
- hookAddressRaw = computeCreate2AddressFast(hookBuffer);
197
- if (hookConfig?.prefix && !hookAddressRaw.slice(2).startsWith(hookConfig.prefix)) {
198
- continue;
199
- }
200
- }
201
- const saltHex = `0x${salt.toString(16).padStart(64, "0")}`;
202
- return {
203
- salt: saltHex,
204
- tokenAddress: viem.getAddress(candidateRaw),
205
- iterations,
206
- hookAddress: hookAddressRaw ? viem.getAddress(hookAddressRaw) : void 0
207
- };
211
+ if (normalizedPrefix && !candidateHex.startsWith(normalizedPrefix)) continue;
212
+ if (normalizedSuffix && !candidateHex.endsWith(normalizedSuffix)) continue;
213
+ let hookAddressRaw;
214
+ if (hookBuffer) {
215
+ updateSaltInBuffer(hookBuffer, salt);
216
+ hookAddressRaw = computeCreate2AddressFast(hookBuffer);
217
+ const hookHex = hookAddressRaw.slice(2);
218
+ if (hookConfig?.prefix && !hookHex.startsWith(hookConfig.prefix)) continue;
219
+ if (hookConfig?.suffix && !hookHex.endsWith(hookConfig.suffix)) continue;
208
220
  }
221
+ const saltHex = `0x${salt.toString(16).padStart(64, "0")}`;
222
+ return {
223
+ salt: saltHex,
224
+ tokenAddress: viem.getAddress(candidateRaw),
225
+ iterations,
226
+ hookAddress: hookAddressRaw ? viem.getAddress(hookAddressRaw) : void 0
227
+ };
209
228
  }
229
+ const constraints = [];
230
+ if (normalizedPrefix) constraints.push(`prefix ${prefixTrimmed}`);
231
+ if (normalizedSuffix) constraints.push(`suffix ${suffixTrimmed}`);
210
232
  throw new Error(
211
- `TokenAddressMiner: could not find salt matching prefix ${prefix} within ${maxIterations} iterations`
233
+ `TokenAddressMiner: could not find salt matching ${constraints.join(
234
+ " and "
235
+ )} within ${maxIterations} iterations`
212
236
  );
213
237
  }
214
238
 
215
239
  exports.mineTokenAddress = mineTokenAddress;
216
- //# sourceMappingURL=chunk-C7GN6GPG.js.map
217
- //# sourceMappingURL=chunk-C7GN6GPG.js.map
240
+ //# sourceMappingURL=chunk-OROTK4OT.js.map
241
+ //# sourceMappingURL=chunk-OROTK4OT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/tokenAddressMiner.ts"],"names":["keccak256","name","symbol","decodeAbiParameters","initHashData","encodeAbiParameters","encodePacked","dopplerDN404_default","derc2080_default","derc20_default","getAddress"],"mappings":"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","file":"chunk-OROTK4OT.js","sourcesContent":["import {\n type Address,\n type Hash,\n type Hex,\n encodeAbiParameters,\n encodePacked,\n keccak256,\n getAddress,\n decodeAbiParameters,\n} from 'viem';\nimport { DERC20Bytecode, DERC2080Bytecode, DopplerDN404Bytecode } from '../abis';\n\nconst DEFAULT_MAX_ITERATIONS = 1_000_000;\n\nexport type TokenVariant = 'standard' | 'doppler404';\n\n// TokenFactory80 has the same deterministic CREATE2 address across all chains where it is deployed.\nconst TOKEN_FACTORY_80_ADDRESS =\n '0xf0B5141dD9096254B2ca624dff26024f46087229' as const;\n\nfunction isTokenFactory80(tokenFactory: Address): boolean {\n return tokenFactory.toLowerCase() === TOKEN_FACTORY_80_ADDRESS.toLowerCase();\n}\n\nexport interface TokenAddressHookConfig {\n deployer: Address;\n initCodeHash: Hash;\n prefix?: string;\n suffix?: string;\n}\n\nexport interface TokenAddressMiningParams {\n /**\n * Vanity prefix (hex). Keep as `''` (empty string) if you only want to mine a suffix.\n * Note: this is required for backwards compatibility with older SDK versions.\n */\n prefix: string;\n /** Vanity suffix (hex), useful as an identifier at the end of the address. */\n suffix?: string;\n tokenFactory: Address;\n initialSupply: bigint;\n recipient: Address;\n owner: Address;\n tokenData: Hex;\n tokenVariant?: TokenVariant;\n customBytecode?: Hex;\n maxIterations?: number;\n startSalt?: bigint;\n hook?: TokenAddressHookConfig;\n}\n\nexport interface TokenAddressMiningResult {\n salt: Hash;\n tokenAddress: Address;\n iterations: number;\n hookAddress?: Address;\n}\n\nconst STANDARD_TOKEN_DATA_ABI = [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n] as const;\n\nconst DOPPLER404_TOKEN_DATA_ABI = [\n { type: 'string' },\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n] as const;\n\nfunction normalizeHexFragment(value: string, label: 'prefix' | 'suffix'): string {\n const normalized = value.trim().toLowerCase().replace(/^0x/, '');\n if (normalized.length === 0) {\n throw new Error(\n `TokenAddressMiner: ${label} must contain at least one hex character`,\n );\n }\n if (normalized.length > 40) {\n throw new Error(\n `TokenAddressMiner: ${label} cannot exceed 40 hex characters`,\n );\n }\n if (!/^[0-9a-f]+$/i.test(normalized)) {\n throw new Error(\n `TokenAddressMiner: ${label} must be a hexadecimal string`,\n );\n }\n return normalized;\n}\n\nfunction computeCreate2Address(\n salt: Hash,\n initCodeHash: Hash,\n deployer: Address,\n): Address {\n const encoded = encodePacked(\n ['bytes1', 'address', 'bytes32', 'bytes32'],\n ['0xff', deployer, salt, initCodeHash],\n );\n return getAddress(`0x${keccak256(encoded).slice(-40)}`);\n}\n\n/**\n * Helper to convert hex string to Uint8Array\n */\nfunction hexToBytes(hex: string): Uint8Array {\n const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(cleanHex.substr(i * 2, 2), 16);\n }\n return bytes;\n}\n\n/**\n * Helper to convert Uint8Array to hex string\n */\nfunction bytesToHex(bytes: Uint8Array): string {\n return (\n '0x' +\n Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n );\n}\n\n/**\n * Pre-compute CREATE2 buffer with constant prefix for fast mining\n * Buffer layout: 0xff (1 byte) + deployer (20 bytes) + salt (32 bytes) + initCodeHash (32 bytes) = 85 bytes\n */\nfunction prepareCreate2Buffer(deployer: Address, initCodeHash: Hash): Uint8Array {\n const buffer = new Uint8Array(85);\n buffer[0] = 0xff;\n const deployerBytes = hexToBytes(deployer);\n buffer.set(deployerBytes, 1);\n const initCodeHashBytes = hexToBytes(initCodeHash);\n buffer.set(initCodeHashBytes, 53); // 1 + 20 + 32 = 53\n return buffer;\n}\n\n/**\n * Update salt in pre-computed CREATE2 buffer (bytes 21-52)\n * Uses direct byte manipulation instead of string conversion\n */\nfunction updateSaltInBuffer(buffer: Uint8Array, salt: bigint): void {\n // Salt is 32 bytes, positioned at offset 21 (after 0xff + 20-byte deployer)\n // Clear salt region first\n for (let i = 21; i < 53; i++) {\n buffer[i] = 0;\n }\n // Write salt bytes from right to left (big-endian)\n let remaining = salt;\n for (let i = 52; remaining > 0n && i >= 21; i--) {\n buffer[i] = Number(remaining & 0xffn);\n remaining >>= 8n;\n }\n}\n\n/**\n * Compute CREATE2 address from pre-computed buffer (fast version for mining)\n * Returns raw lowercase address without checksum for comparison\n */\nfunction computeCreate2AddressFast(buffer: Uint8Array): string {\n const hash = keccak256(bytesToHex(buffer) as Hex);\n // Return last 40 hex chars (20 bytes) as lowercase address\n return '0x' + hash.slice(-40).toLowerCase();\n}\n\nfunction buildTokenInitHash(params: {\n variant: TokenVariant;\n tokenFactory: Address;\n tokenData: Hex;\n initialSupply: bigint;\n recipient: Address;\n owner: Address;\n customBytecode?: Hex;\n}): Hash {\n const {\n variant,\n tokenFactory,\n tokenData,\n initialSupply,\n recipient,\n owner,\n customBytecode,\n } = params;\n\n if (variant === 'doppler404') {\n const [name, symbol, baseURI] = decodeAbiParameters(\n DOPPLER404_TOKEN_DATA_ABI,\n tokenData,\n ) as readonly [string, string, string, bigint | undefined];\n\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'string' },\n ],\n [name, symbol, initialSupply, recipient, owner, baseURI],\n );\n\n return keccak256(\n encodePacked(\n ['bytes', 'bytes'],\n [customBytecode ?? (DopplerDN404Bytecode as Hex), initHashData],\n ),\n ) as Hash;\n }\n\n const [\n name,\n symbol,\n yearlyMintRate,\n vestingDuration,\n vestingRecipients,\n vestingAmounts,\n tokenURI,\n ] = decodeAbiParameters(STANDARD_TOKEN_DATA_ABI, tokenData) as readonly [\n string,\n string,\n bigint,\n bigint,\n readonly Address[],\n readonly bigint[],\n string,\n ];\n\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n initialSupply,\n recipient,\n owner,\n yearlyMintRate,\n vestingDuration,\n Array.from(vestingRecipients),\n Array.from(vestingAmounts),\n tokenURI,\n ],\n );\n\n const defaultBytecode = isTokenFactory80(tokenFactory)\n ? (DERC2080Bytecode as Hex)\n : (DERC20Bytecode as Hex);\n\n return keccak256(\n encodePacked(\n ['bytes', 'bytes'],\n [customBytecode ?? defaultBytecode, initHashData],\n ),\n ) as Hash;\n}\n\nexport function mineTokenAddress(\n params: TokenAddressMiningParams,\n): TokenAddressMiningResult {\n const {\n prefix,\n suffix,\n tokenFactory,\n initialSupply,\n recipient,\n owner,\n tokenData,\n tokenVariant = 'standard',\n customBytecode,\n maxIterations = DEFAULT_MAX_ITERATIONS,\n startSalt = 0n,\n hook,\n } = params;\n\n if (maxIterations <= 0 || !Number.isFinite(maxIterations)) {\n throw new Error(\n 'TokenAddressMiner: maxIterations must be a positive finite number',\n );\n }\n if (startSalt < 0n) {\n throw new Error('TokenAddressMiner: startSalt cannot be negative');\n }\n\n const prefixTrimmed = prefix.trim();\n const suffixTrimmed = suffix?.trim();\n\n const normalizedPrefix =\n prefixTrimmed.length === 0\n ? undefined\n : normalizeHexFragment(prefixTrimmed, 'prefix');\n const normalizedSuffix =\n !suffixTrimmed || suffixTrimmed.length === 0\n ? undefined\n : normalizeHexFragment(suffixTrimmed, 'suffix');\n\n if (!normalizedPrefix && !normalizedSuffix) {\n throw new Error('TokenAddressMiner: must provide prefix and/or suffix');\n }\n\n const tokenInitHash = buildTokenInitHash({\n variant: tokenVariant,\n tokenFactory,\n tokenData,\n initialSupply,\n recipient,\n owner,\n customBytecode,\n });\n\n const hookConfig = hook\n ? {\n deployer: hook.deployer,\n initCodeHash: hook.initCodeHash,\n prefix:\n hook.prefix && hook.prefix.trim().length > 0\n ? normalizeHexFragment(hook.prefix, 'prefix')\n : undefined,\n suffix:\n hook.suffix && hook.suffix.trim().length > 0\n ? normalizeHexFragment(hook.suffix, 'suffix')\n : undefined,\n }\n : undefined;\n\n const maxSalt = startSalt + BigInt(maxIterations);\n let iterations = 0;\n\n // Pre-allocate CREATE2 buffer with constant parts (optimization)\n const tokenBuffer = prepareCreate2Buffer(tokenFactory, tokenInitHash);\n const hookBuffer = hookConfig\n ? prepareCreate2Buffer(hookConfig.deployer, hookConfig.initCodeHash)\n : null;\n\n for (let salt = startSalt; salt < maxSalt; salt++) {\n // Update salt in pre-computed buffer (avoids string formatting)\n updateSaltInBuffer(tokenBuffer, salt);\n\n // Compute token address using fast method (no checksum)\n const candidateRaw = computeCreate2AddressFast(tokenBuffer);\n const candidateHex = candidateRaw.slice(2);\n iterations++;\n\n if (normalizedPrefix && !candidateHex.startsWith(normalizedPrefix)) continue;\n if (normalizedSuffix && !candidateHex.endsWith(normalizedSuffix)) continue;\n\n let hookAddressRaw: string | undefined;\n if (hookBuffer) {\n updateSaltInBuffer(hookBuffer, salt);\n hookAddressRaw = computeCreate2AddressFast(hookBuffer);\n const hookHex = hookAddressRaw.slice(2);\n if (hookConfig?.prefix && !hookHex.startsWith(hookConfig.prefix)) continue;\n if (hookConfig?.suffix && !hookHex.endsWith(hookConfig.suffix)) continue;\n }\n\n // Found a match! Convert to proper format for return\n const saltHex = `0x${salt.toString(16).padStart(64, '0')}` as Hash;\n return {\n salt: saltHex,\n tokenAddress: getAddress(candidateRaw) as Address,\n iterations,\n hookAddress: hookAddressRaw\n ? (getAddress(hookAddressRaw) as Address)\n : undefined,\n };\n }\n\n const constraints: string[] = [];\n if (normalizedPrefix) constraints.push(`prefix ${prefixTrimmed}`);\n if (normalizedSuffix) constraints.push(`suffix ${suffixTrimmed}`);\n\n throw new Error(\n `TokenAddressMiner: could not find salt matching ${constraints.join(\n ' and ',\n )} within ${maxIterations} iterations`,\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk3ALNQHGL_js = require('./chunk-3ALNQHGL.js');
3
+ var chunkRLUMYHPI_js = require('./chunk-RLUMYHPI.js');
4
4
 
5
5
  // src/addresses.ts
6
6
  var CHAIN_IDS = {
@@ -36,56 +36,60 @@ var ADDRESSES = {
36
36
  uniswapV4Quoter: "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203"
37
37
  },
38
38
  [CHAIN_IDS.BASE]: {
39
- airlock: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock,
40
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].TokenFactory80,
41
- v3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV3Initializer,
39
+ airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock,
40
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].TokenFactory80,
41
+ v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV3Initializer,
42
42
  v3Quoter: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
43
- lockableV3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LockableUniswapV3Initializer,
44
- v4Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Initializer,
45
- v4MulticurveInitializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4MulticurveInitializer,
43
+ lockableV3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LockableUniswapV3Initializer,
44
+ v4Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Initializer,
45
+ v4MulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4MulticurveInitializer,
46
46
  // From Doppler multicurve deployments (Base mainnet)
47
- v4ScheduledMulticurveInitializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4ScheduledMulticurveInitializer,
47
+ v4ScheduledMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4ScheduledMulticurveInitializer,
48
48
  // From Doppler scheduled multicurve deployments (Base mainnet)
49
- dopplerLens: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerLensQuoter,
50
- dopplerDeployer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerDeployer,
49
+ v4DecayMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DecayMulticurveInitializer,
50
+ // From Doppler decay multicurve deployments (Base mainnet)
51
+ dopplerLens: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerLensQuoter,
52
+ dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerDeployer,
51
53
  poolManager: "0x498581ff718922c3f8e6a244956af099b2652b2b",
52
- v2Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2Migrator,
53
- v4Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Migrator,
54
- noOpMigrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
54
+ v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2Migrator,
55
+ v4Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Migrator,
56
+ noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
55
57
  governanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
56
58
  noOpGovernanceFactory: "0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e",
57
- launchpadGovernanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LaunchpadGovernanceFactory,
58
- streamableFeesLocker: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].StreamableFeesLocker,
59
+ launchpadGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LaunchpadGovernanceFactory,
60
+ streamableFeesLocker: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].StreamableFeesLocker,
59
61
  universalRouter: "0x6ff5693b99212da76ad316178a184ab56d299b43",
60
62
  univ2Router02: "0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24",
61
63
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
62
- bundler: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Bundler,
64
+ bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Bundler,
63
65
  weth: "0x4200000000000000000000000000000000000006",
64
66
  uniswapV4Quoter: "0x0d5e0f971ed27fbff6c2837bf31316121532048d"
65
67
  },
66
68
  [CHAIN_IDS.BASE_SEPOLIA]: {
67
- airlock: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].Airlock,
68
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].TokenFactory80,
69
+ airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].Airlock,
70
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].TokenFactory80,
69
71
  doppler404Factory: "0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7",
70
- v3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV3Initializer,
72
+ v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV3Initializer,
71
73
  v3Quoter: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
72
- lockableV3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LockableUniswapV3Initializer,
73
- v4Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Initializer,
74
- v4MulticurveInitializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MulticurveInitializer,
75
- v4ScheduledMulticurveInitializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4ScheduledMulticurveInitializer,
74
+ lockableV3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LockableUniswapV3Initializer,
75
+ v4Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Initializer,
76
+ v4MulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MulticurveInitializer,
77
+ v4ScheduledMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4ScheduledMulticurveInitializer,
76
78
  // From Doppler scheduled multicurve deployments (Base Sepolia)
79
+ v4DecayMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DecayMulticurveInitializer,
80
+ // From Doppler decay multicurve deployments (Base Sepolia)
77
81
  dopplerHookInitializer: "0x98CD6478DeBe443069dB863Abb9626d94de9A544",
78
82
  rehypeDopplerHook: "0x636a756cee08775cc18780f52dd90b634f18ad37",
79
- dopplerLens: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerLensQuoter,
80
- dopplerDeployer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerDeployer,
83
+ dopplerLens: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerLensQuoter,
84
+ dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerDeployer,
81
85
  poolManager: "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408",
82
- v2Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV2Migrator,
83
- v4Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Migrator,
84
- v4MigratorHook: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MigratorHook,
85
- noOpMigrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
86
- governanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
86
+ v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV2Migrator,
87
+ v4Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Migrator,
88
+ v4MigratorHook: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MigratorHook,
89
+ noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
90
+ governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
87
91
  noOpGovernanceFactory: "0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228",
88
- streamableFeesLocker: "0x4da7d7a8034510c0ffd38a9252237ae8dba3cb61",
92
+ streamableFeesLocker: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].StreamableFeesLocker,
89
93
  universalRouter: "0x492E6456D9528771018DeB9E87ef7750EF184104",
90
94
  univ2Router02: "0x1689E7B1F10000AE47eBfE339a4f69dECd19F602",
91
95
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
@@ -95,16 +99,16 @@ var ADDRESSES = {
95
99
  },
96
100
  [CHAIN_IDS.INK]: {
97
101
  airlock: "0x014E1c0bd34f3B10546E554CB33B3293fECDD056",
98
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].TokenFactory,
99
- v3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV3Initializer,
102
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].TokenFactory,
103
+ v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV3Initializer,
100
104
  v3Quoter: "0x96b572D2d880cf2Fa2563651BD23ADE6f5516652",
101
105
  v4Initializer: "0xC99b485499f78995C6F1640dbB1413c57f8BA684",
102
106
  dopplerLens: "0x3972c00f7ed4885e145823eb7c655375d275a1c5",
103
- dopplerDeployer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].DopplerDeployer,
107
+ dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].DopplerDeployer,
104
108
  poolManager: "0x360e68faccca8ca495c1b759fd9eee466db9fb32",
105
- v2Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV2Migrator,
109
+ v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV2Migrator,
106
110
  v4Migrator: ZERO_ADDRESS,
107
- governanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].GovernanceFactory,
111
+ governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].GovernanceFactory,
108
112
  noOpGovernanceFactory: ZERO_ADDRESS,
109
113
  // Not yet deployed
110
114
  streamableFeesLocker: ZERO_ADDRESS,
@@ -112,36 +116,36 @@ var ADDRESSES = {
112
116
  universalRouter: "0x112908dac86e20e7241b0927479ea3bf935d1fa0",
113
117
  univ2Router02: "0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4",
114
118
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
115
- bundler: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler,
119
+ bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler,
116
120
  weth: "0x4200000000000000000000000000000000000006",
117
121
  uniswapV4Quoter: "0x3972c00f7ed4885e145823eb7c655375d275a1c5"
118
122
  },
119
123
  [CHAIN_IDS.UNICHAIN]: {
120
- airlock: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Airlock,
121
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].TokenFactory,
122
- v3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV3Initializer,
124
+ airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Airlock,
125
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].TokenFactory,
126
+ v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV3Initializer,
123
127
  v3Quoter: "0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658",
124
128
  v4Initializer: "0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB",
125
129
  dopplerLens: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0",
126
130
  dopplerDeployer: "0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f",
127
131
  poolManager: "0x1f98400000000000000000000000000000000004",
128
- v2Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV2Migrator,
129
- v4Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV4Migrator,
130
- noOpMigrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpMigrator,
131
- governanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].GovernanceFactory,
132
- noOpGovernanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpGovernanceFactory,
132
+ v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV2Migrator,
133
+ v4Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV4Migrator,
134
+ noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpMigrator,
135
+ governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].GovernanceFactory,
136
+ noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpGovernanceFactory,
133
137
  streamableFeesLocker: ZERO_ADDRESS,
134
138
  // Not yet deployed
135
139
  universalRouter: "0xef740bf23acae26f6492b10de645d6b98dc8eaf3",
136
140
  univ2Router02: "0x284f11109359a7e1306c3e447ef14d38400063ff",
137
141
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
138
- bundler: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Bundler,
142
+ bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Bundler,
139
143
  weth: "0x4200000000000000000000000000000000000006",
140
144
  uniswapV4Quoter: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0"
141
145
  },
142
146
  [CHAIN_IDS.UNICHAIN_SEPOLIA]: {
143
147
  airlock: "0x651ab94B4777e2e4cdf96082d90C65bd947b73A4",
144
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].TokenFactory,
148
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].TokenFactory,
145
149
  v3Initializer: "0x7Fb9a622186B4660A5988C223ebb9d3690dD5007",
146
150
  v3Quoter: "0x6Dd37329A1A225a6Fca658265D460423DCafBF89",
147
151
  v4Initializer: "0x992375478626E67F4e639d3298EbCAaE51C3dF0b",
@@ -150,9 +154,9 @@ var ADDRESSES = {
150
154
  poolManager: "0x00B036B58a818B1BC34d502D3fE730Db729e62AC",
151
155
  v2Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
152
156
  v4Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
153
- noOpMigrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpMigrator,
157
+ noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpMigrator,
154
158
  governanceFactory: "0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC",
155
- noOpGovernanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpGovernanceFactory,
159
+ noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpGovernanceFactory,
156
160
  streamableFeesLocker: ZERO_ADDRESS,
157
161
  // Not yet deployed
158
162
  universalRouter: "0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D",
@@ -163,53 +167,53 @@ var ADDRESSES = {
163
167
  uniswapV4Quoter: "0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472"
164
168
  },
165
169
  [CHAIN_IDS.MONAD_TESTNET]: {
166
- airlock: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Airlock,
167
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].TokenFactory80,
168
- v3Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV3Initializer,
170
+ airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Airlock,
171
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].TokenFactory80,
172
+ v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV3Initializer,
169
173
  v3Quoter: ZERO_ADDRESS,
170
- v4Initializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV4Initializer,
171
- dopplerLens: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerLensQuoter,
172
- dopplerDeployer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerDeployer,
174
+ v4Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV4Initializer,
175
+ dopplerLens: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerLensQuoter,
176
+ dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerDeployer,
173
177
  poolManager: "0xe93882f395B0b24180855c68Ab19B2d78573ceBc",
174
- v2Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV2Migrator,
178
+ v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV2Migrator,
175
179
  v4Migrator: "0xBEd386a1Fc62B6598c9b8d2BF634471B6Fe75EB7",
176
- noOpMigrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpMigrator,
177
- governanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].GovernanceFactory,
178
- noOpGovernanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpGovernanceFactory,
180
+ noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpMigrator,
181
+ governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].GovernanceFactory,
182
+ noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpGovernanceFactory,
179
183
  streamableFeesLocker: "0x91231cDdD8d6C86Df602070a3081478e074b97b7",
180
184
  // Not yet deployed
181
185
  universalRouter: ZERO_ADDRESS,
182
186
  univ2Router02: ZERO_ADDRESS,
183
187
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
184
- bundler: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Bundler,
188
+ bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Bundler,
185
189
  weth: ZERO_ADDRESS,
186
190
  // TODO: Get Monad Testnet weth
187
191
  uniswapV4Quoter: ZERO_ADDRESS
188
192
  },
189
193
  [CHAIN_IDS.MONAD_MAINNET]: {
190
- airlock: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Airlock,
191
- tokenFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].TokenFactory80,
194
+ airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Airlock,
195
+ tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].TokenFactory80,
192
196
  v3Initializer: ZERO_ADDRESS,
193
197
  v3Quoter: "0x66266174564170519409d8853898f065c719536b",
194
198
  v4Initializer: ZERO_ADDRESS,
195
199
  dopplerLens: ZERO_ADDRESS,
196
200
  dopplerDeployer: ZERO_ADDRESS,
197
201
  poolManager: "0x188d586ddcf52439676ca21a244753fa19f9ea8e",
198
- v2Migrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2Migrator,
202
+ v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2Migrator,
199
203
  v4Migrator: ZERO_ADDRESS,
200
- noOpMigrator: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpMigrator,
201
- governanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
202
- noOpGovernanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
203
- launchpadGovernanceFactory: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LaunchpadGovernanceFactory,
204
- v4ScheduledMulticurveInitializer: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4ScheduledMulticurveInitializer,
204
+ noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpMigrator,
205
+ governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
206
+ noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
207
+ launchpadGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LaunchpadGovernanceFactory,
208
+ v4ScheduledMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4ScheduledMulticurveInitializer,
205
209
  streamableFeesLocker: ZERO_ADDRESS,
206
210
  // Not yet deployed
207
211
  universalRouter: "0x0d97dc33264bfc1c226207428a79b26757fb9dc3",
208
212
  univ2Router02: ZERO_ADDRESS,
209
213
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
210
- bundler: chunk3ALNQHGL_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Bundler,
214
+ bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Bundler,
211
215
  weth: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
212
- // INFO: this is wmon, but we treat it as weth because mon is native
216
+ // INFO: this is wmon, but we treat it as weth because mon is native
213
217
  uniswapV4Quoter: "0xa222dd357a9076d1091ed6aa2e16c9742dd26891"
214
218
  }
215
219
  };
@@ -232,5 +236,5 @@ exports.CHAIN_IDS = CHAIN_IDS;
232
236
  exports.SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS;
233
237
  exports.getAddresses = getAddresses;
234
238
  exports.isSupportedChainId = isSupportedChainId;
235
- //# sourceMappingURL=chunk-Z7ZGPSQF.js.map
236
- //# sourceMappingURL=chunk-Z7ZGPSQF.js.map
239
+ //# sourceMappingURL=chunk-P4BT5GDO.js.map
240
+ //# sourceMappingURL=chunk-P4BT5GDO.js.map