@whetstone-research/doppler-sdk 0.0.18 → 0.0.20
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.
- package/README.md +46 -1
- package/dist/DopplerSDK.js +18 -18
- package/dist/DopplerSDK.mjs +17 -17
- package/dist/abis/index.d.mts +32 -1
- package/dist/abis/index.d.ts +32 -1
- package/dist/abis/index.js +26 -22
- package/dist/abis/index.mjs +1 -1
- package/dist/addresses.d.mts +1 -0
- package/dist/addresses.d.ts +1 -0
- package/dist/addresses.js +7 -7
- package/dist/addresses.mjs +2 -2
- package/dist/builders/DynamicAuctionBuilder.js +9 -9
- package/dist/builders/DynamicAuctionBuilder.mjs +8 -8
- package/dist/builders/MulticurveBuilder.d.mts +16 -0
- package/dist/builders/MulticurveBuilder.d.ts +16 -0
- package/dist/builders/MulticurveBuilder.js +9 -9
- package/dist/builders/MulticurveBuilder.mjs +8 -8
- package/dist/builders/StaticAuctionBuilder.js +9 -9
- package/dist/builders/StaticAuctionBuilder.mjs +8 -8
- package/dist/builders/index.js +17 -17
- package/dist/builders/index.mjs +10 -10
- package/dist/builders/shared.js +10 -10
- package/dist/builders/shared.mjs +6 -6
- package/dist/{chunk-ZQA3VG53.mjs → chunk-36Y3N257.mjs} +118 -20
- package/dist/chunk-36Y3N257.mjs.map +1 -0
- package/dist/{chunk-LOVD3NCN.js → chunk-3MVW6UIW.js} +18 -2
- package/dist/chunk-3MVW6UIW.js.map +1 -0
- package/dist/{chunk-WGP4RHM7.js → chunk-3SCK4LGS.js} +26 -26
- package/dist/{chunk-WGP4RHM7.js.map → chunk-3SCK4LGS.js.map} +1 -1
- package/dist/{chunk-UGBCLUOX.js → chunk-4CJS5XLY.js} +26 -26
- package/dist/{chunk-UGBCLUOX.js.map → chunk-4CJS5XLY.js.map} +1 -1
- package/dist/{chunk-IJEMEVGS.mjs → chunk-4LNXE5DF.mjs} +4 -4
- package/dist/{chunk-IJEMEVGS.mjs.map → chunk-4LNXE5DF.mjs.map} +1 -1
- package/dist/{chunk-4DUE547M.js → chunk-6BQY5EPB.js} +4 -2
- package/dist/chunk-6BQY5EPB.js.map +1 -0
- package/dist/{chunk-27TY7K5D.js → chunk-AS5UUJRI.js} +11 -11
- package/dist/{chunk-27TY7K5D.js.map → chunk-AS5UUJRI.js.map} +1 -1
- package/dist/{chunk-Y4IZVDJE.mjs → chunk-BFJGY436.mjs} +3 -3
- package/dist/{chunk-Y4IZVDJE.mjs.map → chunk-BFJGY436.mjs.map} +1 -1
- package/dist/{chunk-NVJNZ7XO.js → chunk-COUZYFEE.js} +27 -27
- package/dist/{chunk-NVJNZ7XO.js.map → chunk-COUZYFEE.js.map} +1 -1
- package/dist/{chunk-JCJVX42H.mjs → chunk-CXE33IZN.mjs} +5 -5
- package/dist/{chunk-JCJVX42H.mjs.map → chunk-CXE33IZN.mjs.map} +1 -1
- package/dist/{chunk-BZKX3J3R.mjs → chunk-E2NF4AQB.mjs} +18 -3
- package/dist/chunk-E2NF4AQB.mjs.map +1 -0
- package/dist/{chunk-3Q2BALCB.js → chunk-GFOBDFVW.js} +344 -147
- package/dist/chunk-GFOBDFVW.js.map +1 -0
- package/dist/{chunk-CXYA7OX6.js → chunk-GLMPU7VL.js} +132 -34
- package/dist/chunk-GLMPU7VL.js.map +1 -0
- package/dist/{chunk-PE47QUJV.mjs → chunk-HH7HQ4HC.mjs} +3 -3
- package/dist/{chunk-PE47QUJV.mjs.map → chunk-HH7HQ4HC.mjs.map} +1 -1
- package/dist/{chunk-IUXOT6OY.js → chunk-HHHCRTC7.js} +53 -15
- package/dist/chunk-HHHCRTC7.js.map +1 -0
- package/dist/{chunk-LXUF7RNX.mjs → chunk-IWJOPXYN.mjs} +4 -3
- package/dist/chunk-IWJOPXYN.mjs.map +1 -0
- package/dist/{chunk-4BPFHO6W.js → chunk-J2E2GILK.js} +20 -20
- package/dist/{chunk-4BPFHO6W.js.map → chunk-J2E2GILK.js.map} +1 -1
- package/dist/{chunk-2UUVAFXS.js → chunk-JHPDKSC4.js} +78 -72
- package/dist/chunk-JHPDKSC4.js.map +1 -0
- package/dist/{chunk-AQKQRG7M.js → chunk-K27G7LLT.js} +5 -5
- package/dist/{chunk-AQKQRG7M.js.map → chunk-K27G7LLT.js.map} +1 -1
- package/dist/{chunk-FM5ASWDQ.mjs → chunk-NJYBKWCD.mjs} +45 -7
- package/dist/chunk-NJYBKWCD.mjs.map +1 -0
- package/dist/{chunk-RAII4DRI.mjs → chunk-NWZGO2CH.mjs} +10 -4
- package/dist/chunk-NWZGO2CH.mjs.map +1 -0
- package/dist/{chunk-WM2YFSKT.mjs → chunk-QFQXHDC7.mjs} +11 -2
- package/dist/chunk-QFQXHDC7.mjs.map +1 -0
- package/dist/{chunk-RKJ2466C.mjs → chunk-QOGBOT2M.mjs} +3 -3
- package/dist/{chunk-RKJ2466C.mjs.map → chunk-QOGBOT2M.mjs.map} +1 -1
- package/dist/{chunk-AG3E3XYB.mjs → chunk-RJE6LWWF.mjs} +4 -4
- package/dist/{chunk-AG3E3XYB.mjs.map → chunk-RJE6LWWF.mjs.map} +1 -1
- package/dist/{chunk-EKQKHXJN.mjs → chunk-RKPAL3SU.mjs} +3 -3
- package/dist/{chunk-EKQKHXJN.mjs.map → chunk-RKPAL3SU.mjs.map} +1 -1
- package/dist/{chunk-JXNAHW6C.js → chunk-RLUMYHPI.js} +11 -2
- package/dist/chunk-RLUMYHPI.js.map +1 -0
- package/dist/{chunk-5FJCRKQ6.js → chunk-RXUJ4DUB.js} +28 -28
- package/dist/{chunk-5FJCRKQ6.js.map → chunk-RXUJ4DUB.js.map} +1 -1
- package/dist/{chunk-MGLI4N4B.js → chunk-SAX7P3MH.js} +22 -22
- package/dist/{chunk-MGLI4N4B.js.map → chunk-SAX7P3MH.js.map} +1 -1
- package/dist/{chunk-226TXYRB.mjs → chunk-SKU6VE6L.mjs} +12 -12
- package/dist/{chunk-226TXYRB.mjs.map → chunk-SKU6VE6L.mjs.map} +1 -1
- package/dist/{chunk-DVQWWF23.js → chunk-TYJZL2XZ.js} +24 -24
- package/dist/{chunk-DVQWWF23.js.map → chunk-TYJZL2XZ.js.map} +1 -1
- package/dist/{chunk-IJRI5LNK.mjs → chunk-U7CHPFU6.mjs} +248 -51
- package/dist/chunk-U7CHPFU6.mjs.map +1 -0
- package/dist/{chunk-WMOJQ6MS.mjs → chunk-V7YRKFYK.mjs} +5 -5
- package/dist/{chunk-WMOJQ6MS.mjs.map → chunk-V7YRKFYK.mjs.map} +1 -1
- package/dist/{chunk-IEEK2PMP.mjs → chunk-XEWKLVOD.mjs} +4 -4
- package/dist/{chunk-IEEK2PMP.mjs.map → chunk-XEWKLVOD.mjs.map} +1 -1
- package/dist/{chunk-HVYUDMHH.js → chunk-Y5RAENN5.js} +16 -16
- package/dist/{chunk-HVYUDMHH.js.map → chunk-Y5RAENN5.js.map} +1 -1
- package/dist/constants.d.mts +7 -1
- package/dist/constants.d.ts +7 -1
- package/dist/constants.js +51 -47
- package/dist/constants.mjs +1 -1
- package/dist/deployments.generated.d.mts +9 -0
- package/dist/deployments.generated.d.ts +9 -0
- package/dist/deployments.generated.js +2 -2
- package/dist/deployments.generated.mjs +1 -1
- package/dist/entities/DopplerFactory.d.mts +2 -0
- package/dist/entities/DopplerFactory.d.ts +2 -0
- package/dist/entities/DopplerFactory.js +7 -7
- package/dist/entities/DopplerFactory.mjs +6 -6
- package/dist/entities/auction/DynamicAuction.js +5 -5
- package/dist/entities/auction/DynamicAuction.mjs +4 -4
- package/dist/entities/auction/MulticurvePool.d.mts +9 -3
- package/dist/entities/auction/MulticurvePool.d.ts +9 -3
- package/dist/entities/auction/MulticurvePool.js +7 -6
- package/dist/entities/auction/MulticurvePool.mjs +6 -5
- package/dist/entities/auction/StaticAuction.js +5 -5
- package/dist/entities/auction/StaticAuction.mjs +4 -4
- package/dist/entities/auction/index.js +11 -10
- package/dist/entities/auction/index.mjs +8 -7
- package/dist/entities/quoter/Quoter.js +5 -5
- package/dist/entities/quoter/Quoter.mjs +4 -4
- package/dist/entities/quoter/index.js +5 -5
- package/dist/entities/quoter/index.mjs +4 -4
- package/dist/entities/token/derc20/Derc20.js +3 -3
- package/dist/entities/token/derc20/Derc20.mjs +2 -2
- package/dist/entities/token/derc20/index.js +3 -3
- package/dist/entities/token/derc20/index.mjs +2 -2
- package/dist/entities/token/index.js +3 -3
- package/dist/entities/token/index.mjs +2 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +108 -100
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -17
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.mts +32 -1
- package/dist/types.d.ts +32 -1
- package/dist/types.js +8 -8
- package/dist/types.mjs +3 -3
- package/dist/utils/airlock.js +7 -7
- package/dist/utils/airlock.mjs +3 -3
- package/dist/utils/index.js +8 -8
- package/dist/utils/index.mjs +4 -4
- package/dist/utils/tokenAddressMiner.js +1 -1
- package/dist/utils/tokenAddressMiner.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-2UUVAFXS.js.map +0 -1
- package/dist/chunk-3Q2BALCB.js.map +0 -1
- package/dist/chunk-4DUE547M.js.map +0 -1
- package/dist/chunk-BZKX3J3R.mjs.map +0 -1
- package/dist/chunk-CXYA7OX6.js.map +0 -1
- package/dist/chunk-FM5ASWDQ.mjs.map +0 -1
- package/dist/chunk-IJRI5LNK.mjs.map +0 -1
- package/dist/chunk-IUXOT6OY.js.map +0 -1
- package/dist/chunk-JXNAHW6C.js.map +0 -1
- package/dist/chunk-LOVD3NCN.js.map +0 -1
- package/dist/chunk-LXUF7RNX.mjs.map +0 -1
- package/dist/chunk-RAII4DRI.mjs.map +0 -1
- package/dist/chunk-WM2YFSKT.mjs.map +0 -1
- package/dist/chunk-ZQA3VG53.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/entities/auction/MulticurvePool.ts"],"names":["getAddresses","zeroAddress","v4MulticurveInitializerAbi","computePoolId","v4MulticurveMigratorAbi","streamableFeesLockerAbi","DYNAMIC_FEE_FLAG","decayMulticurveInitializerHookAbi"],"mappings":"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","file":"chunk-HHHCRTC7.js","sourcesContent":["import {\n type Address,\n type PublicClient,\n type WalletClient,\n type Hash,\n type Hex,\n zeroAddress,\n} from 'viem';\nimport {\n LockablePoolStatus,\n type MulticurveDecayFeeSchedule,\n type MulticurvePoolState,\n type SupportedPublicClient,\n type V4PoolKey,\n} from '../../types';\nimport {\n decayMulticurveInitializerHookAbi,\n v4MulticurveInitializerAbi,\n v4MulticurveMigratorAbi,\n streamableFeesLockerAbi,\n} from '../../abis';\nimport { getAddresses } from '../../addresses';\nimport type { SupportedChainId } from '../../addresses';\nimport { DYNAMIC_FEE_FLAG } from '../../constants';\nimport { computePoolId } from '../../utils/poolKey';\n\n/** Result from finding which initializer contains the pool */\ninterface InitializerDiscoveryResult {\n initializerAddress: Address;\n state: MulticurvePoolState;\n}\n\n/**\n * MulticurvePool class for interacting with V4 multicurve pools\n *\n * Multicurve pools use the V4 multicurve initializer which supports:\n * - Multiple bonding curves with different price ranges\n * - Fee collection for configured beneficiaries\n * - No-migration lockable liquidity\n *\n * Note: V4 pools don't have their own contract addresses. The token address\n * is used as the lookup key to retrieve pool state from the initializer contract.\n *\n * Terminology: The contracts call the created token \"asset\" (paired against \"numeraire\", e.g., WETH).\n * We use \"tokenAddress\" in the SDK for consistency.\n */\nexport class MulticurvePool {\n private client: SupportedPublicClient;\n private walletClient?: WalletClient;\n private tokenAddress: Address;\n private get rpc(): PublicClient {\n return this.client as PublicClient;\n }\n\n constructor(\n client: SupportedPublicClient,\n walletClient: WalletClient | undefined,\n tokenAddress: Address,\n ) {\n this.client = client;\n this.walletClient = walletClient;\n this.tokenAddress = tokenAddress;\n }\n\n /**\n * Get the token address for this pool\n * This is also the lookup key used to retrieve pool state from the initializer\n * (Called \"asset\" in the contracts, but we use \"tokenAddress\" for SDK consistency)\n */\n getTokenAddress(): Address {\n return this.tokenAddress;\n }\n\n /**\n * Get current pool state from the multicurve initializer\n *\n * Automatically discovers which initializer (standard, scheduled, or decay) contains the pool.\n */\n async getState(): Promise<MulticurvePoolState> {\n const { state } = await this.findInitializerForPool();\n return state;\n }\n\n /**\n * Find which initializer contains this pool and return both the address and state.\n *\n * Tries v4MulticurveInitializer first (more common), then falls back to\n * v4ScheduledMulticurveInitializer and v4DecayMulticurveInitializer if needed.\n */\n private async findInitializerForPool(): Promise<InitializerDiscoveryResult> {\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId as SupportedChainId);\n\n // Build list of initializers to try, preferring non-scheduled (more common)\n const initializersToTry: Address[] = [\n addresses.v4MulticurveInitializer,\n addresses.v4ScheduledMulticurveInitializer,\n addresses.v4DecayMulticurveInitializer,\n ].filter(\n (addr): addr is Address => addr !== undefined && addr !== zeroAddress,\n );\n\n if (initializersToTry.length === 0) {\n throw new Error(\n 'No V4 multicurve initializer addresses configured for this chain',\n );\n }\n\n const triedInitializers: Address[] = [];\n\n for (const initializerAddress of initializersToTry) {\n triedInitializers.push(initializerAddress);\n\n const stateData = await this.rpc.readContract({\n address: initializerAddress,\n abi: v4MulticurveInitializerAbi,\n functionName: 'getState',\n args: [this.tokenAddress],\n });\n\n // Parse the returned tuple into a strongly typed PoolKey\n const [numeraire, status, rawPoolKey, farTick] = stateData as readonly [\n Address,\n number,\n {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n } & readonly [Address, Address, number, number, Address],\n number,\n ];\n\n const poolKey = this.parsePoolKey(rawPoolKey);\n\n // Check if pool exists in this initializer\n // A non-existent pool will have zeroed hooks and tickSpacing\n if (poolKey.hooks !== zeroAddress && poolKey.tickSpacing !== 0) {\n const state: MulticurvePoolState = {\n asset: this.tokenAddress,\n numeraire,\n fee: poolKey.fee,\n tickSpacing: poolKey.tickSpacing,\n status,\n poolKey,\n farTick: Number(farTick),\n };\n return { initializerAddress, state };\n }\n }\n\n // Pool not found in any initializer\n throw new Error(\n `Pool not found for token ${this.tokenAddress}. ` +\n `Tried initializers: ${triedInitializers.join(', ')}`,\n );\n }\n\n /**\n * Collect fees from the pool and distribute to beneficiaries\n *\n * This function can be called by any beneficiary to trigger fee collection\n * and distribution. Fees are automatically distributed according to the\n * configured beneficiary shares.\n *\n * @returns Object containing the amounts of fees0 and fees1 distributed, and the transaction hash\n */\n async collectFees(): Promise<{\n fees0: bigint;\n fees1: bigint;\n transactionHash: Hash;\n }> {\n if (!this.walletClient) {\n throw new Error('Wallet client required to collect fees');\n }\n\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId as SupportedChainId);\n\n // Discover which initializer has this pool and get state in one call\n const { initializerAddress, state } = await this.findInitializerForPool();\n\n if (state.status === LockablePoolStatus.Locked) {\n const poolId = computePoolId(state.poolKey);\n return this.collectFeesFromContract(\n initializerAddress,\n v4MulticurveInitializerAbi,\n poolId,\n );\n }\n\n if (state.status === LockablePoolStatus.Exited) {\n if (!addresses.v4Migrator) {\n throw new Error(\n 'V4 multicurve migrator address not configured for this chain',\n );\n }\n\n const assetData = await this.rpc.readContract({\n address: addresses.v4Migrator,\n abi: v4MulticurveMigratorAbi,\n functionName: 'getAssetData',\n args: [state.poolKey.currency0, state.poolKey.currency1],\n });\n\n const migratorPoolKey = this.parsePoolKey(\n (assetData as any).poolKey ?? (assetData as any)[1],\n );\n const poolId = computePoolId(migratorPoolKey);\n\n const beneficiaries =\n (assetData as any).beneficiaries ?? (assetData as any)[4] ?? [];\n if (!Array.isArray(beneficiaries) || beneficiaries.length === 0) {\n throw new Error(\n 'Migrated multicurve pool has no beneficiaries configured',\n );\n }\n\n const lockerAddress = await this.resolveLockerAddress(\n addresses.v4Migrator,\n addresses.streamableFeesLocker,\n );\n\n const streamData = await this.rpc.readContract({\n address: lockerAddress,\n abi: streamableFeesLockerAbi,\n functionName: 'streams',\n args: [poolId],\n });\n\n const startDate = Number(\n (streamData as any).startDate ?? (streamData as any)[2] ?? 0,\n );\n if (startDate === 0) {\n throw new Error('Migrated multicurve stream not initialized');\n }\n\n return this.collectFeesFromContract(\n lockerAddress,\n streamableFeesLockerAbi,\n poolId,\n );\n }\n\n throw new Error('Multicurve pool is not locked or migrated');\n }\n\n /**\n * Get the numeraire address for this pool\n */\n async getNumeraireAddress(): Promise<Address> {\n const state = await this.getState();\n return state.numeraire;\n }\n\n /**\n * Get the decay fee schedule for dynamic-fee multicurve pools.\n *\n * Returns `null` when the pool is not using dynamic fees.\n */\n async getFeeSchedule(): Promise<MulticurveDecayFeeSchedule | null> {\n const { state } = await this.findInitializerForPool();\n if (state.poolKey.fee !== DYNAMIC_FEE_FLAG) {\n return null;\n }\n\n const poolId = computePoolId(state.poolKey);\n try {\n const scheduleData = await this.rpc.readContract({\n address: state.poolKey.hooks,\n abi: decayMulticurveInitializerHookAbi,\n functionName: 'getFeeScheduleOf',\n args: [poolId],\n });\n\n const scheduleStruct = scheduleData as any;\n return {\n startingTime: Number(\n scheduleStruct.startingTime ?? scheduleStruct[0] ?? 0,\n ),\n startFee: Number(scheduleStruct.startFee ?? scheduleStruct[1] ?? 0),\n endFee: Number(scheduleStruct.endFee ?? scheduleStruct[2] ?? 0),\n lastFee: Number(scheduleStruct.lastFee ?? scheduleStruct[3] ?? 0),\n durationSeconds: Number(\n scheduleStruct.durationSeconds ?? scheduleStruct[4] ?? 0,\n ),\n };\n } catch {\n throw new Error(\n `Dynamic multicurve hook at ${state.poolKey.hooks} does not expose getFeeScheduleOf(poolId)`,\n );\n }\n }\n\n private parsePoolKey(rawPoolKey: unknown): V4PoolKey {\n const poolKeyStruct = rawPoolKey as any;\n return {\n currency0: (poolKeyStruct.currency0 ?? poolKeyStruct[0]) as Address,\n currency1: (poolKeyStruct.currency1 ?? poolKeyStruct[1]) as Address,\n fee: Number(poolKeyStruct.fee ?? poolKeyStruct[2]),\n tickSpacing: Number(poolKeyStruct.tickSpacing ?? poolKeyStruct[3]),\n hooks: (poolKeyStruct.hooks ?? poolKeyStruct[4]) as Address,\n };\n }\n\n private async resolveLockerAddress(\n migratorAddress: Address,\n configuredLocker?: Address,\n ): Promise<Address> {\n if (configuredLocker) {\n return configuredLocker;\n }\n\n const lockerAddress = await this.rpc.readContract({\n address: migratorAddress,\n abi: v4MulticurveMigratorAbi,\n functionName: 'locker',\n args: [],\n });\n\n return lockerAddress as Address;\n }\n\n private async collectFeesFromContract(\n contractAddress: Address,\n abi: typeof v4MulticurveInitializerAbi | typeof streamableFeesLockerAbi,\n poolId: Hex,\n ): Promise<{ fees0: bigint; fees1: bigint; transactionHash: Hash }> {\n const { request, result } = await this.rpc.simulateContract({\n address: contractAddress,\n abi,\n functionName: 'collectFees',\n args: [poolId],\n account: this.walletClient!.account,\n });\n\n const hash = await this.walletClient!.writeContract(request);\n\n await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });\n\n const [fees0, fees1] = result as readonly [bigint, bigint];\n\n return {\n fees0,\n fees1,\n transactionHash: hash,\n };\n }\n}\n"]}
|
|
@@ -22,6 +22,7 @@ var VALID_FEE_TIERS = [
|
|
|
22
22
|
];
|
|
23
23
|
var V3_FEE_TIERS = VALID_FEE_TIERS;
|
|
24
24
|
var V4_MAX_FEE = 1e5;
|
|
25
|
+
var DECAY_MAX_START_FEE = 8e5;
|
|
25
26
|
var TICK_SPACINGS = {
|
|
26
27
|
100: 1,
|
|
27
28
|
500: 10,
|
|
@@ -90,6 +91,6 @@ var DYNAMIC_FEE_FLAG = 8388608;
|
|
|
90
91
|
var FEE_AMOUNT_MASK = 16777215;
|
|
91
92
|
var DYNAMIC_AUCTION_VALID_FEES = [100, 500, 3e3, 1e4];
|
|
92
93
|
|
|
93
|
-
export { BASIS_POINTS, DAY_SECONDS, DEAD_ADDRESS, DEFAULT_AUCTION_DURATION, DEFAULT_CREATE_GAS_LIMIT, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, DOPPLER_FLAGS, DOPPLER_MAX_TICK_SPACING, DYNAMIC_AUCTION_VALID_FEES, DYNAMIC_FEE_FLAG, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, MAX_SQRT_RATIO, MIN_SQRT_RATIO, SECONDS_PER_DAY, SECONDS_PER_YEAR, TICK_SPACINGS, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, WAD, ZERO_ADDRESS };
|
|
94
|
-
//# sourceMappingURL=chunk-
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
94
|
+
export { BASIS_POINTS, DAY_SECONDS, DEAD_ADDRESS, DECAY_MAX_START_FEE, DEFAULT_AUCTION_DURATION, DEFAULT_CREATE_GAS_LIMIT, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, DOPPLER_FLAGS, DOPPLER_MAX_TICK_SPACING, DYNAMIC_AUCTION_VALID_FEES, DYNAMIC_FEE_FLAG, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, MAX_SQRT_RATIO, MIN_SQRT_RATIO, SECONDS_PER_DAY, SECONDS_PER_YEAR, TICK_SPACINGS, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, WAD, ZERO_ADDRESS };
|
|
95
|
+
//# sourceMappingURL=chunk-IWJOPXYN.mjs.map
|
|
96
|
+
//# sourceMappingURL=chunk-IWJOPXYN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts"],"names":[],"mappings":";;;AAGO,IAAM,MAAM,GAAA,IAAO;AACnB,IAAM,YAAA,GACX;AACK,IAAM,YAAA,GACX;AAaK,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,GAAA,EAAK,GAAA;AAAA;AAAA,EACL,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,IAAA,EAAM;AAAA;AACR;AASO,IAAM,eAAA,GAAsC;AAAA,EACjD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAM;AAClB;AAMO,IAAM,YAAA,GAAe;AAOrB,IAAM,UAAA,GAAa;AAOnB,IAAM,mBAAA,GAAsB;AAI5B,IAAM,aAAA,GAAgB;AAAA,EAC3B,GAAA,EAAK,CAAA;AAAA,EACL,GAAA,EAAK,EAAA;AAAA,EACL,GAAA,EAAM,EAAA;AAAA,EACN,GAAA,EAAO;AACT;AAMO,IAAM,wBAAA,GAA2B;AAGjC,IAAM,eAAA,GAAkB;AACxB,IAAM,mBAAmB,GAAA,GAAM;AAG/B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,2BAA2B,CAAA,GAAI;AACrC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,gBAAA,GAAmB;AACzB,IAAM,WAAA,GAAc;AAGpB,IAAM,wBAAA,GAA2B;AAGjC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAA,GAA2B;AACjC,IAAM,cAAA,GAAiB;AACvB,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8B,OAAO,gBAAgB;AAC3D,IAAM,yBAAA,GAA4B,WAAW,YAAY;AACzD,IAAM,6BAAA,GAAgC,WAAW,WAAW;AAC5D,IAAM,2BAAA,GAA8B,WAAW,MAAM;AACrD,IAAM,mBAAA,GAAsB,WAAW,SAAS;AAChD,IAAM,+BAAA,GAAkC,WAAW,MAAM;AAGzD,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8B,WAAW,MAAM;AAKrD,IAAM,8BAAA,GAAiC;AAAA,EAC5C,OAAA;AAAA,EAAU,OAAA;AAAA,EAAU;AACtB;AACO,IAAM,8BAAA,GAAiC;AAAA,EAC5C,OAAA;AAAA,EAAU,OAAA;AAAA,EAAU;AACtB;AACO,IAAM,gCAAA,GAAmC,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE;AACpD,IAAM,oCAAA,GAAuC;AAAA,EAClD,WAAW,MAAM,CAAA;AAAA;AAAA,EACjB,WAAW,OAAO,CAAA;AAAA;AAAA,EAClB,WAAW,KAAK;AAAA;AAClB;AAGO,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GACX;AAGK,IAAM,YAAA,GAAe;AAGrB,IAAM,SAAA,GAAY,OAAO,KAAM;AAC/B,IAAM,aAAA,GAAgB,MAAA;AAAA,EAC1B,CAAA,IAAK,EAAA;AAAA,EACH,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK;AAAA;AACV;AAGO,IAAM,gBAAA,GAAmB;AACzB,IAAM,eAAA,GAAkB;AAOxB,IAAM,0BAAA,GAA6B,CAAC,GAAA,EAAK,GAAA,EAAK,KAAM,GAAK","file":"chunk-IWJOPXYN.mjs","sourcesContent":["import { Address, parseEther } from 'viem';\n\n// Common constants\nexport const WAD = 10n ** 18n;\nexport const DEAD_ADDRESS =\n '0x000000000000000000000000000000000000dEaD' as Address;\nexport const ZERO_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Address;\n\n// =============================================================================\n// Fee Tiers - V3 vs V4 Distinction\n// =============================================================================\n//\n// Uniswap V3 (Static Auctions): Fees are COUPLED to tick spacings. Only 4 tiers allowed.\n// Uniswap V4 (Dynamic/Multicurve): Fees are DECOUPLED. Any fee 0-100,000 is valid.\n//\n// The standard fee tiers below are recognized by both V3 and V4, but V4 pools\n// can use ANY fee value as long as you provide an explicit tickSpacing.\n\n/** Standard fee tiers recognized by both Uniswap V3 and V4 */\nexport const FEE_TIERS = {\n LOWEST: 100, // 0.01%\n LOW: 500, // 0.05%\n MEDIUM: 3000, // 0.30%\n HIGH: 10000, // 1.00%\n} as const;\n\n/** Valid fee tier values (100, 500, 3000, 10000) */\nexport type FeeTier = (typeof FEE_TIERS)[keyof typeof FEE_TIERS];\n\n/**\n * Standard fee tiers - REQUIRED for V3 (Static Auctions).\n * V4 pools can use custom fees but these are the recommended defaults.\n */\nexport const VALID_FEE_TIERS: readonly FeeTier[] = [\n 100, 500, 3000, 10000,\n] as const;\n\n/**\n * V3 fee tiers - These are the ONLY valid fees for Uniswap V3 pools.\n * Static Auctions use V3 and must use one of these tiers.\n */\nexport const V3_FEE_TIERS = VALID_FEE_TIERS;\n\n/**\n * Maximum LP fee for V4 pools (from DopplerHookInitializer.sol).\n * V4 pools can use any fee from 0 to this value.\n * @see DopplerHookInitializer.sol line 171: `uint24 constant MAX_LP_FEE = 100_000`\n */\nexport const V4_MAX_FEE = 100_000; // 10%\n\n/**\n * Maximum allowed start fee for decay multicurve schedules.\n * This is intentionally higher than V4_MAX_FEE to support anti-sniping launches.\n * 800_000 = 80%\n */\nexport const DECAY_MAX_START_FEE = 800_000; // 80%\n\n// Tick spacings for different fee tiers (standard Uniswap V3 mapping)\n// In V4, tickSpacing is independent of fee - you can use any combination\nexport const TICK_SPACINGS = {\n 100: 1,\n 500: 10,\n 3000: 60,\n 10000: 200,\n} as const;\n\n/**\n * Maximum tick spacing allowed by Doppler.sol for dynamic (Dutch) auctions.\n * @see Doppler.sol line 159: `int24 constant MAX_TICK_SPACING = 30`\n */\nexport const DOPPLER_MAX_TICK_SPACING = 30;\n\n// Time constants\nexport const SECONDS_PER_DAY = 86400;\nexport const SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY;\n\n// Default values\nexport const DEFAULT_EPOCH_LENGTH = 43200; // 12 hours in seconds (matching V4 SDK)\nexport const DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY; // 7 days\nexport const DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR; // 1 year\nexport const DEFAULT_PD_SLUGS = 5; // Default price discovery slugs\nexport const DAY_SECONDS = SECONDS_PER_DAY; // Alias for consistency\n\n// Default gas limit to fall back on when create() simulations do not return a value\nexport const DEFAULT_CREATE_GAS_LIMIT = 13_500_000n;\n\n// V3 Default parameters\nexport const DEFAULT_V3_START_TICK = 175000;\nexport const DEFAULT_V3_END_TICK = 225000;\nexport const DEFAULT_V3_NUM_POSITIONS = 15;\nexport const DEFAULT_V3_FEE = 10000; // 1% fee tier\nexport const DEFAULT_V3_INITIAL_VOTING_DELAY = 172800; // 2 days\nexport const DEFAULT_V3_INITIAL_VOTING_PERIOD = 1209600; // 14 days\nexport const DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD = 0n;\nexport const DEFAULT_V3_VESTING_DURATION = BigInt(SECONDS_PER_YEAR);\nexport const DEFAULT_V3_INITIAL_SUPPLY = parseEther('1000000000'); // 1 billion tokens\nexport const DEFAULT_V3_NUM_TOKENS_TO_SELL = parseEther('900000000'); // 900 million tokens\nexport const DEFAULT_V3_YEARLY_MINT_RATE = parseEther('0.02'); // 2% yearly mint rate\nexport const DEFAULT_V3_PRE_MINT = parseEther('9000000'); // 9 million tokens (0.9%)\nexport const DEFAULT_V3_MAX_SHARE_TO_BE_SOLD = parseEther('0.35'); // 35%\n\n// V4 Default parameters\nexport const DEFAULT_V4_INITIAL_VOTING_DELAY = 7200; // 2 hours\nexport const DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400; // 14 hours\nexport const DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n;\nexport const DEFAULT_V4_YEARLY_MINT_RATE = parseEther('0.02'); // 2% yearly mint rate\n\n// V4 Multicurve Default Tick Ranges\n// Based on market cap tiers: LOW ($7.5k -> $30k), MEDIUM ($50k -> $150k), HIGH ($250k -> $750k)\n// Calculated for 1B token supply, $4500 numeraire (e.g., WETH on Base)\nexport const DEFAULT_MULTICURVE_LOWER_TICKS = [\n -202_100, -183_100, -167_000,\n] as const;\nexport const DEFAULT_MULTICURVE_UPPER_TICKS = [\n -188_200, -172_100, -156_000,\n] as const;\nexport const DEFAULT_MULTICURVE_NUM_POSITIONS = [11, 11, 11] as const;\nexport const DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = [\n parseEther('0.05'), // 5% for LOW tier\n parseEther('0.125'), // 12.5% for MEDIUM tier\n parseEther('0.2'), // 20% for HIGH tier\n] as const;\n\n// Price bounds\nexport const MIN_SQRT_RATIO = 4295128739n;\nexport const MAX_SQRT_RATIO =\n 1461446703485210103287273052203988822378723970342n;\n\n// Basis points\nexport const BASIS_POINTS = 10000;\n\n// V4 Hook Flags for Doppler\nexport const FLAG_MASK = BigInt(0x3fff);\nexport const DOPPLER_FLAGS = BigInt(\n (1 << 13) | // BEFORE_INITIALIZE_FLAG\n (1 << 12) | // AFTER_INITIALIZE_FLAG\n (1 << 11) | // BEFORE_ADD_LIQUIDITY_FLAG\n (1 << 7) | // BEFORE_SWAP_FLAG\n (1 << 6) | // AFTER_SWAP_FLAG\n (1 << 5), // BEFORE_DONATE_FLAG\n);\n\n// V4 Dynamic Fee Flag\nexport const DYNAMIC_FEE_FLAG = 0x800000; // 8388608 in decimal\nexport const FEE_AMOUNT_MASK = 0xffffff; // Mask to extract actual fee from dynamic fee\n\n/**\n * @deprecated Dynamic auctions (V4) support ANY fee 0-100,000 with explicit tickSpacing.\n * This constant is kept for backwards compatibility but is no longer enforced.\n * Standard fee tiers still auto-derive tickSpacing; custom fees require explicit tickSpacing.\n */\nexport const DYNAMIC_AUCTION_VALID_FEES = [100, 500, 3000, 10000] as const;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkJHPDKSC4_js = require('./chunk-JHPDKSC4.js');
|
|
4
|
+
var chunk3MVW6UIW_js = require('./chunk-3MVW6UIW.js');
|
|
5
5
|
var viem = require('viem');
|
|
6
6
|
|
|
7
7
|
var Quoter = class {
|
|
@@ -18,11 +18,11 @@ var Quoter = class {
|
|
|
18
18
|
* @returns Quote result including output amount and price impact
|
|
19
19
|
*/
|
|
20
20
|
async quoteExactInputV3(params) {
|
|
21
|
-
const addresses =
|
|
21
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
22
22
|
try {
|
|
23
23
|
const { result } = await this.rpc.simulateContract({
|
|
24
24
|
address: addresses.v3Quoter,
|
|
25
|
-
abi:
|
|
25
|
+
abi: chunk3MVW6UIW_js.quoterV2Abi,
|
|
26
26
|
functionName: "quoteExactInputSingle",
|
|
27
27
|
args: [
|
|
28
28
|
{
|
|
@@ -66,11 +66,11 @@ var Quoter = class {
|
|
|
66
66
|
* @returns Quote result including required input amount
|
|
67
67
|
*/
|
|
68
68
|
async quoteExactOutputV3(params) {
|
|
69
|
-
const addresses =
|
|
69
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
70
70
|
try {
|
|
71
71
|
const { result } = await this.rpc.simulateContract({
|
|
72
72
|
address: addresses.v3Quoter,
|
|
73
|
-
abi:
|
|
73
|
+
abi: chunk3MVW6UIW_js.quoterV2Abi,
|
|
74
74
|
functionName: "quoteExactOutputSingle",
|
|
75
75
|
args: [
|
|
76
76
|
{
|
|
@@ -114,13 +114,13 @@ var Quoter = class {
|
|
|
114
114
|
* @returns Array of amounts for each step in the path
|
|
115
115
|
*/
|
|
116
116
|
async quoteExactInputV2(params) {
|
|
117
|
-
const addresses =
|
|
117
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
118
118
|
if (!addresses.univ2Router02) {
|
|
119
119
|
throw new Error("Uniswap V2 Router not available on this chain");
|
|
120
120
|
}
|
|
121
121
|
const result = await this.rpc.readContract({
|
|
122
122
|
address: addresses.univ2Router02,
|
|
123
|
-
abi:
|
|
123
|
+
abi: chunk3MVW6UIW_js.uniswapV2Router02Abi,
|
|
124
124
|
functionName: "getAmountsOut",
|
|
125
125
|
args: [params.amountIn, params.path]
|
|
126
126
|
});
|
|
@@ -132,13 +132,13 @@ var Quoter = class {
|
|
|
132
132
|
* @returns Array of amounts for each step in the path
|
|
133
133
|
*/
|
|
134
134
|
async quoteExactOutputV2(params) {
|
|
135
|
-
const addresses =
|
|
135
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
136
136
|
if (!addresses.univ2Router02) {
|
|
137
137
|
throw new Error("Uniswap V2 Router not available on this chain");
|
|
138
138
|
}
|
|
139
139
|
const result = await this.rpc.readContract({
|
|
140
140
|
address: addresses.univ2Router02,
|
|
141
|
-
abi:
|
|
141
|
+
abi: chunk3MVW6UIW_js.uniswapV2Router02Abi,
|
|
142
142
|
functionName: "getAmountsIn",
|
|
143
143
|
args: [params.amountOut, params.path]
|
|
144
144
|
});
|
|
@@ -150,14 +150,14 @@ var Quoter = class {
|
|
|
150
150
|
* @returns Quote result for V4 pools
|
|
151
151
|
*/
|
|
152
152
|
async quoteExactInputV4(params) {
|
|
153
|
-
const addresses =
|
|
153
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
154
154
|
const quoterAddress = addresses.uniswapV4Quoter;
|
|
155
155
|
if (!quoterAddress) {
|
|
156
156
|
throw new Error("No V4 quoter available on this chain");
|
|
157
157
|
}
|
|
158
158
|
const { result } = await this.rpc.simulateContract({
|
|
159
159
|
address: quoterAddress,
|
|
160
|
-
abi:
|
|
160
|
+
abi: chunk3MVW6UIW_js.v4QuoterAbi,
|
|
161
161
|
functionName: "quoteExactInputSingle",
|
|
162
162
|
args: [
|
|
163
163
|
{
|
|
@@ -179,14 +179,14 @@ var Quoter = class {
|
|
|
179
179
|
* @returns Quote result for V4 pools
|
|
180
180
|
*/
|
|
181
181
|
async quoteExactOutputV4(params) {
|
|
182
|
-
const addresses =
|
|
182
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
183
183
|
const quoterAddress = addresses.dopplerLens;
|
|
184
184
|
if (!quoterAddress) {
|
|
185
185
|
throw new Error("No V4 quoter available on this chain");
|
|
186
186
|
}
|
|
187
187
|
const { result } = await this.rpc.simulateContract({
|
|
188
188
|
address: quoterAddress,
|
|
189
|
-
abi:
|
|
189
|
+
abi: chunk3MVW6UIW_js.v4QuoterAbi,
|
|
190
190
|
functionName: "quoteExactOutputSingle",
|
|
191
191
|
args: [
|
|
192
192
|
{
|
|
@@ -207,14 +207,14 @@ var Quoter = class {
|
|
|
207
207
|
* @param params Parameters for the quote
|
|
208
208
|
*/
|
|
209
209
|
async quoteExactInputV4Quoter(params) {
|
|
210
|
-
const addresses =
|
|
210
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
211
211
|
const quoterAddress = addresses.uniswapV4Quoter;
|
|
212
212
|
if (!quoterAddress) {
|
|
213
213
|
throw new Error("Uniswap V4 Quoter address not available on this chain");
|
|
214
214
|
}
|
|
215
215
|
const { result } = await this.rpc.simulateContract({
|
|
216
216
|
address: quoterAddress,
|
|
217
|
-
abi:
|
|
217
|
+
abi: chunk3MVW6UIW_js.v4QuoterAbi,
|
|
218
218
|
functionName: "quoteExactInputSingle",
|
|
219
219
|
args: [
|
|
220
220
|
{
|
|
@@ -235,14 +235,14 @@ var Quoter = class {
|
|
|
235
235
|
* @param params Parameters for the quote
|
|
236
236
|
*/
|
|
237
237
|
async quoteExactOutputV4Quoter(params) {
|
|
238
|
-
const addresses =
|
|
238
|
+
const addresses = chunkJHPDKSC4_js.getAddresses(this.chainId);
|
|
239
239
|
const quoterAddress = addresses.uniswapV4Quoter;
|
|
240
240
|
if (!quoterAddress) {
|
|
241
241
|
throw new Error("Uniswap V4 Quoter address not available on this chain");
|
|
242
242
|
}
|
|
243
243
|
const { result } = await this.rpc.simulateContract({
|
|
244
244
|
address: quoterAddress,
|
|
245
|
-
abi:
|
|
245
|
+
abi: chunk3MVW6UIW_js.v4QuoterAbi,
|
|
246
246
|
functionName: "quoteExactOutputSingle",
|
|
247
247
|
args: [
|
|
248
248
|
{
|
|
@@ -261,5 +261,5 @@ var Quoter = class {
|
|
|
261
261
|
};
|
|
262
262
|
|
|
263
263
|
exports.Quoter = Quoter;
|
|
264
|
-
//# sourceMappingURL=chunk-
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
264
|
+
//# sourceMappingURL=chunk-J2E2GILK.js.map
|
|
265
|
+
//# sourceMappingURL=chunk-J2E2GILK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/entities/quoter/Quoter.ts"],"names":["getAddresses","quoterV2Abi","decodeAbiParameters","uniswapV2Router02Abi","v4QuoterAbi"],"mappings":";;;;;;AAiBO,IAAM,SAAN,MAAa;AAAA,EAGlB,IAAY,GAAA,GAAoB;AAC9B,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAEA,WAAA,CAAY,cAAqC,OAAA,EAAiB;AAChE,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,MAAA,EAWrB;AACD,IAAA,MAAM,SAAA,GAAYA,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAE3C,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,IAAI,gBAAA,CAAiB;AAAA,QACjD,SAAS,SAAA,CAAU,QAAA;AAAA,QACnB,GAAA,EAAKC,4BAAA;AAAA,QACL,YAAA,EAAc,uBAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ;AAAA,YACE,SAAS,MAAA,CAAO,OAAA;AAAA,YAChB,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,iBAAA,EAAmB,MAAA,CAAO,iBAAA,IAAqB,MAAA,CAAO,CAAC;AAAA;AACzD;AACF,OACD,CAAA;AACD,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,OAAO,CAAC,CAAA;AAAA,QACnB,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAAA,QAC3B,uBAAA,EAAyB,OAAO,CAAC,CAAA;AAAA,QACjC,WAAA,EAAa,OAAO,CAAC;AAAA,OACvB;AAAA,IACF,SAAS,GAAA,EAAc;AACrB,MAAA,MAAM,UAAA,GACH,GAAA,EAAgD,KAAA,EAAO,IAAA,IACvD,GAAA,CAAuB,IAAA;AAC1B,MAAA,IACE,cACA,OAAO,UAAA,KAAe,YACtB,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA,EAC1B;AACA,QAAA,IAAI;AAEF,UAAA,MAAM,CAAC,MAAA,EAAQ,iBAAiB,CAAA,GAAIC,wBAAA;AAAA,YAClC,CAAC,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,YAC5D;AAAA,WACF;AACA,UAAA,OAAO;AAAA,YACL,SAAA,EAAW,MAAA;AAAA,YACX,iBAAA;AAAA,YACA,uBAAA,EAAyB,CAAA;AAAA,YACzB,WAAA,EAAa;AAAA,WACf;AAAA,QACF,SAAS,CAAA,EAAG;AAAA,QAEZ;AAAA,MACF;AACA,MAAA,MAAM,GAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAA,EAWtB;AACD,IAAA,MAAM,SAAA,GAAYF,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAE3C,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,IAAI,gBAAA,CAAiB;AAAA,QACjD,SAAS,SAAA,CAAU,QAAA;AAAA,QACnB,GAAA,EAAKC,4BAAA;AAAA,QACL,YAAA,EAAc,wBAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ;AAAA,YACE,SAAS,MAAA,CAAO,OAAA;AAAA,YAChB,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,QAAQ,MAAA,CAAO,SAAA;AAAA,YACf,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,iBAAA,EAAmB,MAAA,CAAO,iBAAA,IAAqB,MAAA,CAAO,CAAC;AAAA;AACzD;AACF,OACD,CAAA;AACD,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,QAClB,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAAA,QAC3B,uBAAA,EAAyB,OAAO,CAAC,CAAA;AAAA,QACjC,WAAA,EAAa,OAAO,CAAC;AAAA,OACvB;AAAA,IACF,SAAS,GAAA,EAAc;AACrB,MAAA,MAAM,UAAA,GACH,GAAA,EAAgD,KAAA,EAAO,IAAA,IACvD,GAAA,CAAuB,IAAA;AAC1B,MAAA,IACE,cACA,OAAO,UAAA,KAAe,YACtB,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA,EAC1B;AACA,QAAA,IAAI;AAEF,UAAA,MAAM,CAAC,MAAA,EAAQ,iBAAiB,CAAA,GAAIC,wBAAA;AAAA,YAClC,CAAC,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,YAC5D;AAAA,WACF;AACA,UAAA,OAAO;AAAA,YACL,QAAA,EAAU,MAAA;AAAA,YACV,iBAAA;AAAA,YACA,uBAAA,EAAyB,CAAA;AAAA,YACzB,WAAA,EAAa;AAAA,WACf;AAAA,QACF,SAAS,CAAA,EAAG;AAAA,QAEZ;AAAA,MACF;AACA,MAAA,MAAM,GAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,MAAA,EAGF;AACpB,IAAA,MAAM,SAAA,GAAYF,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAE3C,IAAA,IAAI,CAAC,UAAU,aAAA,EAAe;AAC5B,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,IACjE;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MACzC,SAAS,SAAA,CAAU,aAAA;AAAA,MACnB,GAAA,EAAKG,qCAAA;AAAA,MACL,YAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,IAAI;AAAA,KACpC,CAAA;AAED,IAAA,OAAO,CAAC,GAAG,MAAM,CAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAA,EAGH;AACpB,IAAA,MAAM,SAAA,GAAYH,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAE3C,IAAA,IAAI,CAAC,UAAU,aAAA,EAAe;AAC5B,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,IACjE;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MACzC,SAAS,SAAA,CAAU,aAAA;AAAA,MACnB,GAAA,EAAKG,qCAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,SAAA,EAAW,OAAO,IAAI;AAAA,KACrC,CAAA;AAED,IAAA,OAAO,CAAC,GAAG,MAAM,CAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,MAAA,EAcrB;AACD,IAAA,MAAM,SAAA,GAAYH,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAE3C,IAAA,MAAM,gBAAgB,SAAA,CAAU,eAAA;AAEhC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,IAAI,gBAAA,CAAiB;AAAA,MACjD,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAKI,4BAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ;AAAA,UACE,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,QAAA,EAAW,OAAO,QAAA,IAAY;AAAA;AAChC;AACF,KACD,CAAA;AAED,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,OAAO,CAAC,CAAA;AAAA,MACnB,WAAA,EAAa,OAAO,CAAC;AAAA,KACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAA,EActB;AACD,IAAA,MAAM,SAAA,GAAYJ,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAG3C,IAAA,MAAM,gBAAgB,SAAA,CAAU,WAAA;AAEhC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,IAAI,gBAAA,CAAiB;AAAA,MACjD,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAKI,4BAAA;AAAA,MACL,YAAA,EAAc,wBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ;AAAA,UACE,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,QAAA,EAAW,OAAO,QAAA,IAAY;AAAA;AAChC;AACF,KACD,CAAA;AAED,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,MAClB,WAAA,EAAa,OAAO,CAAC;AAAA,KACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,MAAA,EAc3B;AACD,IAAA,MAAM,SAAA,GAAYJ,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAC3C,IAAA,MAAM,gBAAgB,SAAA,CAAU,eAAA;AAEhC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,IACzE;AAEA,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,IAAI,gBAAA,CAAiB;AAAA,MACjD,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAKI,4BAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ;AAAA,UACE,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,QAAA,EAAW,OAAO,QAAA,IAAY;AAAA;AAChC;AACF,KACD,CAAA;AAED,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,OAAO,CAAC,CAAA;AAAA,MACnB,WAAA,EAAa,OAAO,CAAC;AAAA,KACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,yBAAyB,MAAA,EAc5B;AACD,IAAA,MAAM,SAAA,GAAYJ,6BAAA,CAAa,IAAA,CAAK,OAAO,CAAA;AAC3C,IAAA,MAAM,gBAAgB,SAAA,CAAU,eAAA;AAEhC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,IACzE;AAEA,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,IAAI,gBAAA,CAAiB;AAAA,MACjD,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAKI,4BAAA;AAAA,MACL,YAAA,EAAc,wBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ;AAAA,UACE,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,QAAA,EAAW,OAAO,QAAA,IAAY;AAAA;AAChC;AACF,KACD,CAAA;AAED,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,MAClB,WAAA,EAAa,OAAO,CAAC;AAAA,KACvB;AAAA,EACF;AACF","file":"chunk-4BPFHO6W.js","sourcesContent":["import {\n type Address,\n decodeAbiParameters,\n type Hex,\n type PublicClient,\n} from 'viem';\nimport { quoterV2Abi, uniswapV2Router02Abi, v4QuoterAbi } from '../../abis';\nimport { getAddresses } from '../../addresses';\nimport type { SupportedPublicClient } from '../../types';\n\n/**\n * Unified Quoter for getting price quotes across Uniswap V2, V3, and V4\n *\n * This class provides a unified interface for price discovery across all\n * supported Uniswap versions, abstracting away the differences between\n * V2 router, V3 quoter, and V4 quoter contracts.\n */\nexport class Quoter {\n private publicClient: SupportedPublicClient;\n private chainId: number;\n private get rpc(): PublicClient {\n return this.publicClient as PublicClient;\n }\n\n constructor(publicClient: SupportedPublicClient, chainId: number) {\n this.publicClient = publicClient;\n this.chainId = chainId;\n }\n\n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V3\n * @param params Parameters for the quote\n * @returns Quote result including output amount and price impact\n */\n async quoteExactInputV3(params: {\n tokenIn: Address;\n tokenOut: Address;\n amountIn: bigint;\n fee: number;\n sqrtPriceLimitX96?: bigint;\n }): Promise<{\n amountOut: bigint;\n sqrtPriceX96After: bigint;\n initializedTicksCrossed: number;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n try {\n const { result } = await this.rpc.simulateContract({\n address: addresses.v3Quoter,\n abi: quoterV2Abi,\n functionName: 'quoteExactInputSingle',\n args: [\n {\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n fee: params.fee,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0),\n },\n ],\n });\n return {\n amountOut: result[0],\n sqrtPriceX96After: result[1],\n initializedTicksCrossed: result[2],\n gasEstimate: result[3],\n };\n } catch (err: unknown) {\n const revertData: Hex | undefined =\n (err as { cause?: { data?: Hex }; data?: Hex })?.cause?.data ||\n (err as { data?: Hex }).data;\n if (\n revertData &&\n typeof revertData === 'string' &&\n revertData.startsWith('0x')\n ) {\n try {\n // Uniswap V3 QuoterV2 encodes (uint256 amount, uint160 sqrtPriceX96After, int24 tickAfter)\n const [amount, sqrtPriceX96After] = decodeAbiParameters(\n [{ type: 'uint256' }, { type: 'uint160' }, { type: 'int24' }],\n revertData as Hex,\n ) as unknown as [bigint, bigint, number];\n return {\n amountOut: amount,\n sqrtPriceX96After,\n initializedTicksCrossed: 0,\n gasEstimate: 0n,\n };\n } catch (_) {\n // fall through\n }\n }\n throw err;\n }\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V3\n * @param params Parameters for the quote\n * @returns Quote result including required input amount\n */\n async quoteExactOutputV3(params: {\n tokenIn: Address;\n tokenOut: Address;\n amountOut: bigint;\n fee: number;\n sqrtPriceLimitX96?: bigint;\n }): Promise<{\n amountIn: bigint;\n sqrtPriceX96After: bigint;\n initializedTicksCrossed: number;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n try {\n const { result } = await this.rpc.simulateContract({\n address: addresses.v3Quoter,\n abi: quoterV2Abi,\n functionName: 'quoteExactOutputSingle',\n args: [\n {\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amount: params.amountOut,\n fee: params.fee,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0),\n },\n ],\n });\n return {\n amountIn: result[0],\n sqrtPriceX96After: result[1],\n initializedTicksCrossed: result[2],\n gasEstimate: result[3],\n };\n } catch (err: unknown) {\n const revertData: Hex | undefined =\n (err as { cause?: { data?: Hex }; data?: Hex })?.cause?.data ||\n (err as { data?: Hex }).data;\n if (\n revertData &&\n typeof revertData === 'string' &&\n revertData.startsWith('0x')\n ) {\n try {\n // Uniswap V3 QuoterV2 encodes (uint256 amount, uint160 sqrtPriceX96After, int24 tickAfter)\n const [amount, sqrtPriceX96After] = decodeAbiParameters(\n [{ type: 'uint256' }, { type: 'uint160' }, { type: 'int24' }],\n revertData as Hex,\n ) as unknown as [bigint, bigint, number];\n return {\n amountIn: amount,\n sqrtPriceX96After,\n initializedTicksCrossed: 0,\n gasEstimate: 0n,\n };\n } catch (_) {\n // fall through\n }\n }\n throw err;\n }\n }\n\n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V2\n * @param params Parameters for the quote\n * @returns Array of amounts for each step in the path\n */\n async quoteExactInputV2(params: {\n amountIn: bigint;\n path: Address[];\n }): Promise<bigint[]> {\n const addresses = getAddresses(this.chainId);\n\n if (!addresses.univ2Router02) {\n throw new Error('Uniswap V2 Router not available on this chain');\n }\n\n const result = await this.rpc.readContract({\n address: addresses.univ2Router02,\n abi: uniswapV2Router02Abi,\n functionName: 'getAmountsOut',\n args: [params.amountIn, params.path],\n });\n\n return [...result]; // Convert readonly array to mutable array\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V2\n * @param params Parameters for the quote\n * @returns Array of amounts for each step in the path\n */\n async quoteExactOutputV2(params: {\n amountOut: bigint;\n path: Address[];\n }): Promise<bigint[]> {\n const addresses = getAddresses(this.chainId);\n\n if (!addresses.univ2Router02) {\n throw new Error('Uniswap V2 Router not available on this chain');\n }\n\n const result = await this.rpc.readContract({\n address: addresses.univ2Router02,\n abi: uniswapV2Router02Abi,\n functionName: 'getAmountsIn',\n args: [params.amountOut, params.path],\n });\n\n return [...result]; // Convert readonly array to mutable array\n }\n\n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V4\n * @param params Parameters for the quote\n * @returns Quote result for V4 pools\n */\n async quoteExactInputV4(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountOut: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n const quoterAddress = addresses.uniswapV4Quoter;\n\n if (!quoterAddress) {\n throw new Error('No V4 quoter available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactInputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountOut: result[0],\n gasEstimate: result[1],\n };\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V4\n * @param params Parameters for the quote\n * @returns Quote result for V4 pools\n */\n async quoteExactOutputV4(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountIn: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n // Use v4Quoter if available, otherwise use dopplerLens (they're the same contract)\n const quoterAddress = addresses.dopplerLens;\n\n if (!quoterAddress) {\n throw new Error('No V4 quoter available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactOutputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountIn: result[0],\n gasEstimate: result[1],\n };\n }\n\n /**\n * Quote a single exact-input trade using the Uniswap V4 Quoter (not Lens)\n * @param params Parameters for the quote\n */\n async quoteExactInputV4Quoter(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountOut: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n const quoterAddress = addresses.uniswapV4Quoter;\n\n if (!quoterAddress) {\n throw new Error('Uniswap V4 Quoter address not available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactInputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountOut: result[0],\n gasEstimate: result[1],\n };\n }\n\n /**\n * Quote a single exact-output trade using the Uniswap V4 Quoter (not Lens)\n * @param params Parameters for the quote\n */\n async quoteExactOutputV4Quoter(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountIn: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n const quoterAddress = addresses.uniswapV4Quoter;\n\n if (!quoterAddress) {\n throw new Error('Uniswap V4 Quoter address not available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactOutputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountIn: result[0],\n gasEstimate: result[1],\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/entities/quoter/Quoter.ts"],"names":["getAddresses","quoterV2Abi","decodeAbiParameters","uniswapV2Router02Abi","v4QuoterAbi"],"mappings":"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","file":"chunk-J2E2GILK.js","sourcesContent":["import {\n type Address,\n decodeAbiParameters,\n type Hex,\n type PublicClient,\n} from 'viem';\nimport { quoterV2Abi, uniswapV2Router02Abi, v4QuoterAbi } from '../../abis';\nimport { getAddresses } from '../../addresses';\nimport type { SupportedPublicClient } from '../../types';\n\n/**\n * Unified Quoter for getting price quotes across Uniswap V2, V3, and V4\n *\n * This class provides a unified interface for price discovery across all\n * supported Uniswap versions, abstracting away the differences between\n * V2 router, V3 quoter, and V4 quoter contracts.\n */\nexport class Quoter {\n private publicClient: SupportedPublicClient;\n private chainId: number;\n private get rpc(): PublicClient {\n return this.publicClient as PublicClient;\n }\n\n constructor(publicClient: SupportedPublicClient, chainId: number) {\n this.publicClient = publicClient;\n this.chainId = chainId;\n }\n\n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V3\n * @param params Parameters for the quote\n * @returns Quote result including output amount and price impact\n */\n async quoteExactInputV3(params: {\n tokenIn: Address;\n tokenOut: Address;\n amountIn: bigint;\n fee: number;\n sqrtPriceLimitX96?: bigint;\n }): Promise<{\n amountOut: bigint;\n sqrtPriceX96After: bigint;\n initializedTicksCrossed: number;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n try {\n const { result } = await this.rpc.simulateContract({\n address: addresses.v3Quoter,\n abi: quoterV2Abi,\n functionName: 'quoteExactInputSingle',\n args: [\n {\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n fee: params.fee,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0),\n },\n ],\n });\n return {\n amountOut: result[0],\n sqrtPriceX96After: result[1],\n initializedTicksCrossed: result[2],\n gasEstimate: result[3],\n };\n } catch (err: unknown) {\n const revertData: Hex | undefined =\n (err as { cause?: { data?: Hex }; data?: Hex })?.cause?.data ||\n (err as { data?: Hex }).data;\n if (\n revertData &&\n typeof revertData === 'string' &&\n revertData.startsWith('0x')\n ) {\n try {\n // Uniswap V3 QuoterV2 encodes (uint256 amount, uint160 sqrtPriceX96After, int24 tickAfter)\n const [amount, sqrtPriceX96After] = decodeAbiParameters(\n [{ type: 'uint256' }, { type: 'uint160' }, { type: 'int24' }],\n revertData as Hex,\n ) as unknown as [bigint, bigint, number];\n return {\n amountOut: amount,\n sqrtPriceX96After,\n initializedTicksCrossed: 0,\n gasEstimate: 0n,\n };\n } catch (_) {\n // fall through\n }\n }\n throw err;\n }\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V3\n * @param params Parameters for the quote\n * @returns Quote result including required input amount\n */\n async quoteExactOutputV3(params: {\n tokenIn: Address;\n tokenOut: Address;\n amountOut: bigint;\n fee: number;\n sqrtPriceLimitX96?: bigint;\n }): Promise<{\n amountIn: bigint;\n sqrtPriceX96After: bigint;\n initializedTicksCrossed: number;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n try {\n const { result } = await this.rpc.simulateContract({\n address: addresses.v3Quoter,\n abi: quoterV2Abi,\n functionName: 'quoteExactOutputSingle',\n args: [\n {\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amount: params.amountOut,\n fee: params.fee,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0),\n },\n ],\n });\n return {\n amountIn: result[0],\n sqrtPriceX96After: result[1],\n initializedTicksCrossed: result[2],\n gasEstimate: result[3],\n };\n } catch (err: unknown) {\n const revertData: Hex | undefined =\n (err as { cause?: { data?: Hex }; data?: Hex })?.cause?.data ||\n (err as { data?: Hex }).data;\n if (\n revertData &&\n typeof revertData === 'string' &&\n revertData.startsWith('0x')\n ) {\n try {\n // Uniswap V3 QuoterV2 encodes (uint256 amount, uint160 sqrtPriceX96After, int24 tickAfter)\n const [amount, sqrtPriceX96After] = decodeAbiParameters(\n [{ type: 'uint256' }, { type: 'uint160' }, { type: 'int24' }],\n revertData as Hex,\n ) as unknown as [bigint, bigint, number];\n return {\n amountIn: amount,\n sqrtPriceX96After,\n initializedTicksCrossed: 0,\n gasEstimate: 0n,\n };\n } catch (_) {\n // fall through\n }\n }\n throw err;\n }\n }\n\n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V2\n * @param params Parameters for the quote\n * @returns Array of amounts for each step in the path\n */\n async quoteExactInputV2(params: {\n amountIn: bigint;\n path: Address[];\n }): Promise<bigint[]> {\n const addresses = getAddresses(this.chainId);\n\n if (!addresses.univ2Router02) {\n throw new Error('Uniswap V2 Router not available on this chain');\n }\n\n const result = await this.rpc.readContract({\n address: addresses.univ2Router02,\n abi: uniswapV2Router02Abi,\n functionName: 'getAmountsOut',\n args: [params.amountIn, params.path],\n });\n\n return [...result]; // Convert readonly array to mutable array\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V2\n * @param params Parameters for the quote\n * @returns Array of amounts for each step in the path\n */\n async quoteExactOutputV2(params: {\n amountOut: bigint;\n path: Address[];\n }): Promise<bigint[]> {\n const addresses = getAddresses(this.chainId);\n\n if (!addresses.univ2Router02) {\n throw new Error('Uniswap V2 Router not available on this chain');\n }\n\n const result = await this.rpc.readContract({\n address: addresses.univ2Router02,\n abi: uniswapV2Router02Abi,\n functionName: 'getAmountsIn',\n args: [params.amountOut, params.path],\n });\n\n return [...result]; // Convert readonly array to mutable array\n }\n\n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V4\n * @param params Parameters for the quote\n * @returns Quote result for V4 pools\n */\n async quoteExactInputV4(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountOut: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n const quoterAddress = addresses.uniswapV4Quoter;\n\n if (!quoterAddress) {\n throw new Error('No V4 quoter available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactInputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountOut: result[0],\n gasEstimate: result[1],\n };\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V4\n * @param params Parameters for the quote\n * @returns Quote result for V4 pools\n */\n async quoteExactOutputV4(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountIn: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n\n // Use v4Quoter if available, otherwise use dopplerLens (they're the same contract)\n const quoterAddress = addresses.dopplerLens;\n\n if (!quoterAddress) {\n throw new Error('No V4 quoter available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactOutputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountIn: result[0],\n gasEstimate: result[1],\n };\n }\n\n /**\n * Quote a single exact-input trade using the Uniswap V4 Quoter (not Lens)\n * @param params Parameters for the quote\n */\n async quoteExactInputV4Quoter(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountOut: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n const quoterAddress = addresses.uniswapV4Quoter;\n\n if (!quoterAddress) {\n throw new Error('Uniswap V4 Quoter address not available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactInputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountOut: result[0],\n gasEstimate: result[1],\n };\n }\n\n /**\n * Quote a single exact-output trade using the Uniswap V4 Quoter (not Lens)\n * @param params Parameters for the quote\n */\n async quoteExactOutputV4Quoter(params: {\n poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n };\n zeroForOne: boolean;\n exactAmount: bigint;\n hookData?: string;\n }): Promise<{\n amountIn: bigint;\n gasEstimate: bigint;\n }> {\n const addresses = getAddresses(this.chainId);\n const quoterAddress = addresses.uniswapV4Quoter;\n\n if (!quoterAddress) {\n throw new Error('Uniswap V4 Quoter address not available on this chain');\n }\n\n const { result } = await this.rpc.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactOutputSingle',\n args: [\n {\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n },\n ],\n });\n\n return {\n amountIn: result[0],\n gasEstimate: result[1],\n };\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkRLUMYHPI_js = require('./chunk-RLUMYHPI.js');
|
|
4
4
|
|
|
5
5
|
// src/addresses.ts
|
|
6
6
|
var CHAIN_IDS = {
|
|
@@ -36,56 +36,62 @@ var ADDRESSES = {
|
|
|
36
36
|
uniswapV4Quoter: "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203"
|
|
37
37
|
},
|
|
38
38
|
[CHAIN_IDS.BASE]: {
|
|
39
|
-
airlock:
|
|
40
|
-
tokenFactory:
|
|
41
|
-
v3Initializer:
|
|
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:
|
|
44
|
-
v4Initializer:
|
|
45
|
-
v4MulticurveInitializer:
|
|
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:
|
|
47
|
+
v4ScheduledMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4ScheduledMulticurveInitializer,
|
|
48
48
|
// From Doppler scheduled multicurve deployments (Base mainnet)
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
rehypeDopplerHook: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].RehypeDopplerHook,
|
|
55
|
+
dopplerHookInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerHookInitializer,
|
|
56
|
+
v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2Migrator,
|
|
57
|
+
v4Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Migrator,
|
|
58
|
+
noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
|
|
55
59
|
governanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
|
|
56
60
|
noOpGovernanceFactory: "0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e",
|
|
57
|
-
launchpadGovernanceFactory:
|
|
58
|
-
streamableFeesLocker:
|
|
61
|
+
launchpadGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LaunchpadGovernanceFactory,
|
|
62
|
+
streamableFeesLocker: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].StreamableFeesLocker,
|
|
59
63
|
universalRouter: "0x6ff5693b99212da76ad316178a184ab56d299b43",
|
|
60
64
|
univ2Router02: "0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24",
|
|
61
65
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
62
|
-
bundler:
|
|
66
|
+
bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Bundler,
|
|
63
67
|
weth: "0x4200000000000000000000000000000000000006",
|
|
64
68
|
uniswapV4Quoter: "0x0d5e0f971ed27fbff6c2837bf31316121532048d"
|
|
65
69
|
},
|
|
66
70
|
[CHAIN_IDS.BASE_SEPOLIA]: {
|
|
67
|
-
airlock:
|
|
68
|
-
tokenFactory:
|
|
71
|
+
airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].Airlock,
|
|
72
|
+
tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].TokenFactory80,
|
|
69
73
|
doppler404Factory: "0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7",
|
|
70
|
-
v3Initializer:
|
|
74
|
+
v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV3Initializer,
|
|
71
75
|
v3Quoter: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
|
|
72
|
-
lockableV3Initializer:
|
|
73
|
-
v4Initializer:
|
|
74
|
-
v4MulticurveInitializer:
|
|
75
|
-
v4ScheduledMulticurveInitializer:
|
|
76
|
+
lockableV3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LockableUniswapV3Initializer,
|
|
77
|
+
v4Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Initializer,
|
|
78
|
+
v4MulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MulticurveInitializer,
|
|
79
|
+
v4ScheduledMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4ScheduledMulticurveInitializer,
|
|
76
80
|
// From Doppler scheduled multicurve deployments (Base Sepolia)
|
|
81
|
+
v4DecayMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DecayMulticurveInitializer,
|
|
82
|
+
// From Doppler decay multicurve deployments (Base Sepolia)
|
|
77
83
|
dopplerHookInitializer: "0x98CD6478DeBe443069dB863Abb9626d94de9A544",
|
|
78
84
|
rehypeDopplerHook: "0x636a756cee08775cc18780f52dd90b634f18ad37",
|
|
79
|
-
dopplerLens:
|
|
80
|
-
dopplerDeployer:
|
|
85
|
+
dopplerLens: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerLensQuoter,
|
|
86
|
+
dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerDeployer,
|
|
81
87
|
poolManager: "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408",
|
|
82
|
-
v2Migrator:
|
|
83
|
-
v4Migrator:
|
|
84
|
-
v4MigratorHook:
|
|
85
|
-
noOpMigrator:
|
|
86
|
-
governanceFactory:
|
|
88
|
+
v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV2Migrator,
|
|
89
|
+
v4Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Migrator,
|
|
90
|
+
v4MigratorHook: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MigratorHook,
|
|
91
|
+
noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
|
|
92
|
+
governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
|
|
87
93
|
noOpGovernanceFactory: "0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228",
|
|
88
|
-
streamableFeesLocker:
|
|
94
|
+
streamableFeesLocker: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].StreamableFeesLocker,
|
|
89
95
|
universalRouter: "0x492E6456D9528771018DeB9E87ef7750EF184104",
|
|
90
96
|
univ2Router02: "0x1689E7B1F10000AE47eBfE339a4f69dECd19F602",
|
|
91
97
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
@@ -95,16 +101,16 @@ var ADDRESSES = {
|
|
|
95
101
|
},
|
|
96
102
|
[CHAIN_IDS.INK]: {
|
|
97
103
|
airlock: "0x014E1c0bd34f3B10546E554CB33B3293fECDD056",
|
|
98
|
-
tokenFactory:
|
|
99
|
-
v3Initializer:
|
|
104
|
+
tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].TokenFactory,
|
|
105
|
+
v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV3Initializer,
|
|
100
106
|
v3Quoter: "0x96b572D2d880cf2Fa2563651BD23ADE6f5516652",
|
|
101
107
|
v4Initializer: "0xC99b485499f78995C6F1640dbB1413c57f8BA684",
|
|
102
108
|
dopplerLens: "0x3972c00f7ed4885e145823eb7c655375d275a1c5",
|
|
103
|
-
dopplerDeployer:
|
|
109
|
+
dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].DopplerDeployer,
|
|
104
110
|
poolManager: "0x360e68faccca8ca495c1b759fd9eee466db9fb32",
|
|
105
|
-
v2Migrator:
|
|
111
|
+
v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV2Migrator,
|
|
106
112
|
v4Migrator: ZERO_ADDRESS,
|
|
107
|
-
governanceFactory:
|
|
113
|
+
governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].GovernanceFactory,
|
|
108
114
|
noOpGovernanceFactory: ZERO_ADDRESS,
|
|
109
115
|
// Not yet deployed
|
|
110
116
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
@@ -112,36 +118,36 @@ var ADDRESSES = {
|
|
|
112
118
|
universalRouter: "0x112908dac86e20e7241b0927479ea3bf935d1fa0",
|
|
113
119
|
univ2Router02: "0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4",
|
|
114
120
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
115
|
-
bundler:
|
|
121
|
+
bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler,
|
|
116
122
|
weth: "0x4200000000000000000000000000000000000006",
|
|
117
123
|
uniswapV4Quoter: "0x3972c00f7ed4885e145823eb7c655375d275a1c5"
|
|
118
124
|
},
|
|
119
125
|
[CHAIN_IDS.UNICHAIN]: {
|
|
120
|
-
airlock:
|
|
121
|
-
tokenFactory:
|
|
122
|
-
v3Initializer:
|
|
126
|
+
airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Airlock,
|
|
127
|
+
tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].TokenFactory,
|
|
128
|
+
v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV3Initializer,
|
|
123
129
|
v3Quoter: "0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658",
|
|
124
130
|
v4Initializer: "0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB",
|
|
125
131
|
dopplerLens: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0",
|
|
126
132
|
dopplerDeployer: "0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f",
|
|
127
133
|
poolManager: "0x1f98400000000000000000000000000000000004",
|
|
128
|
-
v2Migrator:
|
|
129
|
-
v4Migrator:
|
|
130
|
-
noOpMigrator:
|
|
131
|
-
governanceFactory:
|
|
132
|
-
noOpGovernanceFactory:
|
|
134
|
+
v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV2Migrator,
|
|
135
|
+
v4Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV4Migrator,
|
|
136
|
+
noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpMigrator,
|
|
137
|
+
governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].GovernanceFactory,
|
|
138
|
+
noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpGovernanceFactory,
|
|
133
139
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
134
140
|
// Not yet deployed
|
|
135
141
|
universalRouter: "0xef740bf23acae26f6492b10de645d6b98dc8eaf3",
|
|
136
142
|
univ2Router02: "0x284f11109359a7e1306c3e447ef14d38400063ff",
|
|
137
143
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
138
|
-
bundler:
|
|
144
|
+
bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Bundler,
|
|
139
145
|
weth: "0x4200000000000000000000000000000000000006",
|
|
140
146
|
uniswapV4Quoter: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0"
|
|
141
147
|
},
|
|
142
148
|
[CHAIN_IDS.UNICHAIN_SEPOLIA]: {
|
|
143
149
|
airlock: "0x651ab94B4777e2e4cdf96082d90C65bd947b73A4",
|
|
144
|
-
tokenFactory:
|
|
150
|
+
tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].TokenFactory,
|
|
145
151
|
v3Initializer: "0x7Fb9a622186B4660A5988C223ebb9d3690dD5007",
|
|
146
152
|
v3Quoter: "0x6Dd37329A1A225a6Fca658265D460423DCafBF89",
|
|
147
153
|
v4Initializer: "0x992375478626E67F4e639d3298EbCAaE51C3dF0b",
|
|
@@ -150,9 +156,9 @@ var ADDRESSES = {
|
|
|
150
156
|
poolManager: "0x00B036B58a818B1BC34d502D3fE730Db729e62AC",
|
|
151
157
|
v2Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
|
|
152
158
|
v4Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
|
|
153
|
-
noOpMigrator:
|
|
159
|
+
noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpMigrator,
|
|
154
160
|
governanceFactory: "0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC",
|
|
155
|
-
noOpGovernanceFactory:
|
|
161
|
+
noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpGovernanceFactory,
|
|
156
162
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
157
163
|
// Not yet deployed
|
|
158
164
|
universalRouter: "0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D",
|
|
@@ -163,53 +169,53 @@ var ADDRESSES = {
|
|
|
163
169
|
uniswapV4Quoter: "0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472"
|
|
164
170
|
},
|
|
165
171
|
[CHAIN_IDS.MONAD_TESTNET]: {
|
|
166
|
-
airlock:
|
|
167
|
-
tokenFactory:
|
|
168
|
-
v3Initializer:
|
|
172
|
+
airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Airlock,
|
|
173
|
+
tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].TokenFactory80,
|
|
174
|
+
v3Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV3Initializer,
|
|
169
175
|
v3Quoter: ZERO_ADDRESS,
|
|
170
|
-
v4Initializer:
|
|
171
|
-
dopplerLens:
|
|
172
|
-
dopplerDeployer:
|
|
176
|
+
v4Initializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV4Initializer,
|
|
177
|
+
dopplerLens: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerLensQuoter,
|
|
178
|
+
dopplerDeployer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerDeployer,
|
|
173
179
|
poolManager: "0xe93882f395B0b24180855c68Ab19B2d78573ceBc",
|
|
174
|
-
v2Migrator:
|
|
180
|
+
v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV2Migrator,
|
|
175
181
|
v4Migrator: "0xBEd386a1Fc62B6598c9b8d2BF634471B6Fe75EB7",
|
|
176
|
-
noOpMigrator:
|
|
177
|
-
governanceFactory:
|
|
178
|
-
noOpGovernanceFactory:
|
|
182
|
+
noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpMigrator,
|
|
183
|
+
governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].GovernanceFactory,
|
|
184
|
+
noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpGovernanceFactory,
|
|
179
185
|
streamableFeesLocker: "0x91231cDdD8d6C86Df602070a3081478e074b97b7",
|
|
180
186
|
// Not yet deployed
|
|
181
187
|
universalRouter: ZERO_ADDRESS,
|
|
182
188
|
univ2Router02: ZERO_ADDRESS,
|
|
183
189
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
184
|
-
bundler:
|
|
190
|
+
bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Bundler,
|
|
185
191
|
weth: ZERO_ADDRESS,
|
|
186
192
|
// TODO: Get Monad Testnet weth
|
|
187
193
|
uniswapV4Quoter: ZERO_ADDRESS
|
|
188
194
|
},
|
|
189
195
|
[CHAIN_IDS.MONAD_MAINNET]: {
|
|
190
|
-
airlock:
|
|
191
|
-
tokenFactory:
|
|
196
|
+
airlock: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Airlock,
|
|
197
|
+
tokenFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].TokenFactory80,
|
|
192
198
|
v3Initializer: ZERO_ADDRESS,
|
|
193
199
|
v3Quoter: "0x66266174564170519409d8853898f065c719536b",
|
|
194
200
|
v4Initializer: ZERO_ADDRESS,
|
|
195
201
|
dopplerLens: ZERO_ADDRESS,
|
|
196
202
|
dopplerDeployer: ZERO_ADDRESS,
|
|
197
203
|
poolManager: "0x188d586ddcf52439676ca21a244753fa19f9ea8e",
|
|
198
|
-
v2Migrator:
|
|
204
|
+
v2Migrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2Migrator,
|
|
199
205
|
v4Migrator: ZERO_ADDRESS,
|
|
200
|
-
noOpMigrator:
|
|
201
|
-
governanceFactory:
|
|
202
|
-
noOpGovernanceFactory:
|
|
203
|
-
launchpadGovernanceFactory:
|
|
204
|
-
v4ScheduledMulticurveInitializer:
|
|
206
|
+
noOpMigrator: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpMigrator,
|
|
207
|
+
governanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
|
|
208
|
+
noOpGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
|
|
209
|
+
launchpadGovernanceFactory: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LaunchpadGovernanceFactory,
|
|
210
|
+
v4ScheduledMulticurveInitializer: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4ScheduledMulticurveInitializer,
|
|
205
211
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
206
212
|
// Not yet deployed
|
|
207
213
|
universalRouter: "0x0d97dc33264bfc1c226207428a79b26757fb9dc3",
|
|
208
214
|
univ2Router02: ZERO_ADDRESS,
|
|
209
215
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
210
|
-
bundler:
|
|
216
|
+
bundler: chunkRLUMYHPI_js.GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Bundler,
|
|
211
217
|
weth: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
|
|
212
|
-
// INFO: this is wmon, but we treat it as weth because mon is native
|
|
218
|
+
// INFO: this is wmon, but we treat it as weth because mon is native
|
|
213
219
|
uniswapV4Quoter: "0xa222dd357a9076d1091ed6aa2e16c9742dd26891"
|
|
214
220
|
}
|
|
215
221
|
};
|
|
@@ -232,5 +238,5 @@ exports.CHAIN_IDS = CHAIN_IDS;
|
|
|
232
238
|
exports.SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS;
|
|
233
239
|
exports.getAddresses = getAddresses;
|
|
234
240
|
exports.isSupportedChainId = isSupportedChainId;
|
|
235
|
-
//# sourceMappingURL=chunk-
|
|
236
|
-
//# sourceMappingURL=chunk-
|
|
241
|
+
//# sourceMappingURL=chunk-JHPDKSC4.js.map
|
|
242
|
+
//# sourceMappingURL=chunk-JHPDKSC4.js.map
|