@whetstone-research/doppler-sdk 0.0.21 → 0.0.22

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 (94) hide show
  1. package/README.md +20 -0
  2. package/dist/DopplerSDK.js +13 -13
  3. package/dist/DopplerSDK.mjs +12 -12
  4. package/dist/addresses.d.mts +1 -0
  5. package/dist/addresses.d.ts +1 -0
  6. package/dist/addresses.js +6 -6
  7. package/dist/addresses.mjs +1 -1
  8. package/dist/builders/DynamicAuctionBuilder.js +5 -5
  9. package/dist/builders/DynamicAuctionBuilder.mjs +4 -4
  10. package/dist/builders/MulticurveBuilder.js +5 -5
  11. package/dist/builders/MulticurveBuilder.mjs +4 -4
  12. package/dist/builders/StaticAuctionBuilder.js +5 -5
  13. package/dist/builders/StaticAuctionBuilder.mjs +4 -4
  14. package/dist/builders/index.js +9 -9
  15. package/dist/builders/index.mjs +6 -6
  16. package/dist/builders/shared.js +2 -2
  17. package/dist/builders/shared.mjs +2 -2
  18. package/dist/{chunk-Y5RAENN5.js → chunk-3L4DLMOK.js} +5 -5
  19. package/dist/{chunk-Y5RAENN5.js.map → chunk-3L4DLMOK.js.map} +1 -1
  20. package/dist/{chunk-GLMPU7VL.js → chunk-3XYDN2XB.js} +5 -5
  21. package/dist/{chunk-GLMPU7VL.js.map → chunk-3XYDN2XB.js.map} +1 -1
  22. package/dist/{chunk-JHPDKSC4.js → chunk-5VV7STYK.js} +40 -11
  23. package/dist/chunk-5VV7STYK.js.map +1 -0
  24. package/dist/{chunk-COUZYFEE.js → chunk-5WYXNWNH.js} +5 -5
  25. package/dist/{chunk-COUZYFEE.js.map → chunk-5WYXNWNH.js.map} +1 -1
  26. package/dist/{chunk-NWZGO2CH.mjs → chunk-ADAAU4F5.mjs} +40 -11
  27. package/dist/chunk-ADAAU4F5.mjs.map +1 -0
  28. package/dist/{chunk-RKPAL3SU.mjs → chunk-AZH2P4JK.mjs} +3 -3
  29. package/dist/{chunk-RKPAL3SU.mjs.map → chunk-AZH2P4JK.mjs.map} +1 -1
  30. package/dist/{chunk-AS5UUJRI.js → chunk-COOVGAOE.js} +13 -11
  31. package/dist/chunk-COOVGAOE.js.map +1 -0
  32. package/dist/{chunk-36Y3N257.mjs → chunk-CS6FVODR.mjs} +3 -3
  33. package/dist/{chunk-36Y3N257.mjs.map → chunk-CS6FVODR.mjs.map} +1 -1
  34. package/dist/{chunk-TYJZL2XZ.js → chunk-CUB4F546.js} +5 -5
  35. package/dist/{chunk-TYJZL2XZ.js.map → chunk-CUB4F546.js.map} +1 -1
  36. package/dist/{chunk-RJE6LWWF.mjs → chunk-D7PCIMWU.mjs} +3 -3
  37. package/dist/{chunk-RJE6LWWF.mjs.map → chunk-D7PCIMWU.mjs.map} +1 -1
  38. package/dist/{chunk-CXE33IZN.mjs → chunk-FVTTG72Z.mjs} +3 -3
  39. package/dist/{chunk-CXE33IZN.mjs.map → chunk-FVTTG72Z.mjs.map} +1 -1
  40. package/dist/{chunk-SQRQYDB3.mjs → chunk-HJ4AS5DZ.mjs} +11 -11
  41. package/dist/{chunk-SQRQYDB3.mjs.map → chunk-HJ4AS5DZ.mjs.map} +1 -1
  42. package/dist/{chunk-4CJS5XLY.js → chunk-INLXNN7P.js} +4 -4
  43. package/dist/{chunk-4CJS5XLY.js.map → chunk-INLXNN7P.js.map} +1 -1
  44. package/dist/{chunk-U7CHPFU6.mjs → chunk-KITPRKQ4.mjs} +3 -3
  45. package/dist/{chunk-U7CHPFU6.mjs.map → chunk-KITPRKQ4.mjs.map} +1 -1
  46. package/dist/{chunk-BFJGY436.mjs → chunk-M2EMKIP5.mjs} +5 -3
  47. package/dist/chunk-M2EMKIP5.mjs.map +1 -0
  48. package/dist/{chunk-5JQDXMDN.js → chunk-MT34O3YL.js} +24 -24
  49. package/dist/{chunk-5JQDXMDN.js.map → chunk-MT34O3YL.js.map} +1 -1
  50. package/dist/{chunk-XEWKLVOD.mjs → chunk-O3RH43H3.mjs} +3 -3
  51. package/dist/{chunk-XEWKLVOD.mjs.map → chunk-O3RH43H3.mjs.map} +1 -1
  52. package/dist/{chunk-GFOBDFVW.js → chunk-QQEOKYEX.js} +17 -17
  53. package/dist/{chunk-GFOBDFVW.js.map → chunk-QQEOKYEX.js.map} +1 -1
  54. package/dist/{chunk-HX3A6ALC.mjs → chunk-RWVNXU7Z.mjs} +3 -3
  55. package/dist/{chunk-HX3A6ALC.mjs.map → chunk-RWVNXU7Z.mjs.map} +1 -1
  56. package/dist/{chunk-K27G7LLT.js → chunk-S4IZ5ATO.js} +5 -5
  57. package/dist/{chunk-K27G7LLT.js.map → chunk-S4IZ5ATO.js.map} +1 -1
  58. package/dist/{chunk-HHHCRTC7.js → chunk-WKKOBMXR.js} +5 -5
  59. package/dist/{chunk-HHHCRTC7.js.map → chunk-WKKOBMXR.js.map} +1 -1
  60. package/dist/{chunk-V7YRKFYK.mjs → chunk-YWK6YH6M.mjs} +3 -3
  61. package/dist/{chunk-V7YRKFYK.mjs.map → chunk-YWK6YH6M.mjs.map} +1 -1
  62. package/dist/{chunk-545TB6TH.js → chunk-ZDTJ3BPS.js} +11 -11
  63. package/dist/{chunk-545TB6TH.js.map → chunk-ZDTJ3BPS.js.map} +1 -1
  64. package/dist/{chunk-NJYBKWCD.mjs → chunk-ZRNPHFP3.mjs} +3 -3
  65. package/dist/{chunk-NJYBKWCD.mjs.map → chunk-ZRNPHFP3.mjs.map} +1 -1
  66. package/dist/entities/DopplerFactory.js +4 -4
  67. package/dist/entities/DopplerFactory.mjs +3 -3
  68. package/dist/entities/auction/DynamicAuction.js +3 -3
  69. package/dist/entities/auction/DynamicAuction.mjs +2 -2
  70. package/dist/entities/auction/MulticurvePool.js +4 -4
  71. package/dist/entities/auction/MulticurvePool.mjs +3 -3
  72. package/dist/entities/auction/StaticAuction.js +3 -3
  73. package/dist/entities/auction/StaticAuction.mjs +2 -2
  74. package/dist/entities/auction/index.js +8 -8
  75. package/dist/entities/auction/index.mjs +5 -5
  76. package/dist/entities/quoter/Quoter.js +3 -3
  77. package/dist/entities/quoter/Quoter.mjs +2 -2
  78. package/dist/entities/quoter/index.js +3 -3
  79. package/dist/entities/quoter/index.mjs +2 -2
  80. package/dist/index.js +31 -31
  81. package/dist/index.mjs +12 -12
  82. package/dist/types.d.mts +3 -3
  83. package/dist/types.d.ts +3 -3
  84. package/dist/types.js +7 -7
  85. package/dist/types.mjs +2 -2
  86. package/dist/utils/airlock.js +6 -6
  87. package/dist/utils/airlock.mjs +2 -2
  88. package/dist/utils/index.js +6 -6
  89. package/dist/utils/index.mjs +2 -2
  90. package/package.json +1 -1
  91. package/dist/chunk-AS5UUJRI.js.map +0 -1
  92. package/dist/chunk-BFJGY436.mjs.map +0 -1
  93. package/dist/chunk-JHPDKSC4.js.map +0 -1
  94. package/dist/chunk-NWZGO2CH.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entities/auction/MulticurvePool.ts"],"names":[],"mappings":"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","file":"chunk-NJYBKWCD.mjs","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"]}
1
+ {"version":3,"sources":["../src/entities/auction/MulticurvePool.ts"],"names":[],"mappings":"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","file":"chunk-ZRNPHFP3.mjs","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"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkGFOBDFVW_js = require('../chunk-GFOBDFVW.js');
3
+ var chunkQQEOKYEX_js = require('../chunk-QQEOKYEX.js');
4
4
  require('../chunk-WTS75RUC.js');
5
5
  require('../chunk-UPVKABAV.js');
6
6
  require('../chunk-N33R22A2.js');
@@ -9,10 +9,10 @@ require('../chunk-7M57PU6V.js');
9
9
  require('../chunk-KHUE77HC.js');
10
10
  require('../chunk-4VWQNNNW.js');
11
11
  require('../chunk-OROTK4OT.js');
12
- require('../chunk-K27G7LLT.js');
12
+ require('../chunk-S4IZ5ATO.js');
13
13
  require('../chunk-XSJTASPK.js');
14
14
  require('../chunk-6BQY5EPB.js');
15
- require('../chunk-JHPDKSC4.js');
15
+ require('../chunk-5VV7STYK.js');
16
16
  require('../chunk-RLUMYHPI.js');
17
17
  require('../chunk-3MVW6UIW.js');
18
18
  require('../chunk-4XN6DQBW.js');
@@ -26,7 +26,7 @@ require('../chunk-OGYWNJGI.js');
26
26
 
27
27
  Object.defineProperty(exports, "DopplerFactory", {
28
28
  enumerable: true,
29
- get: function () { return chunkGFOBDFVW_js.DopplerFactory; }
29
+ get: function () { return chunkQQEOKYEX_js.DopplerFactory; }
30
30
  });
31
31
  //# sourceMappingURL=DopplerFactory.js.map
32
32
  //# sourceMappingURL=DopplerFactory.js.map
@@ -1,4 +1,4 @@
1
- export { DopplerFactory } from '../chunk-U7CHPFU6.mjs';
1
+ export { DopplerFactory } from '../chunk-KITPRKQ4.mjs';
2
2
  import '../chunk-5TL5V6UX.mjs';
3
3
  import '../chunk-H3B54PFV.mjs';
4
4
  import '../chunk-MQNSJCAW.mjs';
@@ -7,10 +7,10 @@ import '../chunk-CFAAYL5M.mjs';
7
7
  import '../chunk-CWTGQAOG.mjs';
8
8
  import '../chunk-25GEBO3B.mjs';
9
9
  import '../chunk-VGCXJRUV.mjs';
10
- import '../chunk-RKPAL3SU.mjs';
10
+ import '../chunk-AZH2P4JK.mjs';
11
11
  import '../chunk-KOAC3BBP.mjs';
12
12
  import '../chunk-IWJOPXYN.mjs';
13
- import '../chunk-NWZGO2CH.mjs';
13
+ import '../chunk-ADAAU4F5.mjs';
14
14
  import '../chunk-QFQXHDC7.mjs';
15
15
  import '../chunk-E2NF4AQB.mjs';
16
16
  import '../chunk-DOUF6NON.mjs';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk4CJS5XLY_js = require('../../chunk-4CJS5XLY.js');
4
- require('../../chunk-JHPDKSC4.js');
3
+ var chunkINLXNN7P_js = require('../../chunk-INLXNN7P.js');
4
+ require('../../chunk-5VV7STYK.js');
5
5
  require('../../chunk-RLUMYHPI.js');
6
6
  require('../../chunk-3MVW6UIW.js');
7
7
  require('../../chunk-4XN6DQBW.js');
@@ -15,7 +15,7 @@ require('../../chunk-OGYWNJGI.js');
15
15
 
16
16
  Object.defineProperty(exports, "DynamicAuction", {
17
17
  enumerable: true,
18
- get: function () { return chunk4CJS5XLY_js.DynamicAuction; }
18
+ get: function () { return chunkINLXNN7P_js.DynamicAuction; }
19
19
  });
20
20
  //# sourceMappingURL=DynamicAuction.js.map
21
21
  //# sourceMappingURL=DynamicAuction.js.map
@@ -1,5 +1,5 @@
1
- export { DynamicAuction } from '../../chunk-XEWKLVOD.mjs';
2
- import '../../chunk-NWZGO2CH.mjs';
1
+ export { DynamicAuction } from '../../chunk-O3RH43H3.mjs';
2
+ import '../../chunk-ADAAU4F5.mjs';
3
3
  import '../../chunk-QFQXHDC7.mjs';
4
4
  import '../../chunk-E2NF4AQB.mjs';
5
5
  import '../../chunk-DOUF6NON.mjs';
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkHHHCRTC7_js = require('../../chunk-HHHCRTC7.js');
3
+ var chunkWKKOBMXR_js = require('../../chunk-WKKOBMXR.js');
4
4
  require('../../chunk-7M57PU6V.js');
5
5
  require('../../chunk-6BQY5EPB.js');
6
- require('../../chunk-AS5UUJRI.js');
7
- require('../../chunk-JHPDKSC4.js');
6
+ require('../../chunk-COOVGAOE.js');
7
+ require('../../chunk-5VV7STYK.js');
8
8
  require('../../chunk-RLUMYHPI.js');
9
9
  require('../../chunk-3MVW6UIW.js');
10
10
  require('../../chunk-4XN6DQBW.js');
@@ -18,7 +18,7 @@ require('../../chunk-OGYWNJGI.js');
18
18
 
19
19
  Object.defineProperty(exports, "MulticurvePool", {
20
20
  enumerable: true,
21
- get: function () { return chunkHHHCRTC7_js.MulticurvePool; }
21
+ get: function () { return chunkWKKOBMXR_js.MulticurvePool; }
22
22
  });
23
23
  //# sourceMappingURL=MulticurvePool.js.map
24
24
  //# sourceMappingURL=MulticurvePool.js.map
@@ -1,8 +1,8 @@
1
- export { MulticurvePool } from '../../chunk-NJYBKWCD.mjs';
1
+ export { MulticurvePool } from '../../chunk-ZRNPHFP3.mjs';
2
2
  import '../../chunk-CFAAYL5M.mjs';
3
3
  import '../../chunk-IWJOPXYN.mjs';
4
- import '../../chunk-BFJGY436.mjs';
5
- import '../../chunk-NWZGO2CH.mjs';
4
+ import '../../chunk-M2EMKIP5.mjs';
5
+ import '../../chunk-ADAAU4F5.mjs';
6
6
  import '../../chunk-QFQXHDC7.mjs';
7
7
  import '../../chunk-E2NF4AQB.mjs';
8
8
  import '../../chunk-DOUF6NON.mjs';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkY5RAENN5_js = require('../../chunk-Y5RAENN5.js');
4
- require('../../chunk-JHPDKSC4.js');
3
+ var chunk3L4DLMOK_js = require('../../chunk-3L4DLMOK.js');
4
+ require('../../chunk-5VV7STYK.js');
5
5
  require('../../chunk-RLUMYHPI.js');
6
6
  require('../../chunk-3MVW6UIW.js');
7
7
  require('../../chunk-4XN6DQBW.js');
@@ -15,7 +15,7 @@ require('../../chunk-OGYWNJGI.js');
15
15
 
16
16
  Object.defineProperty(exports, "StaticAuction", {
17
17
  enumerable: true,
18
- get: function () { return chunkY5RAENN5_js.StaticAuction; }
18
+ get: function () { return chunk3L4DLMOK_js.StaticAuction; }
19
19
  });
20
20
  //# sourceMappingURL=StaticAuction.js.map
21
21
  //# sourceMappingURL=StaticAuction.js.map
@@ -1,5 +1,5 @@
1
- export { StaticAuction } from '../../chunk-RJE6LWWF.mjs';
2
- import '../../chunk-NWZGO2CH.mjs';
1
+ export { StaticAuction } from '../../chunk-D7PCIMWU.mjs';
2
+ import '../../chunk-ADAAU4F5.mjs';
3
3
  import '../../chunk-QFQXHDC7.mjs';
4
4
  import '../../chunk-E2NF4AQB.mjs';
5
5
  import '../../chunk-DOUF6NON.mjs';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../../chunk-3PNCB4W5.js');
4
- var chunk4CJS5XLY_js = require('../../chunk-4CJS5XLY.js');
5
- var chunkHHHCRTC7_js = require('../../chunk-HHHCRTC7.js');
6
- var chunkY5RAENN5_js = require('../../chunk-Y5RAENN5.js');
4
+ var chunkINLXNN7P_js = require('../../chunk-INLXNN7P.js');
5
+ var chunkWKKOBMXR_js = require('../../chunk-WKKOBMXR.js');
6
+ var chunk3L4DLMOK_js = require('../../chunk-3L4DLMOK.js');
7
7
  require('../../chunk-7M57PU6V.js');
8
8
  require('../../chunk-6BQY5EPB.js');
9
- require('../../chunk-AS5UUJRI.js');
10
- require('../../chunk-JHPDKSC4.js');
9
+ require('../../chunk-COOVGAOE.js');
10
+ require('../../chunk-5VV7STYK.js');
11
11
  require('../../chunk-RLUMYHPI.js');
12
12
  require('../../chunk-3MVW6UIW.js');
13
13
  require('../../chunk-4XN6DQBW.js');
@@ -21,15 +21,15 @@ require('../../chunk-OGYWNJGI.js');
21
21
 
22
22
  Object.defineProperty(exports, "DynamicAuction", {
23
23
  enumerable: true,
24
- get: function () { return chunk4CJS5XLY_js.DynamicAuction; }
24
+ get: function () { return chunkINLXNN7P_js.DynamicAuction; }
25
25
  });
26
26
  Object.defineProperty(exports, "MulticurvePool", {
27
27
  enumerable: true,
28
- get: function () { return chunkHHHCRTC7_js.MulticurvePool; }
28
+ get: function () { return chunkWKKOBMXR_js.MulticurvePool; }
29
29
  });
30
30
  Object.defineProperty(exports, "StaticAuction", {
31
31
  enumerable: true,
32
- get: function () { return chunkY5RAENN5_js.StaticAuction; }
32
+ get: function () { return chunk3L4DLMOK_js.StaticAuction; }
33
33
  });
34
34
  //# sourceMappingURL=index.js.map
35
35
  //# sourceMappingURL=index.js.map
@@ -1,11 +1,11 @@
1
1
  import '../../chunk-SD7BHT2F.mjs';
2
- export { DynamicAuction } from '../../chunk-XEWKLVOD.mjs';
3
- export { MulticurvePool } from '../../chunk-NJYBKWCD.mjs';
4
- export { StaticAuction } from '../../chunk-RJE6LWWF.mjs';
2
+ export { DynamicAuction } from '../../chunk-O3RH43H3.mjs';
3
+ export { MulticurvePool } from '../../chunk-ZRNPHFP3.mjs';
4
+ export { StaticAuction } from '../../chunk-D7PCIMWU.mjs';
5
5
  import '../../chunk-CFAAYL5M.mjs';
6
6
  import '../../chunk-IWJOPXYN.mjs';
7
- import '../../chunk-BFJGY436.mjs';
8
- import '../../chunk-NWZGO2CH.mjs';
7
+ import '../../chunk-M2EMKIP5.mjs';
8
+ import '../../chunk-ADAAU4F5.mjs';
9
9
  import '../../chunk-QFQXHDC7.mjs';
10
10
  import '../../chunk-E2NF4AQB.mjs';
11
11
  import '../../chunk-DOUF6NON.mjs';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk545TB6TH_js = require('../../chunk-545TB6TH.js');
4
- require('../../chunk-JHPDKSC4.js');
3
+ var chunkZDTJ3BPS_js = require('../../chunk-ZDTJ3BPS.js');
4
+ require('../../chunk-5VV7STYK.js');
5
5
  require('../../chunk-RLUMYHPI.js');
6
6
  require('../../chunk-3MVW6UIW.js');
7
7
  require('../../chunk-4XN6DQBW.js');
@@ -15,7 +15,7 @@ require('../../chunk-OGYWNJGI.js');
15
15
 
16
16
  Object.defineProperty(exports, "Quoter", {
17
17
  enumerable: true,
18
- get: function () { return chunk545TB6TH_js.Quoter; }
18
+ get: function () { return chunkZDTJ3BPS_js.Quoter; }
19
19
  });
20
20
  //# sourceMappingURL=Quoter.js.map
21
21
  //# sourceMappingURL=Quoter.js.map
@@ -1,5 +1,5 @@
1
- export { Quoter } from '../../chunk-HX3A6ALC.mjs';
2
- import '../../chunk-NWZGO2CH.mjs';
1
+ export { Quoter } from '../../chunk-RWVNXU7Z.mjs';
2
+ import '../../chunk-ADAAU4F5.mjs';
3
3
  import '../../chunk-QFQXHDC7.mjs';
4
4
  import '../../chunk-E2NF4AQB.mjs';
5
5
  import '../../chunk-DOUF6NON.mjs';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  require('../../chunk-P7CHGWY7.js');
4
- var chunk545TB6TH_js = require('../../chunk-545TB6TH.js');
5
- require('../../chunk-JHPDKSC4.js');
4
+ var chunkZDTJ3BPS_js = require('../../chunk-ZDTJ3BPS.js');
5
+ require('../../chunk-5VV7STYK.js');
6
6
  require('../../chunk-RLUMYHPI.js');
7
7
  require('../../chunk-3MVW6UIW.js');
8
8
  require('../../chunk-4XN6DQBW.js');
@@ -16,7 +16,7 @@ require('../../chunk-OGYWNJGI.js');
16
16
 
17
17
  Object.defineProperty(exports, "Quoter", {
18
18
  enumerable: true,
19
- get: function () { return chunk545TB6TH_js.Quoter; }
19
+ get: function () { return chunkZDTJ3BPS_js.Quoter; }
20
20
  });
21
21
  //# sourceMappingURL=index.js.map
22
22
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import '../../chunk-QSQGLWNY.mjs';
2
- export { Quoter } from '../../chunk-HX3A6ALC.mjs';
3
- import '../../chunk-NWZGO2CH.mjs';
2
+ export { Quoter } from '../../chunk-RWVNXU7Z.mjs';
3
+ import '../../chunk-ADAAU4F5.mjs';
4
4
  import '../../chunk-QFQXHDC7.mjs';
5
5
  import '../../chunk-E2NF4AQB.mjs';
6
6
  import '../../chunk-DOUF6NON.mjs';
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var chunk5JQDXMDN_js = require('./chunk-5JQDXMDN.js');
3
+ var chunkMT34O3YL_js = require('./chunk-MT34O3YL.js');
4
4
  require('./chunk-3PNCB4W5.js');
5
5
  require('./chunk-P7CHGWY7.js');
6
- var chunk545TB6TH_js = require('./chunk-545TB6TH.js');
6
+ var chunkZDTJ3BPS_js = require('./chunk-ZDTJ3BPS.js');
7
7
  require('./chunk-WQHTNL5L.js');
8
8
  require('./chunk-X3UMAHOJ.js');
9
9
  var chunkRXUJ4DUB_js = require('./chunk-RXUJ4DUB.js');
10
10
  require('./chunk-VEIVYUYF.js');
11
11
  var chunkYYLD3AJ7_js = require('./chunk-YYLD3AJ7.js');
12
- var chunk4CJS5XLY_js = require('./chunk-4CJS5XLY.js');
13
- var chunkHHHCRTC7_js = require('./chunk-HHHCRTC7.js');
14
- var chunkY5RAENN5_js = require('./chunk-Y5RAENN5.js');
12
+ var chunkINLXNN7P_js = require('./chunk-INLXNN7P.js');
13
+ var chunkWKKOBMXR_js = require('./chunk-WKKOBMXR.js');
14
+ var chunk3L4DLMOK_js = require('./chunk-3L4DLMOK.js');
15
15
  require('./chunk-JIKAD4YL.js');
16
- var chunkTYJZL2XZ_js = require('./chunk-TYJZL2XZ.js');
17
- var chunkGLMPU7VL_js = require('./chunk-GLMPU7VL.js');
18
- var chunkCOUZYFEE_js = require('./chunk-COUZYFEE.js');
16
+ var chunkCUB4F546_js = require('./chunk-CUB4F546.js');
17
+ var chunk3XYDN2XB_js = require('./chunk-3XYDN2XB.js');
18
+ var chunk5WYXNWNH_js = require('./chunk-5WYXNWNH.js');
19
19
  require('./chunk-SAX7P3MH.js');
20
- var chunkGFOBDFVW_js = require('./chunk-GFOBDFVW.js');
20
+ var chunkQQEOKYEX_js = require('./chunk-QQEOKYEX.js');
21
21
  require('./chunk-WTS75RUC.js');
22
22
  var chunkUPVKABAV_js = require('./chunk-UPVKABAV.js');
23
23
  var chunkN33R22A2_js = require('./chunk-N33R22A2.js');
@@ -26,11 +26,11 @@ var chunk7M57PU6V_js = require('./chunk-7M57PU6V.js');
26
26
  var chunkKHUE77HC_js = require('./chunk-KHUE77HC.js');
27
27
  var chunk4VWQNNNW_js = require('./chunk-4VWQNNNW.js');
28
28
  var chunkOROTK4OT_js = require('./chunk-OROTK4OT.js');
29
- var chunkK27G7LLT_js = require('./chunk-K27G7LLT.js');
29
+ var chunkS4IZ5ATO_js = require('./chunk-S4IZ5ATO.js');
30
30
  var chunkXSJTASPK_js = require('./chunk-XSJTASPK.js');
31
31
  var chunk6BQY5EPB_js = require('./chunk-6BQY5EPB.js');
32
- var chunkAS5UUJRI_js = require('./chunk-AS5UUJRI.js');
33
- var chunkJHPDKSC4_js = require('./chunk-JHPDKSC4.js');
32
+ var chunkCOOVGAOE_js = require('./chunk-COOVGAOE.js');
33
+ var chunk5VV7STYK_js = require('./chunk-5VV7STYK.js');
34
34
  require('./chunk-RLUMYHPI.js');
35
35
  var chunk3MVW6UIW_js = require('./chunk-3MVW6UIW.js');
36
36
  require('./chunk-4XN6DQBW.js');
@@ -45,11 +45,11 @@ var VERSION = "0.0.1";
45
45
 
46
46
  Object.defineProperty(exports, "DopplerSDK", {
47
47
  enumerable: true,
48
- get: function () { return chunk5JQDXMDN_js.DopplerSDK; }
48
+ get: function () { return chunkMT34O3YL_js.DopplerSDK; }
49
49
  });
50
50
  Object.defineProperty(exports, "Quoter", {
51
51
  enumerable: true,
52
- get: function () { return chunk545TB6TH_js.Quoter; }
52
+ get: function () { return chunkZDTJ3BPS_js.Quoter; }
53
53
  });
54
54
  Object.defineProperty(exports, "Derc20", {
55
55
  enumerable: true,
@@ -61,31 +61,31 @@ Object.defineProperty(exports, "Eth", {
61
61
  });
62
62
  Object.defineProperty(exports, "DynamicAuction", {
63
63
  enumerable: true,
64
- get: function () { return chunk4CJS5XLY_js.DynamicAuction; }
64
+ get: function () { return chunkINLXNN7P_js.DynamicAuction; }
65
65
  });
66
66
  Object.defineProperty(exports, "MulticurvePool", {
67
67
  enumerable: true,
68
- get: function () { return chunkHHHCRTC7_js.MulticurvePool; }
68
+ get: function () { return chunkWKKOBMXR_js.MulticurvePool; }
69
69
  });
70
70
  Object.defineProperty(exports, "StaticAuction", {
71
71
  enumerable: true,
72
- get: function () { return chunkY5RAENN5_js.StaticAuction; }
72
+ get: function () { return chunk3L4DLMOK_js.StaticAuction; }
73
73
  });
74
74
  Object.defineProperty(exports, "DynamicAuctionBuilder", {
75
75
  enumerable: true,
76
- get: function () { return chunkTYJZL2XZ_js.DynamicAuctionBuilder; }
76
+ get: function () { return chunkCUB4F546_js.DynamicAuctionBuilder; }
77
77
  });
78
78
  Object.defineProperty(exports, "MulticurveBuilder", {
79
79
  enumerable: true,
80
- get: function () { return chunkGLMPU7VL_js.MulticurveBuilder; }
80
+ get: function () { return chunk3XYDN2XB_js.MulticurveBuilder; }
81
81
  });
82
82
  Object.defineProperty(exports, "StaticAuctionBuilder", {
83
83
  enumerable: true,
84
- get: function () { return chunkCOUZYFEE_js.StaticAuctionBuilder; }
84
+ get: function () { return chunk5WYXNWNH_js.StaticAuctionBuilder; }
85
85
  });
86
86
  Object.defineProperty(exports, "DopplerFactory", {
87
87
  enumerable: true,
88
- get: function () { return chunkGFOBDFVW_js.DopplerFactory; }
88
+ get: function () { return chunkQQEOKYEX_js.DopplerFactory; }
89
89
  });
90
90
  Object.defineProperty(exports, "computeOptimalGamma", {
91
91
  enumerable: true,
@@ -233,19 +233,19 @@ Object.defineProperty(exports, "mineTokenAddress", {
233
233
  });
234
234
  Object.defineProperty(exports, "DEFAULT_AIRLOCK_BENEFICIARY_SHARES", {
235
235
  enumerable: true,
236
- get: function () { return chunkK27G7LLT_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
236
+ get: function () { return chunkS4IZ5ATO_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
237
237
  });
238
238
  Object.defineProperty(exports, "createAirlockBeneficiary", {
239
239
  enumerable: true,
240
- get: function () { return chunkK27G7LLT_js.createAirlockBeneficiary; }
240
+ get: function () { return chunkS4IZ5ATO_js.createAirlockBeneficiary; }
241
241
  });
242
242
  Object.defineProperty(exports, "getAirlockBeneficiary", {
243
243
  enumerable: true,
244
- get: function () { return chunkK27G7LLT_js.getAirlockBeneficiary; }
244
+ get: function () { return chunkS4IZ5ATO_js.getAirlockBeneficiary; }
245
245
  });
246
246
  Object.defineProperty(exports, "getAirlockOwner", {
247
247
  enumerable: true,
248
- get: function () { return chunkK27G7LLT_js.getAirlockOwner; }
248
+ get: function () { return chunkS4IZ5ATO_js.getAirlockOwner; }
249
249
  });
250
250
  Object.defineProperty(exports, "decodeBalanceDelta", {
251
251
  enumerable: true,
@@ -425,27 +425,27 @@ Object.defineProperty(exports, "ZERO_ADDRESS", {
425
425
  });
426
426
  Object.defineProperty(exports, "LockablePoolStatus", {
427
427
  enumerable: true,
428
- get: function () { return chunkAS5UUJRI_js.LockablePoolStatus; }
428
+ get: function () { return chunkCOOVGAOE_js.LockablePoolStatus; }
429
429
  });
430
430
  Object.defineProperty(exports, "ADDRESSES", {
431
431
  enumerable: true,
432
- get: function () { return chunkJHPDKSC4_js.ADDRESSES; }
432
+ get: function () { return chunk5VV7STYK_js.ADDRESSES; }
433
433
  });
434
434
  Object.defineProperty(exports, "CHAIN_IDS", {
435
435
  enumerable: true,
436
- get: function () { return chunkJHPDKSC4_js.CHAIN_IDS; }
436
+ get: function () { return chunk5VV7STYK_js.CHAIN_IDS; }
437
437
  });
438
438
  Object.defineProperty(exports, "SUPPORTED_CHAIN_IDS", {
439
439
  enumerable: true,
440
- get: function () { return chunkJHPDKSC4_js.SUPPORTED_CHAIN_IDS; }
440
+ get: function () { return chunk5VV7STYK_js.SUPPORTED_CHAIN_IDS; }
441
441
  });
442
442
  Object.defineProperty(exports, "getAddresses", {
443
443
  enumerable: true,
444
- get: function () { return chunkJHPDKSC4_js.getAddresses; }
444
+ get: function () { return chunk5VV7STYK_js.getAddresses; }
445
445
  });
446
446
  Object.defineProperty(exports, "isSupportedChainId", {
447
447
  enumerable: true,
448
- get: function () { return chunkJHPDKSC4_js.isSupportedChainId; }
448
+ get: function () { return chunk5VV7STYK_js.isSupportedChainId; }
449
449
  });
450
450
  Object.defineProperty(exports, "airlockAbi", {
451
451
  enumerable: true,
package/dist/index.mjs CHANGED
@@ -1,21 +1,21 @@
1
- export { DopplerSDK } from './chunk-SQRQYDB3.mjs';
1
+ export { DopplerSDK } from './chunk-HJ4AS5DZ.mjs';
2
2
  import './chunk-SD7BHT2F.mjs';
3
3
  import './chunk-QSQGLWNY.mjs';
4
- export { Quoter } from './chunk-HX3A6ALC.mjs';
4
+ export { Quoter } from './chunk-RWVNXU7Z.mjs';
5
5
  import './chunk-FOESYJP3.mjs';
6
6
  import './chunk-RV64M4Q6.mjs';
7
7
  export { Derc20 } from './chunk-QOGBOT2M.mjs';
8
8
  import './chunk-XNMXN5SZ.mjs';
9
9
  export { Eth } from './chunk-KAZQJ24E.mjs';
10
- export { DynamicAuction } from './chunk-XEWKLVOD.mjs';
11
- export { MulticurvePool } from './chunk-NJYBKWCD.mjs';
12
- export { StaticAuction } from './chunk-RJE6LWWF.mjs';
10
+ export { DynamicAuction } from './chunk-O3RH43H3.mjs';
11
+ export { MulticurvePool } from './chunk-ZRNPHFP3.mjs';
12
+ export { StaticAuction } from './chunk-D7PCIMWU.mjs';
13
13
  import './chunk-P25HBGP5.mjs';
14
- export { DynamicAuctionBuilder } from './chunk-CXE33IZN.mjs';
15
- export { MulticurveBuilder } from './chunk-36Y3N257.mjs';
16
- export { StaticAuctionBuilder } from './chunk-V7YRKFYK.mjs';
14
+ export { DynamicAuctionBuilder } from './chunk-FVTTG72Z.mjs';
15
+ export { MulticurveBuilder } from './chunk-CS6FVODR.mjs';
16
+ export { StaticAuctionBuilder } from './chunk-YWK6YH6M.mjs';
17
17
  import './chunk-HH7HQ4HC.mjs';
18
- export { DopplerFactory } from './chunk-U7CHPFU6.mjs';
18
+ export { DopplerFactory } from './chunk-KITPRKQ4.mjs';
19
19
  import './chunk-5TL5V6UX.mjs';
20
20
  export { computeOptimalGamma } from './chunk-H3B54PFV.mjs';
21
21
  export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from './chunk-MQNSJCAW.mjs';
@@ -24,11 +24,11 @@ export { computePoolId } from './chunk-CFAAYL5M.mjs';
24
24
  export { calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, estimatePriceAtEpoch, estimateSlippage, formatTickAsPrice } from './chunk-CWTGQAOG.mjs';
25
25
  export { MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, Q96, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, priceToSqrtPriceX96, priceToTick, sqrtPriceX96ToPrice, tickToPrice } from './chunk-25GEBO3B.mjs';
26
26
  export { mineTokenAddress } from './chunk-VGCXJRUV.mjs';
27
- export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from './chunk-RKPAL3SU.mjs';
27
+ export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from './chunk-AZH2P4JK.mjs';
28
28
  export { decodeBalanceDelta } from './chunk-KOAC3BBP.mjs';
29
29
  export { BASIS_POINTS, DAY_SECONDS, DEAD_ADDRESS, DECAY_MAX_START_FEE, DEFAULT_AUCTION_DURATION, 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_FEE_FLAG, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, SECONDS_PER_DAY, SECONDS_PER_YEAR, TICK_SPACINGS, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, WAD, ZERO_ADDRESS } from './chunk-IWJOPXYN.mjs';
30
- export { LockablePoolStatus } from './chunk-BFJGY436.mjs';
31
- export { ADDRESSES, CHAIN_IDS, SUPPORTED_CHAIN_IDS, getAddresses, isSupportedChainId } from './chunk-NWZGO2CH.mjs';
30
+ export { LockablePoolStatus } from './chunk-M2EMKIP5.mjs';
31
+ export { ADDRESSES, CHAIN_IDS, SUPPORTED_CHAIN_IDS, getAddresses, isSupportedChainId } from './chunk-ADAAU4F5.mjs';
32
32
  import './chunk-QFQXHDC7.mjs';
33
33
  export { airlockAbi, bundlerAbi, decayMulticurveInitializerHookAbi, derc20Abi, dopplerHookAbi, dopplerLensAbi, lockableUniswapV3InitializerAbi, poolManagerAbi, quoterV2Abi, rehypeDopplerHookAbi, streamableFeesLockerAbi, uniswapV2Router02Abi, uniswapV3InitializerAbi, uniswapV3PoolAbi, uniswapV4InitializerAbi, v2MigratorAbi, v3MigratorAbi, v4MigratorAbi, v4MulticurveInitializerAbi, v4MulticurveMigratorAbi, v4QuoterAbi, weth9Abi } from './chunk-E2NF4AQB.mjs';
34
34
  import './chunk-DOUF6NON.mjs';
package/dist/types.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import { base, baseSepolia, ink, unichain } from 'viem/chains';
1
+ import { mainnet, sepolia, base, baseSepolia, ink, unichain } from 'viem/chains';
2
2
  import { SupportedChainId } from './addresses.mjs';
3
3
  import { WalletClient, Address } from 'viem';
4
4
 
5
- type SupportedChain = typeof base | typeof baseSepolia | typeof ink | typeof unichain | typeof baseSepolia;
5
+ type SupportedChain = typeof mainnet | typeof sepolia | typeof base | typeof baseSepolia | typeof ink | typeof unichain;
6
6
  type SupportedPublicClient = unknown;
7
7
  interface StandardTokenConfig {
8
8
  type?: 'standard';
@@ -48,7 +48,7 @@ interface VestingConfig {
48
48
  recipients?: Address[];
49
49
  amounts?: bigint[];
50
50
  }
51
- declare const NO_OP_ENABLED_CHAIN_IDS: readonly [8453, 84532, 130, 1301, 10143, 143];
51
+ declare const NO_OP_ENABLED_CHAIN_IDS: readonly [1, 11155111, 8453, 84532, 130, 1301, 10143, 143];
52
52
  type NoOpEnabledChainId = (typeof NO_OP_ENABLED_CHAIN_IDS)[number];
53
53
  /**
54
54
  * Check if a chain supports no-op governance
package/dist/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { base, baseSepolia, ink, unichain } from 'viem/chains';
1
+ import { mainnet, sepolia, base, baseSepolia, ink, unichain } from 'viem/chains';
2
2
  import { SupportedChainId } from './addresses.js';
3
3
  import { WalletClient, Address } from 'viem';
4
4
 
5
- type SupportedChain = typeof base | typeof baseSepolia | typeof ink | typeof unichain | typeof baseSepolia;
5
+ type SupportedChain = typeof mainnet | typeof sepolia | typeof base | typeof baseSepolia | typeof ink | typeof unichain;
6
6
  type SupportedPublicClient = unknown;
7
7
  interface StandardTokenConfig {
8
8
  type?: 'standard';
@@ -48,7 +48,7 @@ interface VestingConfig {
48
48
  recipients?: Address[];
49
49
  amounts?: bigint[];
50
50
  }
51
- declare const NO_OP_ENABLED_CHAIN_IDS: readonly [8453, 84532, 130, 1301, 10143, 143];
51
+ declare const NO_OP_ENABLED_CHAIN_IDS: readonly [1, 11155111, 8453, 84532, 130, 1301, 10143, 143];
52
52
  type NoOpEnabledChainId = (typeof NO_OP_ENABLED_CHAIN_IDS)[number];
53
53
  /**
54
54
  * Check if a chain supports no-op governance