@panoptic-eng/sdk 1.0.37 → 1.0.38

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 (85) hide show
  1. package/dist/cow/index.d.ts +4 -5
  2. package/dist/cow/index.js +3 -3
  3. package/dist/cow/types.d.ts +3 -2
  4. package/dist/{cow-aX6of9TS.js → cow-DB8siv6M.js} +2 -2
  5. package/dist/{cow-aX6of9TS.js.map → cow-DB8siv6M.js.map} +1 -1
  6. package/dist/deployments.d.ts +3 -2
  7. package/dist/deployments.d.ts.map +1 -1
  8. package/dist/deployments.js +4 -0
  9. package/dist/deployments.js.map +1 -1
  10. package/dist/{position-C8rkkKhi.js → getTrackedPositionIds-zYPIs5dt.js} +1086 -34
  11. package/dist/getTrackedPositionIds-zYPIs5dt.js.map +1 -0
  12. package/dist/hypoVault/vaultDisplayNames.d.ts +2 -0
  13. package/dist/hypoVault/vaultDisplayNames.js +4 -0
  14. package/dist/{index-CURXeKNy.d.ts → index-BhEBx83X.d.ts} +405 -351
  15. package/dist/index-BhEBx83X.d.ts.map +1 -0
  16. package/dist/index-Bo9tHtD7.d.ts +1901 -0
  17. package/dist/index-Bo9tHtD7.d.ts.map +1 -0
  18. package/dist/{index-Cp-nCeV2.d.ts → index-CttjEZ-S.d.ts} +3 -4
  19. package/dist/index-CttjEZ-S.d.ts.map +1 -0
  20. package/dist/{index-Zvu-rJpV.d.ts → index-DktZq9Kb.d.ts} +2 -2
  21. package/dist/{index-Zvu-rJpV.d.ts.map → index-DktZq9Kb.d.ts.map} +1 -1
  22. package/dist/index.d.ts +159 -39
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +319 -66
  25. package/dist/index.js.map +1 -1
  26. package/dist/{irm-DnM96-X4.js → irm-ChkvYphK.js} +3 -318
  27. package/dist/irm-ChkvYphK.js.map +1 -0
  28. package/dist/{irm-CmgC1Mqi.d.ts → irm-D2WTHtuo.d.ts} +3 -30
  29. package/dist/{irm-CmgC1Mqi.d.ts.map → irm-D2WTHtuo.d.ts.map} +1 -1
  30. package/dist/irm-D5plRhpB.d.ts +32 -0
  31. package/dist/irm-D5plRhpB.d.ts.map +1 -0
  32. package/dist/panoptic/v2/greeks/index.d.ts +3 -2
  33. package/dist/panoptic/v2/index.d.ts +7 -8
  34. package/dist/panoptic/v2/index.js +7 -6
  35. package/dist/panoptic/v2/react-public.d.ts +27 -11
  36. package/dist/panoptic/v2/react-public.d.ts.map +1 -1
  37. package/dist/panoptic/v2/react-public.js +48 -8
  38. package/dist/panoptic/v2/react-public.js.map +1 -1
  39. package/dist/panoptic/v2/types/index.d.ts +3 -0
  40. package/dist/panoptic/v2/types/index.js +0 -0
  41. package/dist/quote-DeHNUR0Z.d.ts +52 -0
  42. package/dist/quote-DeHNUR0Z.d.ts.map +1 -0
  43. package/dist/{router-CS86ptMu.js → router-BCUJkY8j.js} +3 -3
  44. package/dist/{router-CS86ptMu.js.map → router-BCUJkY8j.js.map} +1 -1
  45. package/dist/{router-DcoU2KmV.js → router-tCRa0ekE.js} +2 -2
  46. package/dist/{router-DcoU2KmV.js.map → router-tCRa0ekE.js.map} +1 -1
  47. package/dist/src-CRAtPwWk.js +321 -0
  48. package/dist/src-CRAtPwWk.js.map +1 -0
  49. package/dist/test/index.d.ts +2 -2
  50. package/dist/test/index.d.ts.map +1 -1
  51. package/dist/transactionFees-CVi2TrJh.js +175 -0
  52. package/dist/transactionFees-CVi2TrJh.js.map +1 -0
  53. package/dist/transactionFees-DzDyt50k.d.ts +63 -0
  54. package/dist/transactionFees-DzDyt50k.d.ts.map +1 -0
  55. package/dist/{types-D_jcYss-.d.ts → types-Cad5m4Td.d.ts} +3 -5
  56. package/dist/types-Cad5m4Td.d.ts.map +1 -0
  57. package/dist/{types-BHdnurYr.d.ts → types-DM0nxlZr.d.ts} +2 -2
  58. package/dist/{types-BHdnurYr.d.ts.map → types-DM0nxlZr.d.ts.map} +1 -1
  59. package/dist/uniswap/index.d.ts +4 -5
  60. package/dist/uniswap/index.d.ts.map +1 -1
  61. package/dist/uniswap/index.js +4 -4
  62. package/dist/{v2-D0dEatKb.js → v2-BxtzpUnV.js} +3267 -2675
  63. package/dist/v2-BxtzpUnV.js.map +1 -0
  64. package/dist/vault-transaction-fees.d.ts +2 -0
  65. package/dist/vault-transaction-fees.js +3 -0
  66. package/dist/vaultDisplayNames-CKpz51Hu.js +0 -0
  67. package/dist/vaultDisplayNames-Q6htUcch.d.ts +2 -0
  68. package/dist/{writes-AupZCK4M.js → writes-D3bj1wth.js} +326 -1292
  69. package/dist/writes-D3bj1wth.js.map +1 -0
  70. package/package.json +5 -1
  71. package/dist/index-CURXeKNy.d.ts.map +0 -1
  72. package/dist/index-Cp-nCeV2.d.ts.map +0 -1
  73. package/dist/irm-DnM96-X4.js.map +0 -1
  74. package/dist/position-BqIgubs5.d.ts +0 -199
  75. package/dist/position-BqIgubs5.d.ts.map +0 -1
  76. package/dist/position-C8rkkKhi.js.map +0 -1
  77. package/dist/quote-BxQkPBRg.d.ts +0 -718
  78. package/dist/quote-BxQkPBRg.d.ts.map +0 -1
  79. package/dist/simulation-zM6-YUaw.d.ts +0 -258
  80. package/dist/simulation-zM6-YUaw.d.ts.map +0 -1
  81. package/dist/tx-CbDQ58Io.d.ts +0 -367
  82. package/dist/tx-CbDQ58Io.d.ts.map +0 -1
  83. package/dist/types-D_jcYss-.d.ts.map +0 -1
  84. package/dist/v2-D0dEatKb.js.map +0 -1
  85. package/dist/writes-AupZCK4M.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
- import { BASE_CHAIN_ID, BASE_DEPLOYMENT, BASE_ETH_USDC_5BPS_MARKET, BASE_HYPOVAULT_ADDRESSES, BASE_HYPOVAULT_CORE_ADDRESSES, BASE_HYPOVAULT_MANAGER_ADDRESSES, BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, BASE_PANOPTIC_POOL_ADDRESSES, BASE_PANOPTIC_V2_ADDRESSES, BORROW_INDEX_BITS, BPS_SCALE, CHAIN_DEPLOYMENTS, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, MARKET_EPOCH_BITS, MARKET_EPOCH_SHIFT, Multicall3Abi, RATE_AT_TARGET_BITS, SECONDS_PER_YEAR, SEPOLIA_CHAIN_ID, SEPOLIA_DEPLOYMENT, SEPOLIA_ETH_USDC_5BPS_MARKET, SEPOLIA_HYPOVAULT_ADDRESSES, SEPOLIA_HYPOVAULT_CORE_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, SEPOLIA_PANOPTIC_POOL_ADDRESSES, SEPOLIA_PANOPTIC_V2_ADDRESSES, StateViewAbi, UNREALIZED_INTEREST_BITS, VAULT_DISPLAY_NAMES_PER_CHAIN, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN, WAD$2 as WAD, annualizePerSecondRateWad, deriveSupplyRatePerSecWad, formatPerSecondRateWadAsAprPct, formatPerSecondRateWadAsApyPct, getAccountCollateral$1 as getAccountCollateral, getChainDeployment, getCollateralData$1 as getCollateralData, getEthUsdcMarket, getIrmCurrent, getIrmCurve, isSupportedChain, packMarketState, ratePerSecWadToAprPct, requireChainDeployment, resolveVaultDisplayName, utilizationBpsToWad, utilizationPctToWad } from "./irm-DnM96-X4.js";
2
- import { collateralTrackerV2Abi, getPoolMetadata, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticPoolV2Abi, panopticQueryAbi$1 as panopticQueryAbi, riskEngineAbi, semiFungiblePositionManagerV3Abi, semiFungiblePositionManagerV4Abi } from "./position-C8rkkKhi.js";
1
+ import { BORROW_INDEX_BITS, BPS_SCALE, MARKET_EPOCH_BITS, MARKET_EPOCH_SHIFT, Multicall3Abi, RATE_AT_TARGET_BITS, SECONDS_PER_YEAR, StateViewAbi, UNREALIZED_INTEREST_BITS, WAD$2 as WAD, annualizePerSecondRateWad, deriveSupplyRatePerSecWad, formatPerSecondRateWadAsAprPct, formatPerSecondRateWadAsApyPct, getAccountCollateral$1 as getAccountCollateral, getCollateralData$1 as getCollateralData, getIrmCurrent, getIrmCurve, packMarketState, ratePerSecWadToAprPct, utilizationBpsToWad, utilizationPctToWad } from "./irm-ChkvYphK.js";
2
+ import { collateralTrackerV2Abi, getOpenPositionIds$1 as getOpenPositionIds, getPoolMetadata$1 as getPoolMetadata, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticPoolV2Abi, panopticQueryAbi, riskEngineAbi, semiFungiblePositionManagerV3Abi, semiFungiblePositionManagerV4Abi } from "./getTrackedPositionIds-zYPIs5dt.js";
3
3
  import { tickToSqrtPriceX96 } from "./greeks-GysWXct-.js";
4
+ import { BASE_CHAIN_ID, BASE_DEPLOYMENT, BASE_ETH_USDC_5BPS_MARKET, BASE_HYPOVAULT_ADDRESSES, BASE_HYPOVAULT_CORE_ADDRESSES, BASE_HYPOVAULT_MANAGER_ADDRESSES, BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, BASE_PANOPTIC_POOL_ADDRESSES, BASE_PANOPTIC_V2_ADDRESSES, CHAIN_DEPLOYMENTS, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, SEPOLIA_CHAIN_ID, SEPOLIA_DEPLOYMENT, SEPOLIA_ETH_USDC_5BPS_MARKET, SEPOLIA_HYPOVAULT_ADDRESSES, SEPOLIA_HYPOVAULT_CORE_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, SEPOLIA_PANOPTIC_POOL_ADDRESSES, SEPOLIA_PANOPTIC_V2_ADDRESSES, VAULT_DISPLAY_NAMES_PER_CHAIN$1 as VAULT_DISPLAY_NAMES_PER_CHAIN, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN$1 as VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN, getChainDeployment, getEthUsdcMarket, isSupportedChain, requireChainDeployment, resolveVaultDisplayName$1 as resolveVaultDisplayName } from "./src-CRAtPwWk.js";
5
+ import { MAX_VAULT_PRIORITY_FEE_PER_GAS, MAX_VAULT_TRANSACTION_GAS_COST, MIN_VAULT_PRIORITY_FEE_PER_GAS, VaultTransactionFeeEstimationError, VaultTransactionGasCostLimitError, applyVaultTransactionGasCostLimit, bufferVaultTransactionGasEstimate, getVaultTransactionFeeQuote, validateVaultSignedTransactionFeeCaps } from "./transactionFees-CVi2TrJh.js";
6
+ import "./vaultDisplayNames-CKpz51Hu.js";
4
7
  import { BaseError, ContractFunctionExecutionError, ContractFunctionRevertedError, concat, encodeAbiParameters, encodeFunctionData, encodePacked, getAddress, keccak256, maxUint256, parseAbi, toBytes, zeroAddress } from "viem";
5
8
  import { getBlockNumber, readContract, simulateContract, writeContract } from "viem/actions";
6
9
  import Decimal from "decimal.js";
@@ -15158,7 +15161,7 @@ const BASE_PANOPTIC_POOL_ADDRESSES$2 = BASE_DEPLOYMENT$3.panoptic.pool;
15158
15161
  const UsdcPlpVaultBaseProdConfig = {
15159
15162
  deployment: "prod",
15160
15163
  vaultAssetIndex: 0n,
15161
- manageCycleIntervalMs: 6e5,
15164
+ manageCycleIntervalMs: 864e5,
15162
15165
  vaultCapInUnderlying: 300000000n,
15163
15166
  vaultCapInShares: 3000000000000000n,
15164
15167
  allowUnlimitedDepositRequestIfCapNotReached: true,
@@ -15173,6 +15176,10 @@ const UsdcPlpVaultBaseProdConfig = {
15173
15176
  hypoVault: BASE_HYPOVAULT_ADDRESSES$2.usdcPlpVault,
15174
15177
  underlyingToken: BASE_ETH_USDC_5BPS_MARKET$1.currency1
15175
15178
  },
15179
+ automation: {
15180
+ primaryPool: BASE_PANOPTIC_POOL_ADDRESSES$2.panopticPool,
15181
+ windDownPools: []
15182
+ },
15176
15183
  manualTxDefaults: { collateralAllocations: [{
15177
15184
  trackerAddress: BASE_PANOPTIC_POOL_ADDRESSES$2.collateralTracker1,
15178
15185
  allocationBps: 1e4
@@ -15196,6 +15203,8 @@ const MAINNET_ETH_USDC_MARKET = getEthUsdcMarket(MAINNET_DEPLOYMENT$6);
15196
15203
  const MAINNET_HYPOVAULT_ADDRESSES$1 = MAINNET_DEPLOYMENT$6.hypovault.vaults;
15197
15204
  const MAINNET_HYPOVAULT_MANAGER_ADDRESSES$1 = MAINNET_DEPLOYMENT$6.hypovault.managers;
15198
15205
  const MAINNET_PANOPTIC_POOL_ADDRESSES$1 = MAINNET_DEPLOYMENT$6.panoptic.pool;
15206
+ const MAINNET_V3_POOL_ADDRESSES$1 = MAINNET_DEPLOYMENT$6.panoptic.additionalPools?.ethUsdc5bpsV3;
15207
+ if (MAINNET_V3_POOL_ADDRESSES$1 === void 0) throw new Error("Missing mainnet ETH/USDC 5bps v3 Panoptic pool deployment");
15199
15208
  const MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES$1 = {
15200
15209
  panopticPool: "0x000000007588B488d180899cDEa2080a886D2441",
15201
15210
  collateralTracker0: "0x6cd0186Fb4c32B6fD23279bBE0022506958216f9",
@@ -15220,8 +15229,12 @@ const UsdcPlpVaultMainnetProdConfig = {
15220
15229
  hypoVault: MAINNET_HYPOVAULT_ADDRESSES$1.usdcPlpVault,
15221
15230
  underlyingToken: MAINNET_ETH_USDC_MARKET.currency1
15222
15231
  },
15232
+ automation: {
15233
+ primaryPool: MAINNET_V3_POOL_ADDRESSES$1.panopticPool,
15234
+ windDownPools: [MAINNET_PANOPTIC_POOL_ADDRESSES$1.panopticPool]
15235
+ },
15223
15236
  manualTxDefaults: { collateralAllocations: [{
15224
- trackerAddress: MAINNET_PANOPTIC_POOL_ADDRESSES$1.collateralTracker1,
15237
+ trackerAddress: MAINNET_V3_POOL_ADDRESSES$1.collateralTracker0,
15225
15238
  allocationBps: 1e4
15226
15239
  }] },
15227
15240
  deltaHedge: {
@@ -15253,6 +15266,10 @@ const UsdcPlpVaultMainnetLegacyConfig = {
15253
15266
  hypoVaultManagerWithMerkleVerification: "0xf42EED8F0d3326ad59fc1f5d4c4009B5F6B4D87c",
15254
15267
  hypoVault: "0x963Fe9c93bc353602656ee4051A75114bA74d6c5"
15255
15268
  },
15269
+ automation: {
15270
+ primaryPool: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES$1.panopticPool,
15271
+ windDownPools: []
15272
+ },
15256
15273
  manualTxDefaults: { collateralAllocations: [{
15257
15274
  trackerAddress: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES$1.collateralTracker0,
15258
15275
  allocationBps: 1e4
@@ -15282,6 +15299,10 @@ const UsdcPlpVaultSepoliaDevConfig = {
15282
15299
  hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES$4.usdcPlpVault,
15283
15300
  underlyingToken: SEPOLIA_ETH_USDC_5BPS_MARKET$2.currency1
15284
15301
  },
15302
+ automation: {
15303
+ primaryPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES$4.panopticPool,
15304
+ windDownPools: []
15305
+ },
15285
15306
  manualTxDefaults: { collateralAllocations: [{
15286
15307
  trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES$4.collateralTracker1,
15287
15308
  allocationBps: 1e4
@@ -15312,6 +15333,10 @@ const UsdcPlpVaultSepoliaProdConfig = {
15312
15333
  hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES$3.usdcPlpVault,
15313
15334
  underlyingToken: SEPOLIA_ETH_USDC_5BPS_MARKET$1.currency1
15314
15335
  },
15336
+ automation: {
15337
+ primaryPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES$3.panopticPool,
15338
+ windDownPools: []
15339
+ },
15315
15340
  manualTxDefaults: { collateralAllocations: [{
15316
15341
  trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES$3.collateralTracker1,
15317
15342
  allocationBps: 1e4
@@ -15328,7 +15353,7 @@ const BASE_PANOPTIC_POOL_ADDRESSES$1 = BASE_DEPLOYMENT$2.panoptic.pool;
15328
15353
  const WethPlpVaultBaseProdConfig = {
15329
15354
  deployment: "prod",
15330
15355
  vaultAssetIndex: 1n,
15331
- manageCycleIntervalMs: 6e5,
15356
+ manageCycleIntervalMs: 864e5,
15332
15357
  vaultCapInUnderlying: 1000000000000000000n,
15333
15358
  vaultCapInShares: 1000000000000000000000000n,
15334
15359
  allowUnlimitedDepositRequestIfCapNotReached: true,
@@ -15343,6 +15368,10 @@ const WethPlpVaultBaseProdConfig = {
15343
15368
  hypoVault: BASE_HYPOVAULT_ADDRESSES$1.wethPlpVault,
15344
15369
  underlyingToken: "0x4200000000000000000000000000000000000006"
15345
15370
  },
15371
+ automation: {
15372
+ primaryPool: BASE_PANOPTIC_POOL_ADDRESSES$1.panopticPool,
15373
+ windDownPools: []
15374
+ },
15346
15375
  manualTxDefaults: { collateralAllocations: [{
15347
15376
  trackerAddress: BASE_PANOPTIC_POOL_ADDRESSES$1.collateralTracker0,
15348
15377
  allocationBps: 1e4
@@ -15357,6 +15386,8 @@ const MAINNET_DEPLOYMENT$5 = requireChainDeployment(MAINNET_CHAIN_ID);
15357
15386
  const MAINNET_HYPOVAULT_ADDRESSES = MAINNET_DEPLOYMENT$5.hypovault.vaults;
15358
15387
  const MAINNET_HYPOVAULT_MANAGER_ADDRESSES = MAINNET_DEPLOYMENT$5.hypovault.managers;
15359
15388
  const MAINNET_PANOPTIC_POOL_ADDRESSES = MAINNET_DEPLOYMENT$5.panoptic.pool;
15389
+ const MAINNET_V3_POOL_ADDRESSES = MAINNET_DEPLOYMENT$5.panoptic.additionalPools?.ethUsdc5bpsV3;
15390
+ if (MAINNET_V3_POOL_ADDRESSES === void 0) throw new Error("Missing mainnet ETH/USDC 5bps v3 Panoptic pool deployment");
15360
15391
  const MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES = {
15361
15392
  panopticPool: "0x000000007588B488d180899cDEa2080a886D2441",
15362
15393
  collateralTracker0: "0x6cd0186Fb4c32B6fD23279bBE0022506958216f9",
@@ -15381,8 +15412,12 @@ const WethPlpVaultMainnetProdConfig = {
15381
15412
  hypoVault: MAINNET_HYPOVAULT_ADDRESSES.wethPlpVault,
15382
15413
  underlyingToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
15383
15414
  },
15415
+ automation: {
15416
+ primaryPool: MAINNET_V3_POOL_ADDRESSES.panopticPool,
15417
+ windDownPools: [MAINNET_PANOPTIC_POOL_ADDRESSES.panopticPool]
15418
+ },
15384
15419
  manualTxDefaults: { collateralAllocations: [{
15385
- trackerAddress: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker0,
15420
+ trackerAddress: MAINNET_V3_POOL_ADDRESSES.collateralTracker1,
15386
15421
  allocationBps: 1e4
15387
15422
  }] },
15388
15423
  deltaHedge: {
@@ -15405,6 +15440,10 @@ const WethPlpVaultMainnetLegacyConfig = {
15405
15440
  hypoVaultManagerWithMerkleVerification: "0xcc80f113298DdF9D399323D5288aE5Eeaed20D44",
15406
15441
  hypoVault: "0x779a2aa634A004b3a3f3b322083744869BBC6D66"
15407
15442
  },
15443
+ automation: {
15444
+ primaryPool: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.panopticPool,
15445
+ windDownPools: []
15446
+ },
15408
15447
  manualTxDefaults: { collateralAllocations: [{
15409
15448
  trackerAddress: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,
15410
15449
  allocationBps: 1e4
@@ -15433,6 +15472,10 @@ const WethPlpVaultSepoliaDevConfig = {
15433
15472
  hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES$2.wethPlpVault,
15434
15473
  underlyingToken: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14"
15435
15474
  },
15475
+ automation: {
15476
+ primaryPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES$2.panopticPool,
15477
+ windDownPools: []
15478
+ },
15436
15479
  manualTxDefaults: { collateralAllocations: [{
15437
15480
  trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES$2.collateralTracker0,
15438
15481
  allocationBps: 1e4
@@ -15462,6 +15505,10 @@ const WethPlpVaultSepoliaProdConfig = {
15462
15505
  hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES$1.wethPlpVault,
15463
15506
  underlyingToken: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14"
15464
15507
  },
15508
+ automation: {
15509
+ primaryPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES$1.panopticPool,
15510
+ windDownPools: []
15511
+ },
15465
15512
  manualTxDefaults: { collateralAllocations: [{
15466
15513
  trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES$1.collateralTracker0,
15467
15514
  allocationBps: 1e4
@@ -15507,13 +15554,14 @@ const MAINNET_DEPLOYMENT$4 = requireChainDeployment(MAINNET_CHAIN_ID);
15507
15554
  const MAX_PRICE_DEVIATION = 100;
15508
15555
  const WSPCXX_USDC_MAX_PRICE_DEVIATION = 1e4;
15509
15556
  const DEFAULT_TRIGGER_TICK = 150;
15510
- const MAINNET_ETH_USDC_5BPS_V3_POOL = MAINNET_DEPLOYMENT$4.panoptic.additionalPools?.ethUsdc5bpsV3;
15511
- if (MAINNET_ETH_USDC_5BPS_V3_POOL === void 0) throw new Error("Missing mainnet ETH/USDC 5bps v3 Panoptic pool deployment");
15512
- const MAINNET_ETH_USDC_5BPS_V3_POOL_INFO = {
15557
+ const MAINNET_USDC_WETH_5BPS_V3_POOL = MAINNET_DEPLOYMENT$4.panoptic.additionalPools?.ethUsdc5bpsV3;
15558
+ if (MAINNET_USDC_WETH_5BPS_V3_POOL === void 0) throw new Error("Missing mainnet USDC/WETH 5bps v3 Panoptic pool deployment");
15559
+ const MAINNET_USDC_WETH_5BPS_V3_POOL_INFO = {
15513
15560
  maxPriceDeviation: MAX_PRICE_DEVIATION,
15514
- pool: MAINNET_ETH_USDC_5BPS_V3_POOL.panopticPool,
15561
+ pool: MAINNET_USDC_WETH_5BPS_V3_POOL.panopticPool,
15515
15562
  token0: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
15516
- token1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
15563
+ token1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
15564
+ positionScanFromBlock: 25631480n
15517
15565
  };
15518
15566
  const SEPOLIA_DEFAULT_POOL_INFOS = [{
15519
15567
  maxPriceDeviation: MAX_PRICE_DEVIATION,
@@ -15526,30 +15574,34 @@ const BASE_DEFAULT_POOL_INFOS = [{
15526
15574
  maxPriceDeviation: MAX_PRICE_DEVIATION,
15527
15575
  pool: BASE_DEPLOYMENT$1.panoptic.pool.panopticPool,
15528
15576
  token0: getEthUsdcMarket(BASE_DEPLOYMENT$1).currency0,
15529
- token1: getEthUsdcMarket(BASE_DEPLOYMENT$1).currency1
15577
+ token1: getEthUsdcMarket(BASE_DEPLOYMENT$1).currency1,
15578
+ positionScanFromBlock: 43000000n
15530
15579
  }];
15531
15580
  const BASE_VAULT_ADDRESSES = BASE_DEPLOYMENT$1.hypovault.vaults;
15532
15581
  const MAINNET_DEFAULT_POOL_INFOS = [{
15533
15582
  maxPriceDeviation: MAX_PRICE_DEVIATION,
15534
15583
  pool: MAINNET_DEPLOYMENT$4.panoptic.pool.panopticPool,
15535
15584
  token0: getEthUsdcMarket(MAINNET_DEPLOYMENT$4).currency0,
15536
- token1: getEthUsdcMarket(MAINNET_DEPLOYMENT$4).currency1
15537
- }, MAINNET_ETH_USDC_5BPS_V3_POOL_INFO];
15585
+ token1: getEthUsdcMarket(MAINNET_DEPLOYMENT$4).currency1,
15586
+ positionScanFromBlock: 25302077n
15587
+ }, MAINNET_USDC_WETH_5BPS_V3_POOL_INFO];
15538
15588
  const MAINNET_USDC_PLP_POOL_INFOS = [
15539
15589
  MAINNET_DEFAULT_POOL_INFOS[0],
15540
15590
  {
15541
15591
  maxPriceDeviation: WSPCXX_USDC_MAX_PRICE_DEVIATION,
15542
15592
  pool: "0x0f34e6fCda264349Db10d445BD95f529cbe88090",
15543
15593
  token0: "0x8e2eeD8b8B5E13Ea7BF38e50d7821d2C57309072",
15544
- token1: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
15594
+ token1: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
15595
+ positionScanFromBlock: 25302077n
15545
15596
  },
15546
- MAINNET_ETH_USDC_5BPS_V3_POOL_INFO
15597
+ MAINNET_USDC_WETH_5BPS_V3_POOL_INFO
15547
15598
  ];
15548
15599
  const MAINNET_LEGACY_DEFAULT_POOL_INFOS = [{
15549
15600
  maxPriceDeviation: MAX_PRICE_DEVIATION,
15550
15601
  pool: "0x000000007588B488d180899cDEa2080a886D2441",
15551
15602
  token0: getEthUsdcMarket(MAINNET_DEPLOYMENT$4).currency0,
15552
- token1: getEthUsdcMarket(MAINNET_DEPLOYMENT$4).currency1
15603
+ token1: getEthUsdcMarket(MAINNET_DEPLOYMENT$4).currency1,
15604
+ positionScanFromBlock: 24822309n
15553
15605
  }];
15554
15606
  const MAINNET_VAULT_ADDRESSES = MAINNET_DEPLOYMENT$4.hypovault.vaults;
15555
15607
  const MAINNET_LEGACY_VAULT_ADDRESSES = {
@@ -15589,7 +15641,7 @@ const MainnetUSDCPLPVaultPoolInfos = {
15589
15641
  /** Production accountant input before the ETH/USDC 5bps v3 pool authorization executes. */
15590
15642
  const MainnetUSDCPLPPreviousVaultPoolInfos = {
15591
15643
  vaultAddress: MAINNET_VAULT_ADDRESSES.usdcPlpVault,
15592
- poolInfos: MAINNET_USDC_PLP_POOL_INFOS.filter((poolInfo) => poolInfo.pool !== MAINNET_ETH_USDC_5BPS_V3_POOL_INFO.pool).map((poolInfo) => ({
15644
+ poolInfos: MAINNET_USDC_PLP_POOL_INFOS.filter((poolInfo) => poolInfo.pool !== MAINNET_USDC_WETH_5BPS_V3_POOL_INFO.pool).map((poolInfo) => ({
15593
15645
  ...poolInfo,
15594
15646
  triggerTick: DEFAULT_TRIGGER_TICK
15595
15647
  }))
@@ -15799,6 +15851,10 @@ function getMainnetVaultManagerRootHistory({ chainId, vaultAddress }) {
15799
15851
 
15800
15852
  //#endregion
15801
15853
  //#region src/hypoVault/utils/buildManagerInput.ts
15854
+ function resolvePositionScanFromBlock(poolInfo, fallbackPoolDeploymentBlock) {
15855
+ if (poolInfo.positionScanFromBlock !== void 0) return poolInfo.positionScanFromBlock;
15856
+ return fallbackPoolDeploymentBlock === void 0 ? void 0 : BigInt(fallbackPoolDeploymentBlock);
15857
+ }
15802
15858
  const NATIVE_ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
15803
15859
  const NATIVE_ETH_ALIAS_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
15804
15860
  function isUnderlyingEquivalentToken({ token, underlyingToken, wethAddress }) {
@@ -16134,6 +16190,42 @@ function getVaultPoolInfos(vaultAddress, chainId) {
16134
16190
  return artifact?.poolInfos ?? [];
16135
16191
  }
16136
16192
  /**
16193
+ * Enrich a cached subgraph candidate superset with the authoritative position
16194
+ * list recovered from Panoptic dispatch history at `blockNumber`.
16195
+ *
16196
+ * This is the repair path for subgraph lag: `getOpenPositionIds` decodes the
16197
+ * most recent position-changing dispatch in the requested range and returns
16198
+ * the complete on-chain-validated list. Recovered IDs are merged into the
16199
+ * all-time candidate cache; closed IDs remain harmless because the normal
16200
+ * per-block verifier filters them out.
16201
+ */
16202
+ async function recoverVaultCandidateTokenIdsByPool({ viemClient, chainId, vaultAddress, candidatesByPool, poolInfos, blockNumber, fromBlock }) {
16203
+ return Promise.all(poolInfos.map(async (poolInfo) => {
16204
+ const cached = candidatesByPool.find((candidate) => candidate.poolAddress.toLowerCase() === poolInfo.pool.toLowerCase());
16205
+ const cachedIds = cached?.candidates ?? [];
16206
+ const scanFromBlock = fromBlock ?? poolInfo.positionScanFromBlock;
16207
+ if (scanFromBlock === void 0) throw new Error(`Cannot recover positions for pool ${poolInfo.pool}: no recovery lower bound configured`);
16208
+ if (scanFromBlock > blockNumber) return {
16209
+ poolAddress: poolInfo.pool,
16210
+ candidates: [...cachedIds]
16211
+ };
16212
+ const recoveredIds = await getOpenPositionIds({
16213
+ client: viemClient,
16214
+ chainId: BigInt(chainId),
16215
+ poolAddress: poolInfo.pool,
16216
+ account: vaultAddress,
16217
+ fromBlock: scanFromBlock,
16218
+ toBlock: blockNumber
16219
+ });
16220
+ if (recoveredIds === null) throw new Error(`Could not recover an authoritative position list for vault ${vaultAddress} in pool ${poolInfo.pool} between blocks ${scanFromBlock} and ${blockNumber}`);
16221
+ const candidates = sortBigintsAscending(new Set([...cachedIds, ...recoveredIds]));
16222
+ return {
16223
+ poolAddress: poolInfo.pool,
16224
+ candidates
16225
+ };
16226
+ }));
16227
+ }
16228
+ /**
16137
16229
  * Resolve the block-INDEPENDENT candidate tokenIds per pool for a vault — i.e. the
16138
16230
  * two subgraph paging queries only, with no on-chain verification. Pair with
16139
16231
  * {@link verifyVaultOpenTokenIdsAtBlock} to narrow to positions open at a given
@@ -19095,6 +19187,10 @@ const HypoVaultManagerConfigSchema = z.object({
19095
19187
  hypoVault: addressSchema.optional(),
19096
19188
  underlyingToken: addressSchema.optional()
19097
19189
  }).optional(),
19190
+ automation: z.object({
19191
+ primaryPool: addressSchema,
19192
+ windDownPools: z.array(addressSchema)
19193
+ }),
19098
19194
  manualTxDefaults: z.object({ collateralAllocations: z.array(z.object({
19099
19195
  trackerAddress: addressSchema,
19100
19196
  allocationBps: z.number().int().positive().max(1e4)
@@ -19931,6 +20027,30 @@ function getVaultApyErrorMessage(error) {
19931
20027
  if (typeof error === "string") return error;
19932
20028
  return "unknown error";
19933
20029
  }
20030
+ function errorChainIncludes(error, marker) {
20031
+ const visited = new Set();
20032
+ let current = error;
20033
+ while (typeof current === "object" && current !== null && !visited.has(current)) {
20034
+ visited.add(current);
20035
+ const record = current;
20036
+ for (const key of [
20037
+ "message",
20038
+ "shortMessage",
20039
+ "details",
20040
+ "errorName"
20041
+ ]) {
20042
+ const value = record[key];
20043
+ if (typeof value === "string" && value.includes(marker)) return true;
20044
+ }
20045
+ const data = record.data;
20046
+ if (typeof data === "object" && data !== null) {
20047
+ const errorName = data.errorName;
20048
+ if (typeof errorName === "string" && errorName.includes(marker)) return true;
20049
+ }
20050
+ current = record.cause;
20051
+ }
20052
+ return false;
20053
+ }
19934
20054
  function isExpectedHistoricalReadMiss(error) {
19935
20055
  const message = getVaultApyErrorMessage(error);
19936
20056
  return error instanceof VaultApyPreInceptionBlockError || message.includes("returned no data (\"0x\")") || message.includes("InvalidPools()") || message.includes("[computeNAV]") || message.includes("The contract function \"computeNAV\" reverted");
@@ -19942,6 +20062,13 @@ function isStaleOraclePriceError(error) {
19942
20062
  function isStaleOraclePriceReadError(error) {
19943
20063
  return isStaleOraclePriceError(error);
19944
20064
  }
20065
+ function isIncorrectPositionListReadError(error) {
20066
+ return errorChainIncludes(error, "IncorrectPositionList");
20067
+ }
20068
+ const TRUSTED_VAULT_SHARE_PRICE_STATUSES = ["ok", "stale_oracle_override"];
20069
+ function isTrustedVaultSharePriceStatus(status) {
20070
+ return TRUSTED_VAULT_SHARE_PRICE_STATUSES.some((trustedStatus) => trustedStatus === status);
20071
+ }
19945
20072
 
19946
20073
  //#endregion
19947
20074
  //#region src/graphql/hypoVault-sdk.generated.ts
@@ -20429,6 +20556,24 @@ function calculateAnnualizedApyPct({ currentSharePrice, previousSharePrice, days
20429
20556
  //#endregion
20430
20557
  //#region src/hypoVault/staleOracleOverride.ts
20431
20558
  const PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = "0x608060405234801561000f575f5ffd5b5060043610610090575f3560e01c80638da5cb5b116100635780638da5cb5b14610135578063995cac6d14610145578063a519c19814610158578063d597b7361461016b578063f2fde38b1461017e575f5ffd5b8063016ff32e1461009457806328d6ae4a146100cb5780634f0e0ef3146100ec578063715018a61461012b575b5f5ffd5b6100b66100a236600461274b565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100de6100d9366004612766565b610191565b6040519081526020016100c2565b6101137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c2565b6101336101b3565b005b5f546001600160a01b0316610113565b6101336101533660046127d0565b6101c6565b61013361016636600461274b565b610598565b6100de610179366004612881565b6105c3565b61013361018c36600461274b565b611865565b6001602052815f5260405f2081600281106101aa575f80fd5b01549150829050565b6101bb6118a7565b6101c45f6118d3565b565b6101ce6118a7565b6001600160a01b0385165f9081526002602052604090205460ff1615610207576040516372b89e9760e11b815260040160405180910390fd5b5f5b838110156102ac575f5b818110156102a35785858281811061022d5761022d61290d565b610243926020608090920201908101915061274b565b6001600160a01b031686868481811061025e5761025e61290d565b610274926020608090920201908101915061274b565b6001600160a01b03160361029b57604051635c1523a360e11b815260040160405180910390fd5b600101610213565b50600101610209565b505f5b8181101561050a575f5b81811015610347578383828181106102d3576102d361290d565b90506020020160208101906102e8919061274b565b6001600160a01b03168484848181106103035761030361290d565b9050602002016020810190610318919061274b565b6001600160a01b03160361033f57604051637542915f60e11b815260040160405180910390fd5b6001016102b9565b505f5b84811015610501578585828181106103645761036461290d565b61037a926020608090920201908101915061274b565b6001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d99190612921565b6001600160a01b03168484848181106103f4576103f461290d565b9050602002016020810190610409919061274b565b6001600160a01b031614806104db575085858281811061042b5761042b61290d565b610441926020608090920201908101915061274b565b6001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a09190612921565b6001600160a01b03168484848181106104bb576104bb61290d565b90506020020160208101906104d0919061274b565b6001600160a01b0316145b156104f957604051637542915f60e11b815260040160405180910390fd5b60010161034a565b506001016102af565b50838360405160200161051e92919061294a565b60408051808303601f1901815282825280516020918201206001600160a01b0389165f90815260018352929092209190915561055e9184918491016129e4565b60408051808303601f1901815291815281516020928301206001600160a01b03979097165f90815260019283905220019490945550505050565b6105a06118a7565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b5f8080806105d385870187612cd2565b506001600160a01b038b165f90815260016020526040812093965091945092500154826040516020016106069190612e29565b604051602081830303815290604052805190602001201461063a576040516395241ae360e01b815260040160405180910390fd5b5f825160026106499190612eb8565b6001600160401b0381111561066057610660612a26565b604051908082528060200260200182016040528015610689578160200160208202803683370190505b509050885f5b8451811015611537575f5f5f8784815181106106ad576106ad61290d565b60200260200101515f01516001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107179190612ecf565b905087848151811061072b5761072b61290d565b60200260200101516060015160020b61076d828b87815181106107505761075061290d565b60200260200101515f01516107659190612eea565b60020b611922565b131561078c57604051631510fe5b60e31b815260040160405180910390fd5b60605f5f8a87815181106107a2576107a261290d565b60200260200101515f01516001600160a01b031663011492288960018d8b815181106107d0576107d061290d565b60200260200101516040518463ffffffff1660e01b81526004016107f693929190612f0f565b5f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108379190810190612fca565b50909550919350915061085890506001600160801b038083169084166130c2565b95506108648160801c90565b6001600160801b03166108778360801c90565b6001600160801b031661088a91906130c2565b945050505f8986815181106108a1576108a161290d565b60200260200101515f01516001600160a01b03166353aad1d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b9190612ecf565b90505f805b8a88815181106109225761092261290d565b602002602001015151811015610aa8575f8482815181106109455761094561290d565b60200260200101519050806001600160801b03165f0361097857604051632276762d60e11b815260040160405180910390fd5b5f8c8a8151811061098b5761098b61290d565b602002602001015183815181106109a4576109a461290d565b602002602001015190505f6109b882611940565b90505f5b81811015610a24576109ce838261197a565b60020b15610a1c575f5f6109ec896109e787868a611991565b6119fa565b90925090506109fb8584611a79565b5f03610a0e579b81019b9a8b019a610a19565b818d039c50808c039b505b50505b6001016109bc565b505f5f610a3384866001611a8b565b91509150610a3e8190565b600f0b82600f0b610a4f91906130c2565b610a59908d6130e8565b9b50610a658160801d90565b600f0b610a728360801d90565b600f0b610a7f91906130c2565b610a89908c6130e8565b9a50610a95838861310f565b9650506001909401935061091092505050565b508a8781518110610abb57610abb61290d565b60209081029190910101515160405163c79ee60d60e01b81526001600160a01b038a811660048301529091169063c79ee60d90602401602060405180830381865afa158015610b0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190613122565b8114610b4f57604051632276762d60e11b815260040160405180910390fd5b5050505f6001600160a01b0316888581518110610b6e57610b6e61290d565b6020026020010151602001516001600160a01b031603610bca5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888581518110610baf57610baf61290d565b6020908102919091018101516001600160a01b039092169101525b5f808080805b8a51811015610d86578c8981518110610beb57610beb61290d565b6020026020010151602001516001600160a01b03168b8281518110610c1257610c1261290d565b60200260200101516001600160a01b031603610c2d57600192505b8c8981518110610c3f57610c3f61290d565b6020026020010151604001516001600160a01b03168b8281518110610c6657610c6661290d565b60200260200101516001600160a01b031603610c8157600191505b5f6001600160a01b03168b8281518110610c9d57610c9d61290d565b60200260200101516001600160a01b031603610d7e5782610d09578c8981518110610cca57610cca61290d565b6020026020010151602001518b8281518110610ce857610ce861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b81610d79578c8981518110610d2057610d2061290d565b6020026020010151604001518b84610d39576001610d3b565b5f5b610d489060ff168461310f565b81518110610d5857610d5861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b610d86565b600101610bd0565b5081610e735773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168c8981518110610dbc57610dbc61290d565b6020026020010151602001516001600160a01b031614610e64578b8881518110610de857610de861290d565b60209081029190910181015101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa158015610e3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5f9190613122565b610e70565b886001600160a01b0316315b93505b80610f12578b8881518110610e8a57610e8a61290d565b6020026020010151604001516001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401610ed091906001600160a01b0391909116815260200190565b602060405180830381865afa158015610eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0f9190613122565b92505b5f8c8981518110610f2557610f2561290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8f9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190613122565b90508c898151811061100d5761100d61290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b81526004016110a491815260200190565b602060405180830381865afa1580156110bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e39190613122565b6110ed90896130e8565b97508c89815181106111015761110161290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa1580156111b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190613122565b90508c89815181106111e9576111e961290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112539190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161128091815260200190565b602060405180830381865afa15801561129b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190613122565b6112c990886130e8565b96505050508e6001600160a01b03168a87815181106112ea576112ea61290d565b6020026020010151602001516001600160a01b0316146114245773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168a87815181106113345761133461290d565b6020026020010151602001516001600160a01b031614801561138757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f6001600160a01b0316145b6114245789868151811061139d5761139d61290d565b60200260200101516060015160020b6113d88c88815181106113c1576113c161290d565b602002602001015160200151856107659190612eea565b13156113f757604051631510fe5b60e31b815260040160405180910390fd5b5f61140184611ae4565b905061140d8682611dff565b955082156114225761141f8382611dff565b92505b505b8e6001600160a01b03168a87815181106114405761144061290d565b6020026020010151604001516001600160a01b0316146114f35789868151811061146c5761146c61290d565b60200260200101516060015160020b6114a78c88815181106114905761149061290d565b602002602001015160400151856107659190612eea565b13156114c657604051631510fe5b60e31b815260040160405180910390fd5b5f6114d084611ae4565b90506114dc8582611e82565b945081156114f1576114ee8282611e82565b91505b505b61150661150085876130e8565b5f611eef565b611510828461310f565b61151a919061310f565b611524908d61310f565b9b50506001909401935061068f92505050565b505f611545888a018a612cd2565b6001600160a01b0386165f908152600160208190526040909120919550909350915061156e9050565b0154816040516020016115819190613139565b60405160208183030381529060405280519060200120146115b557604051637560978b60e11b815260040160405180910390fd5b5f5b815181101561178e578a6001600160a01b03168282815181106115dc576115dc61290d565b60200260200101516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116439190612921565b6001600160a01b03161461166a57604051635de194d760e01b815260040160405180910390fd5b5f82828151811061167d5761167d61290d565b60209081029190910101516040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa1580156116cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f19190613122565b90508282815181106117055761170561290d565b60200260200101516001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611755573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117799190613122565b611783908a61310f565b9850506001016115b7565b505f9050805b83518110156117dc578a6001600160a01b03168482815181106117b9576117b961290d565b60200260200101516001600160a01b0316036117d457600191505b600101611794565b5080611857576040516370a0823160e01b81526001600160a01b0383811660048301528b16906370a0823190602401602060405180830381865afa158015611826573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184a9190613122565b611854908861310f565b96505b505050505050949350505050565b61186d6118a7565b6001600160a01b03811661189b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6118a4816118d3565b50565b5f546001600160a01b031633146101c45760405163118cdaa760e01b8152336004820152602401611892565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f82136119385761193382613179565b61193a565b815b92915050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b81106119745781600101915061195c565b50919050565b5f6110006064603084020184901c5b069392505050565b5f808061199e8686611f04565b90925090505f6119ae8787611f3b565b6119c1906001600160801b038716612eb8565b90506119cd8787611f4d565b5f036119e8576119de838383611f5f565b93505050506119f3565b6119de838383612008565b9392505050565b5f5f611a068360e81c90565b60020b8460020b1215611a2357611a1c8361203c565b9150611a72565b611a2d8360d01c90565b60020b8460020b12611a4957611a42836120ae565b9050611a72565b611a5b611a5684866120f5565b61203c565b9150611a6f611a6a8486612115565b6120ae565b90505b9250929050565b5f60026048603084020184901c611989565b5f5f5f611a9786611940565b90505f5b818114611ada575f5f611ab08989858a612133565b9092509050611abf86836121d9565b9550611acb85826121d9565b94508260010192505050611a9b565b5050935093915050565b5f5f5f8360020b12611af9578260020b611b00565b8260020b5f035b9050620d89e8811115611b26576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03611b3b57600160801b611b4d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611b81576ffff97272373d413259a46990580e213a0260801c5b6004821615611ba0576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611bbf576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611bde576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611bfd576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611c1c576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611c3b576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611c5b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611c7b576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611c9b576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611cbb576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611cdb576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611cfb576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611d1b576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611d3b576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611d5c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611d7c576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611d9b576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611db8576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611dd757805f1981611dd357611dd3613193565b0490505b640100000000810615611deb576001611ded565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0383161015611e5a575f611e3f611e3a611e288661225f565b6002866001600160a01b03160a61226f565b6122cd565b90505f8412611e4e5780611e52565b805f035b91505061193a565b5f611e3f611e3a611e6a8661225f565b611e7d6001600160a01b038716806122f6565b612354565b5f6001600160801b036001600160a01b0383161015611ec2575f611e3f611e3a611eab8661225f565b600160c01b6002876001600160a01b03160a6123b2565b5f611e3f611e3a611ed28661225f565b600160801b611eea6001600160a01b038816806122f6565b6123b2565b5f818313611efd57816119f3565b5090919050565b5f80611f30611f188585603002604c011c90565b611f22868661197a565b603087901c61ffff1661245c565b909590945092505050565b5f60806041603084020184901c611989565b5f60026040603084020184901c611989565b5f5f611f6a85611ae4565b90505f611f7685611ae4565b90505f611faa85611f99846001600160a01b0316866001600160a01b031661247a565b8585036001600160a01b03166123b2565b90506001600160801b03811115611fd45760405163528073f560e11b815260040160405180910390fd5b6001600160801b03811660d087901b62ffffff60d01b1660e889901b6001600160e81b03191601015b979650505050505050565b5f5f61201385611ae4565b90505f61201f85611ae4565b90505f611faa85600160601b8585036001600160a01b03166123b2565b5f5f61205061204b8460e81c90565b611ae4565b90505f61206061204b8560d01c90565b90506001600160a01b0382166120986060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166123b2565b816120a5576120a5613193565b04949350505050565b5f5f6120bd61204b8460e81c90565b90505f6120cd61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b031661247a565b949350505050565b5f6119f36001600160e81b0384168360e81b6001600160e81b0319160190565b5f6119f362ffffff60d01b1984168360d01b62ffffff60d01b160190565b5f5f5f612142878787876124d8565b90505f61214f8887611a79565b15905061215c88876125ab565b5f0361219f57801561218c57612185612179836125bd565b6125bd565b6001600160801b031690565b92506121ce565b612198612179836125bd565b93506121ce565b80156121bb576121856121b56121748460801c90565b60801b90565b6121cb6121b56121748460801c90565b93505b505094509492505050565b5f5f6121e58360801d90565b600f0b6121f28560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061221e57508181600f0b14155b1561223c57604051633486405d60e21b815260040160405180910390fd5b608083901b6001600160801b03828701166001600160801b031987160101611ffd565b5f5f821361193857815f0361193a565b5f80805f19848609848602925082811083820303915050805f03612298575060c01c905061193a565b80600160c01b116122a7575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f6001600160ff1b038211156119385760405163b668004560e01b815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f0361231f575060401c905061193a565b80600160401b1161232e575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f0361237d575060801c905061193a565b80600160801b1161238c575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f036123e6575f84116123db575f5ffd5b5082900490506119f3565b8084116123f1575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f5f5f61246a86866125e8565b9088039897019695505050505050565b5f80805f19848609848602925082811083820303915050805f036124a3575060601c905061193a565b80600160601b116124b2575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f8080806124e6888761197a565b60020b1515905080612501576002606460308802011b880197505b5f61250d89888a611991565b90506125198988611a79565b1580156125235750855b8061253f57506125338988611a79565b1580159061253f575085155b80612548575081155b15612568576125568161262a565b93506125618161268b565b925061257f565b6125718161203c565b935061257c816120ae565b92505b61259e6001600160801b0385168460801b6001600160801b0319160190565b9998505050505050505050565b5f60026049603084020184901c611989565b805f600f82900b12156125e35760405163b668004560e01b815260040160405180910390fd5b919050565b5f8060026125f684866131a7565b61260091906131c6565b61261f61260d858761320a565b62ffffff166002808204910615150190565b915091509250929050565b5f5f61263961204b8460e81c90565b90505f61264961204b8560d01c90565b90506120ed61267a6060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166126ca565b6001846001600160a01b03166126ca565b5f5f61269a61204b8460e81c90565b90505f6126aa61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b0316612706565b5f6126d68484846123b2565b90505f82806126e7576126e7613193565b84860911156119f3575f1981106126fc575f5ffd5b6001019392505050565b5f612711838361247a565b90505f600160601b838509111561193a575f19811061272e575f5ffd5b60010192915050565b6001600160a01b03811681146118a4575f5ffd5b5f6020828403121561275b575f5ffd5b81356119f381612737565b5f5f60408385031215612777575f5ffd5b823561278281612737565b946020939093013593505050565b5f5f83601f8401126127a0575f5ffd5b5081356001600160401b038111156127b6575f5ffd5b6020830191508360208260051b8501011115611a72575f5ffd5b5f5f5f5f5f606086880312156127e4575f5ffd5b85356127ef81612737565b945060208601356001600160401b03811115612809575f5ffd5b8601601f81018813612819575f5ffd5b80356001600160401b0381111561282e575f5ffd5b8860208260071b8401011115612842575f5ffd5b6020919091019450925060408601356001600160401b03811115612864575f5ffd5b61287088828901612790565b969995985093965092949392505050565b5f5f5f5f60608587031215612894575f5ffd5b843561289f81612737565b935060208501356128af81612737565b925060408501356001600160401b038111156128c9575f5ffd5b8501601f810187136128d9575f5ffd5b80356001600160401b038111156128ee575f5ffd5b8760208284010111156128ff575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612931575f5ffd5b81516119f381612737565b8060020b81146118a4575f5ffd5b602080825281018290525f8360408301825b858110156129da57823561296f81612737565b6001600160a01b03168252602083013561298881612737565b6001600160a01b0316602083015260408301356129a481612737565b6001600160a01b0316604083015260608301356129c08161293c565b60020b60608301526080928301929091019060010161295c565b5095945050505050565b602080825281018290525f8360408301825b858110156129da578235612a0981612737565b6001600160a01b03168252602092830192909101906001016129f6565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612a5c57612a5c612a26565b60405290565b604051606081016001600160401b0381118282101715612a5c57612a5c612a26565b604051601f8201601f191681016001600160401b0381118282101715612aac57612aac612a26565b604052919050565b5f6001600160401b03821115612acc57612acc612a26565b5060051b60200190565b5f82601f830112612ae5575f5ffd5b8135612af8612af382612ab4565b612a84565b8082825260208201915060208360071b860101925085831115612b19575f5ffd5b602085015b838110156129da5760808188031215612b35575f5ffd5b612b3d612a3a565b8135612b4881612737565b81526020820135612b5881612737565b60208201526040820135612b6b81612737565b60408201526060820135612b7e8161293c565b60608201528352602090920191608001612b1e565b5f82601f830112612ba2575f5ffd5b8135612bb0612af382612ab4565b8082825260208201915060208360051b860101925085831115612bd1575f5ffd5b602085015b838110156129da5780356001600160401b03811115612bf3575f5ffd5b8601603f81018813612c03575f5ffd5b6020810135612c14612af382612ab4565b808282526020820191506020808460051b8601010192508a831115612c37575f5ffd5b6040840193505b82841015612c59578335825260209384019390910190612c3e565b86525050602093840193919091019050612bd6565b5f82601f830112612c7d575f5ffd5b8135612c8b612af382612ab4565b8082825260208201915060208360051b860101925085831115612cac575f5ffd5b602085015b838110156129da578035612cc481612737565b835260209283019201612cb1565b5f5f5f5f60808587031215612ce5575f5ffd5b84356001600160401b03811115612cfa575f5ffd5b8501601f81018713612d0a575f5ffd5b8035612d18612af382612ab4565b80828252602082019150602060608402850101925089831115612d39575f5ffd5b6020840193505b82841015612da6576060848b031215612d57575f5ffd5b612d5f612a62565b8435612d6a8161293c565b81526020850135612d7a8161293c565b60208201526040850135612d8d8161293c565b6040820152825260609390930192602090910190612d40565b965050505060208501356001600160401b03811115612dc3575f5ffd5b612dcf87828801612ad6565b93505060408501356001600160401b03811115612dea575f5ffd5b612df687828801612b93565b92505060608501356001600160401b03811115612e11575f5ffd5b612e1d87828801612c6e565b91505092959194509250565b602080825282518282018190525f918401906040840190835b81811015612e9957835180516001600160a01b0390811685526020808301518216818701526040808401519092169186019190915260609182015160020b9185019190915290930192608090920191600101612e42565b509095945050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761193a5761193a612ea4565b5f60208284031215612edf575f5ffd5b81516119f38161293c565b600282810b9082900b03627fffff198112627fffff8213171561193a5761193a612ea4565b6001600160a01b038416815282151560208083019190915260606040830181905283519083018190525f918401906080840190835b81811015612f62578351835260209384019390920191600101612f44565b5090979650505050505050565b5f82601f830112612f7e575f5ffd5b8151612f8c612af382612ab4565b8082825260208201915060208360051b860101925085831115612fad575f5ffd5b602085015b838110156129da578051835260209283019201612fb2565b5f5f5f5f5f60a08688031215612fde575f5ffd5b85516020870151604088015191965094506001600160401b03811115613002575f5ffd5b8601601f81018813613012575f5ffd5b8051613020612af382612ab4565b8082825260208201915060208360051b85010192508a831115613041575f5ffd5b6020840193505b82841015613063578351825260209384019390910190613048565b8096505050505060608601516001600160401b03811115613082575f5ffd5b61308e88828901612f6f565b92505060808601516001600160401b038111156130a9575f5ffd5b6130b588828901612f6f565b9150509295509295909350565b8181035f8312801583831316838312821617156130e1576130e1612ea4565b5092915050565b8082018281125f83128015821682158216171561310757613107612ea4565b505092915050565b8082018082111561193a5761193a612ea4565b5f60208284031215613132575f5ffd5b5051919050565b602080825282518282018190525f918401906040840190835b81811015612e995783516001600160a01b0316835260209384019390920191600101613152565b5f600160ff1b820161318d5761318d612ea4565b505f0390565b634e487b7160e01b5f52601260045260245ffd5b5f8260020b8260020b028060020b91508082146130e1576130e1612ea4565b5f8160020b8360020b806131e857634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f198214161561320157613201612ea4565b90059392505050565b62ffffff81811683821602908116908181146130e1576130e1612ea456";
20559
+ const STALE_ORACLE_GUARD_PATTERN = /131561([0-9a-f]{4})57604051631510fe5b60e31b/g;
20560
+ const STALE_ORACLE_GUARD_COUNT = 3;
20561
+ /**
20562
+ * Builds a read-only accountant runtime that preserves NAV calculation and all
20563
+ * structural checks while bypassing the three manager-price freshness guards.
20564
+ * The stale manager prices are validation inputs only; NAV continues to use
20565
+ * the pools' current TWAP/current tick values.
20566
+ */
20567
+ function bypassStaleOraclePriceGuards(bytecode) {
20568
+ let replacements = 0;
20569
+ const patchedBytecode = bytecode.replace(STALE_ORACLE_GUARD_PATTERN, (_match, jumpDestination) => {
20570
+ replacements += 1;
20571
+ return `135061${jumpDestination}56604051631510fe5b60e31b`;
20572
+ });
20573
+ if (replacements !== STALE_ORACLE_GUARD_COUNT) throw new Error(`Unexpected PanopticVaultAccountant runtime: found ${replacements} stale-oracle guards.`);
20574
+ return patchedBytecode;
20575
+ }
20576
+ const READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = bypassStaleOraclePriceGuards(PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE);
20432
20577
  const BASE_ACCOUNTANT_ADDRESS = "0x345cA3407942f9d175c9eA8B90e83A36F570f852";
20433
20578
  const MAINNET_ACCOUNTANT_ADDRESS = "0x65aA902AE3135658587FFC36ED51B61c927114e1";
20434
20579
  const LEGACY_MAINNET_ACCOUNTANT_ADDRESS = "0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49";
@@ -20458,23 +20603,23 @@ function hydrateWethImmutables({ bytecode, wethAddress }) {
20458
20603
  }
20459
20604
  const STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT = {
20460
20605
  [normalizeAddressLower(BASE_ACCOUNTANT_ADDRESS)]: hydrateWethImmutables({
20461
- bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20606
+ bytecode: READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20462
20607
  wethAddress: BASE_WETH_ADDRESS
20463
20608
  }),
20464
20609
  [normalizeAddressLower(MAINNET_ACCOUNTANT_ADDRESS)]: hydrateWethImmutables({
20465
- bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20610
+ bytecode: READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20466
20611
  wethAddress: MAINNET_WETH_ADDRESS
20467
20612
  }),
20468
20613
  [normalizeAddressLower(LEGACY_MAINNET_ACCOUNTANT_ADDRESS)]: hydrateWethImmutables({
20469
- bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20614
+ bytecode: READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20470
20615
  wethAddress: MAINNET_WETH_ADDRESS
20471
20616
  }),
20472
20617
  [normalizeAddressLower(SEPOLIA_ACCOUNTANT_ADDRESS)]: hydrateWethImmutables({
20473
- bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20618
+ bytecode: READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20474
20619
  wethAddress: SEPOLIA_WETH_ADDRESS
20475
20620
  }),
20476
20621
  [normalizeAddressLower(TEST_ACCOUNTANT_ADDRESS)]: hydrateWethImmutables({
20477
- bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20622
+ bytecode: READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
20478
20623
  wethAddress: SEPOLIA_WETH_ADDRESS
20479
20624
  })
20480
20625
  };
@@ -20509,6 +20654,13 @@ function resolveChainWethAddress(chainId) {
20509
20654
  function getPlpManagerAddress(chainId, vaultAddress) {
20510
20655
  return getHypoVaultConfigForVault(vaultAddress, chainId)?.addresses?.hypoVaultManagerWithMerkleVerification ?? null;
20511
20656
  }
20657
+ function getPlpPoolInfosAtBlock({ chainId, vaultAddress, blockNumber }) {
20658
+ return getMainnetVaultPoolConfigurationAtBlock({
20659
+ chainId,
20660
+ vaultAddress,
20661
+ blockNumber
20662
+ })?.poolInfos ?? getVaultPoolInfos(vaultAddress, chainId);
20663
+ }
20512
20664
  function createPlpManagerInputStrategy(minBlock) {
20513
20665
  return {
20514
20666
  enabledMetrics: ["nav"],
@@ -20523,6 +20675,22 @@ function createPlpManagerInputStrategy(minBlock) {
20523
20675
  poolInfos
20524
20676
  });
20525
20677
  },
20678
+ recoverCandidates: async ({ chainId, client, vault, blockNumber, fromBlock, candidates }) => {
20679
+ const vaultAddress = vault.id;
20680
+ return recoverVaultCandidateTokenIdsByPool({
20681
+ viemClient: client,
20682
+ chainId,
20683
+ vaultAddress,
20684
+ candidatesByPool: candidates,
20685
+ poolInfos: getPlpPoolInfosAtBlock({
20686
+ chainId,
20687
+ vaultAddress,
20688
+ blockNumber
20689
+ }),
20690
+ blockNumber,
20691
+ fromBlock
20692
+ });
20693
+ },
20526
20694
  managerInputProvider: async ({ chainId, client, vault, blockNumber, candidates }) => {
20527
20695
  const vaultAddress = vault.id;
20528
20696
  if (minBlock !== void 0 && blockNumber < minBlock) throw new VaultApyPreInceptionBlockError({
@@ -20530,12 +20698,11 @@ function createPlpManagerInputStrategy(minBlock) {
20530
20698
  minBlockNumber: minBlock,
20531
20699
  context: `PLP manager input for vault ${vault.id}`
20532
20700
  });
20533
- const historicalPoolConfiguration = getMainnetVaultPoolConfigurationAtBlock({
20701
+ const poolInfos = getPlpPoolInfosAtBlock({
20534
20702
  chainId,
20535
20703
  vaultAddress,
20536
20704
  blockNumber
20537
20705
  });
20538
- const poolInfos = historicalPoolConfiguration?.poolInfos ?? getVaultPoolInfos(vaultAddress, chainId);
20539
20706
  if (poolInfos.length === 0) return DEFAULT_MANAGER_INPUT;
20540
20707
  const tokenIds = candidates === void 0 ? await resolveVaultTokenIdsByPool({
20541
20708
  viemClient: client,
@@ -20597,6 +20764,10 @@ function setVaultApyStrategyOverride({ chainId, vaultAddress, strategy }) {
20597
20764
  const key = buildVaultStrategyKey(chainId, vaultAddress);
20598
20765
  strategyOverridesByVaultKey[key] = strategy;
20599
20766
  }
20767
+ function clearVaultApyStrategyOverride({ chainId, vaultAddress }) {
20768
+ const key = buildVaultStrategyKey(chainId, vaultAddress);
20769
+ delete strategyOverridesByVaultKey[key];
20770
+ }
20600
20771
 
20601
20772
  //#endregion
20602
20773
  //#region src/hypoVault/sharePrice/snapshot.ts
@@ -20613,22 +20784,6 @@ function getAssetsDepositedFromDepositEpochState(value) {
20613
20784
  }
20614
20785
  return null;
20615
20786
  }
20616
- async function estimateNavOffchainFromPoolState({ client, chainId, vaultAddress, underlyingTokenAddress, blockNumber, assetsDeposited }) {
20617
- try {
20618
- const allocationRows = await fetchVaultLendingAllocation({
20619
- client,
20620
- chainId,
20621
- vaultAddress,
20622
- underlyingTokenAddress,
20623
- blockNumber
20624
- });
20625
- const totalUnderlying = allocationRows.reduce((sum, row) => sum + row.allocationUnderlying, 0n);
20626
- const totalAssetsEstimate = totalUnderlying + assetsDeposited;
20627
- return totalAssetsEstimate === 0n ? 0n : totalAssetsEstimate - 1n;
20628
- } catch {
20629
- return null;
20630
- }
20631
- }
20632
20787
  async function fetchVaultSharePriceSnapshot({ client, vault, chainId, windowLabel, blockNumber, readContractFn, candidates, includeTokenIdsInDiagnostics = false }) {
20633
20788
  const vaultAddress = vault.id;
20634
20789
  const accountantAddress = vault.accountant;
@@ -20660,7 +20815,7 @@ async function fetchVaultSharePriceSnapshot({ client, vault, chainId, windowLabe
20660
20815
  return await readContractFn(client, request);
20661
20816
  } catch (error) {
20662
20817
  const details = error instanceof Error ? error.message : typeof error === "string" ? error : "unknown error";
20663
- throw new Error(`[${callName}] ${details}`);
20818
+ throw Object.assign(new Error(`[${callName}] ${details}`), { cause: error });
20664
20819
  }
20665
20820
  };
20666
20821
  const [depositEpochRaw, reservedWithdrawalAssetsRaw, sharesRaw] = await Promise.all([
@@ -20731,29 +20886,16 @@ async function fetchVaultSharePriceSnapshot({ client, vault, chainId, windowLabe
20731
20886
  navSource = "computeNAV";
20732
20887
  } catch (error) {
20733
20888
  if (!isStaleOraclePriceReadError(error)) throw error;
20734
- if (staleOracleStateOverride !== void 0) try {
20735
- const navRawWithOverride = await readWithContext({
20736
- callName: "computeNAV",
20737
- request: {
20738
- ...navRequest,
20739
- stateOverride: staleOracleStateOverride
20740
- }
20741
- });
20742
- nav = toBigInt(navRawWithOverride);
20743
- navSource = "computeNAVStateOverride";
20744
- } catch {}
20745
- if (nav === null) {
20746
- nav = await estimateNavOffchainFromPoolState({
20747
- client,
20748
- chainId,
20749
- vaultAddress,
20750
- underlyingTokenAddress,
20751
- blockNumber,
20752
- assetsDeposited
20753
- });
20754
- if (nav === null) throw error;
20755
- navSource = "offchainLendingEstimate";
20756
- }
20889
+ if (staleOracleStateOverride === void 0) throw error;
20890
+ const navRawWithOverride = await readWithContext({
20891
+ callName: "computeNAV",
20892
+ request: {
20893
+ ...navRequest,
20894
+ stateOverride: staleOracleStateOverride
20895
+ }
20896
+ });
20897
+ nav = toBigInt(navRawWithOverride);
20898
+ navSource = "computeNAVStateOverride";
20757
20899
  }
20758
20900
  if (nav === null) throw new Error(`Unexpected computeNAV output type for vault ${vault.id}`);
20759
20901
  const sharePrice = computeSharePriceFromNavSnapshot({
@@ -20777,6 +20919,103 @@ async function fetchVaultSharePriceSnapshot({ client, vault, chainId, windowLabe
20777
20919
  tokenIdsByPool
20778
20920
  };
20779
20921
  }
20922
+ async function fetchVaultSharePriceSnapshotWithCandidateRecovery({ recoveryFromBlock,...params }) {
20923
+ try {
20924
+ return {
20925
+ snapshot: await fetchVaultSharePriceSnapshot(params),
20926
+ candidates: params.candidates
20927
+ };
20928
+ } catch (error) {
20929
+ const strategy = getVaultApyStrategy({
20930
+ chainId: params.chainId,
20931
+ vaultAddress: params.vault.id
20932
+ });
20933
+ if (!isIncorrectPositionListReadError(error) || strategy.recoverCandidates === void 0 || params.candidates === void 0) throw error;
20934
+ const recoveredCandidates = await strategy.recoverCandidates({
20935
+ chainId: params.chainId,
20936
+ vault: params.vault,
20937
+ client: params.client,
20938
+ blockNumber: params.blockNumber,
20939
+ fromBlock: recoveryFromBlock,
20940
+ candidates: params.candidates
20941
+ });
20942
+ return {
20943
+ snapshot: await fetchVaultSharePriceSnapshot({
20944
+ ...params,
20945
+ candidates: recoveredCandidates
20946
+ }),
20947
+ candidates: recoveredCandidates
20948
+ };
20949
+ }
20950
+ }
20951
+
20952
+ //#endregion
20953
+ //#region src/hypoVault/sharePrice/processor.ts
20954
+ const DEFAULT_CANDIDATE_REFRESH_SECONDS = 3600n;
20955
+ function statusForVaultSharePriceSnapshot(snapshot) {
20956
+ if (snapshot.sharePrice === null) return snapshot.shares <= 0n ? "zero_supply" : "nonpositive_nav";
20957
+ return snapshot.navSource === "computeNAVStateOverride" ? "stale_oracle_override" : "ok";
20958
+ }
20959
+ function createVaultSharePriceProcessor({ chainId, client, candidateRefreshSeconds = DEFAULT_CANDIDATE_REFRESH_SECONDS }) {
20960
+ const candidateCache = new Map();
20961
+ const lastTrustedBlockByVault = new Map();
20962
+ const seededVaults = new Set();
20963
+ async function getCandidates({ strategy, vault, blockTimestamp }) {
20964
+ if (strategy.resolveCandidates === void 0) return void 0;
20965
+ const cached = candidateCache.get(vault.id);
20966
+ if (cached !== void 0 && blockTimestamp - cached.fetchedAtChainTime < candidateRefreshSeconds) return cached.candidates;
20967
+ const candidates = await strategy.resolveCandidates({
20968
+ chainId,
20969
+ vault,
20970
+ client
20971
+ });
20972
+ candidateCache.set(vault.id, {
20973
+ candidates,
20974
+ fetchedAtChainTime: blockTimestamp
20975
+ });
20976
+ return candidates;
20977
+ }
20978
+ async function getRecoveryFromBlock({ vault, recoveryFallbackBlock, loadLastTrustedBlock }) {
20979
+ if (!seededVaults.has(vault.id)) {
20980
+ const persistedBlock = await loadLastTrustedBlock();
20981
+ if (persistedBlock !== void 0) lastTrustedBlockByVault.set(vault.id, persistedBlock);
20982
+ seededVaults.add(vault.id);
20983
+ }
20984
+ return lastTrustedBlockByVault.get(vault.id) ?? recoveryFallbackBlock;
20985
+ }
20986
+ return { async process({ vault, strategy, blockNumber, blockTimestamp, recoveryFallbackBlock, loadLastTrustedBlock, readContractFn, windowLabel = "series" }) {
20987
+ const candidates = await getCandidates({
20988
+ strategy,
20989
+ vault,
20990
+ blockTimestamp
20991
+ });
20992
+ const recoveryFromBlock = await getRecoveryFromBlock({
20993
+ vault,
20994
+ recoveryFallbackBlock,
20995
+ loadLastTrustedBlock
20996
+ });
20997
+ const result = await fetchVaultSharePriceSnapshotWithCandidateRecovery({
20998
+ client,
20999
+ vault,
21000
+ chainId,
21001
+ windowLabel,
21002
+ blockNumber,
21003
+ readContractFn,
21004
+ candidates,
21005
+ recoveryFromBlock
21006
+ });
21007
+ if (result.candidates !== void 0 && result.candidates !== candidates) candidateCache.set(vault.id, {
21008
+ candidates: result.candidates,
21009
+ fetchedAtChainTime: blockTimestamp
21010
+ });
21011
+ const status = statusForVaultSharePriceSnapshot(result.snapshot);
21012
+ if (isTrustedVaultSharePriceStatus(status)) lastTrustedBlockByVault.set(vault.id, blockNumber);
21013
+ return {
21014
+ snapshot: result.snapshot,
21015
+ status
21016
+ };
21017
+ } };
21018
+ }
20780
21019
 
20781
21020
  //#endregion
20782
21021
  //#region src/hypoVault/sharePrice/timeseries.ts
@@ -20936,6 +21175,20 @@ function findLeafForTarget(artifact, description, target) {
20936
21175
  return leaf;
20937
21176
  }
20938
21177
  /**
21178
+ * Finds one authorization leaf by execution semantics rather than its human
21179
+ * description. Address arguments disambiguate calls such as ERC-20 approvals
21180
+ * where one token target can authorize multiple spenders.
21181
+ */
21182
+ function findLeafForTargetAndSignature(artifact, target, functionSignature, addressArguments = []) {
21183
+ const normalizedTarget = target.toLowerCase();
21184
+ const normalizedArguments = addressArguments.map((address) => address.toLowerCase());
21185
+ const matches = artifact.leafs.filter((candidate) => candidate.TargetAddress.toLowerCase() === normalizedTarget && candidate.FunctionSignature === functionSignature && candidate.AddressArguments.length === normalizedArguments.length && candidate.AddressArguments.every((address, index) => address.toLowerCase() === normalizedArguments[index]));
21186
+ if (matches.length !== 1) throw new Error(`Expected exactly one leaf for target ${target}, signature ${functionSignature}, and address arguments [${addressArguments.join(", ")}]; found ${matches.length}`);
21187
+ const [leaf] = matches;
21188
+ if (leaf === void 0) throw new Error("Leaf resolution invariant failed");
21189
+ return leaf;
21190
+ }
21191
+ /**
20939
21192
  * Transforms an array of ManageActions into the argument tuple required by
20940
21193
  * manageVaultWithMerkleVerification.
20941
21194
  *
@@ -21034,5 +21287,5 @@ function getAlchemyWsRpcUrl(chainId, alchemyApiKey) {
21034
21287
  }
21035
21288
 
21036
21289
  //#endregion
21037
- export { BASE_CHAIN_ID, BASE_DEPLOYMENT, BASE_ETH_USDC_5BPS_MARKET, BASE_HYPOVAULT_ADDRESSES, BASE_HYPOVAULT_CORE_ADDRESSES, BASE_HYPOVAULT_MANAGER_ADDRESSES, BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, BASE_PANOPTIC_POOL_ADDRESSES, BASE_PANOPTIC_V2_ADDRESSES, BORROW_INDEX_BITS, BPS_SCALE, BaseUSDCPLPStrategistLeaves, BaseUSDCPLPVaultPoolInfos, BaseWETHPLPStrategistLeaves, BaseWETHPLPVaultPoolInfos, CHAIN_DEPLOYMENTS, CollateralTrackerAbi, CollateralTrackerV1_1Abi, Erc1155Abi, Erc20Abi, HypoVaultAbi, HypoVaultManagerConfigSchema, HypoVaultManagerWithMerkleVerificationAbi, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, MAINNET_V3_AUTHORIZATION_BLOCK, MARKET_EPOCH_BITS, MARKET_EPOCH_SHIFT, MainnetLegacyUSDCPLPStrategistLeaves, MainnetLegacyWETHPLPStrategistLeaves, MainnetUSDCPLPLegacyVaultPoolInfos, MainnetUSDCPLPPreviousStrategistLeaves, MainnetUSDCPLPPreviousVaultPoolInfos, MainnetUSDCPLPStrategistLeaves, MainnetUSDCPLPVaultPoolInfos, MainnetWETHPLPLegacyVaultPoolInfos, MainnetWETHPLPPreviousStrategistLeaves, MainnetWETHPLPPreviousVaultPoolInfos, MainnetWETHPLPStrategistLeaves, MainnetWETHPLPVaultPoolInfos, Multicall3Abi, NonFungiblePositionManagerAbi, PanopticFactoryV3Abi, PanopticFactoryV4Abi, PanopticHelperAbi, PanopticPoolAbi, PanopticPoolV1_1Abi, PanopticQueryV1_1Abi, PanopticVaultAccountantAbi, PanopticVaultAccountantManagerInputAbi, PoolManagerAbi, RATE_AT_TARGET_BITS, RescueDistributorAbi, SECONDS_PER_YEAR, SEPOLIA_CHAIN_ID, SEPOLIA_DEPLOYMENT, SEPOLIA_ETH_USDC_5BPS_MARKET, SEPOLIA_HYPOVAULT_ADDRESSES, SEPOLIA_HYPOVAULT_CORE_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, SEPOLIA_PANOPTIC_POOL_ADDRESSES, SEPOLIA_PANOPTIC_V2_ADDRESSES, SemiFungiblePositionManagerAbi, SemiFungiblePositionManagerV1_1Abi, SepoliaUSDCPLPStrategistLeaves, SepoliaUSDCPLPVaultPoolInfos, SepoliaWETHPLPStrategistLeaves, SepoliaWETHPLPVaultPoolInfos, Simple7702AccountAbi, StateViewAbi, UNREALIZED_INTEREST_BITS, UniswapHelperAbi, UniswapHelperV1_1Abi, UniswapMigratorAbi, UniswapV3FactoryAbi, UniswapV3PoolAbi, UsdcPlpVaultBaseProdConfig, UsdcPlpVaultMainnetLegacyConfig, UsdcPlpVaultMainnetProdConfig, UsdcPlpVaultSepoliaDevConfig, UsdcPlpVaultSepoliaProdConfig, VAULT_DISPLAY_NAMES_PER_CHAIN, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN, VaultApyPreInceptionBlockError, WAD, WETHAbi, WethPlpVaultBaseProdConfig, WethPlpVaultMainnetLegacyConfig, WethPlpVaultMainnetProdConfig, WethPlpVaultSepoliaDevConfig, WethPlpVaultSepoliaProdConfig, adjustUnderlyingIdleBalance, annualizePerSecondRateWad, buildClaimVaultShareCalldatas, buildExecuteDepositCalldatas, buildExecuteWithdrawalCalldatas, buildManageArgs, buildManagerInput, buildManagerInputAtBlock, buildRequestWithdrawalCalldatas, buildVaultManagerInput, buildVaultManagerInputAtBlock, builderFactoryAbi, builderWalletAbi, calculateAnnualizedApyPct, calculateAssetsFromShares, calculateAvailableShares, calculateClaimableAssetsFromQueuedWithdrawals, calculateClaimableSharesFromQueuedDeposits, calculateSharesFromAssets, calculateVaultNetLendingApyPctFromTrackerInputs, calculateVaultNetLendingYieldUnderlyingFromTrackerInputs, cancelDeposit, chainToHypoVaultGraphQlAPI, collateralTrackerV2Abi as collateralTrackerAbi, collateralTrackerV2Abi, computeSharePriceFromNavSnapshot, convertJsonTreeToArray, deriveSupplyRatePerSecWad, deriveVaultApyTimeseriesFromSharePrices, encodeApproveFunctionData, encodeCancelDepositFunctionData, encodeDepositFunctionData, encodeExecuteDepositFunctionData, encodeExecuteWithdrawalFunctionData, encodeExecuteWithdrawalMulticallFunctionData, encodeFulfillDepositsFunctionData, encodeFulfillWithdrawalsFunctionData, encodeRequestDepositFunctionData, encodeRequestWithdrawalFunctionData, encodeRequestWithdrawalMulticallFunctionData, encodeWithdrawFunctionData, executeWithdrawal, executeWithdrawalMulticall, fetchFirstDepositTimestampByVaultId, fetchVaultLendingAllocation, fetchVaultNetLendingApyPct, fetchVaultNetLendingYieldUnderlying, fetchVaultSharePriceSnapshot, findLeaf, findLeafForTarget, formatPerSecondRateWadAsAprPct, formatPerSecondRateWadAsApyPct, generateProof, getAlchemyRpcUrl, getAlchemyWsRpcUrl, getCancelDepositContractConfig, getChainDeployment, getEthUsdcMarket, getExecuteWithdrawalContractConfig, getExecuteWithdrawalMulticallContractConfig, getHypoVaultConfigForVault, getHypoVaultGraphQLClient, getIrmCurrent, getIrmCurve, getLendingAllocationRows, getMainnetV3AuthorizationArtifactsAtBlock, getMainnetV3AuthorizationGenerations, getMainnetVaultManagerRootAtBlock, getMainnetVaultManagerRootHistory, getMainnetVaultPoolConfigurationAtBlock, getMainnetVaultPoolConfigurationHistory, getMinQueuedDepositEpoch, getProofsFromDigests, getProofsUsingTree, getRequestDepositContractConfig, getRequestWithdrawalContractConfig, getRequestWithdrawalMulticallContractConfig, getStaleOracleOverrideBytecodeForAccountant, getStaleOracleStateOverrideForAccountant, getVaultApyErrorMessage, getVaultApyStrategy, getVaultPoolInfos, isExpectedHistoricalReadMiss, isStaleOraclePriceError, isStaleOraclePriceReadError, isSupportedChain, packMarketState, panopticFactoryV4Abi as panopticFactoryAbi, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticPoolV2Abi as panopticPoolAbi, panopticPoolV2Abi, panopticQueryAbi, parseCustomError, ratePerSecWadToAprPct, requestDeposit, requestWithdrawal, requestWithdrawalMulticall, requireChainDeployment, resolveMainnetV3AuthorizationArtifacts, resolveVaultDisplayName, resolveVaultHistoricalCandidatesByPool, resolveVaultTokenIdsByPool, riskEngineAbi, semiFungiblePositionManagerV4Abi as semiFungiblePositionManagerAbi, semiFungiblePositionManagerV3Abi, semiFungiblePositionManagerV4Abi, setVaultApyStrategyOverride, simulateCancelDeposit, simulateExecuteWithdrawal, simulateExecuteWithdrawalMulticall, simulateRequestDeposit, simulateRequestWithdrawal, simulateRequestWithdrawalMulticall, useCancelDeposit, useClaimVaultShares, useExecuteWithdrawal, useRequestDeposit, useRequestWithdrawal, utilizationBpsToWad, utilizationPctToWad, verifyVaultOpenTokenIdsAtBlock };
21290
+ export { BASE_CHAIN_ID, BASE_DEPLOYMENT, BASE_ETH_USDC_5BPS_MARKET, BASE_HYPOVAULT_ADDRESSES, BASE_HYPOVAULT_CORE_ADDRESSES, BASE_HYPOVAULT_MANAGER_ADDRESSES, BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, BASE_PANOPTIC_POOL_ADDRESSES, BASE_PANOPTIC_V2_ADDRESSES, BORROW_INDEX_BITS, BPS_SCALE, BaseUSDCPLPStrategistLeaves, BaseUSDCPLPVaultPoolInfos, BaseWETHPLPStrategistLeaves, BaseWETHPLPVaultPoolInfos, CHAIN_DEPLOYMENTS, CollateralTrackerAbi, CollateralTrackerV1_1Abi, Erc1155Abi, Erc20Abi, HypoVaultAbi, HypoVaultManagerConfigSchema, HypoVaultManagerWithMerkleVerificationAbi, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, MAINNET_V3_AUTHORIZATION_BLOCK, MARKET_EPOCH_BITS, MARKET_EPOCH_SHIFT, MAX_VAULT_PRIORITY_FEE_PER_GAS, MAX_VAULT_TRANSACTION_GAS_COST, MIN_VAULT_PRIORITY_FEE_PER_GAS, MainnetLegacyUSDCPLPStrategistLeaves, MainnetLegacyWETHPLPStrategistLeaves, MainnetUSDCPLPLegacyVaultPoolInfos, MainnetUSDCPLPPreviousStrategistLeaves, MainnetUSDCPLPPreviousVaultPoolInfos, MainnetUSDCPLPStrategistLeaves, MainnetUSDCPLPVaultPoolInfos, MainnetWETHPLPLegacyVaultPoolInfos, MainnetWETHPLPPreviousStrategistLeaves, MainnetWETHPLPPreviousVaultPoolInfos, MainnetWETHPLPStrategistLeaves, MainnetWETHPLPVaultPoolInfos, Multicall3Abi, NonFungiblePositionManagerAbi, PanopticFactoryV3Abi, PanopticFactoryV4Abi, PanopticHelperAbi, PanopticPoolAbi, PanopticPoolV1_1Abi, PanopticQueryV1_1Abi, PanopticVaultAccountantAbi, PanopticVaultAccountantManagerInputAbi, PoolManagerAbi, RATE_AT_TARGET_BITS, RescueDistributorAbi, SECONDS_PER_YEAR, SEPOLIA_CHAIN_ID, SEPOLIA_DEPLOYMENT, SEPOLIA_ETH_USDC_5BPS_MARKET, SEPOLIA_HYPOVAULT_ADDRESSES, SEPOLIA_HYPOVAULT_CORE_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, SEPOLIA_PANOPTIC_POOL_ADDRESSES, SEPOLIA_PANOPTIC_V2_ADDRESSES, SemiFungiblePositionManagerAbi, SemiFungiblePositionManagerV1_1Abi, SepoliaUSDCPLPStrategistLeaves, SepoliaUSDCPLPVaultPoolInfos, SepoliaWETHPLPStrategistLeaves, SepoliaWETHPLPVaultPoolInfos, Simple7702AccountAbi, StateViewAbi, TRUSTED_VAULT_SHARE_PRICE_STATUSES, UNREALIZED_INTEREST_BITS, UniswapHelperAbi, UniswapHelperV1_1Abi, UniswapMigratorAbi, UniswapV3FactoryAbi, UniswapV3PoolAbi, UsdcPlpVaultBaseProdConfig, UsdcPlpVaultMainnetLegacyConfig, UsdcPlpVaultMainnetProdConfig, UsdcPlpVaultSepoliaDevConfig, UsdcPlpVaultSepoliaProdConfig, VAULT_DISPLAY_NAMES_PER_CHAIN, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN, VaultApyPreInceptionBlockError, VaultTransactionFeeEstimationError, VaultTransactionGasCostLimitError, WAD, WETHAbi, WethPlpVaultBaseProdConfig, WethPlpVaultMainnetLegacyConfig, WethPlpVaultMainnetProdConfig, WethPlpVaultSepoliaDevConfig, WethPlpVaultSepoliaProdConfig, adjustUnderlyingIdleBalance, annualizePerSecondRateWad, applyVaultTransactionGasCostLimit, bufferVaultTransactionGasEstimate, buildClaimVaultShareCalldatas, buildExecuteDepositCalldatas, buildExecuteWithdrawalCalldatas, buildManageArgs, buildManagerInput, buildManagerInputAtBlock, buildRequestWithdrawalCalldatas, buildVaultManagerInput, buildVaultManagerInputAtBlock, builderFactoryAbi, builderWalletAbi, calculateAnnualizedApyPct, calculateAssetsFromShares, calculateAvailableShares, calculateClaimableAssetsFromQueuedWithdrawals, calculateClaimableSharesFromQueuedDeposits, calculateSharesFromAssets, calculateVaultNetLendingApyPctFromTrackerInputs, calculateVaultNetLendingYieldUnderlyingFromTrackerInputs, cancelDeposit, chainToHypoVaultGraphQlAPI, clearVaultApyStrategyOverride, collateralTrackerV2Abi as collateralTrackerAbi, collateralTrackerV2Abi, computeSharePriceFromNavSnapshot, convertJsonTreeToArray, createVaultSharePriceProcessor, deriveSupplyRatePerSecWad, deriveVaultApyTimeseriesFromSharePrices, encodeApproveFunctionData, encodeCancelDepositFunctionData, encodeDepositFunctionData, encodeExecuteDepositFunctionData, encodeExecuteWithdrawalFunctionData, encodeExecuteWithdrawalMulticallFunctionData, encodeFulfillDepositsFunctionData, encodeFulfillWithdrawalsFunctionData, encodeRequestDepositFunctionData, encodeRequestWithdrawalFunctionData, encodeRequestWithdrawalMulticallFunctionData, encodeWithdrawFunctionData, executeWithdrawal, executeWithdrawalMulticall, fetchFirstDepositTimestampByVaultId, fetchVaultLendingAllocation, fetchVaultNetLendingApyPct, fetchVaultNetLendingYieldUnderlying, fetchVaultSharePriceSnapshot, fetchVaultSharePriceSnapshotWithCandidateRecovery, findLeaf, findLeafForTarget, findLeafForTargetAndSignature, formatPerSecondRateWadAsAprPct, formatPerSecondRateWadAsApyPct, generateProof, getAlchemyRpcUrl, getAlchemyWsRpcUrl, getCancelDepositContractConfig, getChainDeployment, getEthUsdcMarket, getExecuteWithdrawalContractConfig, getExecuteWithdrawalMulticallContractConfig, getHypoVaultConfigForVault, getHypoVaultGraphQLClient, getIrmCurrent, getIrmCurve, getLendingAllocationRows, getMainnetV3AuthorizationArtifactsAtBlock, getMainnetV3AuthorizationGenerations, getMainnetVaultManagerRootAtBlock, getMainnetVaultManagerRootHistory, getMainnetVaultPoolConfigurationAtBlock, getMainnetVaultPoolConfigurationHistory, getMinQueuedDepositEpoch, getProofsFromDigests, getProofsUsingTree, getRequestDepositContractConfig, getRequestWithdrawalContractConfig, getRequestWithdrawalMulticallContractConfig, getStaleOracleOverrideBytecodeForAccountant, getStaleOracleStateOverrideForAccountant, getVaultApyErrorMessage, getVaultApyStrategy, getVaultPoolInfos, getVaultTransactionFeeQuote, isExpectedHistoricalReadMiss, isIncorrectPositionListReadError, isStaleOraclePriceError, isStaleOraclePriceReadError, isSupportedChain, isTrustedVaultSharePriceStatus, packMarketState, panopticFactoryV4Abi as panopticFactoryAbi, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticPoolV2Abi as panopticPoolAbi, panopticPoolV2Abi, panopticQueryAbi, parseCustomError, ratePerSecWadToAprPct, recoverVaultCandidateTokenIdsByPool, requestDeposit, requestWithdrawal, requestWithdrawalMulticall, requireChainDeployment, resolveMainnetV3AuthorizationArtifacts, resolvePositionScanFromBlock, resolveVaultDisplayName, resolveVaultHistoricalCandidatesByPool, resolveVaultTokenIdsByPool, riskEngineAbi, semiFungiblePositionManagerV4Abi as semiFungiblePositionManagerAbi, semiFungiblePositionManagerV3Abi, semiFungiblePositionManagerV4Abi, setVaultApyStrategyOverride, simulateCancelDeposit, simulateExecuteWithdrawal, simulateExecuteWithdrawalMulticall, simulateRequestDeposit, simulateRequestWithdrawal, simulateRequestWithdrawalMulticall, statusForVaultSharePriceSnapshot, useCancelDeposit, useClaimVaultShares, useExecuteWithdrawal, useRequestDeposit, useRequestWithdrawal, utilizationBpsToWad, utilizationPctToWad, validateVaultSignedTransactionFeeCaps, verifyVaultOpenTokenIdsAtBlock };
21038
21291
  //# sourceMappingURL=index.js.map