@oakagentkit/core 0.3.4 → 0.3.6

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 (564) hide show
  1. package/build/dist/api/addresses.d.ts +14 -0
  2. package/build/dist/api/addresses.js +1 -1
  3. package/build/dist/api/chain.js +1 -1
  4. package/build/dist/api/history.d.ts +2 -0
  5. package/build/dist/api/history.js +1 -1
  6. package/build/dist/api/identity-link.js +1 -1
  7. package/build/dist/api/metadata.js +1 -1
  8. package/build/dist/api/modules/beefy/boosts.js +1 -1
  9. package/build/dist/api/modules/beefy/clm.js +1 -1
  10. package/build/dist/api/modules/beefy/guard.js +1 -1
  11. package/build/dist/api/modules/beefy/index.js +1 -1
  12. package/build/dist/api/modules/beefy/liquidity.js +1 -1
  13. package/build/dist/api/modules/beefy/management.js +1 -1
  14. package/build/dist/api/modules/beefy/vaults.js +1 -1
  15. package/build/dist/api/modules/borro/actions.js +1 -1
  16. package/build/dist/api/modules/borro/index.js +1 -1
  17. package/build/dist/api/modules/borro/liquidity.js +1 -1
  18. package/build/dist/api/modules/borro/positions.js +1 -1
  19. package/build/dist/api/modules/borro/reader.js +1 -1
  20. package/build/dist/api/modules/chop/actions.d.ts +13 -1
  21. package/build/dist/api/modules/chop/actions.js +1 -1
  22. package/build/dist/api/modules/chop/checks.js +1 -1
  23. package/build/dist/api/modules/chop/copy.d.ts +1 -0
  24. package/build/dist/api/modules/chop/copy.js +1 -1
  25. package/build/dist/api/modules/chop/display.d.ts +36 -0
  26. package/build/dist/api/modules/chop/display.js +1 -0
  27. package/build/dist/api/modules/chop/guard.js +1 -1
  28. package/build/dist/api/modules/chop/index.js +1 -1
  29. package/build/dist/api/modules/chop/pins.d.ts +1 -0
  30. package/build/dist/api/modules/chop/pins.js +1 -1
  31. package/build/dist/api/modules/chop/positions.js +1 -1
  32. package/build/dist/api/modules/chop/reader.d.ts +6 -1
  33. package/build/dist/api/modules/chop/reader.js +1 -1
  34. package/build/dist/api/modules/chop/types.d.ts +7 -0
  35. package/build/dist/api/modules/chop/unfarm.d.ts +16 -0
  36. package/build/dist/api/modules/chop/unfarm.js +1 -0
  37. package/build/dist/api/modules/clanker/extensions.js +1 -1
  38. package/build/dist/api/modules/clanker/index.js +1 -1
  39. package/build/dist/api/modules/clanker/manage.js +1 -1
  40. package/build/dist/api/modules/clanker/pool-config.js +1 -1
  41. package/build/dist/api/modules/clanker/protocol.js +1 -1
  42. package/build/dist/api/modules/clanker/state.js +1 -1
  43. package/build/dist/api/modules/earn/index.js +1 -1
  44. package/build/dist/api/modules/erc8004/common.js +1 -1
  45. package/build/dist/api/modules/erc8004/domain.js +1 -1
  46. package/build/dist/api/modules/erc8004/index.js +1 -1
  47. package/build/dist/api/modules/erc8004/management.js +1 -1
  48. package/build/dist/api/modules/erc8004/reputation.js +1 -1
  49. package/build/dist/api/modules/erc8004/services.js +1 -1
  50. package/build/dist/api/modules/erc8004/thesis.js +1 -1
  51. package/build/dist/api/modules/erc8004/validation.js +1 -1
  52. package/build/dist/api/modules/factor/actions.js +1 -1
  53. package/build/dist/api/modules/factor/api.js +1 -1
  54. package/build/dist/api/modules/factor/checks.js +1 -1
  55. package/build/dist/api/modules/factor/copy.d.ts +11 -11
  56. package/build/dist/api/modules/factor/copy.js +1 -1
  57. package/build/dist/api/modules/factor/guard.js +1 -1
  58. package/build/dist/api/modules/factor/index.js +1 -1
  59. package/build/dist/api/modules/factor/reader.js +1 -1
  60. package/build/dist/api/modules/fobo/client.js +1 -1
  61. package/build/dist/api/modules/fobo/index.js +1 -1
  62. package/build/dist/api/modules/fobo/intent.js +1 -1
  63. package/build/dist/api/modules/fobo/steps.js +1 -1
  64. package/build/dist/api/modules/fobo/verify.js +1 -1
  65. package/build/dist/api/modules/gloam/index.js +1 -1
  66. package/build/dist/api/modules/grove/index.js +1 -1
  67. package/build/dist/api/modules/heyresearch/builder-feed.js +1 -1
  68. package/build/dist/api/modules/heyresearch/index.js +1 -1
  69. package/build/dist/api/modules/heyresearch/public-reads.js +1 -1
  70. package/build/dist/api/modules/heyresearch/scan.js +1 -1
  71. package/build/dist/api/modules/heyresearch/token-facts.js +1 -1
  72. package/build/dist/api/modules/hoodag/chain-reads.js +1 -1
  73. package/build/dist/api/modules/hoodag/index.js +1 -1
  74. package/build/dist/api/modules/hoodag/management.js +1 -1
  75. package/build/dist/api/modules/hoodag/public-reads.js +1 -1
  76. package/build/dist/api/modules/hoodag/reconstruct.js +1 -1
  77. package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
  78. package/build/dist/api/modules/hoodlock/buyback.js +1 -1
  79. package/build/dist/api/modules/hoodlock/commerce.js +1 -1
  80. package/build/dist/api/modules/hoodlock/fee.js +1 -1
  81. package/build/dist/api/modules/hoodlock/guard.js +1 -1
  82. package/build/dist/api/modules/hoodlock/index.js +1 -1
  83. package/build/dist/api/modules/hoodlock/lifecycle.js +1 -1
  84. package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
  85. package/build/dist/api/modules/hoodlock/public.js +1 -1
  86. package/build/dist/api/modules/hookr/actions.d.ts +39 -2
  87. package/build/dist/api/modules/hookr/actions.js +1 -1
  88. package/build/dist/api/modules/hookr/addons.js +1 -1
  89. package/build/dist/api/modules/hookr/agent-gate.d.ts +14 -2
  90. package/build/dist/api/modules/hookr/agent-gate.js +1 -1
  91. package/build/dist/api/modules/hookr/agent-link.d.ts +17 -0
  92. package/build/dist/api/modules/hookr/agent-link.js +1 -0
  93. package/build/dist/api/modules/hookr/api-client.d.ts +9 -0
  94. package/build/dist/api/modules/hookr/api-client.js +1 -0
  95. package/build/dist/api/modules/hookr/blocks/advisory.d.ts +41 -0
  96. package/build/dist/api/modules/hookr/blocks/advisory.js +1 -0
  97. package/build/dist/api/modules/hookr/blocks/buy-sell-block.d.ts +7 -0
  98. package/build/dist/api/modules/hookr/blocks/buy-sell-block.js +1 -0
  99. package/build/dist/api/modules/hookr/blocks/core-settings.d.ts +6 -0
  100. package/build/dist/api/modules/hookr/blocks/core-settings.js +1 -0
  101. package/build/dist/api/modules/hookr/blocks/exit-clock.d.ts +14 -0
  102. package/build/dist/api/modules/hookr/blocks/exit-clock.js +1 -0
  103. package/build/dist/api/modules/hookr/blocks/holder-pot.d.ts +30 -0
  104. package/build/dist/api/modules/hookr/blocks/holder-pot.js +1 -0
  105. package/build/dist/api/modules/hookr/blocks/managed-fee.d.ts +96 -0
  106. package/build/dist/api/modules/hookr/blocks/managed-fee.js +1 -0
  107. package/build/dist/api/modules/hookr/blocks/market-guard.d.ts +116 -0
  108. package/build/dist/api/modules/hookr/blocks/market-guard.js +1 -0
  109. package/build/dist/api/modules/hookr/blocks/market-hours-fee.d.ts +87 -0
  110. package/build/dist/api/modules/hookr/blocks/market-hours-fee.js +1 -0
  111. package/build/dist/api/modules/hookr/blocks/pay-later.d.ts +199 -0
  112. package/build/dist/api/modules/hookr/blocks/pay-later.js +1 -0
  113. package/build/dist/api/modules/hookr/blocks/sandwich-guard.d.ts +3 -0
  114. package/build/dist/api/modules/hookr/blocks/sandwich-guard.js +1 -0
  115. package/build/dist/api/modules/hookr/blocks/storm-fee.d.ts +3 -0
  116. package/build/dist/api/modules/hookr/blocks/storm-fee.js +1 -0
  117. package/build/dist/api/modules/hookr/blocks/swap-cut.d.ts +3 -0
  118. package/build/dist/api/modules/hookr/blocks/swap-cut.js +1 -0
  119. package/build/dist/api/modules/hookr/blocks/swap-reward-mint.d.ts +125 -0
  120. package/build/dist/api/modules/hookr/blocks/swap-reward-mint.js +1 -0
  121. package/build/dist/api/modules/hookr/blocks/wallet-cap.d.ts +3 -0
  122. package/build/dist/api/modules/hookr/blocks/wallet-cap.js +1 -0
  123. package/build/dist/api/modules/hookr/blocks/zap-source.d.ts +161 -0
  124. package/build/dist/api/modules/hookr/blocks/zap-source.js +1 -0
  125. package/build/dist/api/modules/hookr/blocks/zap-target.d.ts +51 -0
  126. package/build/dist/api/modules/hookr/blocks/zap-target.js +1 -0
  127. package/build/dist/api/modules/hookr/claims.d.ts +53 -0
  128. package/build/dist/api/modules/hookr/claims.js +1 -0
  129. package/build/dist/api/modules/hookr/contracts.d.ts +3 -1
  130. package/build/dist/api/modules/hookr/contracts.js +1 -1
  131. package/build/dist/api/modules/hookr/create-cancel.js +1 -1
  132. package/build/dist/api/modules/hookr/discovery.d.ts +2 -2
  133. package/build/dist/api/modules/hookr/discovery.js +1 -1
  134. package/build/dist/api/modules/hookr/fill-bounty.d.ts +2 -0
  135. package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
  136. package/build/dist/api/modules/hookr/gas.d.ts +48 -0
  137. package/build/dist/api/modules/hookr/gas.js +1 -0
  138. package/build/dist/api/modules/hookr/gates.d.ts +51 -0
  139. package/build/dist/api/modules/hookr/gates.js +1 -0
  140. package/build/dist/api/modules/hookr/hook-blocks.d.ts +304 -0
  141. package/build/dist/api/modules/hookr/hook-blocks.js +1 -0
  142. package/build/dist/api/modules/hookr/index.d.ts +4 -2
  143. package/build/dist/api/modules/hookr/index.js +1 -1
  144. package/build/dist/api/modules/hookr/jobs.d.ts +7 -0
  145. package/build/dist/api/modules/hookr/jobs.js +1 -0
  146. package/build/dist/api/modules/hookr/launch-options.d.ts +52 -3
  147. package/build/dist/api/modules/hookr/launch-options.js +1 -1
  148. package/build/dist/api/modules/hookr/launch-profile.d.ts +8 -0
  149. package/build/dist/api/modules/hookr/launch-profile.js +1 -1
  150. package/build/dist/api/modules/hookr/launch-receipt.js +1 -1
  151. package/build/dist/api/modules/hookr/launch.d.ts +24 -0
  152. package/build/dist/api/modules/hookr/launch.js +1 -1
  153. package/build/dist/api/modules/hookr/liquidity.js +1 -1
  154. package/build/dist/api/modules/hookr/lp-positions.js +1 -1
  155. package/build/dist/api/modules/hookr/lp-reads.js +1 -1
  156. package/build/dist/api/modules/hookr/lp-receipt.js +1 -1
  157. package/build/dist/api/modules/hookr/lp-state.d.ts +90 -2
  158. package/build/dist/api/modules/hookr/lp-state.js +1 -1
  159. package/build/dist/api/modules/hookr/pay-later-actions.d.ts +52 -0
  160. package/build/dist/api/modules/hookr/pay-later-actions.js +1 -0
  161. package/build/dist/api/modules/hookr/pins.d.ts +5 -0
  162. package/build/dist/api/modules/hookr/pins.js +1 -1
  163. package/build/dist/api/modules/hookr/pm-liquidity.d.ts +215 -0
  164. package/build/dist/api/modules/hookr/pm-liquidity.js +1 -0
  165. package/build/dist/api/modules/hookr/public-reads.d.ts +1 -1
  166. package/build/dist/api/modules/hookr/public-reads.js +1 -1
  167. package/build/dist/api/modules/hookr/read-utils.js +1 -1
  168. package/build/dist/api/modules/hookr/relay.js +1 -1
  169. package/build/dist/api/modules/hookr/revenue.d.ts +4 -1
  170. package/build/dist/api/modules/hookr/revenue.js +1 -1
  171. package/build/dist/api/modules/hookr/scan.d.ts +25 -0
  172. package/build/dist/api/modules/hookr/scan.js +1 -0
  173. package/build/dist/api/modules/hookr/swap.d.ts +161 -0
  174. package/build/dist/api/modules/hookr/swap.js +1 -0
  175. package/build/dist/api/modules/kyberswap/index.js +1 -1
  176. package/build/dist/api/modules/kyberswap/source-pools.js +1 -1
  177. package/build/dist/api/modules/layerbank/abi.js +1 -1
  178. package/build/dist/api/modules/layerbank/actions.js +1 -1
  179. package/build/dist/api/modules/layerbank/checks.js +1 -1
  180. package/build/dist/api/modules/layerbank/index.js +1 -1
  181. package/build/dist/api/modules/layerbank/merkl.js +1 -1
  182. package/build/dist/api/modules/layerbank/reader.js +1 -1
  183. package/build/dist/api/modules/layerbank/reserve.js +1 -1
  184. package/build/dist/api/modules/lighter/index.js +1 -1
  185. package/build/dist/api/modules/longbow/administration.js +1 -1
  186. package/build/dist/api/modules/longbow/analytics.js +1 -1
  187. package/build/dist/api/modules/longbow/fixed.js +1 -1
  188. package/build/dist/api/modules/longbow/index.js +1 -1
  189. package/build/dist/api/modules/longbow/nft.js +1 -1
  190. package/build/dist/api/modules/longbow/rebates.js +1 -1
  191. package/build/dist/api/modules/longbow/staking.js +1 -1
  192. package/build/dist/api/modules/meridian/index.js +1 -1
  193. package/build/dist/api/modules/meridian/markets.js +1 -1
  194. package/build/dist/api/modules/meridian/rfq.js +1 -1
  195. package/build/dist/api/modules/merkl/discovery.js +1 -1
  196. package/build/dist/api/modules/merkl/index.js +1 -1
  197. package/build/dist/api/modules/merkl/manage.js +1 -1
  198. package/build/dist/api/modules/merkl/protocol.js +1 -1
  199. package/build/dist/api/modules/morpho/allocator.js +1 -1
  200. package/build/dist/api/modules/morpho/bundles.js +1 -1
  201. package/build/dist/api/modules/morpho/in-kind.js +1 -1
  202. package/build/dist/api/modules/morpho/index.js +1 -1
  203. package/build/dist/api/modules/morpho/local-guard.js +1 -1
  204. package/build/dist/api/modules/morpho/midnight.js +1 -1
  205. package/build/dist/api/modules/morpho/protocol.js +1 -1
  206. package/build/dist/api/modules/morpho/vault-management.js +1 -1
  207. package/build/dist/api/modules/morpho/vault-tools.js +1 -1
  208. package/build/dist/api/modules/morpho/vault-v2.js +1 -1
  209. package/build/dist/api/modules/netnet/card-plan.js +1 -1
  210. package/build/dist/api/modules/netnet/card-read.js +1 -1
  211. package/build/dist/api/modules/netnet/card-recovery.js +1 -1
  212. package/build/dist/api/modules/netnet/desk-action.js +1 -1
  213. package/build/dist/api/modules/netnet/desk-read.js +1 -1
  214. package/build/dist/api/modules/netnet/financial.js +1 -1
  215. package/build/dist/api/modules/netnet/index.js +1 -1
  216. package/build/dist/api/modules/netnet/staking.js +1 -1
  217. package/build/dist/api/modules/orbio/index.js +1 -1
  218. package/build/dist/api/modules/orbio/positions.js +1 -1
  219. package/build/dist/api/modules/pendle/costs.js +1 -1
  220. package/build/dist/api/modules/pendle/index.js +1 -1
  221. package/build/dist/api/modules/pendle/markets.js +1 -1
  222. package/build/dist/api/modules/pendle/positions.js +1 -1
  223. package/build/dist/api/modules/pendle/pricecheck.js +1 -1
  224. package/build/dist/api/modules/pendle/reader.js +1 -1
  225. package/build/dist/api/modules/pendle/redeem.js +1 -1
  226. package/build/dist/api/modules/pendle/trade.js +1 -1
  227. package/build/dist/api/modules/pendle/validate.js +1 -1
  228. package/build/dist/api/modules/pendle/verify.js +1 -1
  229. package/build/dist/api/modules/pons/claim.js +1 -1
  230. package/build/dist/api/modules/pons/index.js +1 -1
  231. package/build/dist/api/modules/pons/launch-status.js +1 -1
  232. package/build/dist/api/modules/pons/prices.js +1 -1
  233. package/build/dist/api/modules/pons/reads.js +1 -1
  234. package/build/dist/api/modules/pons/swap-terms.js +1 -1
  235. package/build/dist/api/modules/pons/trade.js +1 -1
  236. package/build/dist/api/modules/poolstrade/index.js +1 -1
  237. package/build/dist/api/modules/priors/coverage.js +1 -1
  238. package/build/dist/api/modules/priors/discovery.js +1 -1
  239. package/build/dist/api/modules/priors/features.js +1 -1
  240. package/build/dist/api/modules/priors/holdings.js +1 -1
  241. package/build/dist/api/modules/priors/index.js +1 -1
  242. package/build/dist/api/modules/priors/integration.js +1 -1
  243. package/build/dist/api/modules/priors/market.js +1 -1
  244. package/build/dist/api/modules/priors/pt.js +1 -1
  245. package/build/dist/api/modules/priors/savings-exit.js +1 -1
  246. package/build/dist/api/modules/priors/starter-line.js +1 -1
  247. package/build/dist/api/modules/priors/stock-swap.js +1 -1
  248. package/build/dist/api/modules/raeto/index.js +1 -1
  249. package/build/dist/api/modules/relay/bootstrap.js +1 -1
  250. package/build/dist/api/modules/relay/discovery.js +1 -1
  251. package/build/dist/api/modules/relay/inbound.js +1 -1
  252. package/build/dist/api/modules/relay/index.js +1 -1
  253. package/build/dist/api/modules/relay/outbound-status.js +1 -1
  254. package/build/dist/api/modules/relay/reads.js +1 -1
  255. package/build/dist/api/modules/spark/actions.js +1 -1
  256. package/build/dist/api/modules/spark/details.js +1 -1
  257. package/build/dist/api/modules/spark/index.js +1 -1
  258. package/build/dist/api/modules/spark/management.js +1 -1
  259. package/build/dist/api/modules/steakhouse/analytics.js +1 -1
  260. package/build/dist/api/modules/steakhouse/erc4626.js +1 -1
  261. package/build/dist/api/modules/steakhouse/index.js +1 -1
  262. package/build/dist/api/modules/steakhouse/local-guard.js +1 -1
  263. package/build/dist/api/modules/steakhouse/management.js +1 -1
  264. package/build/dist/api/modules/steakhouse/v2-exit.js +1 -1
  265. package/build/dist/api/modules/tickerspring/basket-routes.js +1 -1
  266. package/build/dist/api/modules/tickerspring/contract-reads.js +1 -1
  267. package/build/dist/api/modules/tickerspring/discovery.js +1 -1
  268. package/build/dist/api/modules/tickerspring/exit-preview.js +1 -1
  269. package/build/dist/api/modules/tickerspring/guards.js +1 -1
  270. package/build/dist/api/modules/tickerspring/index.js +1 -1
  271. package/build/dist/api/modules/tickerspring/journeys.js +1 -1
  272. package/build/dist/api/modules/tickerspring/ladder.js +1 -1
  273. package/build/dist/api/modules/tickerspring/maker.js +1 -1
  274. package/build/dist/api/modules/tickerspring/order-accounting.js +1 -1
  275. package/build/dist/api/modules/tickerspring/research.js +1 -1
  276. package/build/dist/api/modules/tickerspring/strategies.js +1 -1
  277. package/build/dist/api/modules/uniswap/auction-create.js +1 -1
  278. package/build/dist/api/modules/uniswap/auction.js +1 -1
  279. package/build/dist/api/modules/uniswap/batch.js +1 -1
  280. package/build/dist/api/modules/uniswap/common.js +1 -1
  281. package/build/dist/api/modules/uniswap/fees.js +1 -1
  282. package/build/dist/api/modules/uniswap/index.js +1 -1
  283. package/build/dist/api/modules/uniswap/local-guard.js +1 -1
  284. package/build/dist/api/modules/uniswap/oracle.js +1 -1
  285. package/build/dist/api/modules/uniswap/pool-math.js +1 -1
  286. package/build/dist/api/modules/uniswap/pools.js +1 -1
  287. package/build/dist/api/modules/uniswap/position.js +1 -1
  288. package/build/dist/api/modules/uniswap/protocol.js +1 -1
  289. package/build/dist/api/modules/uniswap/quote-guard.js +1 -1
  290. package/build/dist/api/modules/uniswap/stock-prices.d.ts +25 -0
  291. package/build/dist/api/modules/uniswap/stock-prices.js +1 -1
  292. package/build/dist/api/modules/uniswap/stocks.js +1 -1
  293. package/build/dist/api/modules/uniswap/token-jar.js +1 -1
  294. package/build/dist/api/modules/uniswap/trade-batch.js +1 -1
  295. package/build/dist/api/modules/uniswap/trade.js +1 -1
  296. package/build/dist/api/modules/uniswap/v2.js +1 -1
  297. package/build/dist/api/modules/uniswap/v3.js +1 -1
  298. package/build/dist/api/modules/uniswap/v4.js +1 -1
  299. package/build/dist/api/modules/uniswap/wrap.js +1 -1
  300. package/build/dist/api/modules/velora/claims.js +1 -1
  301. package/build/dist/api/modules/velora/delta-reads.js +1 -1
  302. package/build/dist/api/modules/velora/index.js +1 -1
  303. package/build/dist/api/modules/wormhole/index.js +1 -1
  304. package/build/dist/api/modules/wormhole/scan-text.d.ts +1 -1
  305. package/build/dist/api/positions.js +1 -1
  306. package/build/dist/api/pricenote.js +1 -1
  307. package/build/dist/api/prices.d.ts +5 -0
  308. package/build/dist/api/prices.js +1 -1
  309. package/build/dist/api/rpc.js +1 -1
  310. package/build/dist/api/send.js +1 -1
  311. package/build/dist/api/signing-registry.js +1 -1
  312. package/build/dist/api/signing.js +1 -1
  313. package/build/dist/api/simulate.js +1 -1
  314. package/build/dist/api/swap.d.ts +2 -0
  315. package/build/dist/api/swap.js +1 -1
  316. package/build/dist/api/tokens.d.ts +10 -1
  317. package/build/dist/api/tokens.js +1 -1
  318. package/build/dist/api/tool-policy.js +1 -1
  319. package/build/dist/api/universal-router.js +1 -1
  320. package/build/dist/api/usd-estimate.d.ts +2 -0
  321. package/build/dist/api/usd-estimate.js +1 -1
  322. package/build/dist/chunks/{DMDOSHV7.js → 266VIESP.js} +1 -1
  323. package/build/dist/chunks/{KNBNKG7P.js → 2BKZLF5A.js} +1 -1
  324. package/build/dist/chunks/{HFVXNKA5.js → 2BM2WX2G.js} +1 -1
  325. package/build/dist/chunks/{OY5W7ZSL.js → 2H2OZE6X.js} +1 -1
  326. package/build/dist/chunks/{E76Z2TT4.js → 2QQ5CGQI.js} +1 -1
  327. package/build/dist/chunks/{4PLLS6CT.js → 2VYA6WIN.js} +1 -1
  328. package/build/dist/chunks/{LCH6F5HT.js → 342OZP53.js} +1 -1
  329. package/build/dist/chunks/{FQTO7VJG.js → 3HF6WE4L.js} +1 -1
  330. package/build/dist/chunks/3M7RMROZ.js +1 -0
  331. package/build/dist/chunks/3RGED2KO.js +1 -0
  332. package/build/dist/chunks/{RUSXMQSJ.js → 3XIJCHT7.js} +1 -1
  333. package/build/dist/chunks/3XY44BP5.js +1 -0
  334. package/build/dist/chunks/3YNXQ3EZ.js +1 -0
  335. package/build/dist/chunks/45QP74CE.js +1 -0
  336. package/build/dist/chunks/{NYHKIXJR.js → 4GAU3JLN.js} +1 -1
  337. package/build/dist/chunks/{Y2QADJOB.js → 4P6DRKY3.js} +1 -1
  338. package/build/dist/chunks/{W3DGFMQE.js → 4RTXP2YP.js} +1 -1
  339. package/build/dist/chunks/{7FYM7FJA.js → 4SXRXNHG.js} +1 -1
  340. package/build/dist/chunks/{ZTKT3ZQK.js → 53VBLEYS.js} +1 -1
  341. package/build/dist/chunks/5677LZOV.js +1 -0
  342. package/build/dist/chunks/{ADIPEGNN.js → 5AO2QPWE.js} +1 -1
  343. package/build/dist/chunks/{GQITAJVF.js → 5BPFF7NX.js} +1 -1
  344. package/build/dist/chunks/{PXUML7HJ.js → 5DWQUEBA.js} +1 -1
  345. package/build/dist/chunks/{WAKZWSHB.js → 5KKAN7XQ.js} +1 -1
  346. package/build/dist/chunks/{VVAM3EAK.js → 5N6YJFFA.js} +1 -1
  347. package/build/dist/chunks/{QIB6OMQV.js → 5O67QQIY.js} +1 -1
  348. package/build/dist/chunks/5PNFV7HH.js +1 -0
  349. package/build/dist/chunks/5RAZFRO4.js +1 -0
  350. package/build/dist/chunks/{FAH7FKUT.js → 5UWVXEPD.js} +1 -1
  351. package/build/dist/chunks/5VKVAUFQ.js +1 -0
  352. package/build/dist/chunks/5Y457HYC.js +1 -0
  353. package/build/dist/chunks/64LAWFBE.js +1 -0
  354. package/build/dist/chunks/{JJGZ7W3V.js → 6AS3TGOX.js} +1 -1
  355. package/build/dist/chunks/6EWSLHXL.js +1 -0
  356. package/build/dist/chunks/{6F527FLN.js → 6HNQAYBM.js} +1 -1
  357. package/build/dist/chunks/{FUP53K6G.js → 6LDC5D2S.js} +1 -1
  358. package/build/dist/chunks/{YR44GQG4.js → 6QXTL65K.js} +1 -1
  359. package/build/dist/chunks/6RVAV6BB.js +1 -0
  360. package/build/dist/chunks/{WSILNJS2.js → 6STUQOFL.js} +1 -1
  361. package/build/dist/chunks/{OKXKDDBX.js → 6Y2546JA.js} +1 -1
  362. package/build/dist/chunks/{4Z3IGMU6.js → 7AYP4ATZ.js} +1 -1
  363. package/build/dist/chunks/{YGW4ODAP.js → 7EPU3XGY.js} +1 -1
  364. package/build/dist/chunks/7GL547YZ.js +1 -0
  365. package/build/dist/chunks/7JTXYMNP.js +1 -0
  366. package/build/dist/chunks/{A3BJSQ23.js → 7VU5VCTL.js} +1 -1
  367. package/build/dist/chunks/{Z7FGEWO2.js → 7WXAS54T.js} +1 -1
  368. package/build/dist/chunks/{3D7FXI6G.js → 7X5JVF3F.js} +1 -1
  369. package/build/dist/chunks/{DRLBTB4E.js → A72ADVYF.js} +1 -1
  370. package/build/dist/chunks/{ANIF3JMV.js → AG66NM3J.js} +1 -1
  371. package/build/dist/chunks/{AOX6DKYU.js → AL6UXNGH.js} +1 -1
  372. package/build/dist/chunks/AODUTN65.js +1 -0
  373. package/build/dist/chunks/{PQG3ULRT.js → AONO47JX.js} +1 -1
  374. package/build/dist/chunks/{JTPHZCO3.js → AQJLEG6B.js} +1 -1
  375. package/build/dist/chunks/AZBTNUXF.js +1 -0
  376. package/build/dist/chunks/{O56EZB5Y.js → B5BU645H.js} +1 -1
  377. package/build/dist/chunks/{LQSPWRHN.js → B75SS7H6.js} +1 -1
  378. package/build/dist/chunks/{GBIBRYOV.js → B7HVPHSS.js} +1 -1
  379. package/build/dist/chunks/{LT5P6PZW.js → B7WZJHIJ.js} +1 -1
  380. package/build/dist/chunks/{3A2IKFTV.js → BIFANUTV.js} +1 -1
  381. package/build/dist/chunks/BM4KHOFB.js +1 -0
  382. package/build/dist/chunks/{X3YEDVRN.js → BSV65PCA.js} +1 -1
  383. package/build/dist/chunks/{HDBDBKEA.js → BW755PNH.js} +1 -1
  384. package/build/dist/chunks/{VXCGMALF.js → BWE5PXRE.js} +1 -1
  385. package/build/dist/chunks/{7U62MMUQ.js → BY2OWKZB.js} +1 -1
  386. package/build/dist/chunks/{SRHVSNPX.js → C2H3BWN5.js} +1 -1
  387. package/build/dist/chunks/{F7MGYRPU.js → CCPG6PRL.js} +1 -1
  388. package/build/dist/chunks/{ZTX4WT62.js → CFPJDLTZ.js} +1 -1
  389. package/build/dist/chunks/{OI3N4EW4.js → CG7ABZXH.js} +1 -1
  390. package/build/dist/chunks/CJMVRV34.js +1 -0
  391. package/build/dist/chunks/CQPIR6ER.js +1 -0
  392. package/build/dist/chunks/{FP7DHVK2.js → CR7DPGI6.js} +1 -1
  393. package/build/dist/chunks/{W5FM2OVB.js → CVVNAFUE.js} +1 -1
  394. package/build/dist/chunks/{LEHBRAZX.js → CW37EGPL.js} +1 -1
  395. package/build/dist/chunks/{MI5HZDMH.js → D6JOXK7Q.js} +1 -1
  396. package/build/dist/chunks/{SGHSCK22.js → DJRS3TR5.js} +1 -1
  397. package/build/dist/chunks/{IZFED3R2.js → DLNDJZR4.js} +1 -1
  398. package/build/dist/chunks/{SYERFEJ4.js → DPSFR3ZS.js} +1 -1
  399. package/build/dist/chunks/{2T6O77QZ.js → DV2HVFTM.js} +1 -1
  400. package/build/dist/chunks/{NMJVQX5M.js → DWRRIFXS.js} +1 -1
  401. package/build/dist/chunks/{3ZH5SOC2.js → EFOC337C.js} +1 -1
  402. package/build/dist/chunks/EHQRAA3R.js +1 -0
  403. package/build/dist/chunks/{WX7OYCNS.js → EJIP7RBG.js} +1 -1
  404. package/build/dist/chunks/EPOIAXCV.js +3 -0
  405. package/build/dist/chunks/EWZFZUVF.js +1 -0
  406. package/build/dist/chunks/{OB7BFDOV.js → EYE3ZAJB.js} +1 -1
  407. package/build/dist/chunks/{MQ5F2VOK.js → EZUQMTLE.js} +1 -1
  408. package/build/dist/chunks/F36IA5RI.js +1 -0
  409. package/build/dist/chunks/{DD47RZFU.js → F74ARK4H.js} +1 -1
  410. package/build/dist/chunks/{Q4HSQL65.js → FGGDAAHW.js} +1 -1
  411. package/build/dist/chunks/FMEO7RX7.js +1 -0
  412. package/build/dist/chunks/{V6EVQWAL.js → FN6XY6ET.js} +1 -1
  413. package/build/dist/chunks/G4IX4CYN.js +1 -0
  414. package/build/dist/chunks/G53U6Y4L.js +1 -0
  415. package/build/dist/chunks/{XHFAF5PZ.js → GBIL2I2K.js} +1 -1
  416. package/build/dist/chunks/{RKM62HC5.js → GCFHKJIO.js} +1 -1
  417. package/build/dist/chunks/{K7HTDKAT.js → GMMTHTCP.js} +1 -1
  418. package/build/dist/chunks/{O5QTITN6.js → GRHBE4MQ.js} +1 -1
  419. package/build/dist/chunks/GTJ6LBGB.js +1 -0
  420. package/build/dist/chunks/GV6Z3MET.js +1 -0
  421. package/build/dist/chunks/{GK3D7OKG.js → GVCNTGLC.js} +1 -1
  422. package/build/dist/chunks/GX2RCAHG.js +1 -0
  423. package/build/dist/chunks/{O3XWE4FO.js → H5KU4DUU.js} +1 -1
  424. package/build/dist/chunks/H7ZJ7LAB.js +1 -0
  425. package/build/dist/chunks/{DCGNVMKG.js → HC3QFA5I.js} +1 -1
  426. package/build/dist/chunks/{RK3PPFRX.js → HEQBTHFS.js} +1 -1
  427. package/build/dist/chunks/{C76D54YG.js → HGSFRN57.js} +1 -1
  428. package/build/dist/chunks/HJI7KO6F.js +1 -0
  429. package/build/dist/chunks/{L6CVMDWQ.js → HNBYPHTA.js} +1 -1
  430. package/build/dist/chunks/{MSRCJ2BS.js → HPBTSJW7.js} +1 -1
  431. package/build/dist/chunks/HPO673QQ.js +1 -0
  432. package/build/dist/chunks/{ZFRTBBIW.js → HRGLFGFL.js} +1 -1
  433. package/build/dist/chunks/{DGDMRATN.js → ICHT3H3W.js} +1 -1
  434. package/build/dist/chunks/IJVBCEA2.js +1 -0
  435. package/build/dist/chunks/{2TX7HP6M.js → IKVRFAUP.js} +1 -1
  436. package/build/dist/chunks/IM7ZF7XZ.js +1 -0
  437. package/build/dist/chunks/{I4473OC6.js → IMD33NQS.js} +1 -1
  438. package/build/dist/chunks/IR7KDBFU.js +1 -0
  439. package/build/dist/chunks/{X24YTJST.js → IY7FWTAL.js} +1 -1
  440. package/build/dist/chunks/IYOWMW5B.js +1 -0
  441. package/build/dist/chunks/J2J73XYU.js +1 -0
  442. package/build/dist/chunks/JCS24YBB.js +1 -0
  443. package/build/dist/chunks/JQVTHPUO.js +1 -0
  444. package/build/dist/chunks/{USZCTSPI.js → JTWJT2O3.js} +1 -1
  445. package/build/dist/chunks/{2YYKQGJZ.js → K4CYAWNL.js} +1 -1
  446. package/build/dist/chunks/{7VH6JQ2H.js → K5C6QBOO.js} +1 -1
  447. package/build/dist/chunks/K5OXLIPK.js +1 -0
  448. package/build/dist/chunks/{4PB6MSGZ.js → K6GECT3F.js} +1 -1
  449. package/build/dist/chunks/{HU2JXDLH.js → KB2JWQZ4.js} +1 -1
  450. package/build/dist/chunks/{EFESPGA2.js → KCZUJ57H.js} +1 -1
  451. package/build/dist/chunks/{YW4W3LPQ.js → KHLM6NIZ.js} +1 -1
  452. package/build/dist/chunks/{OIQTZOBN.js → KKGHXNM4.js} +1 -1
  453. package/build/dist/chunks/{SUNTJ6IU.js → KYANIEPX.js} +1 -1
  454. package/build/dist/chunks/{MOZBDCVV.js → L3IAEXQR.js} +1 -1
  455. package/build/dist/chunks/{ZZ6FZGHF.js → L4UFGM7M.js} +1 -1
  456. package/build/dist/chunks/{DMB64UIN.js → L76P6WIH.js} +1 -1
  457. package/build/dist/chunks/{QMNUB2GM.js → LBT6WR4U.js} +1 -1
  458. package/build/dist/chunks/LD3A2KLN.js +1 -0
  459. package/build/dist/chunks/{WRUTW6CG.js → LFSNAQ7V.js} +1 -1
  460. package/build/dist/chunks/{5ZVIAGLX.js → LKRAUTYI.js} +1 -1
  461. package/build/dist/chunks/{23HNDJ76.js → M2SWILNG.js} +1 -1
  462. package/build/dist/chunks/{IT2JLILU.js → MFKDNAHB.js} +1 -1
  463. package/build/dist/chunks/MFQTBUSD.js +1 -0
  464. package/build/dist/chunks/{V4UJMUIB.js → MLN5KTG7.js} +1 -1
  465. package/build/dist/chunks/{S4JUFCT4.js → MSQNOK3I.js} +1 -1
  466. package/build/dist/chunks/{FA3GBXQP.js → MXI7LX2F.js} +1 -1
  467. package/build/dist/chunks/N6YNJGEF.js +1 -0
  468. package/build/dist/chunks/{DXAPKN7H.js → NLC36QHL.js} +1 -1
  469. package/build/dist/chunks/NUTTPUYJ.js +1 -0
  470. package/build/dist/chunks/{O4S6XAYV.js → O7L55XM3.js} +1 -1
  471. package/build/dist/chunks/{NAO7VWZF.js → OCIEVYPR.js} +1 -1
  472. package/build/dist/chunks/{4NBXBKOX.js → OD7CY6BY.js} +1 -1
  473. package/build/dist/chunks/{RUTSEGGD.js → OHZHQSCA.js} +1 -1
  474. package/build/dist/chunks/{T3QEN3S6.js → OIGTTRN5.js} +1 -1
  475. package/build/dist/chunks/{5OTQCE2E.js → P6JE2NRA.js} +1 -1
  476. package/build/dist/chunks/PD5NXIRT.js +1 -0
  477. package/build/dist/chunks/{TXGZ6NWN.js → PG7HZIZL.js} +1 -1
  478. package/build/dist/chunks/{WXZ4LAKO.js → PXVF2SHU.js} +1 -1
  479. package/build/dist/chunks/{UBVE2U6X.js → Q43WPRYU.js} +1 -1
  480. package/build/dist/chunks/QA6Z2CYP.js +2 -0
  481. package/build/dist/chunks/QAAKUIWE.js +1 -0
  482. package/build/dist/chunks/{PQOWIRKQ.js → QAVP3CWL.js} +1 -1
  483. package/build/dist/chunks/{YXXK6EPI.js → QBHY2QRC.js} +1 -1
  484. package/build/dist/chunks/{ELHRXA5U.js → QFK335LC.js} +1 -1
  485. package/build/dist/chunks/{3PHJUFU2.js → QFUSCK5C.js} +1 -1
  486. package/build/dist/chunks/{IPU656WB.js → QKH7ED6B.js} +1 -1
  487. package/build/dist/chunks/{AHUCYDBC.js → QKIQ7ZKD.js} +1 -1
  488. package/build/dist/chunks/{XW3VGWXK.js → QMWHQRYC.js} +1 -1
  489. package/build/dist/chunks/{N6PHSHBE.js → QP2B7AYX.js} +1 -1
  490. package/build/dist/chunks/{VHK5AYC2.js → QZ6V6J6W.js} +1 -1
  491. package/build/dist/chunks/{MDLJFCT4.js → R5Z4HPCA.js} +1 -1
  492. package/build/dist/chunks/RKJFSDGV.js +1 -0
  493. package/build/dist/chunks/RKS3M7L5.js +1 -0
  494. package/build/dist/chunks/{GDOHHXNH.js → RLX6YTNT.js} +1 -1
  495. package/build/dist/chunks/RYEQIZ2H.js +1 -0
  496. package/build/dist/chunks/{USEF3QKG.js → S432S6NA.js} +1 -1
  497. package/build/dist/chunks/S47M3IPR.js +1 -0
  498. package/build/dist/chunks/S65KXMZ7.js +3 -0
  499. package/build/dist/chunks/{2OVJ2BTJ.js → SEXKWYUM.js} +1 -1
  500. package/build/dist/chunks/{2ILYVUFA.js → SRYX65GZ.js} +1 -1
  501. package/build/dist/chunks/{GNOHIL4Q.js → TMENUIBC.js} +1 -1
  502. package/build/dist/chunks/{BSX4LFYI.js → TNHU5UBQ.js} +1 -1
  503. package/build/dist/chunks/{PDPTJMTJ.js → TT2ST3Q3.js} +1 -1
  504. package/build/dist/chunks/TTBB6EFN.js +1 -0
  505. package/build/dist/chunks/{Z5YI6KLN.js → TWVDWNTG.js} +1 -1
  506. package/build/dist/chunks/TZG7HTVM.js +1 -0
  507. package/build/dist/chunks/{OVM4QIET.js → U4MSIH4G.js} +1 -1
  508. package/build/dist/chunks/UEOS6SHR.js +1 -0
  509. package/build/dist/chunks/{EIE2U4OX.js → UGFRBJDQ.js} +1 -1
  510. package/build/dist/chunks/{HUKDISRE.js → UIVOYAO2.js} +1 -1
  511. package/build/dist/chunks/{XRDLMTBJ.js → UMY6SP7C.js} +1 -1
  512. package/build/dist/chunks/UNBRUWSV.js +1 -0
  513. package/build/dist/chunks/{LGLWEGPY.js → UPX3OWKA.js} +1 -1
  514. package/build/dist/chunks/{MHONMLF6.js → URTQNYWU.js} +1 -1
  515. package/build/dist/chunks/{4RCYYN6O.js → V7HTGO23.js} +1 -1
  516. package/build/dist/chunks/{HZSYMGJ2.js → VS7ZA4OF.js} +1 -1
  517. package/build/dist/chunks/{BJ2U2VXJ.js → VTWAVH74.js} +1 -1
  518. package/build/dist/chunks/{5GQJVKVY.js → W5GWK72I.js} +1 -1
  519. package/build/dist/chunks/{65OITTDL.js → W73SLWBT.js} +1 -1
  520. package/build/dist/chunks/WRA3ZC6W.js +1 -0
  521. package/build/dist/chunks/{PRBIC3UK.js → WUONMIA2.js} +1 -1
  522. package/build/dist/chunks/{XL3W7DAQ.js → X3BB6WME.js} +1 -1
  523. package/build/dist/chunks/{K3TZYPSV.js → X53QVHBC.js} +1 -1
  524. package/build/dist/chunks/{LVFI74ST.js → XNJ6NDQQ.js} +1 -1
  525. package/build/dist/chunks/{GBPB7JIB.js → XSQJOOEY.js} +1 -1
  526. package/build/dist/chunks/XUDQYSPU.js +1 -0
  527. package/build/dist/chunks/{VKNKVUAA.js → XWZ5SL5Q.js} +1 -1
  528. package/build/dist/chunks/{365B4YEV.js → XXLQDQEX.js} +1 -1
  529. package/build/dist/chunks/{BDLV42SD.js → Y5T36EEU.js} +1 -1
  530. package/build/dist/chunks/{R73R4KN3.js → YBLJ2MCR.js} +1 -1
  531. package/build/dist/chunks/{WNWRF4HE.js → YZHJ4BAP.js} +1 -1
  532. package/build/dist/chunks/ZSGW2ZSO.js +1 -0
  533. package/build/dist/chunks/{HRAHGYNK.js → ZTNBX4VH.js} +1 -1
  534. package/package.json +1 -1
  535. package/build/dist/chunks/2QP6WGKZ.js +0 -1
  536. package/build/dist/chunks/3AOTYJPX.js +0 -1
  537. package/build/dist/chunks/4E7FJQLL.js +0 -1
  538. package/build/dist/chunks/4J245N3F.js +0 -1
  539. package/build/dist/chunks/4M6XBG6X.js +0 -1
  540. package/build/dist/chunks/BA66J5YQ.js +0 -1
  541. package/build/dist/chunks/BIY2F6MO.js +0 -1
  542. package/build/dist/chunks/CZ66MYKR.js +0 -1
  543. package/build/dist/chunks/DFM4T6ZE.js +0 -1
  544. package/build/dist/chunks/DGCJZ3HO.js +0 -1
  545. package/build/dist/chunks/DHX3Q5RV.js +0 -2
  546. package/build/dist/chunks/DWQJ7NSX.js +0 -1
  547. package/build/dist/chunks/EFUACKDK.js +0 -1
  548. package/build/dist/chunks/EQEMI54U.js +0 -1
  549. package/build/dist/chunks/GYPMUYB5.js +0 -1
  550. package/build/dist/chunks/JFC2QCMW.js +0 -1
  551. package/build/dist/chunks/JW7GLNLB.js +0 -3
  552. package/build/dist/chunks/MEB727X5.js +0 -1
  553. package/build/dist/chunks/MIKQWF6Q.js +0 -3
  554. package/build/dist/chunks/MQK6OP7S.js +0 -1
  555. package/build/dist/chunks/OSMOBKRQ.js +0 -1
  556. package/build/dist/chunks/P6MPKIU2.js +0 -1
  557. package/build/dist/chunks/P7C3TYI4.js +0 -1
  558. package/build/dist/chunks/RN3WUJIO.js +0 -1
  559. package/build/dist/chunks/TI727O2H.js +0 -1
  560. package/build/dist/chunks/UHIJMDD2.js +0 -1
  561. package/build/dist/chunks/VQJXQLFW.js +0 -1
  562. package/build/dist/chunks/W32UECOL.js +0 -1
  563. package/build/dist/chunks/WWNAGOCD.js +0 -1
  564. package/build/dist/chunks/ZNX3YVF2.js +0 -1
@@ -1 +1 @@
1
- import{b as H,c as N}from"./W32UECOL.js";import{a as S}from"./LT5P6PZW.js";import{a as O}from"./G2LAO23N.js";import{a as D}from"./Z7FGEWO2.js";import{a as C}from"./66F5ZH34.js";import{c as _,f as I}from"./NWNYJ26T.js";import{b as d}from"./TI727O2H.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as x,erc20Abi as L,getAddress as c,parseAbi as q,zeroAddress as M}from"viem";var k={timeShares:{factory:"timeFactory",abi:[{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ASSETS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"FOREVER",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_AMOUNT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DIVISOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"minLockAmount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"MIN_TIP_GROWTH",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ISSUE_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_CLAIM_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"currencyAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"address"}]},{name:"lockedTotal",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pendingLocks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"amount"},{type:"uint256",name:"tick"},{type:"uint256",name:"firstLock"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"heldAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"blockNumber"}],outputs:[{type:"uint256"}]},{name:"lockEpochs",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"uint256",name:"joinEpoch"},{type:"uint256",name:"leaveEpoch"}]},{name:"sweepable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"from"},{type:"uint256",name:"max"}],outputs:[{type:"uint256[]",name:"ids"},{type:"uint256",name:"next"}]},{name:"lockCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"lockAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"tuple",components:[{type:"address",name:"owner"},{type:"uint64",name:"lockedAt"},{type:"uint32",name:"firstDay"},{type:"uint128",name:"amount"},{type:"uint32",name:"lastDay"},{type:"uint64",name:"unlockedAt"}]}]},{name:"isIssued",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"}],outputs:[{type:"bool"}]},{name:"unitSupply",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"}],outputs:[{type:"uint256"}]},{name:"currentDay",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"k"}],outputs:[{type:"uint64",name:"timestamp"},{type:"uint256[]",name:"indexes"}]},{name:"index",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"carry",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"pulled",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"paid",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"held",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"dayIndex",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"holder"},{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lockClaimable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"uint32",name:"numberOfDays"}],outputs:[{type:"uint256",name:"lockId"}]},{name:"issue",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"},{type:"address",name:"to"}],outputs:[]},{name:"issueRange",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"firstDay"},{type:"uint256",name:"lastDay"},{type:"address",name:"to"}],outputs:[]},{name:"unlock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"address",name:"to"}],outputs:[]},{name:"syncAssets",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"catchUp",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"max"}],outputs:[{type:"bool",name:"done"}]},{name:"settle",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"roll",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"sweepDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"},{type:"uint256",name:"claimGas"}],outputs:[{type:"uint256[]",name:"amounts"}]},{name:"claim",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimMany",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"days_"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimLock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"allowance",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"address",name:"spender"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"receiver"},{type:"uint256",name:"id"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},dayWrapper:{factory:"wrapperFactory",abi:[{name:"shares",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"day",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"basket",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"previewRedeem",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"amount"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"deposit",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"redeemShort",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"owedTo",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimOwed",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[]},{name:"collect",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},compounder:{factory:"compoundFactory",abi:[{name:"MIN_SHARES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BANDS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BAND_TICKS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ADD_GAS_FLOOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_DRIFT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_PERIOD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_TOLERANCE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"DROP_SCAN",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DROP_CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"parked",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"dropId"}],outputs:[{type:"bool"}]},{name:"syncSides",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"count"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolManager",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolId",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bytes32"}]},{name:"poolKey",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"address",name:"currency0"},{type:"address",name:"currency1"},{type:"uint24",name:"fee"},{type:"int24",name:"tickSpacing"},{type:"address",name:"hooks"}]}]},{name:"quote",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tokenIsCurrency0",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bool"}]},{name:"bandTicks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint128"}]},{name:"reserve",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"bands",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple[]",components:[{type:"int24",name:"tickLower"},{type:"int24",name:"tickUpper"},{type:"uint128",name:"liquidity"}]}]},{name:"anchor",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"int24",name:"high"},{type:"int24",name:"low"},{type:"uint40",name:"lookedAt"}]}]},{name:"creator",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"holdings",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"deposit",type:"function",stateMutability:"payable",inputs:[{type:"uint256",name:"tokensMax"},{type:"uint256",name:"quoteMax"},{type:"address",name:"to"},{type:"uint256",name:"minShares"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"shares"},{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeemUnlocked",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"poke",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"claimDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"}],outputs:[{type:"uint256",name:"tip"}]},{name:"listSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"asset"}],outputs:[{type:"uint256",name:"side"}]},{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_SIDES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"SIDE_READ_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DEAD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"sideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"fixedSideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"side"}],outputs:[{type:"tuple",components:[{type:"address",name:"currency"},{type:"uint256",name:"index"},{type:"uint256",name:"carry"},{type:"uint128",name:"recognized"},{type:"uint128",name:"paid"},{type:"uint128",name:"dropped"},{type:"uint40",name:"droppedAt"}]}]},{name:"sideOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"currency"}],outputs:[{type:"bool",name:"listed"},{type:"uint256",name:"side"}]},{name:"dropStream",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"earningSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideClaimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"account"},{type:"uint256",name:"side"}],outputs:[{type:"uint256"}]},{name:"claimSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"side"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]}};var W=q(["function approve(address spender,uint256 id,uint256 amount) returns (bool)"]),R=t=>I(t,"Provide the documented Hookr add-on parameters."),X=t=>["view","pure"].includes(t.stateMutability);function E(t){return Object.entries(k).flatMap(([e,n])=>n.abi.filter(i=>X(i)===t).map(i=>({role:e,fn:i})))}var B={timeShares:"time-share locker of a revenue token",dayWrapper:"one-day wrapper of time shares",compounder:"compounding vault of a revenue token"};function T(t){return{type:"object",oneOf:E(t).map(({role:e,fn:n})=>({type:"object",properties:{addon:{const:e,description:`Add-on kind "${e}": the ${B[e]??e}.`},token:{..._,description:O.address("Hookr revenue token whose add-on is used")},...e==="dayWrapper"?{day:{...C(),description:'Day number that selects the day wrapper, as a decimal string. Example: "42".'}}:{},function:{const:n.name,description:`Add-on function to call: ${n.name}.`},params:{...H(n.inputs,n.name),description:`Arguments of ${e}.${n.name}; integers are decimal strings.`}},required:["addon","token",...e==="dayWrapper"?["day"]:[],"function","params"],additionalProperties:!1}))}}function P(t,e){let n=E(e).find(a=>a.role===t.addon&&a.fn.name===t.function);if(!n)throw new r("Choose a documented Hookr add-on function.");let i=["addon","token","function","params",...n.role==="dayWrapper"?["day"]:[]];if(Object.keys(t).length!==i.length||Object.keys(t).some(a=>!i.includes(a)))throw new r("Provide exactly the documented Hookr add-on arguments.");let s;try{s=c(String(t.token))}catch{throw new r("Provide a valid revenue token address.")}let p=0n;if(n.role==="dayWrapper"){if(typeof t.day!="string"||!/^(0|[1-9][0-9]*)$/.test(t.day)||t.day.length>78||BigInt(t.day)>=1n<<256n)throw new r("Provide a wrapper day as a decimal integer string.");p=BigInt(t.day)}return{...n,token:s,day:p,...N(n.fn,R(t.params))}}async function $(t,e,n,i){let s=t.clientFor(d),p=async(f,b,v=[])=>s.readContract({address:c(S[f].address),abi:S[f].abi,functionName:b,args:v}),a=R(await p("tokenizer","tokenizations",[n]));if(typeof a.createdAt!="bigint"||a.createdAt<=0n||c(String(a.creator))===M)throw new r("Current Hookr tokenizer has no matching token record; legacy add-ons need their generation-specific route.");let m=e==="compounder"?void 0:c(String(await p("timeFactory","sharesOf",[n]))),u=e==="timeShares"?m:e==="compounder"?c(String(await p("compoundFactory","vaultOf",[n]))):c(String(await p("wrapperFactory","wrapperOf",[m,i])));if(u===M||m===M)throw new r("Hookr add-on is not open yet. Open it with its pinned factory through hookr_action first.");let y=k[e].abi,l=await s.readContract({address:u,abi:y,functionName:e==="dayWrapper"?"shares":"token"});if(c(String(l))!==(e==="dayWrapper"?m:n))throw new r("Hookr add-on disagrees with its factory record.");if(e==="dayWrapper"&&await s.readContract({address:u,abi:y,functionName:"day"})!==i)throw new r("Hookr day wrapper disagrees with its factory day.");return{target:u,shares:m}}async function K(t,e,n){if(t.network==="testnet")throw new r("Hookr add-ons require mainnet, chain 4663.");let{role:i,token:s,day:p,fn:a,values:m,params:u}=P(e,!1),{target:y,shares:l}=await $(t,i,s,p),f=[],b=[],v=0n,h=t.clientFor(d),A=async(o,w)=>{if(w<0n||w>=1n<<128n)throw new r("Hookr add-on funding exceeds its bounded exact approval.");if(!w)return;if(o===M){v+=w,b.push({token:D,amount:w,to:y});return}let g=await h.readContract({address:o,abi:L,functionName:"allowance",args:[n,y]});g>0n&&g!==w&&f.push(t.approval(o,y,"0",d)),f.push(t.approval(o,y,w.toString(),d)),b.push({token:o,amount:w})};if(i==="timeShares"&&a.name==="lock"&&await A(s,u.amount),i==="dayWrapper"&&a.name==="deposit"){let o=u.amount;if(o<=0n||o>=1n<<128n)throw new r("Hookr wrapper deposit needs a positive bounded share amount.");f.push(t.unsignedTx({chainId:d,to:l,value:"0",data:x({abi:W,functionName:"approve",args:[y,p,o]}),description:`Approve exactly ${o} time shares of day ${p} to the factory-recorded wrapper ${y}.`})),b.push({token:l,id:p,amount:o,to:y})}if(i==="compounder"&&a.name==="deposit"){let o=c(String(await h.readContract({address:y,abi:k.compounder.abi,functionName:"quote"})));await A(s,u.tokensMax),await A(o,u.quoteMax)}if(["redeem","redeemShort","redeemUnlocked"].includes(a.name)&&b.push({token:y,amount:u.shares??u.amount,to:M}),a.name==="transfer"&&b.push({token:y,amount:u.amount,to:c(String(u.receiver??u.to)),...i==="timeShares"?{id:u.id}:{}}),u.deadline!==void 0){let o=await h.getBlock();if(typeof o.timestamp!="bigint"||u.deadline<o.timestamp)throw new r("Hookr add-on deadline expired or chain time is unavailable.")}return f.push(t.unsignedTx({chainId:d,to:y,value:v.toString(),data:x({abi:[a],functionName:a.name,args:m}),description:`Hookr ${i}.${a.name}: ${JSON.stringify(e.params)}. Token ${s}${i==="dayWrapper"?`; day ${p}`:""}. Review lock duration, recipients and minimum outputs.`})),{txs:f,inputs:b}}function nt(t){return[{name:"hookr_addon_read",inputSchema:{...T(!0),description:"Read factory-verified current Hookr revenue time shares, day wrappers or compounders: locks, day income, unwrap baskets, bands and side assets. Open factories via hookr_action."},execute:async e=>{let{role:n,token:i,day:s,fn:p,values:a}=P(e,!0),{target:m}=await $(t,n,i,s),u=await t.clientFor(d).readContract({address:m,abi:[p],functionName:p.name,args:a});return{chainId:d,token:i,contract:m,function:p.name,result:JSON.parse(JSON.stringify(u,(y,l)=>typeof l=="bigint"?l.toString():l))}}},{name:"hookr_addon_action",inputSchema:{...T(!1),description:"Preview current Hookr time-share lock/issue/unlock/roll/claims, day wrap/unwrap/owed claims, or compound deposit/redeem/poke/side claims. Exact approvals, factory provenance and local human confirmation required."},execute:async(e,n)=>{let{txs:i}=await K(t,e,n),s=await t.preview(i,n);return{txs:i,preview:s,summary:`Hookr ${e.addon}.${e.function}; verify the receipt and read the resulting lock or balances.`}}}]}export{K as a,nt as b};
1
+ import{b as H,c as N}from"./AZBTNUXF.js";import{a as O}from"./G2LAO23N.js";import{a as D}from"./7WXAS54T.js";import{a as S}from"./B7WZJHIJ.js";import{a as C}from"./66F5ZH34.js";import{c as _,f as I}from"./NWNYJ26T.js";import{b as d}from"./EWZFZUVF.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as x,erc20Abi as L,getAddress as c,parseAbi as q,zeroAddress as M}from"viem";var k={timeShares:{factory:"timeFactory",abi:[{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ASSETS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"FOREVER",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_AMOUNT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DIVISOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"minLockAmount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"MIN_TIP_GROWTH",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ISSUE_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_CLAIM_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"currencyAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"address"}]},{name:"lockedTotal",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pendingLocks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"amount"},{type:"uint256",name:"tick"},{type:"uint256",name:"firstLock"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"heldAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"blockNumber"}],outputs:[{type:"uint256"}]},{name:"lockEpochs",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"uint256",name:"joinEpoch"},{type:"uint256",name:"leaveEpoch"}]},{name:"sweepable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"from"},{type:"uint256",name:"max"}],outputs:[{type:"uint256[]",name:"ids"},{type:"uint256",name:"next"}]},{name:"lockCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"lockAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"tuple",components:[{type:"address",name:"owner"},{type:"uint64",name:"lockedAt"},{type:"uint32",name:"firstDay"},{type:"uint128",name:"amount"},{type:"uint32",name:"lastDay"},{type:"uint64",name:"unlockedAt"}]}]},{name:"isIssued",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"}],outputs:[{type:"bool"}]},{name:"unitSupply",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"}],outputs:[{type:"uint256"}]},{name:"currentDay",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"k"}],outputs:[{type:"uint64",name:"timestamp"},{type:"uint256[]",name:"indexes"}]},{name:"index",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"carry",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"pulled",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"paid",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"held",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"dayIndex",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"holder"},{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lockClaimable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"uint32",name:"numberOfDays"}],outputs:[{type:"uint256",name:"lockId"}]},{name:"issue",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"},{type:"address",name:"to"}],outputs:[]},{name:"issueRange",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"firstDay"},{type:"uint256",name:"lastDay"},{type:"address",name:"to"}],outputs:[]},{name:"unlock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"address",name:"to"}],outputs:[]},{name:"syncAssets",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"catchUp",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"max"}],outputs:[{type:"bool",name:"done"}]},{name:"settle",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"roll",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"sweepDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"},{type:"uint256",name:"claimGas"}],outputs:[{type:"uint256[]",name:"amounts"}]},{name:"claim",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimMany",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"days_"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimLock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"allowance",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"address",name:"spender"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"receiver"},{type:"uint256",name:"id"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},dayWrapper:{factory:"wrapperFactory",abi:[{name:"shares",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"day",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"basket",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"previewRedeem",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"amount"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"deposit",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"redeemShort",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"owedTo",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimOwed",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[]},{name:"collect",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},compounder:{factory:"compoundFactory",abi:[{name:"MIN_SHARES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BANDS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BAND_TICKS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ADD_GAS_FLOOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_DRIFT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_PERIOD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_TOLERANCE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"DROP_SCAN",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DROP_CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"parked",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"dropId"}],outputs:[{type:"bool"}]},{name:"syncSides",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"count"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolManager",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolId",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bytes32"}]},{name:"poolKey",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"address",name:"currency0"},{type:"address",name:"currency1"},{type:"uint24",name:"fee"},{type:"int24",name:"tickSpacing"},{type:"address",name:"hooks"}]}]},{name:"quote",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tokenIsCurrency0",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bool"}]},{name:"bandTicks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint128"}]},{name:"reserve",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"bands",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple[]",components:[{type:"int24",name:"tickLower"},{type:"int24",name:"tickUpper"},{type:"uint128",name:"liquidity"}]}]},{name:"anchor",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"int24",name:"high"},{type:"int24",name:"low"},{type:"uint40",name:"lookedAt"}]}]},{name:"creator",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"holdings",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"deposit",type:"function",stateMutability:"payable",inputs:[{type:"uint256",name:"tokensMax"},{type:"uint256",name:"quoteMax"},{type:"address",name:"to"},{type:"uint256",name:"minShares"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"shares"},{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeemUnlocked",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"poke",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"claimDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"}],outputs:[{type:"uint256",name:"tip"}]},{name:"listSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"asset"}],outputs:[{type:"uint256",name:"side"}]},{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_SIDES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"SIDE_READ_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DEAD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"sideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"fixedSideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"side"}],outputs:[{type:"tuple",components:[{type:"address",name:"currency"},{type:"uint256",name:"index"},{type:"uint256",name:"carry"},{type:"uint128",name:"recognized"},{type:"uint128",name:"paid"},{type:"uint128",name:"dropped"},{type:"uint40",name:"droppedAt"}]}]},{name:"sideOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"currency"}],outputs:[{type:"bool",name:"listed"},{type:"uint256",name:"side"}]},{name:"dropStream",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"earningSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideClaimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"account"},{type:"uint256",name:"side"}],outputs:[{type:"uint256"}]},{name:"claimSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"side"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]}};var W=q(["function approve(address spender,uint256 id,uint256 amount) returns (bool)"]),R=t=>I(t,"Provide the documented Hookr add-on parameters."),X=t=>["view","pure"].includes(t.stateMutability);function E(t){return Object.entries(k).flatMap(([e,n])=>n.abi.filter(i=>X(i)===t).map(i=>({role:e,fn:i})))}var B={timeShares:"time-share locker of a revenue token",dayWrapper:"one-day wrapper of time shares",compounder:"compounding vault of a revenue token"};function T(t){return{type:"object",oneOf:E(t).map(({role:e,fn:n})=>({type:"object",properties:{addon:{const:e,description:`Add-on kind "${e}": the ${B[e]??e}.`},token:{..._,description:O.address("Hookr revenue token whose add-on is used")},...e==="dayWrapper"?{day:{...C(),description:'Day number that selects the day wrapper, as a decimal string. Example: "42".'}}:{},function:{const:n.name,description:`Add-on function to call: ${n.name}.`},params:{...H(n.inputs,n.name),description:`Arguments of ${e}.${n.name}; integers are decimal strings.`}},required:["addon","token",...e==="dayWrapper"?["day"]:[],"function","params"],additionalProperties:!1}))}}function P(t,e){let n=E(e).find(a=>a.role===t.addon&&a.fn.name===t.function);if(!n)throw new r("Choose a documented Hookr add-on function.");let i=["addon","token","function","params",...n.role==="dayWrapper"?["day"]:[]];if(Object.keys(t).length!==i.length||Object.keys(t).some(a=>!i.includes(a)))throw new r("Provide exactly the documented Hookr add-on arguments.");let s;try{s=c(String(t.token))}catch{throw new r("Provide a valid revenue token address.")}let p=0n;if(n.role==="dayWrapper"){if(typeof t.day!="string"||!/^(0|[1-9][0-9]*)$/.test(t.day)||t.day.length>78||BigInt(t.day)>=1n<<256n)throw new r("Provide a wrapper day as a decimal integer string.");p=BigInt(t.day)}return{...n,token:s,day:p,...N(n.fn,R(t.params))}}async function $(t,e,n,i){let s=t.clientFor(d),p=async(f,b,v=[])=>s.readContract({address:c(S[f].address),abi:S[f].abi,functionName:b,args:v}),a=R(await p("tokenizer","tokenizations",[n]));if(typeof a.createdAt!="bigint"||a.createdAt<=0n||c(String(a.creator))===M)throw new r("Current Hookr tokenizer has no matching token record; legacy add-ons need their generation-specific route.");let m=e==="compounder"?void 0:c(String(await p("timeFactory","sharesOf",[n]))),u=e==="timeShares"?m:e==="compounder"?c(String(await p("compoundFactory","vaultOf",[n]))):c(String(await p("wrapperFactory","wrapperOf",[m,i])));if(u===M||m===M)throw new r("Hookr add-on is not open yet. Open it with its pinned factory through hookr_action first.");let y=k[e].abi,l=await s.readContract({address:u,abi:y,functionName:e==="dayWrapper"?"shares":"token"});if(c(String(l))!==(e==="dayWrapper"?m:n))throw new r("Hookr add-on disagrees with its factory record.");if(e==="dayWrapper"&&await s.readContract({address:u,abi:y,functionName:"day"})!==i)throw new r("Hookr day wrapper disagrees with its factory day.");return{target:u,shares:m}}async function K(t,e,n){if(t.network==="testnet")throw new r("Hookr add-ons require mainnet, chain 4663.");let{role:i,token:s,day:p,fn:a,values:m,params:u}=P(e,!1),{target:y,shares:l}=await $(t,i,s,p),f=[],b=[],v=0n,h=t.clientFor(d),A=async(o,w)=>{if(w<0n||w>=1n<<128n)throw new r("Hookr add-on funding exceeds its bounded exact approval.");if(!w)return;if(o===M){v+=w,b.push({token:D,amount:w,to:y});return}let g=await h.readContract({address:o,abi:L,functionName:"allowance",args:[n,y]});g>0n&&g!==w&&f.push(t.approval(o,y,"0",d)),f.push(t.approval(o,y,w.toString(),d)),b.push({token:o,amount:w})};if(i==="timeShares"&&a.name==="lock"&&await A(s,u.amount),i==="dayWrapper"&&a.name==="deposit"){let o=u.amount;if(o<=0n||o>=1n<<128n)throw new r("Hookr wrapper deposit needs a positive bounded share amount.");f.push(t.unsignedTx({chainId:d,to:l,value:"0",data:x({abi:W,functionName:"approve",args:[y,p,o]}),description:`Approve exactly ${o} time shares of day ${p} to the factory-recorded wrapper ${y}.`})),b.push({token:l,id:p,amount:o,to:y})}if(i==="compounder"&&a.name==="deposit"){let o=c(String(await h.readContract({address:y,abi:k.compounder.abi,functionName:"quote"})));await A(s,u.tokensMax),await A(o,u.quoteMax)}if(["redeem","redeemShort","redeemUnlocked"].includes(a.name)&&b.push({token:y,amount:u.shares??u.amount,to:M}),a.name==="transfer"&&b.push({token:y,amount:u.amount,to:c(String(u.receiver??u.to)),...i==="timeShares"?{id:u.id}:{}}),u.deadline!==void 0){let o=await h.getBlock();if(typeof o.timestamp!="bigint"||u.deadline<o.timestamp)throw new r("Hookr add-on deadline expired or chain time is unavailable.")}return f.push(t.unsignedTx({chainId:d,to:y,value:v.toString(),data:x({abi:[a],functionName:a.name,args:m}),description:`Hookr ${i}.${a.name}: ${JSON.stringify(e.params)}. Token ${s}${i==="dayWrapper"?`; day ${p}`:""}. Review lock duration, recipients and minimum outputs.`})),{txs:f,inputs:b}}function nt(t){return[{name:"hookr_addon_read",inputSchema:{...T(!0),description:"Read factory-verified current Hookr revenue time shares, day wrappers or compounders: locks, day income, unwrap baskets, bands and side assets. Open factories via hookr_action."},execute:async e=>{let{role:n,token:i,day:s,fn:p,values:a}=P(e,!0),{target:m}=await $(t,n,i,s),u=await t.clientFor(d).readContract({address:m,abi:[p],functionName:p.name,args:a});return{chainId:d,token:i,contract:m,function:p.name,result:JSON.parse(JSON.stringify(u,(y,l)=>typeof l=="bigint"?l.toString():l))}}},{name:"hookr_addon_action",inputSchema:{...T(!1),description:"Preview current Hookr time-share lock/issue/unlock/roll/claims, day wrap/unwrap/owed claims, or compound deposit/redeem/poke/side claims. Exact approvals, factory provenance and local human confirmation required."},execute:async(e,n)=>{let{txs:i}=await K(t,e,n),s=await t.preview(i,n);return{txs:i,preview:s,summary:`Hookr ${e.addon}.${e.function}; verify the receipt and read the resulting lock or balances.`}}}]}export{K as a,nt as b};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oakagentkit/core",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "engines": {
@@ -1 +0,0 @@
1
- import{a as f}from"./4M6XBG6X.js";import{a as k}from"./G2LAO23N.js";import{c as l}from"./NWNYJ26T.js";import{b as p}from"./TI727O2H.js";import{a as s}from"./XSD5NL7J.js";import{getAddress as g}from"viem";var v={type:"string",pattern:"^0x[0-9a-fA-F]{64}$",description:"Hookr v4 pool ID: 32 bytes, 0x followed by 64 hex digits."},b=[["hookr_release",{},[],"Read verified release contracts, block and recapture lane."],["hookr_blocks",{},[],"Read all Hook Blocks and their current availability."],["hookr_kings",{poolId:v},[],"Read King of the Pool rounds, leaders, pots and endings."],["hookr_claims",{poolId:v},[],"Read the signing wallet's prizes, royalties, recapture and PoolManager claims."],["hookr_revenue_tokens",{limit:{type:"integer",minimum:1,maximum:50,description:"Maximum number of revenue tokens to return, 1 to 50."},cursor:{type:"string",pattern:"^(v1|v1:[1-9][0-9]{0,19}|v2:[1-9][0-9]{0,19})$",description:"Paging cursor: the nextCursor string from the previous page (v1, v1:N or v2:N); omit for the first page."}},[],"Read revenue tokens, tokenizer provenance, streams and income, page by page."],["hookr_revenue_token",{token:{...l,description:k.address("revenue token")}},["token"],"Read a revenue token, stream endings, income, drops and the signing wallet's claims."],["hookr_hook",{address:{...l,description:k.address("Hookr hook contract")}},["address"],"Read shared or owned hook provenance, ownership, allowed blocks, opening and pools."]],M=[...b.map(d=>d[0]),"hookr_contracts","hookr_read","hookr_revenue_read","hookr_addon_read","hookr_api_read"];function P(d){return[...b.map(([t,c,a,o])=>({name:t,inputSchema:{type:"object",description:o,properties:c,required:a,additionalProperties:!1},execute:async(r,w)=>{if(Object.keys(r).some(n=>!Object.hasOwn(c,n))||a.some(n=>r[n]===void 0))throw new s(`Provide the documented arguments for ${t}.`);let m={};for(let[n,i]of Object.entries(r)){let u=c[n];if(u.type==="integer"){if(typeof i!="number"||!Number.isInteger(i)||i<Number(u.minimum)||i>Number(u.maximum))throw new s("Hookr revenue page limit must be an integer from 1 to 50.")}else if(typeof i!="string"||!new RegExp(String(u.pattern)).test(i))throw new s(`Provide a valid Hookr ${n}.`);m[n]=n==="token"||n==="address"?g(String(i)):i}return(t==="hookr_claims"||t==="hookr_revenue_token")&&(m.account=w),{...await f(d,t,m),chainId:p,source:"https://hookr.fun/api/mcp"}}})),y(d)]}var h={catalog:"/api/hooks/catalog",stats:"/api/protocol-stats",poolApr:"/api/pool-apr",revenueTokens:"/api/revenue-tokens",revenueIncome:"/api/revenue-tokens/income"};function y(d){return{name:"hookr_api_read",inputSchema:{type:"object",description:"Read Hookr public catalog, protocol stats, pool APR, revenue directory/income, or one token's doors/mark. Marks are project metadata, not investment or security endorsements.",properties:{resource:{type:"string",enum:[...Object.keys(h),"revenueDoors","revenueMark"],description:"Public feed to read: catalog, stats, poolApr, revenueTokens, revenueIncome; revenueDoors and revenueMark also need token (that token's doors, or its mark image URL)."},token:{...l,description:k.address("revenue token, only for revenueDoors and revenueMark")}},required:["resource"],additionalProperties:!1},execute:async e=>{if(Object.keys(e).some(o=>!["resource","token"].includes(o))||typeof e.resource!="string")throw new s("Choose a documented Hookr public resource.");let t=["revenueDoors","revenueMark"].includes(e.resource);if(!t&&e.token!==void 0||t&&typeof e.token!="string")throw new s("Only the revenueDoors and revenueMark resources take a token address.");let c;if(t){let o;try{o=g(String(e.token))}catch{throw new s("Provide a valid revenue token address.")}c=`/api/revenue-tokens/${o}/${e.resource==="revenueDoors"?"doors":"mark"}`}else{if(!Object.hasOwn(h,e.resource))throw new s("Choose a documented Hookr public resource.");c=h[e.resource]}let a=`https://hookr.fun${c}`;try{let o=await d.http(a,{method:"GET",redirect:"error",signal:AbortSignal.timeout(15e3)});if(!o.ok)throw new Error("Unavailable");if(e.resource==="revenueMark"){if(!o.headers.get("content-type")?.includes("image/svg+xml"))throw new Error("Invalid mark");return{chainId:p,source:a,imageUrl:a,pngUrl:`${a}.png`,note:"Official SVG mark URL; SVG code is not executed or returned. The PNG URL has not been fetched."}}let r=await o.json();if(!r||typeof r!="object"||"error"in r||"status"in r&&r.status==="unavailable")throw new Error("Unavailable");return{chainId:p,source:a,data:r}}catch{throw new s("Hookr public resource is unavailable. Retry later; no empty or zero result is implied.")}}}}export{M as a,P as b,y as c};
@@ -1 +0,0 @@
1
- import{d as K,e as _,h as W,m as G,n as j}from"./BA66J5YQ.js";import{a as p,d as $}from"./JFC2QCMW.js";import{a as D}from"./Y2QADJOB.js";import{b as C}from"./ZTX4WT62.js";import{b as T,j as x}from"./TI727O2H.js";import{formatUnits as ne,getAddress as ie,parseAbi as Q}from"viem";var m=10n**18n,U=1n<<192n,J=Q(["function slot0() view returns (uint160,int24,uint16,uint16,uint16,uint8,bool)","function liquidity() view returns (uint128)","function getSlot0(bytes32) view returns (uint160,int24,uint24,uint24)","function getLiquidity(bytes32) view returns (uint128)"]),re=Q(["function getLaunchedToken(address) view returns ((address token,address curve,address deployer,address creatorFeeRecipient,address pairToken,uint256 graduationThreshold,uint24 poolFee,int24 tickSpacing,uint16 creatorTaxBps,bool buybackEnabled,uint8 phase,uint256 sweptQuote,uint256 sweptTokens,uint256 sweptAt,bool exists))"]),s=a=>({usdEstimate:null,estimateLabel:"price unavailable",estimateReason:a}),h=a=>`${a.chainId}:${a.address.toLowerCase()}`;async function le(a,S,g={}){let b=Number.isFinite(g.budgetMs)?Math.min(3e3,Math.max(0,g.budgetMs)):3e3,k=`Oak stopped pricing after ${b===3e3?"3 seconds":`${b} milliseconds`}`,w=new Map,y=[...new Map(S.map(e=>[h(e.token),e.token])).values()],u=!1,v=0,E=[];async function P(e){if(u)throw new Error(k);if(v>=6?await new Promise(t=>E.push(t)):v++,u)throw new Error(k);try{return await e()}finally{let t=E.shift();t?t():v--}}let I=new Map,R=new Map,F=new Map,q;function f(e){let t=I.get(e);if(!t){let n=a.clientFor(e);t=new Proxy(n,{get(r,i,c){let d=Reflect.get(r,i,c);return i==="readContract"?(...o)=>P(async()=>Reflect.apply(d,r,o)):d}}),I.set(e,t)}return t}function A(e){let t=R.get(e);return t||(t=P(()=>f(e).getBlockNumber({cacheTime:0})),R.set(e,t)),t}function O(e,t){return q??=G(e,void 0,t).then(n=>{let r=BigInt(n);if(r<=0n)throw new Error("ETH average unavailable");return r}),q}function V(e,t){let n=`${e}:${t}`,r=F.get(n);return r||(r=P(()=>f(e).getBlock({blockNumber:t})).then(i=>{if(!(i.number!==t||typeof i.timestamp!="bigint"||i.timestamp<=0n))return i.timestamp.toString()}).catch(()=>{}),F.set(n,r)),r}async function z(e,t){let n=f(e.chainId),r=await A(e.chainId),i=await $(e,n,r);if(!i)return s("Oak has no pinned pool with sufficient in-range depth for this token");let c=BigInt(e.address)<BigInt(p.usdg);return{numerator:c?i.sqrt**2n:U,denominator:(c?U:i.sqrt**2n)*10n**6n,source:`current price in the Uniswap USDG/${t.symbol} pool; on-chain trading can differ from the stock market`,block:r}}async function X(e){if(_(e))return{numerator:1n,denominator:10n**6n,source:"USDG counted at $1.00"};if(e.chainId!==T)return s("Oak has no source for this token");if(g.chopShareTokens?.some(o=>o.toLowerCase()===e.address.toLowerCase()))return s("chop_logs shows this log's backing");let t=e.symbol;if(t.startsWith("untrusted "))try{let o=JSON.parse(t.slice(10));typeof o=="string"&&(t=o)}catch{}if(K(e))try{let o=f(e.chainId),l=await A(e.chainId),N=ie(C.stateView),B=C.poolId,[ee,te]=await Promise.all([o.readContract({address:N,abi:J,functionName:"getSlot0",args:[B],blockNumber:l}),o.readContract({address:N,abi:J,functionName:"getLiquidity",args:[B],blockNumber:l})]),H=ee[0];return H<=0n||te<=0n?s("The pinned Uniswap v4 WETH/CHOP pool has no active liquidity, and the only other route is a near-empty pool. A quote is a sale for this amount only; Oak never uses it to value a balance."):{numerator:await O(o,l)*U,denominator:m*H**2n*10n**BigInt(e.decimals),source:"current price in the Uniswap v4 WETH/CHOP pool",block:l}}catch{return s("Oak could not verify the pinned Uniswap v4 WETH/CHOP pool for CHOP. A quote is a sale for this amount only; Oak never uses it to value a balance.")}if(t==="CHOP")return s("Oak has no pinned market for CHOP. A quote is a sale for this amount only; Oak never uses it to value a balance.");let n=p.tokens.find(o=>o.token.toLowerCase()===e.address.toLowerCase());if(n)return z(e,n);if(Object.hasOwn(p.notOffered,t))return s("Oak has no pinned market for this token");let r=f(e.chainId),i=await A(e.chainId);if(W(e))return{numerator:await O(r,i),denominator:m*m,source:"30-minute average of the Uniswap ETH/USDG pool",block:i};let c=(a.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS)?.toLowerCase()===e.address.toLowerCase();if(c)try{let o=a.resolvePrice?await a.resolvePrice(e,i):await j(e,{client:r,blockNumber:i,oakTokenAddress:e.address,officialStockTokens:[]}),l=BigInt(o.usdE18);if(l<=0n)throw new Error("OAK price unavailable");return{numerator:l,denominator:m*10n**BigInt(e.decimals),source:"OAK price",block:i}}catch{}if(c&&(await r.readContract({address:x[T].pons.factory.address,abi:re,functionName:"getLaunchedToken",args:[e.address],blockNumber:i})).phase!==2)return s("Oak has no graduated Pons pool price for OAK");let d=await D(e,r,i);return d.numerator<=0n||d.denominator<=0n?s("Oak has no source for this token"):{numerator:await O(r,i)*d.numerator,denominator:m*d.denominator*10n**BigInt(e.decimals),source:c?"OAK's current Pons pool price; fewer than enough trades in 30 minutes for a price":"current Pons pool price",block:i}}let L=0;async function Y(){for(;!u&&L<y.length;){let e=y[L++],t;try{if(!Number.isInteger(e.decimals)||e.decimals<0||e.decimals>255)throw new Error("Invalid decimals");if(t=await X(e),u||w.set(h(e),t),"numerator"in t&&t.block!==void 0){let n=await V(e.chainId,t.block);u||(t.observedAt=n)}}catch{t=s("Oak has no source for this token")}u||w.set(h(e),t)}}let M,Z=new Promise(e=>{M=setTimeout(()=>{u=!0;for(let t of E.splice(0))t();e()},b)});try{await Promise.race([Promise.all(Array.from({length:Math.min(6,y.length)},Y)),Z])}finally{clearTimeout(M),u=!0}return S.map(e=>{let t;try{if(!/^\d+$/.test(e.amount)||!Number.isInteger(e.token.decimals)||e.token.decimals<0||e.token.decimals>255)throw new Error("Invalid amount");t="humanAmount"in e&&typeof e.humanAmount=="string"?e.humanAmount:ne(BigInt(e.amount),e.token.decimals);let n=w.get(h(e.token));if(n&&"numerator"in n){let i=(BigInt(e.amount)*n.numerator*100n*2n+n.denominator)/(n.denominator*2n);return{...e,humanAmount:t,usdEstimate:`${i/100n}.${(i%100n).toString().padStart(2,"0")}`,estimateLabel:"estimate, not a quote",estimateSource:n.source,unitUsdE18:(n.numerator*10n**BigInt(e.token.decimals)*m/n.denominator).toString(),...n.observedAt===void 0?{}:{observedAt:n.observedAt},...n.block===void 0?{}:{estimateAsOf:n.block.toString()}}}return{...e,humanAmount:t,...n??s(k)}}catch{return{...e,...t===void 0?{}:{humanAmount:t},...s("Oak cannot format this token amount")}}})}export{le as a};
@@ -1 +0,0 @@
1
- import{a as $e,b as Ee}from"./YEIM6BZQ.js";import{c as en,d as nn,e as _e,f as he,i as Ue,j as tn}from"./P7C3TYI4.js";import{l as de}from"./BA66J5YQ.js";import{b as Te,o as Me}from"./GYPMUYB5.js";import{a as ce}from"./Z7FGEWO2.js";import{a as T,b as Je}from"./43LI5NKJ.js";import{a as L}from"./66F5ZH34.js";import{b as K}from"./IX3GZMTM.js";import{b as y,e as Ze,j as Q,k as Ye,n as Qe}from"./TI727O2H.js";import{a as o,b as Ge,e as oe}from"./XSD5NL7J.js";import{encodeAbiParameters as S,encodeFunctionData as re,erc20Abi as on,getAddress as w,isAddress as Nn,keccak256 as Kn,pad as Hn,parseAbi as Ae,parseAbiParameters as z,toEventSelector as Fn,toHex as rn}from"viem";var Vn=w(Q[4663].uniswap.v4_pool_manager.address),M=w(Q[4663].uniswap.v4_position_manager.address),le=w(Q[4663].uniswap.v4_state_view.address),He=w(Q[4663].uniswap.permit2.address),At=w(Q[4663].ponsTrade.universal_router.address),se=w(Q[4663].uniswap.WETH.address),D=w(Ye),k="0x0000000000000000000000000000000000000000",Xe=8388608,Fe=-887272,ve=887272,An=(1n<<48n)-1n,J=(1n<<128n)-1n,Bn=(1n<<160n)-1n,pe=1n<<96n,sn="V4 deposits use limits, not minimums: set amount0Max and amount1Max, and for more room for price movement set slippageBps (at most 500 = 5%).",an=1800n,me=50n,cn=(e,n=me)=>e*(10000n-n)/10000n,dn=(e,n,i=me)=>{let r=(e*(10000n+i)+9999n)/10000n;return r<n?r:n},Xn="0xbac3aa3b91584a53a579b3c999a56756e954e59247e497bad1d25a4334bde551",Ve=class extends o{name="PonsHookRefusal";token;constructor(n){let i=n===void 0?void 0:w(n),r=i?`To buy, use pons_buy {"token":"${i}","amountIn":"<ETH in wei>"}. To sell, use pons_sell {"token":"${i}","amountIn":"<token base units>"}.`:"For this custom pair, check the launch token and pairToken with pons_status, then use pons_buy or pons_sell with those addresses and amounts in the input token's base units.";super(`Oak's Uniswap tools don't quote this pool. Its hook is Pons's own trading hook, so Oak trades it only through Pons. ${r} Pons shows the exact fees before you approve.`),this.token=i}},Oe=[{poolId:"0xbac3aa3b91584a53a579b3c999a56756e954e59247e497bad1d25a4334bde551",key:{currency0:k,currency1:D,fee:8388608,tickSpacing:10,hooks:w("0x06a889870c8f83640d6816319f72e2aa579b6080")},liquidity:"5532026605872066941",sqrtPriceX96:"3839897026469220985301794",tick:-198703,protocolFee:0,lpFee:0},{poolId:"0x387bf619da4d3fb62bb276482693dba1b9b3520f573cabdfe033384a24125982",key:{currency0:k,currency1:D,fee:500,tickSpacing:10,hooks:k},liquidity:"225820987949255613",sqrtPriceX96:"3840577772610961024680304",tick:-198700,protocolFee:512125,lpFee:500},{poolId:"0x54f7883914619af9105355bf83ed678bcf9f63560218ac61c9963b9503d0ba32",key:{currency0:k,currency1:D,fee:460,tickSpacing:9,hooks:k},liquidity:"85654324417347171",sqrtPriceX96:"3840419018843648722761192",tick:-198701,protocolFee:479349,lpFee:460},{poolId:"0xc7b615a3721594f73664eb3f62d8290d0fcc8d9d1156aed1ddecbd7f32efd9f5",key:{currency0:k,currency1:D,fee:8388608,tickSpacing:10,hooks:w("0xcb787a5cdea8b3715d984d82f1203fd7bfebe0c4")},liquidity:"50517446454827887",sqrtPriceX96:"3840495145865430860317598",tick:-198700,protocolFee:0,lpFee:0},{poolId:"0x24107d152f14a76d292123265ae3f3c71f863fc2f4ef7ba49d64e78d28ea379e",key:{currency0:k,currency1:D,fee:100,tickSpacing:1,hooks:k},liquidity:"36478878201789434",sqrtPriceX96:"3840363370720475418748563",tick:-198701,protocolFee:102425,lpFee:100},{poolId:"0x84bd4e2d8be11aeb0afc1195b38f587b61e90068548f1063fdbe448fb8cad0b6",key:{currency0:se,currency1:D,fee:200,tickSpacing:4,hooks:k},liquidity:"5980655057479791",sqrtPriceX96:"3839891926195366283625355",tick:-198703,protocolFee:213044,lpFee:200},{poolId:"0x3b0cbf0603ecc67b5fc9bb4fbb6ac9e08d3b2f406b63d1662a36063a7fe5e866",key:{currency0:k,currency1:D,fee:87,tickSpacing:1,hooks:k},liquidity:"5486760264498148",sqrtPriceX96:"3840563617639470134132117",tick:-198700,protocolFee:90134,lpFee:87}],Re=w("0x987e330f00b79864a07fe81dfac344d0078abcc0"),Sn="0xa791e5169faf703c0b63fd9552c33ec1128a773a00f5dc33a640da62a022cd35",On={currency0:k,currency1:D,fee:Xe,tickSpacing:1,hooks:Re},Rn=new Set([...Oe.map(e=>e.key.hooks.toLowerCase()),Re.toLowerCase()]),zn=z("address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks"),jn=z("(address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) poolKey, int24 tickLower, int24 tickUpper, uint256 liquidity, uint128 amount0Max, uint128 amount1Max, address owner, bytes hookData"),Wn=z("address currency0, address currency1"),Gn=z("address currency, address recipient"),ge=z("uint256 tokenId, uint256 liquidity, uint128 amount0Min, uint128 amount1Min, bytes hookData"),Zn=z("uint256 tokenId, uint128 amount0Min, uint128 amount1Min, bytes hookData"),De=z("address currency0, address currency1, address recipient"),ue=z("bytes actions, bytes[] params"),X=Ae(["function modifyLiquidities(bytes unlockData, uint256 deadline) payable","function poolKeys(bytes25 poolId) view returns (address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks)","function getPositionLiquidity(uint256 tokenId) view returns (uint128 liquidity)","function getPoolAndPositionInfo(uint256 tokenId) view returns ((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) poolKey, uint256 info)","function positionInfo(uint256 tokenId) view returns (uint256 info)","function ownerOf(uint256 tokenId) view returns (address owner)","function nextTokenId() view returns (uint256 tokenId)"]),Yn=Ae(["function initialize((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, uint160 sqrtPriceX96) returns (int24 tick)"]),un=z("address currency"),pn=1e6,fe=Ae(["function getSlot0(bytes32 poolId) view returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee)","function getLiquidity(bytes32 poolId) view returns (uint128 liquidity)"]),Qn=Ae(["function approve(address token, address spender, uint160 amount, uint48 expiration)"]),Jn=Fn("Transfer(address,address,uint256)");function xe(e){if(typeof e!="string"||!Nn(e,{strict:!1}))throw new o("Provide a valid v4 currency address.");let n=e.toLowerCase();return n===k||n===ce.toLowerCase()?k:w(e)}function H(e){let n=e.toLowerCase();return n===k||n===ce.toLowerCase()}function ye(e){let n=xe(e.currency0),i=xe(e.currency1);T(e.hooks);let r=w(e.hooks);return Kn(S(zn,[n,i,e.fee,e.tickSpacing,r]))}function In(e){return((typeof e=="number"?e:e.fee)&Xe)!==0}function ln(e,n){return In(e)?{dynamicFee:!0,storedLpFee:n,swapsAreFree:!1,feeNote:Ee(e,n)}:{dynamicFee:!1,storedLpFee:n,swapsAreFree:n===0,feeNote:Ee(e,n)}}function ke(e,n){if(!e||typeof e!="object")throw new o("Provide a valid v4 PoolKey.");let i=xe(e.currency0),r=xe(e.currency1);if(BigInt(i)>=BigInt(r))throw new o("PoolKey currencies must be strictly sorted (currency0 < currency1).");if(!Number.isInteger(e.tickSpacing)||e.tickSpacing<=0||e.tickSpacing>32767)throw new o("PoolKey tickSpacing must be a positive integer.");if(!Number.isInteger(e.fee)||e.fee<0||e.fee>16777215)throw new o("PoolKey fee must be a valid uint24.");T(e.hooks);let c=w(e.hooks),s=In(e.fee);if(!s&&e.fee>pn)throw new o(`PoolKey static fee ${$e(e.fee)} exceeds the v4 maximum of ${$e(pn)}.`);if(s&&e.fee!==Xe)throw new o("Dynamic-fee PoolKey must use exact fee flag 0x800000 (8388608).");if(s&&c.toLowerCase()===k)throw new o("Dynamic-fee PoolKey requires a non-zero hook address.");if(!Rn.has(c.toLowerCase()))throw c.toLowerCase()===Qe.toLowerCase()?new Ve(i===k?r:void 0):new o(`Unsupported v4 hook ${c}: Oak does not assure arbitrary v4 hooks outside measured PoolKeys.`);let t={currency0:i,currency1:r,fee:e.fee,tickSpacing:e.tickSpacing,hooks:c},d=ye(t);if(c===Re&&d.toLowerCase()!==Sn)throw new o("Only the documented VolatilePair ETH/USDG PoolKey is supported. Pool creation requires the Uniswap Labs role.");if(n!==void 0){if(typeof n!="string"||!/^0x[0-9a-fA-F]{64}$/.test(n))throw new o("Provide a 32-byte hex poolId.");if(d.toLowerCase()!==n.toLowerCase())throw new o(`PoolKey hash (${d}) does not match expected poolId (${n}).`)}return t}function et(e){if(!Number.isInteger(e)||e<=0||e>ve)throw new o("tickSpacing must be a positive integer.");let n=Math.trunc(Fe/e)*e,i=Math.trunc(ve/e)*e;return{tickLower:n===0?0:n,tickUpper:i===0?0:i}}function nt(e,n,i){if(!Number.isInteger(i)||i<=0)throw new o("tickSpacing must be a positive integer.");if(!Number.isInteger(e)||!Number.isInteger(n))throw new o("tickLower and tickUpper must be integers.");if(e<Fe||n>ve)throw new o(`Ticks [${e}, ${n}] are outside Uniswap bounds [${Fe}, ${ve}].`);if(e>=n)throw new o("tickLower must be strictly less than tickUpper.");if(e%i!==0||n%i!==0)throw new o(`Ticks [${e}, ${n}] must be divisible by tickSpacing ${i}.`)}function mn(e,n,i,r,c=y){if(T(e),T(n),H(e))throw new o("Native ETH does not use Permit2 approval.");let s=K(i);if(s<=0n||s>Bn)throw new o("Permit2 approval amount must be a positive integer within uint160.");let t=K(String(r));if(t<=0n||t>An)throw new o("Permit2 expiration must be a positive timestamp within uint48.");let d=re({abi:Qn,functionName:"approve",args:[e,n,s,Number(t)]});return Je({to:He,data:d,value:"0",chainId:c,description:`Approve Permit2 allowance of ${s} base units of ${e} for ${n} until ${t}.`})}function fn(e){let n=Number(e&0xffffffn);return(n&8388608)!==0?n-16777216:n}function tt(e){let n=(e&0xffn)!==0n,i=fn(e>>8n&0xffffffn),r=fn(e>>32n&0xffffffn);return{poolIdBytes25:`0x${(e>>56n&(1n<<200n)-1n).toString(16).padStart(50,"0")}`,tickLower:i,tickUpper:r,hasSubscriber:n}}function yn(e,n,i,r=!1){let[c,s]=e<=n?[e,n]:[n,e];if(c<=0n||s<=0n)return 0n;let t=(i<<96n)*(s-c),d=s*c;return r?(t+d-1n)/d:t/d}function wn(e,n,i,r=!1){let[c,s]=e<=n?[e,n]:[n,e],t=i*(s-c);return r?(t+pe-1n)/pe:t/pe}function Cn(e){if(e.liquidity<=0n)return{amount0:0n,amount1:0n};let n=de(e.tickLower),i=de(e.tickUpper);return e.sqrtPriceX96<=n?{amount0:yn(n,i,e.liquidity,e.roundUp),amount1:0n}:e.sqrtPriceX96<i?{amount0:yn(e.sqrtPriceX96,i,e.liquidity,e.roundUp),amount1:wn(n,e.sqrtPriceX96,e.liquidity,e.roundUp)}:{amount0:0n,amount1:wn(n,i,e.liquidity,e.roundUp)}}function it(e){let n=de(e.tickLower),i=de(e.tickUpper),r=(s,t,d)=>t<=s||d<=0n?0n:d*s*t/pe/(t-s),c=(s,t,d)=>t<=s||d<=0n?0n:d*pe/(t-s);if(e.sqrtPriceX96<=n)return r(n,i,e.amount0);if(e.sqrtPriceX96<i){let s=r(e.sqrtPriceX96,i,e.amount0),t=c(n,e.sqrtPriceX96,e.amount1);return s<t?s:t}return c(n,i,e.amount1)}function Ne(e,n){return e.map(i=>{let r=i.amount.trim(),c=r.startsWith("-"),s=c||r.startsWith("+")?r.slice(1):r,t=n(s,i.token.decimals);return`${c?"-":""}${t} ${i.token.symbol}`})}function bn(e,n=y){if(H(e))return{address:ce,symbol:"ETH",decimals:18,chainId:n};let i=w(e);return i.toLowerCase()===D.toLowerCase()?{address:D,symbol:"USDG",decimals:Ze,chainId:n}:i.toLowerCase()===se.toLowerCase()?{address:se,symbol:"WETH",decimals:18,chainId:n}:{address:i,symbol:i.slice(0,10),decimals:18,chainId:n}}async function B(e,n,i=y){if(H(n))return bn(n,i);let r=w(n);if(r.toLowerCase()===D.toLowerCase()||r.toLowerCase()===se.toLowerCase())return bn(r,i);let[c,s]=await Promise.all([e.readContract({address:r,abi:on,functionName:"symbol"}),e.readContract({address:r,abi:on,functionName:"decimals"})]);if(!Number.isInteger(Number(s))||Number(s)<0||Number(s)>77)throw new o(`Token ${r} reports invalid decimals.`);return{address:r,symbol:tn(c,r),decimals:Number(s),chainId:i}}function Z(e,n){if(typeof e!="string"||!/^\d+$/.test(e))throw new o(`${n} must be a non-negative integer string in base units.`);return K(e)}function hn(e,n,i,r){let c=e===void 0?K(Me(n.toString(),i)):Z(e,r);if(c<=1n||c>J)throw new o(`${r} must exceed 1 base unit and fit in uint128; the simulated amount may be too small.`);return c}async function qn(e,n){if(typeof n=="number"&&Number.isFinite(n)&&n>0)return BigInt(Math.floor(n>1e11?n/1e3:n));if(typeof n=="string"&&/^\d+$/.test(n.trim()))return BigInt(n.trim());try{let i=await e.request({method:"eth_getBlockByNumber",params:["latest",!1]});if(i&&typeof i.timestamp=="string")return BigInt(i.timestamp)}catch{}return BigInt(Math.floor(Date.now()/1e3))}async function Ke(e,n,i){let r=await qn(e,i);if(n==null)return r+1800n;let c=K(String(n));if(c<=r)throw new o(`Transaction deadline ${c} has expired (current timestamp ${r}).`);return c}async function Be(e,n){let i=typeof n.poolId=="string"?n.poolId.trim():void 0,r=n.poolKey&&typeof n.poolKey=="object"&&!Array.isArray(n.poolKey)?n.poolKey:void 0,c=r?{currency0:String(r.currency0??k),currency1:String(r.currency1??D),fee:Number(r.fee),tickSpacing:Number(r.tickSpacing),hooks:String(r.hooks??k)}:n.currency0!==void 0&&n.currency1!==void 0&&n.fee!==void 0&&n.tickSpacing!==void 0?{currency0:String(n.currency0),currency1:String(n.currency1),fee:Number(n.fee),tickSpacing:Number(n.tickSpacing),hooks:String(n.hooks??k)}:void 0;if(c){if(H(c.currency0)&&typeof n.token0=="string"&&n.token0.toLowerCase()===se.toLowerCase())throw new o("Native ETH currency0 differs from WETH; do not supply WETH for a native-ETH v4 pool.");let u=ke(c,i);return{poolId:ye(u),poolKey:u}}let s=(i??Xn).toLowerCase();if(s===Sn)return{poolId:s,poolKey:ke(On,s)};let t=Oe.find(u=>u.poolId.toLowerCase()===s);if(t){if(H(t.key.currency0)&&typeof n.token0=="string"&&n.token0.toLowerCase()===se.toLowerCase())throw new o("Native ETH currency0 differs from WETH; do not supply WETH for a native-ETH v4 pool.");return{poolId:t.poolId,poolKey:t.key}}let d=s.slice(0,52),a=await e.readContract({address:M,abi:X,functionName:"poolKeys",args:[d]}),[p,l,m,f,P]=a;if(p.toLowerCase()===k&&l.toLowerCase()===k&&Number(f)===0)throw new o(`Unknown or uninitialized v4 poolId ${s}.`);let b=ke({currency0:p,currency1:l,fee:Number(m),tickSpacing:Number(f),hooks:P},s);return{poolId:s,poolKey:b}}async function Pe(e,n,i){try{let[r,c]=await e.readContract({address:M,abi:X,functionName:"getPoolAndPositionInfo",args:[n]}),s=ke({currency0:r.currency0,currency1:r.currency1,fee:Number(r.fee),tickSpacing:Number(r.tickSpacing),hooks:r.hooks});if((i.poolKey||i.poolId)&&(await Be(e,i)).poolId.toLowerCase()!==ye(s).toLowerCase())throw new o("The supplied PoolKey does not match this v4 position.");let t=tt(BigInt(c));return{poolKey:s,poolId:ye(s),tickLower:t.tickLower,tickUpper:t.tickUpper}}catch(r){throw new o(`Could not read v4 position #${n}. ${oe(r)}`)}}function ot(e){if(typeof e!="string")throw new o("wallet must be a valid 20-byte hex address.");return T(e),w(e)}async function gn(e,n,i={}){T(n);let r=w(n),c=e.clientFor(y),s=new Set;if(i.tokenIds)for(let d of i.tokenIds)s.add(K(String(d)).toString());if(!i.tokenIds?.length)try{let d=await c.getBlockNumber(),a=10000000n;for(let p=0n;p<=d;p+=a){let l=p+a-1n<d?p+a-1n:d,m=await c.request({method:"eth_getLogs",params:[{address:M.toLowerCase(),topics:[Jn,null,Hn(r)],fromBlock:rn(p),toBlock:rn(l)}]});if(!Array.isArray(m))throw new o("Invalid v4 position log response.");for(let f of m){if(!Array.isArray(f.topics)||f.topics.length!==4||!/^0x[0-9a-fA-F]{64}$/.test(f.topics[3]??""))throw new o("Invalid v4 position transfer log.");s.add(BigInt(f.topics[3]).toString())}}}catch(d){if(!i.tokenIds)throw new o(`Could not discover v4 positions. ${oe(d)}`)}let t=[];for(let d of s){let a=BigInt(d);try{let p;try{p=await c.readContract({address:M,abi:X,functionName:"ownerOf",args:[a]})}catch(F){if(Ge(F,3))continue;throw F}if(p.toLowerCase()!==r.toLowerCase())continue;let l=await c.readContract({address:M,abi:X,functionName:"getPositionLiquidity",args:[a]}),m=BigInt(l);if(m===0n&&!i.includeZero)continue;let{poolKey:f,poolId:P,tickLower:b,tickUpper:u}=await Pe(c,a,{}),v=await c.readContract({address:le,abi:fe,functionName:"getSlot0",args:[P]}),x=BigInt(v[0]),{amount0:h,amount1:g}=Cn({liquidity:m,tickLower:b,tickUpper:u,sqrtPriceX96:x}),[A,I]=await Promise.all([B(c,f.currency0,y),B(c,f.currency1,y)]);t.push({module:"uniswap",id:`uniswap:v4:${a.toString()}`,chainId:y,assets:[{token:A,amount:h.toString()},{token:I,amount:g.toString()}],description:`Uniswap v4 LP position #${a.toString()} (${A.symbol}/${I.symbol}, liquidity=${m.toString()}, ticks=[${b},${u}], poolId=${P})`})}catch(p){throw new o(`Could not read v4 position #${a}. ${oe(p)}`)}}return t}var rt={type:"object",properties:{version:{description:"Uniswap v4 PoolManager version.",type:"string",enum:["v4"]},poolId:{type:"string",description:"32-byte Uniswap v4 poolId hex string."},poolKey:{description:"V4 pool key: sorted currencies, fee in pips, tick spacing and hook address.",type:"object",properties:{currency0:{description:"Lower sorted currency address; the zero address means native ETH.",type:"string"},currency1:{description:"Higher sorted currency address.",type:"string"},fee:{description:"Pool fee in pips, hundredths of a basis point (3000 = 0.3%; 950000 = 95%).",type:"number"},tickSpacing:{description:"Spacing between usable pool ticks, as an integer.",type:"number"},hooks:{description:"Hook contract address; the zero address means no hook.",type:"string"}}},currency0:{description:"Lower sorted currency address; the zero address means native ETH.",type:"string"},currency1:{description:"Higher sorted currency address.",type:"string"},fee:{description:"Pool fee in pips, hundredths of a basis point (3000 = 0.3%; 950000 = 95%).",type:"number"},tickSpacing:{description:"Spacing between usable pool ticks, as an integer.",type:"number"},hooks:{description:"Hook contract address; the zero address means no hook.",type:"string"},tickLower:{description:"Lower tick boundary, divisible by the pool tick spacing.",type:"number"},tickUpper:{description:"Upper tick boundary, divisible by the pool tick spacing.",type:"number"},fullRange:{description:"Use the widest tick range aligned to the pool tick spacing; omit explicit ticks.",type:"boolean"},liquidity:L('Position liquidity in protocol base units. Example: "1000" = 1000 liquidity units.'),amount0Max:L('Maximum amount of currency0 in base units; use currency0 decimals. Example: "1000000" = 1 currency0 at 6 decimals.'),amount1Max:L('Maximum amount of currency1 in base units; use currency1 decimals. Example: "1000000" = 1 currency1 at 6 decimals.'),recipient:{description:"Recipient address; must be the signing wallet.",type:"string"},deadline:L("Transaction deadline in Unix seconds, after the current block timestamp. Example: 1800000000."),permit2Expiration:{description:'Permit2 allowance expiry in Unix seconds, as a decimal string. Example: "1800000000".',type:"string"},exactCaps:{description:"Use both caller caps exactly for a new v4 mint; omit tokenId, initialPrice and sqrtPriceX96.",type:"boolean"},slippageBps:{description:"Mint cap headroom in basis points (50 = 0.5%), up to 500 (5%); unavailable when increasing an existing NFT.",type:"integer",minimum:0,maximum:500,default:Number(me)},hookData:{description:"Hex-encoded hook call data; only data supported by the measured hook is accepted.",type:"string"},tokenId:L('Existing v4 position NFT identifier to increase, as a decimal string; keeps its tick range. Omit to mint a new position. Example: "1".'),initialPrice:{type:"string",description:"Starting price as token1 per one token0 in human units; used only for a new pool. Pool creation and the first liquidity add require separate confirmations."},sqrtPriceX96:{type:"string",description:"Alternative starting price: square root of the token1/token0 base-unit price ratio, multiplied by 2^96, as a decimal string."},acceptPriceDeviation:{type:"boolean",description:"Allow a starting price more than 500 basis points (5%) from other live pools of the pair."}}},st={type:"object",description:"Create and initialize an empty Uniswap v4 pool (permissionless PoolManager.initialize). Add liquidity afterwards with uniswap_add.",properties:{version:{description:"Uniswap v4 PoolManager version.",type:"string",enum:["v4"]},poolKey:{description:"V4 pool key: sorted currencies, fee in pips, tick spacing and hook address.",type:"object",properties:{currency0:{description:"Lower sorted currency address; the zero address means native ETH.",type:"string"},currency1:{description:"Higher sorted currency address.",type:"string"},fee:{description:"Pool fee in pips, hundredths of a basis point (3000 = 0.3%; 950000 = 95%).",type:"number"},tickSpacing:{description:"Spacing between usable pool ticks, as an integer.",type:"number"},hooks:{description:"Hook contract address; the zero address means no hook.",type:"string"}}},currency0:{type:"string",description:"Lower sorted currency; the zero address is native ETH."},currency1:{description:"Higher sorted currency address.",type:"string"},fee:{type:"number",description:"Pool fee in pips, hundredths of a basis point (3000 = 0.3%; 950000 = 95%)."},tickSpacing:{description:"Spacing between usable pool ticks, as an integer.",type:"number"},hooks:{type:"string",description:"Hook address; only hooks Oak has measured are accepted. Defaults to none."},initialPrice:{type:"string",description:"Starting pool price as token1 per one token0 in human units. Add liquidity separately after initialization."},sqrtPriceX96:{type:"string",description:"Alternative starting price: square root of the token1/token0 base-unit price ratio, multiplied by 2^96, as a decimal string."},acceptPriceDeviation:{type:"boolean",description:"Allow a starting price more than 500 basis points (5%) from other live pools of the pair."}}},at={type:"object",properties:{version:{description:"Uniswap v4 PoolManager version.",type:"string",enum:["v4"]},tokenId:L('Identifier of the position NFT, as a decimal string. Example: "1".'),poolId:{description:"Identifier of the v4 pool, as a 32-byte hex string.",type:"string"},poolKey:{description:"V4 pool key: sorted currencies, fee in pips, tick spacing and hook address.",type:"object"},amount0Min:L('Minimum amount of currency0 in base units; use currency0 decimals. Example: "1000000" = 1 currency0 at 6 decimals.'),amount1Min:L('Minimum amount of currency1 in base units; use currency1 decimals. Example: "1000000" = 1 currency1 at 6 decimals.'),recipient:{description:"Recipient address; must be the signing wallet.",type:"string"},deadline:L("Transaction deadline in Unix seconds, after the current block timestamp. Example: 1800000000."),hookData:{description:"Hex-encoded hook call data; only data supported by the measured hook is accepted.",type:"string"}},required:["tokenId"]},ct={type:"object",properties:{version:{description:"Uniswap v4 PoolManager version.",type:"string",enum:["v4"]},tokenId:L('Identifier of the position NFT, as a decimal string. Example: "1".'),liquidity:{type:"string",pattern:"^(?:[0-9]+|all)$",description:'Liquidity in protocol base units, or "all" for a full exit where supported; not a token amount. Example: "1000" = 1000 liquidity units.'},slippageBps:{description:"Slippage tolerance in basis points (50 = 0.5%).",type:"integer",minimum:0,maximum:9999,default:Te},fullExit:{description:"Remove all position liquidity and collect the proceeds.",type:"boolean"},burn:{description:"Burn the position NFT after all liquidity and owed tokens have been removed.",type:"boolean"},amount0Min:L('Minimum amount of currency0 in base units; use currency0 decimals. Example: "1000000" = 1 currency0 at 6 decimals.'),amount1Min:L('Minimum amount of currency1 in base units; use currency1 decimals. Example: "1000000" = 1 currency1 at 6 decimals.'),poolId:{description:"Identifier of the v4 pool, as a 32-byte hex string.",type:"string"},poolKey:{description:"V4 pool key: sorted currencies, fee in pips, tick spacing and hook address.",type:"object"},recipient:{description:"Recipient address; must be the signing wallet.",type:"string"},deadline:L("Transaction deadline in Unix seconds, after the current block timestamp. Example: 1800000000."),hookData:{description:"Hex-encoded hook call data; only data supported by the measured hook is accepted.",type:"string"}},required:["tokenId"]},dt={type:"object",properties:{version:{description:"Uniswap v4 PoolManager version.",type:"string",enum:["v4"]},tokenIds:{description:'Position NFT identifiers as decimal strings. Example: ["1", "2"].',type:"array",items:L()},includeZero:{description:"Include positions whose current liquidity is zero.",type:"boolean"}}};function kn(e){let n=e.poolKey&&typeof e.poolKey=="object"&&!Array.isArray(e.poolKey)?e.poolKey:e;for(let i of["currency0","currency1","fee","tickSpacing"])if(n[i]===void 0)throw new o(`Creating a pool needs the full poolKey (currency0, currency1, fee, tickSpacing, hooks); ${i} is missing. A poolId alone cannot describe a pool that does not exist yet.`)}function Pn(e,n,i){if(e.initialPrice!==void 0&&e.sqrtPriceX96!==void 0)throw new o("Provide initialPrice or sqrtPriceX96, not both.");if(e.sqrtPriceX96!==void 0){if(typeof e.sqrtPriceX96!="string"||!/^\d+$/.test(e.sqrtPriceX96))throw new o("sqrtPriceX96 must be a non-negative integer string.");return nn(BigInt(e.sqrtPriceX96))}return en(e.initialPrice,n,i)}async function ut(e,n,i){let r;try{r=await e.readContract({address:M,abi:X,functionName:"ownerOf",args:[n]})}catch(c){throw new o(`Could not verify owner of Uniswap v4 position #${n}. ${oe(c)}`)}if(w(r)!==w(i))throw new o(`Wallet ${w(i)} is not the owner of Uniswap v4 position #${n} (owned by ${w(r)}).`)}async function vn(e,n){let i=ye(n).toLowerCase(),r=new Map;for(let s of Oe)s.key.currency0.toLowerCase()===n.currency0.toLowerCase()&&s.key.currency1.toLowerCase()===n.currency1.toLowerCase()&&r.set(s.poolId.toLowerCase(),s.key);let c=[];for(let[s,t]of r){if(s===i||BigInt(await e.readContract({address:le,abi:fe,functionName:"getLiquidity",args:[s]}))===0n)continue;let a=await e.readContract({address:le,abi:fe,functionName:"getSlot0",args:[s]});BigInt(a[0])>0n&&c.push({label:`v4 fee ${t.fee} spacing ${t.tickSpacing} pool ${s}`,sqrtPriceX96:BigInt(a[0])})}return c}function xn(e,n,i,r,c,s){return e.unsignedTx({to:Vn.toLowerCase(),data:re({abi:Yn,functionName:"initialize",args:[{currency0:n.currency0.toLowerCase(),currency1:n.currency1.toLowerCase(),fee:n.fee,tickSpacing:n.tickSpacing,hooks:n.hooks.toLowerCase()},r]}),value:"0",chainId:y,description:`Create and initialize Uniswap v4 pool ${i} (${c.symbol}/${s.symbol}, fee ${n.fee}, tickSpacing ${n.tickSpacing}) at ${he(r,c.decimals,s.decimals)} ${s.symbol} per ${c.symbol}.`})}var pt=e=>({tools:[{name:"uniswap_add",inputSchema:rt,async execute(t,d){if(T(d),t.version!==void 0&&t.version!=="v4")throw new o('Uniswap v4 part only handles version "v4".');let a=t.tokenId===void 0?void 0:K(String(t.tokenId));if(a!==void 0&&a<=0n)throw new o("Provide a positive v4 position tokenId.");let p=t.initialPrice!==void 0||t.sqrtPriceX96!==void 0;if(t.exactCaps!==void 0&&typeof t.exactCaps!="boolean")throw new o("exactCaps must be a boolean.");let l=t.exactCaps===!0;if(l&&(a!==void 0||p||t.amount0Max===void 0||t.amount1Max===void 0))throw new o("exactCaps is for v4 mints only: provide both amount0Max and amount1Max, without tokenId, initialPrice or sqrtPriceX96.");if(a!==void 0&&p)throw new o("initialPrice cannot be combined with tokenId.");if(a!==void 0&&(t.amount0Min!==void 0||t.amount1Min!==void 0||t.slippageBps!==void 0))throw new o("V4 mint encodes fixed liquidity and amount0Max/amount1Max; amount minima and slippageBps are not supported for minting.");if(t.amount0Min!==void 0||t.amount1Min!==void 0)throw new o(sn);let m=t.slippageBps===void 0?Number(me):t.slippageBps;if(typeof m!="number"||!Number.isInteger(m)||m<0||m>500)throw new o(sn);let f=BigInt(m),P=e.clientFor(y);p&&kn(t);let b,u,v,x;if(a!==void 0){if(t.tickLower!==void 0||t.tickUpper!==void 0||t.fullRange!==void 0)throw new o("An existing v4 position keeps its tick range; omit tickLower, tickUpper and fullRange when increasing.");await ut(P,a,d),{poolId:b,poolKey:u,tickLower:v,tickUpper:x}=await Pe(P,a,t)}else{({poolId:b,poolKey:u}=await Be(P,t));let q=et(u.tickSpacing);v=t.fullRange===!0&&t.tickLower===void 0?q.tickLower:Number(t.tickLower),x=t.fullRange===!0&&t.tickUpper===void 0?q.tickUpper:Number(t.tickUpper),nt(v,x,u.tickSpacing)}let[h,g]=await Promise.all([B(P,u.currency0,y),B(P,u.currency1,y)]),A=Z(t.amount0Max??t.amount0Desired,"amount0Max"),I=Z(t.amount1Max??t.amount1Desired,"amount1Max");if(A<=0n&&I<=0n||A>J||I>J)throw new o("Provide positive amount0Max/amount1Max within uint128.");let F=await P.readContract({address:le,abi:fe,functionName:"getSlot0",args:[b]}),_=BigInt(F[0]),j=Number(F[3]),C;if(p){if(_>0n)throw new o(`Pool ${b} already exists; remove initialPrice/sqrtPriceX96 to add liquidity at its current price.`);let q=Pn(t,h.decimals,g.decimals),V=Ue(q,await vn(P,u),t.acceptPriceDeviation===!0,h.decimals,g.decimals);C={sqrtPriceX96:q,note:V},_=q}else if(_<=0n)throw new o(`Pool ${b} is not initialized on StateView. To create it and add the first liquidity in one tool call with separately confirmed transactions, pass the full poolKey plus initialPrice (token1 per 1 token0, human units); to create it without liquidity use uniswap_create_pool.`);let E=t.liquidity!==void 0&&!l?Z(t.liquidity,"liquidity"):it({amount0:cn(A,f),amount1:cn(I,f),tickLower:v,tickUpper:x,sqrtPriceX96:_});if(E<=0n||E>J)throw new o("Position liquidity must be a positive integer within uint128.");let{amount0:ee,amount1:ne}=Cn({liquidity:E,tickLower:v,tickUpper:x,sqrtPriceX96:_,roundUp:!0});if(ee>A||ne>I)throw new o("Liquidity requires more tokens than amount0Max or amount1Max.");let W=l?A:dn(ee,A,f),Y=l?I:dn(ne,I,f),$=t.recipient!==void 0?String(t.recipient):d;if(T($),w($)!==w(d))throw new o("Uniswap recipient must be the signing wallet.");let U=await qn(P),O=await Ke(P,t.deadline,U.toString()),te=O<U+an?O:U+an,N=t.permit2Expiration===void 0?te:K(String(t.permit2Expiration));if(N<=U||N>te||N>An)throw new o("Permit2 expiration must be in the next 30 minutes and no later than the transaction deadline.");let ie=typeof t.hookData=="string"?t.hookData:"0x",Se=((q,V)=>{let G=C?[xn(e,u,b,C.sqrtPriceX96,h,g)]:[];if(!H(u.currency0)&&q>0n){let ae=u.currency0.toLowerCase();G.push(e.approval(ae,He.toLowerCase(),q.toString(),y)),G.push(mn(ae,M.toLowerCase(),q.toString(),N.toString(),y))}if(!H(u.currency1)&&V>0n){let ae=u.currency1.toLowerCase();G.push(e.approval(ae,He.toLowerCase(),V.toString(),y)),G.push(mn(ae,M.toLowerCase(),V.toString(),N.toString(),y))}let R={currency0:u.currency0.toLowerCase(),currency1:u.currency1.toLowerCase(),fee:u.fee,tickSpacing:u.tickSpacing,hooks:u.hooks.toLowerCase()},Le=S(jn,[R,v,x,E,q,V,$.toLowerCase(),ie]),$n=S(Wn,[R.currency0,R.currency1]),We=S(Gn,[k,$.toLowerCase()]),En=S(ge,[a??0n,E,q,V,ie]),_n=a===void 0?S(ue,["0x020d14",[Le,$n,We]]):S(ue,["0x00121214",[En,S(un,[R.currency0]),S(un,[R.currency1]),We]]),Un=re({abi:X,functionName:"modifyLiquidities",args:[_n,O]}),Dn=H(u.currency0)?q.toString():"0";return G.push(e.unsignedTx({to:M.toLowerCase(),data:Un,value:Dn,chainId:y,description:a!==void 0?`Increase Uniswap v4 position #${a} on pool ${b} (liquidity +${E}).`:`Mint Uniswap v4 position on pool ${b} (ticks [${v}, ${x}], liquidity ${E}).`})),G})(W,Y),we=await e.preview(Se,d),ze=(q,V)=>{let G=H(V)?ce:V.toLowerCase();return-q.changes.filter(R=>R.token.address.toLowerCase()===G).reduce((R,Le)=>R+BigInt(Le.amount),0n)},Ie=ze(we,u.currency0),Ce=ze(we,u.currency1);if(Ie<0n||Ce<0n||Ie>W||Ce>Y||Ie===0n&&Ce===0n&&a===void 0)throw new o("Invalid simulated v4 mint spend. Refresh the liquidity preview.");let Ln=Ne(we.changes,e.formatAmount),qe=ln(u,j),je=[...!H(u.currency0)&&W>0n?[h.symbol]:[],...!H(u.currency1)&&Y>0n?[g.symbol]:[]],Tn=Se.length,Mn=a===void 0?`This deposit takes ${Tn} approvals in a row: ${je.length?`let Permit2 use your ${je.join(" and ")}, let the Uniswap position manager use it through Permit2, then the deposit`:"the deposit"}. `:"",be=m>Number(me)?`You chose ${m/100}% room for price movement. Oak will approve up to ${e.formatAmount(W.toString(),h.decimals)} ${h.symbol} and ${e.formatAmount(Y.toString(),g.decimals)} ${g.symbol}, more than the expected ${e.formatAmount(ee.toString(),h.decimals)} and ${e.formatAmount(ne.toString(),g.decimals)}. Anything not used stays in your wallet, and any leftover permission is cancelled after the deposit.`:void 0;return{txs:Se,preview:we,poolId:b,poolKey:u,tickLower:v,tickUpper:x,liquidity:E.toString(),amount0Max:{token:h,amount:A.toString()},amount1Max:{token:g,amount:I.toString()},dynamicFee:qe.dynamicFee,swapsAreFree:qe.swapsAreFree,...a===void 0?{mintTerms:{amount0Max:W.toString(),amount1Max:Y.toString(),deadline:O.toString(),permit2Expiration:N.toString(),slippageBps:m.toString(),liquidity:E.toString()}}:{},...be?{warnings:[be]}:{},action:a!==void 0?"increase":C?"createAndMint":"mint",...a!==void 0?{tokenId:a.toString()}:{},...C?{poolCreated:!0,sqrtPriceX96:C.sqrtPriceX96.toString(),initialPrice:he(C.sqrtPriceX96,h.decimals,g.decimals),initialTick:_e(C.sqrtPriceX96),priceCheck:C.note}:{},summary:`${Mn}${a!==void 0?`Increase Uniswap v4 position #${a}`:C?"Create Uniswap v4 pool and add first liquidity":"Add Uniswap v4 liquidity"} (${E} L, ticks [${v}, ${x}]) on pool ${b}. Preview deltas: ${Ln.join(", ")||"none"}. A partial spend can leave ERC-20 and Permit2 allowances equal to grant minus spent, bounded by your caps. Use oak_cleanup_allowances to revoke remaining allowances. ${qe.feeNote}${be?` ${be}`:""}${C?` ${C.note}`:""}`}}},{name:"uniswap_collect",inputSchema:at,async execute(t,d){if(T(d),t.version!==void 0&&t.version!=="v4")throw new o('Uniswap v4 part only handles version "v4".');let a=K(String(t.tokenId??""));if(a<=0n)throw new o("Provide a positive v4 position tokenId.");let p=e.clientFor(y),l=t.recipient!==void 0?String(t.recipient):d;if(T(l),w(l)!==w(d))throw new o("Uniswap recipient must be the signing wallet.");let m=await Ke(p,t.deadline,t.now),f=t.amount0Min!==void 0?Z(t.amount0Min,"amount0Min"):0n,P=t.amount1Min!==void 0?Z(t.amount1Min,"amount1Min"):0n;if(f>J||P>J)throw new o("amount0Min and amount1Min must fit in uint128.");let b=typeof t.hookData=="string"?t.hookData:"0x",{poolKey:u,poolId:v}=await Pe(p,a,t),[x,h]=await Promise.all([B(p,u.currency0,y),B(p,u.currency1,y)]),g=S(ge,[a,0n,f,P,b]),A=S(De,[u.currency0.toLowerCase(),u.currency1.toLowerCase(),l.toLowerCase()]),I=S(ue,["0x0111",[g,A]]),F=re({abi:X,functionName:"modifyLiquidities",args:[I,m]}),_=[e.unsignedTx({to:M.toLowerCase(),data:F,value:"0",chainId:y,description:`Collect Uniswap v4 fees from position #${a} to ${l}.`})],j=await e.preview(_,d),C=Ne(j.changes,e.formatAmount);return{txs:_,preview:j,tokenId:a.toString(),poolId:v,recipient:l,currencies:[x,h],summary:`Collect Uniswap v4 fees for position #${a} (actions 0x0111). Preview deltas: ${C.join(", ")||"0"}.`}}},{name:"uniswap_remove",inputSchema:ct,async execute(t,d){if(T(d),t.version!==void 0&&t.version!=="v4")throw new o('Uniswap v4 part only handles version "v4".');let a=K(String(t.tokenId??""));if(a<=0n)throw new o("Provide a positive v4 position tokenId.");let p=e.clientFor(y),l=t.recipient!==void 0?String(t.recipient):d;if(T(l),w(l)!==w(d))throw new o("Uniswap recipient must be the signing wallet.");let m=await Ke(p,t.deadline,t.now),{poolKey:f,poolId:P}=await Pe(p,a,t),[b,u]=await Promise.all([B(p,f.currency0,y),B(p,f.currency1,y)]),v=t.slippageBps??Te;if(typeof v!="number")throw new o("Slippage must be an integer from 0 to 9999 bps.");Me("0",v);let x=typeof t.hookData=="string"?t.hookData:"0x",h=t.fullExit===!0||t.burn===!0||t.liquidity==="all";if(!h&&t.liquidity===void 0)throw new o('Provide a liquidity amount or explicitly choose liquidity "all" for a full exit.');let g=t.liquidity===void 0||t.liquidity==="all"?void 0:Z(t.liquidity,"liquidity");if(g!==void 0&&(g<0n||g===0n&&!h||g>J))throw new o("Provide positive liquidity within uint128 for v4 removal.");let A;try{A=BigInt(await p.readContract({address:M,abi:X,functionName:"getPositionLiquidity",args:[a]}))}catch($){throw new o(`Could not read v4 position liquidity. ${oe($)}`)}if(A<0n||A===0n&&!h||g!==void 0&&g>A)throw new o("Removal requires a nonempty position and cannot exceed its liquidity.");if(h&&g!==void 0&&g!==A)throw new o("A full burn must match the position liquidity; omit the amount when explicitly choosing all.");let I=h?"0x0311":"0x0111",F=($,U,O)=>{let te=h?S(Zn,[a,$,U,x]):S(ge,[a,g,$,U,x]),N=S(De,[f.currency0,f.currency1,O]);return e.unsignedTx({to:M.toLowerCase(),data:re({abi:X,functionName:"modifyLiquidities",args:[S(ue,[I,[te,N]]),m]}),value:"0",chainId:y,description:`${h?"Burn and exit":"Decrease"} Uniswap v4 position #${a} (${I}).`})},_=0n,j=0n;if(A>0n&&(t.amount0Min===void 0||t.amount1Min===void 0)){let $=e.unsignedTx({to:M.toLowerCase(),data:re({abi:X,functionName:"modifyLiquidities",args:[S(ue,["0x0111",[S(ge,[a,0n,0n,0n,x]),S(De,[f.currency0,f.currency1,M])]]),m]}),value:"0",chainId:y,description:"Simulation only: separate fees from removal principal."}),U=await e.preview([$,F(2n,2n,d)],d),O=te=>U.changes.reduce((N,ie)=>ie.token.chainId===y&&ie.token.address.toLowerCase()===te.address.toLowerCase()?N+BigInt(ie.amount):N,0n);if(_=O(b),j=O(u),_<0n||j<0n)throw new o("Removal simulation did not return the expected currencies.")}let C=($,U)=>{if($!==void 0&&Z($,U)!==0n)throw new o(`${U} must be zero for an empty position burn.`);return 0n},E=A===0n?C(t.amount0Min,"amount0Min"):hn(t.amount0Min,_,v,"amount0Min"),ee=A===0n?C(t.amount1Min,"amount1Min"):hn(t.amount1Min,j,v,"amount1Min"),ne=[F(E,ee,l)],W=await e.preview(ne,d),Y=Ne(W.changes,e.formatAmount);return{txs:ne,preview:W,action:I,tokenId:a.toString(),poolId:P,amount0Min:{token:b,amount:E.toString()},amount1Min:{token:u,amount:ee.toString()},summary:`${h?"Full exit":"Partial remove"} Uniswap v4 position #${a} (${I})${h?`; burns position #${a} at ${M}`:""}. Preview deltas: ${Y.join(", ")||"none"}.`}}},{name:"uniswap_list_positions",inputSchema:dt,async execute(t,d){if(T(d),t.version!==void 0&&t.version!=="v4")throw new o('Uniswap v4 part only handles version "v4".');let a=Array.isArray(t.tokenIds)?t.tokenIds:void 0,p=t.includeZero===!0,l=t.wallet===void 0?w(d):ot(t.wallet),m=await gn(e,l,{tokenIds:a,includeZero:p});return{version:"v4",positions:m,summary:`Found ${m.length} active Uniswap v4 position(s) for ${l}.`}}},{name:"uniswap_create_pool",inputSchema:st,async execute(t,d){if(T(d),t.version!==void 0&&t.version!=="v4")throw new o('Uniswap v4 part only handles version "v4".');kn(t);let a=e.clientFor(y),{poolId:p,poolKey:l}=await Be(a,t),[m,f]=await Promise.all([B(a,l.currency0,y),B(a,l.currency1,y)]),P=await a.readContract({address:le,abi:fe,functionName:"getSlot0",args:[p]});if(BigInt(P[0])>0n)throw new o(`Uniswap v4 pool ${p} already exists. Use uniswap_add to provide liquidity.`);let b=Pn(t,m.decimals,f.decimals),u=Ue(b,await vn(a,l),t.acceptPriceDeviation===!0,m.decimals,f.decimals),v=he(b,m.decimals,f.decimals),x=[xn(e,l,p,b,m,f)],h=await e.preview(x,d),g=ln(l,l.fee);return{txs:x,preview:h,poolId:p,poolKey:l,sqrtPriceX96:b.toString(),initialPrice:v,initialTick:_e(b),priceCheck:u,action:"createPool",summary:`${x[0].description} The pool starts empty: nothing trades until liquidity is added with uniswap_add. ${g.feeNote} ${u}`}}}],positions:t=>gn(e,t)}),St=pt;export{Vn as a,M as b,le as c,He as d,At as e,se as f,D as g,k as h,Xe as i,Fe as j,ve as k,Xn as l,Ve as m,Oe as n,Re as o,Sn as p,On as q,Rn as r,H as s,ye as t,In as u,ln as v,ke as w,et as x,nt as y,mn as z,tt as A,Cn as B,it as C,Ne as D,bn as E,B as F,Pe as G,gn as H,rt as I,st as J,at as K,ct as L,dt as M,vn as N,pt as O,St as P};
@@ -1 +0,0 @@
1
- import{c as me}from"./3PHJUFU2.js";import{a as fe}from"./DCGNVMKG.js";import{a as Y}from"./LQSPWRHN.js";import{a as _,b as E}from"./Z7FGEWO2.js";import{a as I}from"./VVAM3EAK.js";import{a as ue}from"./P4UQGWCP.js";import{a as R}from"./43LI5NKJ.js";import{b as de,c as le}from"./SCG5HWMN.js";import{a as re,b as Z,c as z}from"./5HCXZWUH.js";import{q as ie,s as P,t as ce}from"./MQ5F2VOK.js";import{b as w,c as U,d as F,e as oe,j as M,k as ae,t as D}from"./TI727O2H.js";import{a as h}from"./XSD5NL7J.js";import{a as T,b as X,c as j}from"./JXOEJPJ4.js";import{decodeFunctionResult as De,encodeFunctionData as Pe,erc20Abi as Q,getAddress as p,isAddress as G,parseAbi as V}from"viem";var J="https://api.robinhood.com/rhj/assets",xe={address:_,symbol:"ETH",decimals:18,chainId:w},q={address:p(ae),symbol:"USDG",decimals:oe,chainId:w},ee={address:p(M[4663].tokens.WETH.address),symbol:"WETH",decimals:18,chainId:w},ge={address:p(M[4663].meridian.CollateralToken_USDe.address),symbol:"USDe",decimals:18,chainId:w};function $(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function K(e,n=w,s={}){let t=Array.isArray(e)?e:$(e)&&Array.isArray(e.assets)?e.assets:void 0;if(!t)throw new h("Official stock asset list response is malformed.");let o=new Map,c=new Map;if(t.length>1e4)throw new h("Official stock asset list exceeds the lookup limit.");for(let a of t){if(!$(a))continue;let r=a;if(typeof r.tokenSymbol!="string"||!r.tokenSymbol.trim()||!Array.isArray(r.deployments))continue;if(r.deployments.length>100)throw new h("Official stock deployment list exceeds the lookup limit.");let d=r.tokenSymbol;if(!/^[A-Za-z0-9.$_-]{1,32}$/.test(d))throw new h(`Invalid official stock ticker ${T(d)}.`);if(r.tokenDecimals!==void 0&&(typeof r.tokenDecimals!="number"||!Number.isInteger(r.tokenDecimals)||r.tokenDecimals<0||r.tokenDecimals>255))throw new h("Official stock asset has invalid token decimals.");let l=typeof r.tokenDecimals=="number"&&Number.isInteger(r.tokenDecimals)&&r.tokenDecimals>=0&&r.tokenDecimals<=255?r.tokenDecimals:18;for(let k of r.deployments){if(!$(k))continue;let y=k;if(y.chainId!==n)continue;if(typeof y.contractAddress!="string"||!G(y.contractAddress,{strict:!1}))throw new h("Official stock deployment has an invalid contract address.");let b=p(y.contractAddress),m=b.toLowerCase(),S=d.toUpperCase(),u=c.get(S);if(!s.allowAmbiguousSymbols&&u&&u!==m)throw new h(`Ambiguous official stock ticker ${T(d)} across multiple addresses.`);let i=o.get(m);if(i&&(i.symbol!==d||i.decimals!==l))throw new h(`Conflicting official stock identity at ${b}.`);c.set(S,m),o.set(m,{address:b,symbol:d,decimals:l,chainId:n,...s.includeNames&&typeof r.tokenName=="string"&&r.tokenName.trim()?{name:r.tokenName.trim()}:{}})}}return[...o.values()]}function Re(e,n){if(typeof e.address!="string"||!G(e.address,{strict:!1}))return!1;let s=e.chainId??w,t=e.address.toLowerCase();return n.some(o=>o.chainId===s&&o.address.toLowerCase()===t&&o.symbol===e.symbol)}function W(e,n){R(e.address);let s=e.chainId??w,t=p(e.address),o=t.toLowerCase(),c=O(e.symbol),a=n.find(d=>d.chainId===s&&d.address.toLowerCase()===o),r=n.find(d=>d.chainId===s&&O(d.symbol)===c);if(a){if(e.symbol!==a.symbol)throw new h(`Token at ${t} does not match official stock ticker ${T(a.symbol)} (received ${T(e.symbol)}).`);if(e.decimals!==void 0&&e.decimals!==a.decimals)throw new h(`Token ${T(a.symbol)} at ${t} does not match official decimals ${a.decimals}.`);return a}if(r)throw new h(`Token symbol ${T(e.symbol)} at ${t} does not match the official stock contract address ${r.address}.`);return{address:t,symbol:e.symbol.trim(),decimals:e.decimals??18,chainId:s}}var Ee=["AAOI","AAPL","ABCL","ADBE","AEHR","AEIS","ALAB","AMAT","AMBA","AMC","AMD","AMKR","AMZN","ANET","APLD","APP","ASML","ASTS","AUR","AVAV","AVGO","AXON","AXTI","BA","BABA","BB","BE","BMNR","BND","BULL","CBRS","CCL","CEG","CELH","CIEN","CLOV","CLS","CLSK","COHR","COIN","COST","CRCL","CRDO","CRM","CRWD","CRWV","CSCO","CTSH","CVNA","DDOG","DELL","DIS","DJT","DOCN","ELF","EWT","EWY","F","FICO","FIG","FISV","FIX","FLNC","FLY","FTNT","FUTU","GDX","GE","GEV","GLD","GLW","GLXY","GME","GOOGL","HII","HIMS","HPE","HWM","IBM","IBRX","INDA","INFQ","INOD","INTC","INTU","IONQ","IREN","JBL","JNJ","JOBY","JPM","KLAC","KSS","KTOS","LHX","LITE","LLY","LMT","LRCX","LULU","LUNR","MCD","MDB","META","MOD","MPWR","MRNA","MRVL","MSFT","MSTR","MTSI","MU","MXL","NAVN","NBIS","NET","NFLX","NNE","NOW","NU","NVDA","NVTS","OKLO","ON","ONTO","ORCL","OUST","P","PANW","PATH","PENG","PFE","PL","PLTR","POET","POWL","PR","PWR","PYPL","QBTS","QCOM","QQQ","QUBT","RBLX","RCAT","RDDT","RDW","RGTI","RIVN","RKLB","RUN","SATS","SCHD","SGOV","SHOP","SHY","SIMO","SKHY","SLS","SLV","SMCI","SMH","SMR","SNAP","SNDK","SNOW","SOFI","SOUN","SOXX","SPCX","SPMO","SPY","TE","TEAM","TEM","TER","TSEM","TSLA","TSM","TTD","TTWO","UBER","UMC","UNH","UPS","USAR","USO","V","VICR","VRT","VSAT","VST","VTI","WDAY","WDC","WULF","WYFI","XLK","XNDU","XOM","ZETA","ZM","ZS"],te=new WeakMap,ke=new WeakMap,Ae=3e4,he=Object.freeze([]),x;function ot(){if(!x)return he;let e=Date.now()-x.started;return e>=0&&e<Ae?x.tokens:he}var ne=new WeakMap;function H(e,n){return(ne.get(e)??P)(n)}async function Se(e){let n=e?.http??de(),s=e?.url??J,t=e?.chainId??w,o=z(n),c=ke.get(o);c||(c=new re(Ae),ke.set(o,c));let{value:a,started:r}=await H(n,()=>c.read(`${t}:${s}`,async()=>{let l=await P(y=>le(o,s,{method:"GET",signal:y},b=>$(b)||Array.isArray(b))),k=K(l,t,{allowAmbiguousSymbols:!0});if(t===w&&k.length===0)throw new h("Official stock asset list has no mainnet deployments; retry when the list is available.");return l})),d=K(a,t,e);if(t===w&&s===J&&(!x||r>=x.started||Date.now()<x.started)&&(x={started:r,tokens:Object.freeze(K(a,t,{allowAmbiguousSymbols:!0}).map(l=>Object.freeze(l)))}),t===w){let l=te.get(o);l||(l=new Set,te.set(o,l));for(let k of d)l.add(O(k.symbol))}return d}var Me=V(["function aggregate3((address target, bool allowFailure, bytes callData)[] calls) payable returns ((bool success, bytes returnData)[] returnData)"]);function ye(e){let n=e,s=new Set;for(;n&&typeof n=="object"&&!s.has(n)&&s.size<10;){s.add(n);let t=n;if(t.name==="ContractFunctionZeroDataError"||t.name==="AbiDecodingZeroDataError")return!0;let o=`${typeof t.shortMessage=="string"?t.shortMessage:""} ${typeof t.message=="string"?t.message:""}`;if(/returned no data \("0x"\)|Cannot decode zero data/i.test(o))return!0;n=t.cause}return!1}function _e(e){return e instanceof h?/RPC endpoint|too many requests|malformed JSON/i.test(e.message):e instanceof Error?/fetch failed|network|ECONNREFUSED|ETIMEDOUT|HTTP \d{3}|rate limit|too many requests/i.test(e.message):!1}async function Be(e,n,s){if(typeof e.getCode=="function")try{let t=await e.getCode({address:n});return!t||t==="0x"}catch{return ye(s)}return ye(s)}async function be(e,n,s){if(n.length===0)return[];let t=await Promise.allSettled(n.map(o=>e.readContract({address:o.address,abi:Q,functionName:"balanceOf",args:[s]})));if(t.every(o=>o.status==="rejected")&&t[0]?.status==="rejected"&&_e(t[0].reason))throw t[0].reason;return t.map(o=>{if(o.status!=="fulfilled"||o.value===void 0||o.value===null)return{ok:!1};try{let c=typeof o.value=="bigint"?o.value:BigInt(o.value);return c>=0n?{ok:!0,amount:c}:{ok:!1}}catch{return{ok:!1}}})}async function Ce(e,n,s,t){if(s.length===0)return[];let o=ie(n,e);if(!o)return be(e,s,t);let c=s.map(r=>({target:r.address,allowFailure:!0,callData:Pe({abi:Q,functionName:"balanceOf",args:[t]})})),a;try{a=await e.readContract({address:o,abi:Me,functionName:"aggregate3",args:[c]})}catch(r){if(await Be(e,o,r))return be(e,s,t);throw r}if(!Array.isArray(a)||a.length!==s.length)throw new h("Multicall3 aggregate3 returned an invalid result list.");return a.map(r=>{let d=r,l=Array.isArray(d)?d[0]:d?.success,k=Array.isArray(d)?d[1]:d?.returnData;if(!l||typeof k!="string"||k==="0x")return{ok:!1};try{let y=De({abi:Q,functionName:"balanceOf",data:k}),b=typeof y=="bigint"?y:BigInt(y);return b>=0n?{ok:!0,amount:b}:{ok:!1}}catch{return{ok:!1}}})}async function at(e,n={}){R(e);let s=p(e),t=n.chainId??w,o=n.client??ce(n.rpcUrl,t),c=[];if(n.stockTokens?c=[...n.stockTokens]:n.stockAssetsPayload!==void 0?c=K(n.stockAssetsPayload,t):n.includeStockTokens!==!1&&t!==U&&(c=await Se({http:n.http,url:n.stockAssetsUrl,chainId:t})),n.tokens)for(let i of n.tokens)W(i,c);let a=t===w?[q,ee,ge,...n.oakTokenAddress||process.env.OAK_TOKEN_ADDRESS?[{address:p(n.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS),symbol:"OAK",decimals:F,chainId:t}]:[]]:t===U?[{...q,address:p(D.testnet.usdg),chainId:t},{...ee,address:p(D.testnet.weth),chainId:t},...n.oakTokenAddress?[{address:p(n.oakTokenAddress),symbol:"OAK",decimals:F,chainId:t}]:[]]:[],r=t===w&&n.includePoolTokens!==!1?ue.vaults.flatMap(i=>[{address:p(i.tokenAddress),symbol:p(i.tokenAddress),decimals:i.tokenDecimals,chainId:t},{address:p(i.earnContractAddress),symbol:p(i.earnContractAddress),decimals:18,chainId:t}]):[],d=new Set(r.map(i=>i.address.toLowerCase())),l=[],k=new Set;for(let i of[...a,...c,...n.tokens??[],...r]){if(i.chainId!==t||E(i.address)===_)continue;let f=W(i,c),A=f.address.toLowerCase();k.has(A)||(k.add(A),l.push(f))}let[y,b]=await Promise.all([o.getBalance({address:s}),Ce(o,t,l,s)]),m=[],S={address:_,symbol:"ETH",decimals:18,chainId:t};(y>0n||n.includeZero)&&m.push({token:S,amount:y.toString()});for(let i=0;i<l.length;i++){let f=l[i],A=a.some(L=>v(L.address,f.address))||c.some(L=>v(L.address,f.address))?f.symbol:T(f.symbol),g=b[i]??{ok:!1};if(!g.ok){m.push({token:{address:f.address,symbol:A,decimals:f.decimals,chainId:f.chainId},amount:"unavailable"});continue}let C=g.amount;if(C>0n&&d.has(f.address.toLowerCase()))try{let[L,N]=await Promise.all([I(o,t,f.address,"symbol"),I(o,t,f.address,"decimals")]);A=T(L),f.decimals=N}catch{}(C>0n||n.includeZero)&&m.push({token:{address:f.address,symbol:A,decimals:f.decimals,chainId:f.chainId},amount:C.toString()})}let u="Outside token discovery is disabled; no receipt time window was scanned. The local journal can include older receipts.";if(n.includeReceivedTokens===!0){let i=await Ue(s,{client:o});if(u=i.notice,!i.incomplete)try{let f=i.addresses.filter(g=>!k.has(g.toLowerCase())),A=await Fe(s,f,{client:o,chainId:t});m.push(...A.map(g=>({...g,verified:!1,note:"Received from outside Oak's lists; not verified."})))}catch{u+=" Discovery is incomplete: outside balances or token metadata are unavailable; known balances are retained."}}return m.length||m.push({token:S,amount:y.toString()}),m[0]={...m[0],discoveryNotice:u},m}async function Ue(e,n){R(e);let s,t,o="the last 10,000 blocks (approximately 17 minutes at 100 ms per block; UTC boundaries unavailable)",c=()=>`Outside token discovery covers only ERC-20 receipts in ${o}; older holdings may be missing. The local journal can include older receipts.`;try{if(t=await P(()=>n.client.getBlockNumber({cacheTime:0}),3e3),s=t>9999n?t-9999n:0n,typeof n.client.getBlock=="function")try{let l=await Promise.all([s,t].map(k=>P(()=>n.client.getBlock({blockNumber:k}),3e3)));o=`blocks ${s}\u2013${t}, from ${new Date(Number(l[0].timestamp)*1e3).toISOString()} to ${new Date(Number(l[1].timestamp)*1e3).toISOString()} (UTC)`}catch{}let a=V(["event Transfer(address indexed from,address indexed to,uint256 value)"])[0],r=await P(()=>n.client.getLogs({event:a,args:{to:p(e)},fromBlock:s,toBlock:t,strict:!0}),3e3),d=[...new Set(r.filter(l=>!l.removed&&typeof l.args.value=="bigint"&&l.args.value>0n).map(l=>p(l.address)))];return d.length>200?{addresses:[],fromBlock:s,toBlock:t,incomplete:!0,notice:`${c()} Discovery is incomplete: the 200-contract limit was exceeded; known balances are retained.`}:{addresses:d,fromBlock:s,toBlock:t,incomplete:!1,notice:c()}}catch{return{addresses:[],fromBlock:s,toBlock:t,incomplete:!0,notice:`${c()} Discovery is incomplete: RPC receipt reads are unavailable; known balances are retained. Retry balances when RPC logs are available.`}}}async function Fe(e,n,s){if(R(e),n.length>1e4)throw new h("Journal token discovery exceeds the balance lookup limit.");let t=[...new Set(n.map(a=>(R(a),p(a))))].filter(a=>E(a)!==_).map(a=>({address:a,symbol:a,decimals:0,chainId:s.chainId})),o=await Ce(s.client,s.chainId,t,p(e)),c=t.flatMap((a,r)=>{let d=o[r];return d.ok&&d.amount===0n?[]:[{token:a,amount:d.ok?d.amount.toString():"unavailable"}]});return Promise.all(c.map(async({token:a,amount:r})=>{let[d,l]=await Promise.all([I(s.client,s.chainId,a.address,"symbol"),I(s.client,s.chainId,a.address,"decimals").catch(()=>{throw new h(`Token decimals are unavailable for journal-received token ${a.address}; retry balances when RPC metadata is available.`)})]);return{token:{...a,symbol:T(d),decimals:l},amount:r}}))}var v=(e,n)=>e.toLowerCase()===n.toLowerCase(),O=e=>j(e.normalize("NFKC")).toLowerCase().replace(/[^\p{L}\p{N}]/gu,""),pe=e=>j(e.normalize("NFKC")).toLowerCase().match(/[\p{L}\p{N}]+/gu)?.join(" ")??"";function Oe(e){let n=e.context.network??"mainnet",{chainId:s,usdg:t,weth:o}=D[n],c=(a,r,d)=>({...a,address:E(p(a.address)),name:r,kind:d,verified:!0,source:"Oak fixed addresses",warnings:[]});return[c({...xe,chainId:s},"Ether","native"),c({...q,address:t,chainId:s},"Global Dollar","stablecoin"),c({...ee,address:o,chainId:s},"Wrapped Ether","wrapped"),...n==="mainnet"?[c(ge,"USDe","stablecoin")]:[],...e.oakTokenAddress?[c({address:e.oakTokenAddress,symbol:"OAK",decimals:F,chainId:s},"Oak","oak")]:[]]}async function ve(e){if(e.context.network==="testnet")return[];let n=e.officialStockTokens??await Se({http:e.context.http,includeNames:!0,allowAmbiguousSymbols:!0});return n.filter(s=>Re(s,n)).map(s=>({...s,name:s.name??s.symbol,kind:"official_stock",verified:!0,source:J,warnings:[],identityNote:"Official Robinhood stock token: this address matches Robinhood's published list. The quoted name is text from that list."}))}async function se(e,n,s=!0){let{chainId:t}=D[n.context.network??"mainnet"],o=n.context.clientFor(t);if(await o.getChainId()!==t)throw new h(`Token lookup requires Robinhood Chain ${t}.`);let[c,a,r]=await Promise.all([H(o,()=>I(o,t,e,"name",n.blockNumber)).catch(d=>{if(s)throw d;return""}),H(o,()=>I(o,t,e,"symbol",n.blockNumber)),H(o,()=>I(o,t,e,"decimals",n.blockNumber))]);if(typeof c!="string"||s&&!c.trim()||typeof a!="string"||!a.trim()||!Number.isInteger(r)||r<0||r>255)throw new h("The contract returned invalid token metadata.");return{address:p(e),name:c||a,symbol:a,decimals:r,chainId:t}}async function Te(e,n){let s=await n.context.clientFor(w).readContract({address:M[w].clanker.factory.address,abi:V(["function tokenDeploymentInfo(address) view returns ((address,address,address,address[]))"]),functionName:"tokenDeploymentInfo",args:[e]});return Array.isArray(s)&&s.length===4&&typeof s[0]=="string"&&v(s[0],e)}async function $e(e,n){let s=n.context.clientFor(w),t=M[w].poolsTrade,o=[t.instantLaunchStrategyFeesOn.address,t.instantLaunchStrategyFeesOff.address],c=V(["event TokenLaunched(bytes32 indexed poolId,address indexed token,address indexed feeSplitter,(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey)"])[0],a=await s.getBlockNumber(),r=new Set,d=0,l=0;for(let k=63127652n;k<=a;k+=10000000n){if(++d>Le)throw new h("Token origin scan limit reached.");let y=k+9999999n>a?a:k+9999999n,b=await s.getLogs({address:o,event:c,args:{token:e},fromBlock:k,toBlock:y,strict:!0});for(let m of b){if(m.removed||!o.some(u=>v(u,m.address))||!m.args.token||!v(m.args.token,e)||!m.transactionHash||r.has(m.transactionHash))continue;if(r.add(m.transactionHash),++l>20)throw new h("Token origin receipt limit reached.");let S=await s.getTransactionReceipt({hash:m.transactionHash});if(fe(S).some(u=>v(u.token,e)))return p(S.from)}}}var Le=5,Ke=100,He=500,We=3e4;function Ne(e){let n=Date.now()+We,s=0,t=new Map,o=a=>{let r=n-Date.now();if(r<=0)throw new h("Token lookup time budget reached; results are partial.");return P(a,Math.min(1e4,r))},c=Z((a,r)=>o(async d=>{let l=await e.context.http(a,{...r,signal:d});return new Proxy(l,{get(k,y){if(y==="json")return()=>o(()=>k.json());let b=Reflect.get(k,y,k);return typeof b=="function"?b.bind(k):b}})}),e.context.http);return ne.set(c,o),{...e,context:{...e.context,http:c,clientFor:a=>{if(!t.has(a)){let r=e.context.clientFor(a),d=l=>{if(++s>He)throw new h("Token lookup RPC budget reached; results are partial.");return o(l)};t.set(a,Z(new Proxy(r,{get(l,k){let y=Reflect.get(l,k);return typeof y!="function"?y:(...b)=>d(()=>y.apply(l,b))}}),r)),ne.set(t.get(a),d)}return t.get(a)}}}}function we(e){return e.source==="Oak fixed addresses"?e:{...e,symbol:T(e.symbol),name:T(e.name)}}async function rt(e,n){if(n=Ne(n),typeof e!="string"||e.length>256||!O(e))throw new h("Provide a token name, symbol or address to find_token.");let s=O(e),t=G(e.trim(),{strict:!1})?E(p(e.trim())):void 0,{chainId:o}=D[n.context.network??"mainnet"],c=[],a=Oe(n),r=!1;try{a.push(...await ve(n))}catch{r=!0,c.push("The official stock list is unavailable; results are partial and stock identities and lookalikes could not be checked.")}let d=u=>t?v(u.address,t):O(u.symbol).includes(s)||O(u.name).includes(s),l=a.filter(d),k=[],y=(u,i)=>[u.symbol,u.name??""].some(f=>[i.symbol,i.name].some(A=>{let g=O(f),C=O(A),L=pe(f),N=pe(A);return!!g&&!!C&&(g===C||(C.length>=3?g.includes(C):` ${L} `.includes(` ${N} `)))})),b=(u,i={})=>{if(k.some(g=>v(g.address,u.address)))return;let f=[`Token ${T(u.symbol)} at ${u.address} is an unverified ${i.launchpad?"launchpad token":"token"}. Use its address, not its name or symbol.`];(X(u.symbol)||X(u.name)||a.some(g=>!v(g.address,u.address)&&y(u,g)))&&f.push(`Lookalike warning: ${T(u.symbol)} at ${u.address} resembles a verified token's name or symbol.`);let A={...u,...i,kind:i.launchpad?"launchpad":"erc20",verified:!1,source:i.launchpad?`${i.launchpad} origin and on-chain metadata; not a verified token`:"On-chain metadata only",warnings:f};k.push(A),c.push(...f)};if(t&&!l.length){let u=await se(t,n),i={};if(o===w){try{await Te(t,n)&&(i.launchpad="clanker")}catch{c.push("Clanker origin lookup was unavailable for this address.")}if(i.launchpad==="clanker")try{let A=(await Y(n.context,{q:t,limit:20})).tokens.find(g=>v(g.contract_address,t));A&&(i.creator=p(A.msg_sender),i.creatorSource="Clanker indexer msg_sender")}catch{c.push("Clanker creator lookup is unavailable.")}else try{let f=await me(n.context,t);i.launchpad="pons",i.creator=p(f.creator),i.creatorSource="Pons factory deployer"}catch{c.push("Pons launch origin could not be confirmed for this address.")}if(!i.launchpad)try{let f=await $e(t,n);f&&(i.launchpad="pools.trade",i.creator=f,i.creatorSource="Launch transaction sender; may be a relayer")}catch{r=!0,c.push("pools.trade launch receipt lookup is unavailable; origin results are partial.")}}b(u,i)}else if(!t&&o===w){let u=new Set,i=new Set,f,A=0,g=0;try{do{if(++A>Le)throw new h("Token search page limit reached.");let C=await Y(n.context,{q:e.trim(),limit:20,...f?{cursor:f}:{}});for(let L of C.tokens){if(++g>Ke)throw new h("Token candidate limit reached.");let N=p(L.contract_address);if(!(i.has(N)||a.some(B=>v(B.address,N)))){i.add(N);try{let B=await se(N,n);if(!d(B))continue;let Ie=await Te(N,n)?{launchpad:"clanker",creator:p(L.msg_sender),creatorSource:"Clanker indexer msg_sender"}:{};b(B,Ie)}catch{r=!0,c.push(`Could not read Clanker candidate ${N}; it was omitted from these partial results.`)}}}if(C.cursor&&u.has(C.cursor))throw new h("The Clanker indexer repeated a pagination cursor.");C.cursor&&u.add(C.cursor),f=C.cursor??void 0}while(f)}catch{r=!0,c.push("Clanker name search is unavailable, incomplete or reached its scan limit; results are partial.")}c.push("Pons and pools.trade require a token address; name search does not cover those launchpads.")}o===U&&c.push("Testnet lookup covers pinned tokens and explicit token addresses; stock and launchpad discovery are unavailable.");let m=u=>[...new Map(u.map(i=>[i.address.toLowerCase(),i])).values()],S=m([...l,...k]);for(let u of S)if(S.some(i=>!v(i.address,u.address)&&(O(u.symbol)===O(i.symbol)||O(u.name)===O(i.name)))){let i=`Duplicate warning: several tokens share the symbol or name of ${u.address}. Choose the intended address; do not guess from the name.`;u.warnings.push(i),c.push(i)}return l.length>1&&c.push("Several verified tokens match this search, including possible substring matches. Choose an exact address; the search does not select a quote token."),{query:T(e.trim()),chainId:o,partial:r,matches:m(l).map(we),unverified:m(k).map(we),warnings:c}}async function it(e,n){if(typeof e!="string"||!e.trim())throw new h("Provide a token address or verified symbol; use find_token to look it up.");if(!/^[A-Za-z0-9.$_-]{1,42}$/.test(e))throw new h("Use an exact ASCII verified symbol or token address; use find_token to look it up.");let s=e,t=G(s,{strict:!1})?E(p(s)):void 0,o=Oe(n),c=t&&o.find(b=>v(b.address,t));if(c)return c;let a=s.toUpperCase()==="$OAK"?"OAK":s.toUpperCase(),r=!t&&o.find(b=>b.symbol.toUpperCase()===a),d=[],l=!1;try{d=await ve(n)}catch{if(r)return r;if(!t)throw new h("The official stock list is unavailable; stock symbols cannot be checked. Use find_token and try again when the list is reachable.");l=!0}if(t){let b=d.find(u=>v(u.address,t));if(b)return n.tokenMetadata&&W(n.tokenMetadata,d),{...b,name:T(b.name)};let m=n.tokenMetadata??await n.readMetadata?.(t);if(m&&(!v(m.address,t)||m.chainId!==D[n.context.network??"mainnet"].chainId))throw new h("Token metadata does not match the requested address and chain.");if(m&&(typeof m.symbol!="string"||!m.symbol.trim()||!Number.isInteger(m.decimals)||m.decimals<0||m.decimals>255))throw new h("The contract returned invalid token metadata.");let S=m?{...m,name:m.symbol}:await se(t,Ne(n),!1);if(l){let u=O(S.symbol),i=te.get(z(n.context.http));if(Ee.some(f=>O(f)===u)||i?.has(u))throw new h("The official stock list is unavailable; this address claims a stock ticker that cannot be checked. Try again when the list is reachable.")}return W(S,d),{...S,symbol:T(S.symbol),name:T(S.name),kind:"erc20",verified:!1,source:"On-chain metadata only",warnings:["This token address is unverified. On-chain names and symbols do not prove identity.",...l?["The official stock list is unavailable; stock identity could not be verified."]:[]]}}let k=[...o,...d].filter(b=>b.symbol.toUpperCase()===a);if(k.length!==1)throw new h(`Token symbol ${T(s)} is ${k.length?"ambiguous":"unverified"}; use find_token and choose an explicit address.`);let y=k[0];if(y.kind==="official_stock"&&s!==y.symbol)throw new h(`Use the exact official stock ticker ${T(y.symbol)}; case variants are refused.`);return y.source==="Oak fixed addresses"?y:{...y,name:T(y.name)}}export{J as a,xe as b,q as c,ee as d,ge as e,K as f,Re as g,W as h,ot as i,Se as j,Me as k,at as l,Ue as m,Fe as n,rt as o,it as p};
@@ -1 +0,0 @@
1
- import{a as R}from"./G2LAO23N.js";import{C as W,H as X,I as q,L as Y,a as w,z as C}from"./ZFRTBBIW.js";import{a as V}from"./66F5ZH34.js";import{f as Q,g as D}from"./NWNYJ26T.js";import{b as K,d as J}from"./IX3GZMTM.js";import{b as k}from"./TI727O2H.js";import{a as i}from"./XSD5NL7J.js";import{encodeFunctionData as oe,erc20Abi as ne,getAddress as I,parseAbi as ie}from"viem";var P="https://hookr.fun/api/mcp",Z=ie(["function fill(uint256 orderId) returns (uint256)","function fillGasFloor(uint256 orderId) view returns (uint256)"]),N={type:"string",pattern:"^[1-9][0-9]*$"},ee={type:"string",pattern:"^0x[0-9a-fA-F]{64}$",description:"Hookr v4 pool ID: 32 bytes, 0x followed by 64 hex digits."},te={type:"string",enum:["buy","sell"],description:R.enumValues({buy:"spend the pool quote token to receive the listed token",sell:"spend the listed token to receive the quote token"})},re={cursor:{...N,description:"Order ID to start from, scanning downward (newest first). Use nextCursor from the previous page; omit for the latest order."},limit:{type:"integer",minimum:1,maximum:32,description:"Maximum number of order IDs to scan in this page, 1 to 32. Default 16."}};function B(o,m){if(typeof o!="string"||!/^[1-9][0-9]*$/.test(o)||o.length>78||BigInt(o)>=1n<<256n)throw new i(`Provide ${m} as a positive decimal integer string.`);return BigInt(o)}function g(o){return Q(o,"Hookr returned an invalid read response. Retry later.")}function H(o,m,e,t){return{name:o,inputSchema:{type:"object",description:`Read ${o.replace("hookr_","Hookr ")}. No signature or transaction.`,properties:m,required:e,additionalProperties:!1},execute:async(n,s)=>{if(Object.keys(n).some(a=>!Object.hasOwn(m,a))||e.some(a=>n[a]===void 0))throw new i(`Provide the documented arguments for ${o}.`);return t(n,s)}}}function F(o){if(typeof o!="string"||!/^0x[0-9a-fA-F]{64}$/.test(o))throw new i("Provide a 32-byte Hookr poolId.");return o}function $(o,m){let e=g(o),t=g(e.key);if(typeof t.fee!="number"||!Number.isInteger(t.fee)||t.fee<0||t.fee>16777215||typeof t.tickSpacing!="number"||!Number.isInteger(t.tickSpacing)||t.tickSpacing<=0||t.tickSpacing>8388607)throw new i("Hookr pool key is invalid.");let n={currency0:I(String(t.currency0)),currency1:I(String(t.currency1)),fee:t.fee,tickSpacing:t.tickSpacing,hooks:I(String(t.hooks))},s=m??F(e.poolId);if(BigInt(n.currency0)>=BigInt(n.currency1)||!D(W(n),s))throw new i("Hookr pool key does not match its PoolId.");let a=g(e.token),u=g(e.quote),d=r=>{let b=I(String(r.address));if(typeof r.symbol!="string"||!r.symbol.trim()||typeof r.decimals!="number"||!Number.isInteger(r.decimals)||r.decimals<0||r.decimals>255||![n.currency0,n.currency1].includes(b))throw new i("Hookr listed token metadata is invalid.");return{...r,address:b,chainId:k}},c=d(a),l=d(u);if(c.address===l.address)throw new i("Hookr listed token pair is invalid.");return{...e,poolId:s,key:n,token:c,quote:l}}async function se(o,m,e){try{let t=await o.http(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/call",params:{name:m,arguments:e}}),signal:AbortSignal.timeout(15e3),redirect:"error"});if(!t.ok)throw new Error(`HTTP ${t.status}`);let n=g(await t.json());if(n.error||n.id!==1)throw new Error("RPC failure");let s=g(n.result);if(s.isError)throw new Error("Tool failure");let a=g(s.structuredContent);if(a.status==="unavailable"||a.error)throw new Error("Unavailable");return a}catch{throw new i(`Hookr ${m} read is unavailable. Retry later; unavailable data is not an empty result.`)}}var O=se;function ke(o){let m=e=>H(e?"hookr_orders":"hookr_open_orders",re,[],async(t,n)=>{let s=t.limit??16;if(typeof s!="number"||!Number.isInteger(s)||s<1||s>32)throw new i("Hookr page limit must be an integer from 1 to 32.");let a=o.clientFor(k),u=await a.getBlock();if(typeof u.number!="bigint"||typeof u.timestamp!="bigint"||u.timestamp<=0n)throw new i("Hookr order reads need a valid chain block and timestamp.");let d=new Proxy(Y(a),{get(h,f,p){return f==="readContract"?y=>h.readContract({...y,blockNumber:u.number}):Reflect.get(h,f,p)}}),c={...o,clientFor:()=>d},l=await d.readContract({address:w,abi:C,functionName:"lastOrderId"});if(typeof l!="bigint"||l<0n)throw new i("Could not read the last Hookr order ID. Coverage is unknown.");let r=t.cursor===void 0?l:B(t.cursor,"cursor");if(r>l)throw new i("Hookr cursor exceeds the latest order ID. Restart pagination.");let b=[],A=new Map,x=r,S=r>BigInt(s)?r-BigInt(s):0n;for(;r>S;){let h=r--,f=X(await d.readContract({address:w,abi:C,functionName:"getOrder",args:[h]}));if(Number(f.status)===0||BigInt(f.owner)===0n)throw new i(`Hookr order #${h} is missing. Coverage is unknown.`);if(e?!D(f.owner,n):Number(f.status)!==1)continue;let p=await q(c,h,{order:f,tokens:A});if(e){b.push(p);continue}let y=null,M=null,G=null,j=null,z=BigInt(p.expiry)<u.timestamp,L=p.fillable&&!z;if(L)try{let _=await d.readContract({address:w,abi:Z,functionName:"fillGasFloor",args:[BigInt(p.orderId)]}),T=await a.estimateGas({account:n,to:w,data:oe({abi:Z,functionName:"fill",args:[BigInt(p.orderId)]}),blockNumber:u.number}),v=await a.getGasPrice();if(typeof _!="bigint"||_<0n||typeof T!="bigint"||T<=0n||typeof v!="bigint"||v<0n)throw new Error("Invalid gas data");let U=(_*6n+4n)/5n,E=T>U?T:U;y=E.toString(),M=v.toString(),G=(E*v).toString(),j=(BigInt(p.bounty)-E*v).toString()}catch{}b.push({...p,fillable:L,expired:z,economics:{gasLimit:y,gasPrice:M,estimatedGasCost:G,bountyLessEstimatedGas:j,note:"Estimate only; excludes bounty claim gas and competition. Recheck the fill preview."}})}return{chainId:k,book:w,blockNumber:u.number.toString(),chainTime:u.timestamp.toString(),orders:b,scanned:{from:x.toString(),through:(r+1n).toString()},nextCursor:r>0n?r.toString():null,complete:r===0n}});return[m(!1),m(!0),H("hookr_order",{orderId:{...N,description:R.id("Hookr limit order")}},["orderId"],async e=>q(o,B(e.orderId,"orderId"))),H("hookr_pools",{token:{type:"string",description:R.address("listed token whose pools to return")},limit:{type:"integer",minimum:1,maximum:50,description:"Maximum number of pools to return, 1 to 50."},cursor:{type:"string",pattern:"^[0-9]{1,6}$",description:"Paging cursor: the nextCursor from the previous pools page; omit for the first page."}},[],async e=>{if(e.token!==void 0)try{I(String(e.token))}catch{throw new i("Provide a valid token address.")}if(e.limit!==void 0&&(typeof e.limit!="number"||!Number.isInteger(e.limit)||e.limit<1||e.limit>50))throw new i("Pool page limit must be from 1 to 50.");if(e.cursor!==void 0&&(typeof e.cursor!="string"||!/^[0-9]{1,6}$/.test(e.cursor)))throw new i("Provide the pool nextCursor from the previous page.");let t=await O(o,"hookr_pools",e);if(!Array.isArray(t.pools))throw new i("Hookr pool coverage is unknown. Retry later.");return{...t,pools:t.pools.map(n=>$(n)),chainId:k,source:P}}),H("hookr_pool",{poolId:ee,side:te,amountIn:{...N,description:'Order input amount in base units of the input token (quote token for buy, listed token for sell); read its decimals. Example: "1000000". Give with side and minAmountOut.'},minAmountOut:{...N,description:'Minimum output in base units of the output token (listed token for buy, quote token for sell); read its decimals. Example: "1000000". Give with side and amountIn.'}},["poolId"],async e=>{let t=F(e.poolId),n=[e.side,e.amountIn,e.minAmountOut].some(y=>y!==void 0);if(n&&(e.side!=="buy"&&e.side!=="sell"||e.amountIn===void 0||e.minAmountOut===void 0))throw new i("Provide side, amountIn and minAmountOut together for order-specific bounty bounds.");let s=n?B(e.amountIn,"amountIn"):void 0,a=n?B(e.minAmountOut,"minAmountOut"):void 0;if(s!==void 0&&(s>=1n<<128n||a>=1n<<128n))throw new i("Hookr order amounts must fit uint128 base units.");let u=await O(o,"hookr_pool",{poolId:t}),d=u.listing?$(u.listing,t):void 0,c={...u,...d?{listing:d}:{},chainId:k,source:P};if(!n)return{...c,bountyBounds:{status:"requires-order-terms",note:"The keeper bounty floor depends on the order. Supply side, amountIn and minAmountOut in base units. The batch-1 0.0005 ETH observation is not a permanent floor."}};if(!d)throw new i("Hookr pool key is unavailable; bounty floor is unknown.");let l=d.key,r=g(e.side==="buy"?d.quote:d.token),b=I(String(r.address))===l.currency0,A=o.clientFor(k),x=await A.getBlock(),S=await A.readContract({address:w,abi:C,functionName:"bountyBounds",args:[l,b,s,a],blockNumber:x.number});if(!Array.isArray(S)||S.length!==3||S.some(y=>typeof y!="bigint"||y<0n||y>=1n<<128n))throw new i("Hookr bounty bounds are unavailable; the floor is unknown.");let[h,f,p]=S;return{...c,bountyBounds:{status:"available",blockNumber:x.number.toString(),token:{address:"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",symbol:"ETH",decimals:18,chainId:k},minBounty:h.toString(),defaultBounty:f.toString(),maxBounty:p.toString(),effectiveFloor:(h>0n?h:f).toString(),note:"ETH wei for this order at this block. Oak create uses the positive minimum, or the default when minimum is zero; recheck at creation."}}}),H("hookr_quote",{poolId:ee,side:te,amountIn:{...V(),description:'Amount of the input token in base units (quote token for buy, listed token for sell); read its decimals. Example: "1000000" = 1 token with 6 decimals.'}},["poolId","side","amountIn"],async(e,t)=>{let n=F(e.poolId);if(e.side!=="buy"&&e.side!=="sell")throw new i("Hookr side must be buy or sell.");if(typeof e.amountIn!="string"||K(e.amountIn)<=0n)throw new i("Provide a positive amountIn in base units.");let s=await O(o,"hookr_pool",{poolId:n}),a=$(s.listing,n),u=g(e.side==="buy"?a.quote:a.token),d=I(String(u.address)),c=d==="0x0000000000000000000000000000000000000000"?18:await o.clientFor(k).readContract({address:d,abi:ne,functionName:"decimals"});if(typeof c!="number"||!Number.isInteger(c)||c<0||c>255||typeof u.symbol!="string")throw new i("Hookr input token metadata is unavailable.");let l=J(e.amountIn,c),r=await O(o,"hookr_quote",{poolId:n,side:e.side,amount:l,payer:t}),b=await O(o,"hookr_check_trade",{poolId:n,side:e.side,amount:l,wallet:t});return{chainId:k,source:P,input:{token:{address:d,symbol:u.symbol,decimals:c,chainId:k},amount:e.amountIn},quote:r,check:b,note:"Informational quote. Review pool rules; unknown trade checks do not authorize a trade."}})]}export{se as a,ke as b};
@@ -1 +0,0 @@
1
- import{m as z}from"./WSILNJS2.js";import{a as U,e as j,h as Q,i as Y,k as J}from"./KHOUBQJK.js";import{c as A,e as $}from"./JFC2QCMW.js";import{a as V}from"./Y2QADJOB.js";import{b as Z,e as O,p as ee}from"./4J245N3F.js";import{a as y,b as P}from"./Z7FGEWO2.js";import{a as h}from"./LIUXNOLP.js";import{a as X,b as N}from"./ZTX4WT62.js";import{a as v}from"./VVAM3EAK.js";import{a as B}from"./SPJCSEKP.js";import{b as F}from"./SCG5HWMN.js";import{b as E}from"./IX3GZMTM.js";import{t as T}from"./MQ5F2VOK.js";import{b as m,c as l,d as G,e as D,j as g,k as q,l as W,q as K}from"./TI727O2H.js";import{a as c}from"./XSD5NL7J.js";import{a as k,b as R}from"./JXOEJPJ4.js";import{getAddress as f,isAddress as ne,parseAbi as se}from"viem";var te=[{inputs:[],name:"available",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"ethUsdE18",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"liquidityUsdgE6",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"phase",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"priceSigner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"signer",type:"address"}],name:"setPriceSigner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"spotOakPerEthE18",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"supplyNet",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"syncPhase",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"wallet",type:"address"},{internalType:"uint256",name:"oakPerEthE18",type:"uint256"},{internalType:"uint64",name:"timestamp",type:"uint64"},{internalType:"bytes32",name:"nonce",type:"bytes32"}],internalType:"struct PriceNote",name:"n",type:"tuple"},{internalType:"bytes",name:"sig",type:"bytes"},{internalType:"address",name:"boundWallet",type:"address"}],name:"verifyNote",outputs:[{internalType:"uint256",name:"oakPerEthE18",type:"uint256"}],stateMutability:"view",type:"function"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"signer",type:"address"}],name:"PriceSignerSet",type:"event"},{inputs:[],name:"NotReady",type:"error"},{inputs:[],name:"NoteBadSignature",type:"error"},{inputs:[],name:"NoteExpired",type:"error"},{inputs:[],name:"NoteNotYetValid",type:"error"},{inputs:[{internalType:"uint256",name:"spot",type:"uint256"},{internalType:"uint256",name:"note",type:"uint256"}],name:"NoteOutsideGuard",type:"error"},{inputs:[],name:"NoteWrongWallet",type:"error"},{inputs:[{internalType:"address",name:"source",type:"address"}],name:"OracleUnreadable",type:"error"}];function Be(n){return"source"in n&&n.source==="pool-spot-estimate"?void 0:n}var M=300,ye="1000000000000000000",oe=f(g[m].tokens.USDG.address),de=f(g[l].deployments.test_USDG.address),_=f(g[m].tokens.WETH.address),I=f(g[l].deployments.test_WETH.address),L=f(X.chop);function ce(n){return n.chainId===m&&n.address.toLowerCase()===L.toLowerCase()}function ue(n){let e=n.address.toLowerCase();return n.chainId===m?e===oe.toLowerCase():n.chainId===l?e===de.toLowerCase():!1}function me(n){return n.chainId!==m&&n.chainId!==l?!1:P(n.address)===y}function le(n){let e=n.address.toLowerCase();return n.chainId===m?e===_.toLowerCase():n.chainId===l?e===I.toLowerCase():!1}function we(n){return me(n)||le(n)}var fe=-887272,be=887272,ge=(1n<<256n)-1n,Ee=se(["function observe(uint32[] secondsAgos) view returns (int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)","function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)"]),re=se(["function getSlot0(bytes32 poolId) view returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee)","function getLiquidity(bytes32 poolId) view returns (uint128 liquidity)"]),Te=1n<<192n;async function Se(n,e){let t=f(N.stateView),s=N.poolId,[a,i]=await Promise.all([n.readContract({address:t,abi:re,functionName:"getSlot0",args:[s],blockNumber:e}),n.readContract({address:t,abi:re,functionName:"getLiquidity",args:[s],blockNumber:e})]),o=a[0],r=Number(a[1]);if(o<=0n||i<=0n||!Number.isInteger(r)||r<fe||r>be)throw new c("The pinned Uniswap v4 WETH/CHOP pool has no active liquidity, and the only other route is a near-empty pool.");return{numerator:Te,denominator:o*o}}function H(n,e){if(typeof n=="bigint")return n;if(typeof n=="number"){if(!Number.isSafeInteger(n))throw new c(`Invalid ${e} timestamp.`);return BigInt(n)}if(typeof n=="string"&&/^-?\d+$/.test(n.trim()))return BigInt(n.trim());throw new c(`Invalid ${e} timestamp.`)}function Fe(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){try{return p(n,e,t),!0}catch{return!1}}function p(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){if(!Number.isInteger(t)||t<0)throw new c("Maximum price age must be a non-negative integer.");let s=H(n,"price"),a=H(e,"current");if(s<=0n)throw new c("Price timestamp must be positive.");if(s>a)throw new c("Price timestamp is in the future.");let i=a-s;if(i>BigInt(t))throw new c(`Price is stale: age ${i}s exceeds ${t}s.`);return s.toString()}function he(n){if(!Number.isInteger(n)||n<fe||n>be)throw new c(`Tick ${n} is outside valid Uniswap bounds.`);let e=BigInt(n<0?-n:n),t=(e&0x1n)!==0n?0xfffcb933bd6fad37aa2d162d1a594001n:0x100000000000000000000000000000000n;return(e&0x2n)!==0n&&(t=t*0xfff97272373d413259a46990580e213an>>128n),(e&0x4n)!==0n&&(t=t*0xfff2e50f5f656932ef12357cf3c7fdccn>>128n),(e&0x8n)!==0n&&(t=t*0xffe5caca7e10e4e61c3624eaa0941cd0n>>128n),(e&0x10n)!==0n&&(t=t*0xffcb9843d60f6159c9db58835c926644n>>128n),(e&0x20n)!==0n&&(t=t*0xff973b41fa98c081472e6896dfb254c0n>>128n),(e&0x40n)!==0n&&(t=t*0xff2ea16466c96a3843ec78b326b52861n>>128n),(e&0x80n)!==0n&&(t=t*0xfe5dee046a99a2a811c461f1969c3053n>>128n),(e&0x100n)!==0n&&(t=t*0xfcbe86c7900a88aedcffc83b479aa3a4n>>128n),(e&0x200n)!==0n&&(t=t*0xf987a7253ac413176f2b074cf7815e54n>>128n),(e&0x400n)!==0n&&(t=t*0xf3392b0822b70005940c7a398e4b70f3n>>128n),(e&0x800n)!==0n&&(t=t*0xe7159475a2c29b7443b29c7fa6e889d9n>>128n),(e&0x1000n)!==0n&&(t=t*0xd097f3bdfd2022b8845ad8f792aa5825n>>128n),(e&0x2000n)!==0n&&(t=t*0xa9f746462d870fdf8a65dc1f90e061e5n>>128n),(e&0x4000n)!==0n&&(t=t*0x70d869a156d2a1b890bb3df62baf32f7n>>128n),(e&0x8000n)!==0n&&(t=t*0x31be135f97d08fd981231505542fcfa6n>>128n),(e&0x10000n)!==0n&&(t=t*0x9aa508b5b7a84e1c677de54f3e99bc9n>>128n),(e&0x20000n)!==0n&&(t=t*0x5d6af8dedb81196699c329225ee604n>>128n),(e&0x40000n)!==0n&&(t=t*0x2216e584f5fa1ea926041bedfe98n>>128n),(e&0x80000n)!==0n&&(t=t*0x48a170391f7dc42444e8fa2n>>128n),n>0&&(t=ge/t),(t>>32n)+(t%(1n<<32n)===0n?0n:1n)}async function ie(n,e,t,s){let a=async()=>{throw new c("Price identity resolution is read-only.")},i=B({network:e===l?"testnet":"mainnet",clientFor:r=>t.client??T(t.rpcUrl,r),http:t.http??F(),preview:a,quoteSwap:a,buildSwap:a}),o=await ee(n,{context:i,oakTokenAddress:t.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS,officialStockTokens:t.officialStockTokens,tokenMetadata:s,blockNumber:t.blockNumber,readMetadata:async r=>{let d=t.client??T(t.rpcUrl,e),[u,b]=await Promise.all([v(d,e,r,"symbol",t.blockNumber),v(d,e,r,"decimals",t.blockNumber)]);return{address:r,symbol:u,decimals:b,chainId:e}}});return{address:o.address,symbol:o.kind==="erc20"&&s?s.symbol:o.symbol,decimals:o.decimals,chainId:o.chainId}}async function Pe(n,e,t){if(typeof n=="object"&&n!==null){let r=n.chainId??e,d=P(n.address)===y?y:f(n.address),u={address:d,symbol:n.symbol,decimals:n.decimals,chainId:r};return ue(u)?{address:d,symbol:"USDG",decimals:D,chainId:r}:me(u)?{address:y,symbol:"ETH",decimals:18,chainId:r}:le(u)?{address:d,symbol:"WETH",decimals:18,chainId:r}:ce(u)?{address:d,symbol:"CHOP",decimals:18,chainId:r}:ie(u.address,r,t,u)}let s=n.trim(),a=s.toUpperCase(),i=s.toLowerCase();if(a==="ETH"||ne(s,{strict:!1})&&P(s)===y)return{...Z,chainId:e};if(a==="WETH"||e===m&&i===_.toLowerCase()||e===l&&i===I.toLowerCase()){if(e!==m&&e!==l)throw new c(`No canonical WETH address configured for chain ${e}.`);return{address:e===l?I:_,symbol:"WETH",decimals:18,chainId:e}}if(a==="USDG"||e===m&&i===q.toLowerCase()||e===l&&i===W.toLowerCase()){if(e!==m&&e!==l)throw new c(`No canonical USDG address configured for chain ${e}.`);return{address:e===l?de:oe,symbol:"USDG",decimals:D,chainId:e}}if(e===m&&(a==="USDE"||i===O.address.toLowerCase()))return{...O,chainId:e};if(e===m&&(a==="CHOP"||i===L.toLowerCase()))return{address:L,symbol:"CHOP",decimals:18,chainId:e};let o=t.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS;if(a==="OAK"||o&&s.toLowerCase()===o.toLowerCase()){if(!o&&!ne(s,{strict:!1}))throw new c("OAK token address is required to price OAK.");return{address:f(o??s),symbol:"OAK",decimals:G,chainId:e}}return ie(n,e,t)}async function x(n,e,t){if(e)return(await n.readContract({address:e,abi:te,functionName:"ethUsdE18",blockNumber:t})).toString();let a=(await n.readContract({address:f(K),abi:Ee,functionName:"observe",args:[[U,0]],blockNumber:t}))[0];if(!a||a.length<2)throw new c("ETH/USDG pool observation returned insufficient tick cumulatives.");let i=Q(a[0],a[1],U),o=he(i);return Y(o)}async function S(n,e,t,s){if(n.timestamp!==void 0)return p(n.timestamp,t(),s);if(e&&typeof e.getBlock=="function"){let i=await h(e,n.blockNumber);return p(i.timestamp,t(),s)}let a=t();return p(a,a,s)}function ae(n){if(n.startsWith("untrusted "))try{let e=JSON.parse(n.slice(10));if(typeof e=="string"&&k(e)===n)return n}catch{}return k(n)}async function Xe(n,e={}){let t=e.chainId??m,s=e.maxAgeSeconds??M,a=()=>e.now!==void 0?H(e.now,"current"):BigInt(Math.floor(Date.now()/1e3)),i=await Pe(n,t,e);if((R(i.symbol)||i.symbol.length>256)&&(i.symbol=ae(i.symbol)),e.trades){let r=await S(e,e.client,a,s),d=J(e.trades,{now:a(),windowStart:e.windowStart,windowEnd:e.windowEnd});if(e.spotOakPerEthE18!==void 0&&!z(d,e.spotOakPerEthE18))throw new c("30-minute average is outside the 50% spot guard band.");let u=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await x(e.client??T(e.rpcUrl,t),e.oracleAddress);return{token:i,usdE18:j(u,d),timestamp:r}}if(e.usdE18!==void 0){let r=await S(e,e.client,a,s),d=E(e.usdE18.toString());if(d<=0n)throw new c("USD price must be positive.");return{token:i,usdE18:d.toString(),timestamp:r}}if(e.resolver){let r=await e.resolver(i),d=p(r.timestamp,a(),s),u=E(r.usdE18);if(u<=0n)throw new c("USD price must be positive.");return{token:i,usdE18:u.toString(),timestamp:d,...r.source==="pool-spot-estimate"?{source:r.source,sourceLabel:A}:{}}}let o=e.client??T(e.rpcUrl,t);if(ue(i)){let r=await S(e,o,a,s);return{token:i,usdE18:ye,timestamp:r}}if(we(i)){let r=await S(e,o,a,s),d=await x(o,e.oracleAddress,e.blockNumber);return{token:i,usdE18:d,timestamp:r}}if(ce(i)){let r=e.timestamp===void 0&&o&&typeof o.getBlock=="function"?await h(o,e.blockNumber):void 0,d=r?p(r.timestamp,a(),s):await S(e,o,a,s);if(r&&r.number===null)throw new c("CHOP reference requires a mined block.");let u=r?.number??e.blockNumber,[b,C]=await Promise.all([Se(o,u),e.ethUsdE18!==void 0?Promise.resolve(e.ethUsdE18.toString()):x(o,e.oracleAddress,u)]),w=E(C)*b.numerator/b.denominator;if(w<=0n)throw new c("CHOP USD reference price must be positive.");return{token:i,usdE18:w.toString(),timestamp:d}}if(i.chainId===m)try{let r=await h(o,e.blockNumber),d=p(r.timestamp,a(),s);if(r.number===null)throw new c("Pons reference requires a mined block.");let u=await $(i,o,r.number);if(u!==void 0&&u>0n)return{token:i,usdE18:u.toString(),timestamp:d,source:"pool-spot-estimate",sourceLabel:A};let[b,C]=await Promise.all([V(i,o,r.number),x(o,e.oracleAddress,r.number)]),w=E(C)*b.numerator/b.denominator;if(w<=0n)throw new c("Pons USD reference price must be positive.");return{token:i,usdE18:w.toString(),timestamp:d}}catch{}throw new c(`Oak has no fresh on-chain trade price for ${ae(i.symbol)}, so it shows no price. balances and positions show a labeled estimate where one exists; an estimate is not a quote.`)}export{Be as a,M as b,ye as c,ce as d,ue as e,me as f,le as g,we as h,Se as i,Fe as j,p as k,he as l,x as m,Xe as n};
@@ -1 +0,0 @@
1
- import{e as T,f as re,g as B,i as ae,j as O}from"./PXUML7HJ.js";import{F as I,a as ee,b as oe,c as _,f as L,h as S,m as te,n as y,r as z,s as se,t as ne,v as ie}from"./4E7FJQLL.js";import{a as U}from"./YEIM6BZQ.js";import{f as W,g as Q}from"./P7C3TYI4.js";import{a as K}from"./Z7FGEWO2.js";import{a as J}from"./43LI5NKJ.js";import{g as E}from"./NWNYJ26T.js";import{b as k,n as Z}from"./TI727O2H.js";import{a as b,b as F,e as Y}from"./XSD5NL7J.js";import{decodeAbiParameters as we,getAddress as v,pad as de,parseAbi as fe,parseAbiParameters as Pe,toEventSelector as be,toHex as ce,zeroAddress as pe}from"viem";var ke=be("Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)"),ye=Pe("uint24 fee, int24 tickSpacing, address hooks, uint160 sqrtPriceX96, int24 tick"),Ae=10000000n,Ie=10000n,me=25,X=200,R=16,ve=3e3,Ce=500,Se=500n,q=100,$=fe(["function getSlot0(bytes32 poolId) view returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee)","function getLiquidity(bytes32 poolId) view returns (uint128 liquidity)"]),_e=fe(["function poolKeys(bytes25 poolId) view returns (address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks)"]);function Le(o){let e=o.trim().toLowerCase();return e==="eth"||e==="native"||e===pe||e===K.toLowerCase()}function le(o,e){if(o!=null){if(typeof o!="string")throw new b(`${e} must be a token address, or "eth" for native ETH.`);return Le(o)?{eth:!0}:(J(o),{eth:!1,address:v(o)})}}var he=(o,e)=>BigInt(o)<BigInt(e)?-1:BigInt(o)>BigInt(e)?1:0;function x(o){return{address:o.address,symbol:o.symbol,decimals:o.decimals}}async function ge(o,e,r,i,a){let[t,s,f]=await Promise.all([o.readContract({address:e,abi:O,functionName:"slot0"}),o.readContract({address:e,abi:O,functionName:"liquidity"}),o.readContract({address:e,abi:O,functionName:"tickSpacing"})]),n=BigInt(t[0]);return{version:"v3",id:e,feePercent:U(a),highFee:a>=5e4,token0:x(r),token1:x(i),fee:a,tickSpacing:Number(f),initialized:n>0n,liquidity:BigInt(s).toString(),sqrtPriceX96:n.toString(),tick:Number(t[1]),price:n>0n?W(n,r.decimals,i.decimals):"0",addSupported:!0}}async function H(o,e,r){let i=r??ne(e),[a,t]=await Promise.all([I(o,e.currency0,k),I(o,e.currency1,k)]),[s,f]=await Promise.all([o.readContract({address:_,abi:$,functionName:"getSlot0",args:[i]}),o.readContract({address:_,abi:$,functionName:"getLiquidity",args:[i]})]),n=BigInt(s[0]),w=ie(e,Number(s[3]));return{version:"v4",id:i,feePercent:U((e.fee&8388608)!==0?Number(s[3]):e.fee),highFee:((e.fee&8388608)!==0?Number(s[3]):e.fee)>=5e4,token0:x(a),token1:x(t),fee:e.fee,tickSpacing:e.tickSpacing,hooks:v(e.hooks),initialized:n>0n,liquidity:BigInt(f).toString(),sqrtPriceX96:n.toString(),tick:Number(s[1]),price:n>0n?W(n,a.decimals,t.decimals):"0",addSupported:z.has(e.hooks.toLowerCase()),feeNote:w.feeNote,...z.has(e.hooks.toLowerCase())?{}:{note:e.hooks.toLowerCase()===Z.toLowerCase()?new te(se(e.currency0)?e.currency1:void 0).message:`Hook ${v(e.hooks)} is not one Oak has measured, so uniswap_add will refuse this pool.`}}}async function Ne(o,e,r,i){let a=await o.getBlockNumber(),t=[],s=new Set,f=!1,n=Ae;for(let d=a;;){let u=d+1n>n?d-n+1n:0n,l;try{l=await o.request({method:"eth_getLogs",params:[{address:ee.toLowerCase(),topics:[ke,null,e?de(e):null,r?de(r):null],fromBlock:ce(u),toBlock:ce(d)}]})}catch(p){if(F(p,-32601)||n<=Ie)throw p;n/=2n;continue}if(!Array.isArray(l))throw new b("Invalid v4 Initialize log response.");let P=[];for(let p of l){if(!Array.isArray(p.topics)||p.topics.length!==4||typeof p.data!="string")throw new b("Invalid v4 Initialize log.");let[A,C,N]=we(ye,p.data),D={currency0:v(`0x${p.topics[2].slice(-40)}`),currency1:v(`0x${p.topics[3].slice(-40)}`),fee:Number(A),tickSpacing:Number(C),hooks:v(N)};P.push({key:D,id:p.topics[1]}),s.add(p.topics[1].toLowerCase())}if(t.push(P),u===0n)break;if(s.size>=i){f=!0;break}d=u-1n}let w=new Map;for(let d of t.reverse())for(let u of d)w.set(u.id.toLowerCase(),u);return{pools:[...w.values()],cut:f}}async function Ee(o,e,r){let i=e.eth?T.weth:e.address,a=r.eth?T.weth:r.address;if(i===a)return[];let[t,s]=he(i,a)<0?[i,a]:[a,i],[f,n]=await Promise.all([I(o,t,k),I(o,s,k)]),w=[];for(let d of Object.keys(re).map(Number)){let u=v(String(await o.readContract({address:T.factory,abi:ae,functionName:"getPool",args:[t,s,d]})));u!==pe&&w.push(await ge(o,u,f,n,d))}return w}function ue(o){return o?o.eth?[S,L]:o.address===L?[L,S]:[o.address]:null}async function Te(o,e){let r=new Map;if(e.length===0)return r;if(typeof o.multicall=="function"&&o.chain?.contracts?.multicall3)try{return(await o.multicall({allowFailure:!0,contracts:e.map(a=>({address:_,abi:$,functionName:"getLiquidity",args:[a]}))})).forEach((a,t)=>r.set(e[t].toLowerCase(),a.status==="success"?BigInt(a.result):0n)),r}catch{}for(let i=0;i<e.length;i+=R)(await Promise.allSettled(e.slice(i,i+R).map(async t=>BigInt(await o.readContract({address:_,abi:$,functionName:"getLiquidity",args:[t]}))))).forEach((t,s)=>r.set(e[i+s].toLowerCase(),t.status==="fulfilled"?t.value:0n));return r}async function Be(o,e,r,i){let a=ue(e),t=ue(r),s=new Map,f=(c,h)=>{if(c&&h){if(c===h)return;let[m,g]=he(c,h)<0?[c,h]:[h,c];s.set(`${m}/${g}`,[m,g])}else if(c||h){let m=c??h;s.set(`${m}/*0`,[m,null]),s.set(`${m}/*1`,[null,m])}};for(let c of a??[null])for(let h of t??[null])f(c,h);let n=new Map;for(let c of y)[...s.values()].some(([m,g])=>(!m||E(c.key.currency0,m))&&(!g||E(c.key.currency1,g)))&&n.set(c.poolId.toLowerCase(),{key:c.key,id:c.poolId});let d=typeof o.multicall=="function"&&!!o.chain?.contracts?.multicall3?ve:Ce,u=!1;for(let[c,h]of s.values()){let m=await Ne(o,c,h,d+y.length);u||=m.cut;for(let g of m.pools)n.set(g.id.toLowerCase(),g)}let l=new Set(y.map(c=>c.poolId.toLowerCase())),P=[...n.values()],p=P.filter(c=>l.has(c.id.toLowerCase())),A=P.filter(c=>!l.has(c.id.toLowerCase())).reverse();(A.length>d||u)&&i.push(`${u?"At least ":""}${A.length} v4 pools match; only the newest ${d} non-measured ones were considered. Pass both tokens, or a poolId, to narrow.`);let C=A.slice(0,d),N=await Te(o,C.map(c=>c.id)),D=C.sort((c,h)=>{let m=N.get(c.id.toLowerCase())??0n,g=N.get(h.id.toLowerCase())??0n;return m===g?0:m<g?1:-1}),V=[...p,...D];V.length>X&&i.push(`${V.length} v4 pools match; full state was read for Oak's measured pools plus the deepest of the rest (${X} total). Pass both tokens, or a poolId, to narrow.`);let G=[],M=0,j=V.slice(0,X);for(let c=0;c<j.length;c+=R){let h=await Promise.allSettled(j.slice(c,c+R).map(({key:m,id:g})=>H(o,m,g)));for(let m of h)m.status==="fulfilled"?G.push(m.value):M++}return M>0&&i.push(`${M} pool(s) were skipped because a token or pool state could not be read.`),G}async function Oe(o,e){let r=y.find(n=>E(n.poolId,e));if(r)return H(o,r.key,r.poolId);let[i,a,t,s,f]=await o.readContract({address:oe,abi:_e,functionName:"poolKeys",args:[e.slice(0,52)]});if(i===S&&a===S&&Number(s)===0)throw new b(`No Uniswap v4 pool ${e} is known to the PositionManager (no position was ever minted in it, or it is not initialized). Search by token pair instead.`);return H(o,{currency0:i,currency1:a,fee:Number(t),tickSpacing:Number(s),hooks:f},e)}function qe(o){let e=new Set([...y.map(t=>t.poolId.toLowerCase()),...B.map(t=>t.address.toLowerCase())]),r=new Set([S,K.toLowerCase(),L.toLowerCase()]),i=t=>r.has(t.address.toLowerCase())?"ETH":t.address.toLowerCase(),a=new Map;for(let t of o.filter(s=>s.initialized&&BigInt(s.liquidity)>0n)){let s=`${i(t.token0)}/${i(t.token1)}`;a.set(s,[...a.get(s)??[],t])}for(let t of a.values()){let s=t.filter(d=>e.has(d.id.toLowerCase()));if(s.length===0&&t.length<3)continue;let n=(s.length>0?s:t).map(d=>BigInt(d.sqrtPriceX96)).sort((d,u)=>d<u?-1:d>u?1:0),w=n[Math.floor(n.length/2)];for(let d of t){if(e.has(d.id.toLowerCase()))continue;let u=Q(BigInt(d.sqrtPriceX96),w);u>Se&&(d.priceOutlierBps=Number(u),d.note=`${d.note?`${d.note} `:""}Price differs ${u} bps from the ${s.length>0?"Oak-measured":"median"} price for this pair; do not treat this pool as the market price.`)}}}async function Re(o,e){let r=e.version;if(r!==void 0&&r!=="v3"&&r!=="v4")throw new b('version must be "v3" or "v4"; omit it to search both.');let i=e.limit===void 0?me:Number(e.limit);if(!Number.isInteger(i)||i<1||i>q)throw new b(`limit must be an integer from 1 to ${q}.`);let a=le(e.tokenA,"tokenA"),t=le(e.tokenB,"tokenB");if(!a&&t)throw new b("Provide tokenA when searching by token; tokenB narrows the search to a pair.");let s=o.clientFor(k),f=[],n=[];if(e.poolId!==void 0){if(typeof e.poolId!="string"||!/^0x[0-9a-fA-F]{64}$/.test(e.poolId))throw new b("poolId must be a 32-byte hex v4 poolId. For v3 search by tokenA/tokenB.");n=[await Oe(s,e.poolId)]}else if(a){if(r!=="v4"&&(t?n.push(...await Ee(s,a,t)):f.push("v3 pools are looked up per pair; pass tokenB to include them.")),r!=="v3")try{n.push(...await Be(s,a,t,f))}catch(l){throw F(l,-32601)?l:new b(`Could not search v4 pools. ${Y(l)}`)}}else{f.push("No token filter given: showing the pools Oak has measured. Pass tokenA (and tokenB) to search the chain for every pool of a pair.");let l=await Promise.all(B.map(async p=>{let[A,C]=await Promise.all([I(s,p.token0,k),I(s,p.token1,k)]);return ge(s,p.address,A,C,p.fee)})),P=await Promise.all(y.map(p=>H(s,p.key,p.poolId)));n=[...r==="v4"?[]:l,...r==="v3"?[]:P]}qe(n);let w=new Set([...y.map(l=>l.poolId.toLowerCase()),...B.map(l=>l.address.toLowerCase())]),d=0;n=n.filter(l=>!l.highFee||w.has(l.id.toLowerCase())?!0:e.includeHighFeePools===!0?(l.note=`Do not trade here: ${l.feePercent} fee.${l.note?` ${l.note}`:""}`,!0):(d++,!1)),d&&f.push(`${d} pools with fees of 5% or more were left out. To see them, pass includeHighFeePools: true.`),n.sort((l,P)=>BigInt(P.liquidity)>BigInt(l.liquidity)?1:BigInt(P.liquidity)<BigInt(l.liquidity)?-1:0),n.length>i&&f.push(`Showing the ${i} deepest of ${n.length} pools found; raise limit (max ${q}) to see more.`),n=n.slice(0,i);let u=n.filter(l=>l.initialized&&BigInt(l.liquidity)>0n).length;return n.length===0&&d===0&&f.push("No pool exists for this pair. Create one with uniswap_create_pool, or create it and add the first liquidity together with uniswap_add plus initialPrice."),{pools:n,notes:f,summary:`Found ${n.length} Uniswap pool(s), ${u} with active liquidity. price is token1 per 1 token0.`}}function ze(o){return{tools:[{name:"uniswap_pools",inputSchema:{type:"object",description:"Read-only pool discovery on Robinhood Chain (4663): every Uniswap v3 and v4 pool for a token pair with fee, tick spacing, hook, liquidity and price, or one v4 pool by poolId. No tokens given: the measured pools.",properties:{version:{type:"string",enum:["v3","v4"],description:"Limit to one version; omit to search both."},tokenA:{type:"string",description:'Token address, or "eth" for native ETH (searches v3 WETH and v4 native/WETH pools).'},tokenB:{type:"string",description:"Second token of the pair. Required for v3 lookups."},poolId:{type:"string",description:"32-byte v4 poolId to inspect."},includeHighFeePools:{description:"Include pools above the usual fee threshold in discovery.",type:"boolean"},limit:{description:"Maximum number of results to return, within the stated bounds.",type:"integer",minimum:1,maximum:q,default:me}}},execute:async r=>Re(o,r)}]}}export{Re as a,ze as b};
@@ -1 +0,0 @@
1
- import{a as ne,b as re,d as ae,e as se,f as ce,g as de}from"./EQEMI54U.js";import{B as J}from"./4E7FJQLL.js";import{c as te,d as ie}from"./OSMOBKRQ.js";import{a as m,e as T,f as q,h as _,i as R,j as n,k as oe,l as E,m as x,n as C,o as P,p as A,q as I,r as B,t as N}from"./XRDLMTBJ.js";import{f as Y,g as Z,i as ee}from"./MQK6OP7S.js";import{a as X}from"./Z7FGEWO2.js";import{a as s}from"./XSD5NL7J.js";import{encodeFunctionData as fe,zeroAddress as S}from"viem";var le=["hookr_lp_add","hookr_lp_remove","hookr_lp_collect"],he=t=>le.includes(t),F=t=>({type:"object",additionalProperties:!1,properties:t,required:Object.keys(t)}),j=ce.oneOf[0],ue={hookr_lp_add:{...F({target:{...F({position:j}),description:"Where to add liquidity: the existing Hookr family position."},liquidity:{...m,description:"Liquidity to add, in v4 liquidity base units (not a token amount); positive, and the position total stays below 2^127."},amount0Max:{...m,description:`Maximum of the pool's currency0 to deposit, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},amount1Max:{...m,description:`Maximum of the pool's currency1 to deposit, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}})},hookr_lp_remove:F({position:j,liquidity:{...m,description:"Liquidity to remove, in v4 liquidity base units (not a token amount); positive and at most the position remaining liquidity."},amount0Min:{...m,description:`Minimum of the pool's currency0 to receive, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},amount1Min:{...m,description:`Minimum of the pool's currency1 to receive, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}}),hookr_lp_collect:F({position:j,deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}})};function ye(t,r){if(!he(t))throw new s("Choose a supported Hookr family LP action.");let d=ue[t],i=T(r,Object.keys(d.properties),d.required),e=t==="hookr_lp_add",l=t==="hookr_lp_collect",o=de(e?T(i.target,["position"],["position"]).position:i.position),a=l?0n:q(i.liquidity,127);if(!l&&!a)throw new s("Hookr add/remove liquidity must be an exact positive integer; use collect for fees only.");let v=l?0n:q(i[e?"amount0Max":"amount0Min"],e?128:256),k=l?0n:q(i[e?"amount1Max":"amount1Min"],e?128:256);return{position:o,adding:e,collecting:l,liquidity:a,bound0:v,bound1:k,deadline:q(i.deadline,64)}}async function ke(t,r,d){let{block:i,poolId:e,position:l,pc:o,core:a,role:v}=r,k=(p,L=[])=>A(t,a,P(v),p,L,i.number),[$,H,U,O]=await Promise.all([k("config",[e]),A(t,B,P("registry"),"admission",[I,a],i.number),k("configSchemaHash"),k("recaptureConfig",[e])]),h=x($),u=x(H),f=x(u.caps),g=x(o.caps);if(u.implementation!==a||u.codeHash!==Y(a).codeHash||u.schemaHash!==_(U)||n(u.kind,8)!==0n||!n(u.gasLimit,32)||n(f.maxLpFeePips,24)>600000n||n(f.maxQuoteTakePips,24)>=1000000n||n(f.maxSubjectTakeBps,16)>1000n)throw new s("Hookr core admission or fee caps are unavailable or outside the reviewed limits.");let y=n(g.maxLpFeePips,24),b=n(g.maxQuoteTakePips,24),c=n(g.maxSubjectTakeBps,16),w=n(h.burnBps,16),pe=n(h.lpBps,16),D=n(h.protocolShareBps,16);if(y>600000n||y>n(f.maxLpFeePips,24)||n(o.baseLpFeePips,24)>y||n(h.maxFeePips,24)>y||b>n(f.maxQuoteTakePips,24)||c>n(f.maxSubjectTakeBps,16)||w+pe>1000n||D<2000n||D>5000n)throw new s("Hookr pool fee settings exceed the reviewed entry caps. Exit tools remain available.");let M=R(o.advisory),z={gated:!1};if(M!==S){if(M!==N||o.advisoryFailOpen!==!1||n(o.advisoryPhases,8)!==1n)throw new s("Hookr entry requires the reviewed fail-closed agent gate configuration.");await Z(t,i.number,[N]);let p=await te(t,i.number,d),L=await ie(t,i.number,e,l.launcher,M);if(!p.healthyIdentityOnly||!p.walletAgent||!("liquidityEntryAllowed"in L)||!L.liquidityEntryAllowed)throw new s("Hookr family entry needs a healthy gate and a current on-chain agent identity. Collect/remove do not need Hookr gate eligibility.");let me=x(L.terms),W=q(me.tierPips,24);if(W>50000n||n(o.baseLpFeePips,24)+W>y||n(o.advisoryGasLimit,32)<400000n||n(o.advisoryGasLimit,32)>2000000n)throw new s("Hookr gate surcharge or gas exceeds the pool caps.");z=L}let V=x(E(O,3)[0]);oe(V.on);let G=null,K=BigInt(_(await t.getStorageAt({address:I,slot:re(e),blockNumber:i.number})));if(BigInt(l.launcher)!==(K&(1n<<160n)-1n))throw new s("Hookr frozen Root record differs from the family Launcher.");let Q=(K>>200n&255n)!==0n;if(Q){let p=E(await A(t,B,P("registry"),"activeLaneOf",[I],i.number),4);if(R(p[0]),_(p[1]),n(p[2],32),n(p[3],16)>10000n)throw new s("Hookr recapture switch is malformed.");G=C({activeSwapSwitch:p,swapExecutorUsedByLpAction:!1,liquidityCallbackFloor:300000n+300000n/63n+5000n,floorSource:"Pinned HookrLane._flush; sender estimates the complete transaction, including EIP-150 overhead."})}return C({config:h,poolCaps:g,gateStatus:z,reportedRecaptureConfig:V,laneLiquidity:Q,lane:G})}async function ge(t,r,d,i){let e=ye(t,d);if(r.network==="testnet")throw new s("Hookr family LP actions require Robinhood Chain 4663.");let l=r.clientFor(4663),o=await ae(l,i,e.position);if(e.deadline<=o.block.timestamp||e.deadline>o.block.timestamp+300n)throw new s("Set a fresh Hookr LP deadline within the next 300 seconds of chain time.");if(!e.adding&&e.liquidity>o.liquidity)throw new s("Remove no more than the exact remaining Hookr family liquidity.");if(e.adding&&e.liquidity+o.liquidity>=1n<<127n)throw new s("Hookr resulting liquidity must fit int128 max.");let a=J({liquidity:e.liquidity,tickLower:o.tickLower,tickUpper:o.tickUpper,sqrtPriceX96:o.sqrtPriceX96,roundUp:e.adding});if(e.adding&&(!a.amount0&&!a.amount1||a.amount0>=1n<<127n||a.amount1>=1n<<127n||a.amount0>e.bound0||a.amount1>e.bound1))throw new s("Hookr rounded-up principal debts must fit the exact finite funding caps.");let v=t==="hookr_lp_remove"?await se(l,o):null;if(v?.currentlyLocked)throw new s("Hookr principal is locked on the parent-block clock. Collect fees now or wait until all principal locks expire.");let k=e.adding?await ke(l,o,i):null,$=null,H=null;try{$=(await Promise.all([o.key.currency0,o.key.currency1].map(c=>A(l,o.core,P("rulesV1"),"poolAccrued",[o.poolId,c],o.block.number)))).map((c,w)=>({token:o.tokens[w],amount:n(c).toString()}))}catch{H="Core credit forecast unavailable; receipt verification must identify any core payment separately. No zero is inferred."}let U=e.adding?"Add":e.collecting?"Collect LP fees with zero principal removed from":"Remove",O=`${o.key.currency0} / ${o.key.currency1}`,h=`${U} Hookr family ${e.position.familyId}, member ${e.position.member}, Launcher ${e.position.launcher}. ${e.adding||!e.collecting?`Exact liquidity ${e.liquidity}; existing ticks ${o.tickLower} to ${o.tickUpper}.`:""} Recipient ${i}. Currencies ${O} (base units; decimals ${o.tokens[0].decimals}/${o.tokens[1].decimals}). ${e.adding?`Deposit caps ${e.bound0}/${e.bound1}; current rounded-up principal debts ${a.amount0}/${a.amount1}. Exact finite approvals are reset first and revoked after the add; unused funding returns to ${i} in the add transaction.`:`Principal minimums ${e.bound0}/${e.bound1}; current principal forecast ${a.amount0}/${a.amount1}. Fees cannot satisfy a principal minimum.`} Uncollected LP fee forecast ${o.fees[0]}/${o.fees[1]}, paid separately from principal. Any family accrual moved into the wallet\u2019s core claim ledger is reported separately after mining; this credit is not a wallet token receipt; pool pending recapture is not earned position fees. ${H??"Core credit forecast is separate in terms."} Deadline ${e.deadline}.`,u=[],f=[],g=[];if(e.adding)for(let[b,c]of[o.key.currency0,o.key.currency1].entries()){let w=b===0?e.bound0:e.bound1;w&&(g.push({token:c===S?X:c,amount:w,...c===S?{to:e.position.launcher}:{}}),c!==S&&(u.push(r.approval(c,e.position.launcher,"0",4663),r.approval(c,e.position.launcher,w.toString(),4663)),f.push(r.approval(c,e.position.launcher,"0",4663))))}let y=u.length;return u.push(r.unsignedTx({to:e.position.launcher,chainId:4663,value:e.adding&&o.key.currency0===S?e.bound0.toString():"0",description:h,data:fe({abi:ne(e.position),functionName:e.adding?"addLiquidity":"withdraw",args:e.adding?[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,e.deadline]:[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,i,e.deadline]})}),...f),await ee(l,o.block),{txs:u,inputs:g,summary:h,state:o,request:e,actionIndex:y,terms:C({request:d,blockNumber:o.block.number,blockHash:o.block.hash,poolId:o.poolId,poolKey:o.key,owner:i,recipient:i,range:{tickLower:o.tickLower,tickUpper:o.tickUpper},liquidityBefore:o.liquidity,liquidityDelta:e.adding?e.liquidity:-e.liquidity,principal:a,principalBounds:[e.bound0,e.bound1],uncollectedLpFees:o.fees.map((b,c)=>({token:o.tokens[c],amount:b})),coreCredits:$,coreCreditsReason:H,locks:v,entry:k,exactApprovals:u.filter((b,c)=>c!==y),refunds:e.adding?[e.bound0-a.amount0,e.bound1-a.amount1]:null,gasEstimate:null,gasEstimateReason:"Local sender estimates the ordered calls and confirms the maximum network fee."})}}function be(t){if(!Array.isArray(t)||!t.length||t.length>7)throw new s("Hookr LP requires only its exact finite approvals, one family action and cleanup.");for(let r of t)T(r,["to","data","value","chainId","description"],["to","data","value","chainId","description"])}function $e(t,r){if(be(t),t.length!==r.length||t.some((d,i)=>d.to!==r[i].to||d.data!==r[i].data||d.value!==r[i].value||d.chainId!==4663))throw new s("Hookr LP differs from the locally reconstructed exact family action, recipient, bounds, approvals or cleanup.")}function Te(t){return le.map(r=>({name:r,inputSchema:ue[r],execute:async(d,i)=>{let e=await ge(r,t,d,i);return{txs:e.txs,preview:await t.preview(e.txs,i),terms:e.terms,summary:e.summary}}}))}export{le as a,he as b,ue as c,ye as d,ge as e,be as f,$e as g,Te as h};
@@ -1 +0,0 @@
1
- var a={chainId:4663,usdg:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",v4:{poolManager:"0x8366a39CC670B4001A1121B8F6A443A643e40951",swapper:"0x7Cd4E04E433E69e588728c86A3832753B5F846d4",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",stateView:"0xf3334192d15450cdd385c8b70e03f9a6bd9e673b"},v3:{router:"0xCaf681a66D020601342297493863E78C959E5cb2",quoter:"0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7",factory:"0x1f7d7550B1b028f7571E69A784071F0205FD2EfA"},tokens:[{symbol:"AAPL",token:"0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9",pools:[{v:3,fee:500,pool:"0xAae0d815EE56e4092a5E5C2911E676Fea50B2d6D"},{v:4,fee:3e3,tickSpacing:60,id:"0xc748f4671a867db48b552f6b7650bf3255e05f80f00e3f7aad1b17ccb7898fdb"},{v:3,fee:3e3,pool:"0x783C9bbB765047CFdD2b84b92b2Ca9F11D34b7Ed"}]},{symbol:"AMD",token:"0x86923f96303D656E4aa86D9d42D1e57ad2023fdC",pools:[{v:3,fee:3e3,pool:"0x48D284A2A4d3DC1b3Da08231Fe44317e7e7Aa51f"}]},{symbol:"AMZN",token:"0x12f190a9F9d7D37a250758b26824B97CE941bF54",pools:[{v:3,fee:3e3,pool:"0x8AC92DA74AB5F3b1d024Dc1943Ad7e15Dc4179Ef"},{v:4,fee:2400,tickSpacing:24,id:"0xefc94885c96b02696b9b45de43eeeb8ac53c0199cab42b4daae4911b96fb8825"}]},{symbol:"ASML",token:"0x47F93d52cBeC7C6D2CfC080e154002370a60dAEA",pools:[{v:3,fee:1e4,pool:"0xedb22516B14Eb2d1C86927Db373B0E8bF70F5cD1"}]},{symbol:"BABA",token:"0xad25Ac6C84D497db898fa1E8387bf6Af3532a1c4",pools:[{v:4,fee:1e3,tickSpacing:10,id:"0x1791fc651cc794a282e5dbcb56d0b2b38eff8754b677c8876e86901521ecc439"},{v:3,fee:3e3,pool:"0xa57ab582b310dd6f9e934EA1EEEa152741545E6A"}]},{symbol:"COIN",token:"0x6330D8C3178a418788dF01a47479c0ce7CCF450b",pools:[{v:4,fee:2500,tickSpacing:25,id:"0xe2e1a0e32205e854525e0fb1d3667a53bd3b4919f032b9bcd2a038b6b6dac314"},{v:4,fee:1e4,tickSpacing:200,id:"0x007a13fa152f6dc383cad20a8eaab4e1e2538b606936eae2a424f8aa47d6db31"}]},{symbol:"CRCL",token:"0xdF0992E440dD0be65BD8439b609d6D4366bf1CB5",pools:[{v:3,fee:3e3,pool:"0x654E4143e82a5824445Ade0824351C2A9ACD95a8"},{v:4,fee:3e3,tickSpacing:30,id:"0x628c98ab436ee34a6a7decd606242890582591bdf7c9a35d90e0d08021c31ea0"},{v:4,fee:1500,tickSpacing:15,id:"0x5177eac8c2176468bbf15e44081e151d35c2e7d068e96d3db94f496a4dc944b2"}]},{symbol:"CRWV",token:"0x5f10A1C971B69e47e059e1dC91901B59b3fB49C3",pools:[{v:4,fee:9e3,tickSpacing:90,id:"0x237014478f7ef98afbe7412ac35b6a3f96b8fb111de48b7c4dbf49dba4bd9c4b"}]},{symbol:"DELL",token:"0x941AE714EC6D8130c7B75d67160Ca08f1e7d11Dd",pools:[{v:3,fee:1e4,pool:"0xc30c89cB7815A1488b7998D15eEC73961707Fc5a"}]},{symbol:"GME",token:"0x1b0E319c6A659F002271B69dB8A7df2F911c153E",pools:[{v:3,fee:500,pool:"0xE2b46c905E12Ab8E2f864e4821a4325884C1B126"}]},{symbol:"GOOGL",token:"0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE3",pools:[{v:3,fee:500,pool:"0x34D0dC122CF9A8Eb296fC5e0D3A233625D7d19b7"},{v:4,fee:300,tickSpacing:3,id:"0x43fe16b75cabbf38f5b185d16142b02d1d9200d8f1ba17cb6cf899f562c6197f"},{v:4,fee:3e3,tickSpacing:60,id:"0xd4ecb79fdc521d7725d22b33ed43cb4e47aa96bfad76aa29577e3151f723ac5e"}]},{symbol:"INTC",token:"0xc72b96e0E48ecd4DC75E1e45396e26300BC39681",pools:[{v:3,fee:3e3,pool:"0x2e5a92f5013a64661A49312111be2e8aBd33F56a"}]},{symbol:"META",token:"0xc0D6457C16Cc70d6790Dd43521C899C87ce02f35",pools:[{v:4,fee:310,tickSpacing:3,id:"0xc58bb68060bcb7b3ea0f6d4a4afef1e57f628722e808db12afb6d1733552872f"},{v:3,fee:3e3,pool:"0x107a7Cb40d8665360ba10E59471Af06150A50922"},{v:4,fee:3e3,tickSpacing:60,id:"0x5875d407a42965b0e768c8925cea290e06fa50603ef34fc99eb92a1050e6ae36"}]},{symbol:"MSFT",token:"0xe93237C50D904957Cf27E7B1133b510C669c2e74",pools:[{v:3,fee:3e3,pool:"0xeb60bCD1D920ad6E102690CCFC6fB488899E1510"},{v:4,fee:3e3,tickSpacing:60,id:"0x9194a557b6a6bb2236b49ea7e2bbccec5d3eeb705aef00903be4b3de1d949579"}]},{symbol:"MSTR",token:"0xec262a75e413fAfD0dF80480274532C79D42da09",pools:[{v:4,fee:2500,tickSpacing:25,id:"0x319bac87e616a89e241c10aeb8afd4892a852cdd8b373cd9765ecddc40b87cfe"},{v:4,fee:2400,tickSpacing:24,id:"0xc105b8300ff65d750a0e4e63c7a879e20504069b770713464a5315e797735326"}]},{symbol:"MU",token:"0xfF080c8ce2E5feadaCa0Da81314Ae59D232d4afD",pools:[{v:3,fee:3e3,pool:"0xd057B1Bc54917855BBee58eAd58647f47caB35E5"}]},{symbol:"NBIS",token:"0x9D9c6684F596F66a64C030B93A886D51Fd4D7931",pools:[{v:4,fee:9900,tickSpacing:99,id:"0x7c2f9ce1214ba9baf56d1b6a1fc640c1b63e9a711172c0c7d10e5a9c4a3d4f0c"}]},{symbol:"NVDA",token:"0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC",pools:[{v:3,fee:500,pool:"0xd4EB21209C4D6093f80B5b84f5C45cc093EA14a3"},{v:4,fee:100,tickSpacing:1,id:"0x6444a8e0b267406a15db74ca00c4a24bdfa81ed3180f5b6d0851f8ed6f4f29c5"},{v:4,fee:3e3,tickSpacing:60,id:"0x3bb34a44f1b2b5f32c034c38a53065a521a47b199700fa9bd19d60985ff24bf1"}]},{symbol:"ORCL",token:"0xb0992820E760d836549ba69BC7598b4af75dEE03",pools:[{v:4,fee:1e4,tickSpacing:200,id:"0xc2ce4784e1e72cf0221b51b30c8aaadf6c0b12863cf03ab3687854fb7b1d850a"}]},{symbol:"PLTR",token:"0x894E1EC2D74FFE5AEF8Dc8A9e84686acCB964F2A",pools:[{v:4,fee:1500,tickSpacing:15,id:"0xc59eaeda6d1a6f031bc7e1d039772f2d675e7b4de2c8668610f4471bd60b3802"},{v:3,fee:3e3,pool:"0x851680416A4f4E1c463d45171d61ACDdBc8554c0"}]},{symbol:"QQQ",token:"0xD5f3879160bc7c32ebb4dC785F8a4F505888de68",pools:[{v:3,fee:500,pool:"0xD60A5d14dB690B7Afad71F76B108071D7175597d"}]},{symbol:"SGOV",token:"0x92FD66527192E3e61d4DDd13322Aa222DE86F9B5",pools:[{v:3,fee:500,pool:"0x6Ba50150B17Ffd0972915Aaf04fFd5E8f4Fa49b4"},{v:3,fee:3e3,pool:"0xfAb520051f96F4D2a32c22B6a3dD7fFfdf231bFe"}]},{symbol:"SLV",token:"0x411eFb0E7f985935DAec3D4C3ebaEa0d0AD7D89f",pools:[{v:3,fee:3e3,pool:"0x8cB787e6c315D464775289BaD00FDD67d53Ecb3D"},{v:3,fee:1e4,pool:"0x0Fa7BC480885DCf58Ad2ef63eC7289cF2481D51c"}]},{symbol:"SNDK",token:"0xB90A19fF0Af67f7779afF50A882A9CfF42446400",pools:[{v:4,fee:1e4,tickSpacing:200,id:"0x2707cb88a6a40fa0f948f58958051ba097d6f6a3cf7f87929bd68ccc5becea24"}]},{symbol:"SPCX",token:"0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa",pools:[{v:3,fee:500,pool:"0xc61284332117c3FB23A2A56cceFFD07F7aF60029"},{v:3,fee:3e3,pool:"0xEb07d9587eFD1778dFb9c385Ec43EF6d5F9fE401"}]},{symbol:"SPY",token:"0x117cc2133c37B721F49dE2A7a74833232B3B4C0C",pools:[{v:4,fee:100,tickSpacing:1,id:"0xe1ae6a4c6ccc9f037389a8d50a4f577bde1a9fe01d85d88ecbbd39955ce53288"},{v:3,fee:500,pool:"0xa7Bb1AC63BBaB0C44316E6c8C455213441689167"},{v:4,fee:500,tickSpacing:5,id:"0xe5923c8a8be481ec89a2ca784a2bbfa4235de6d88f92260fd66b660c4babf907"}]},{symbol:"TSLA",token:"0x322F0929c4625eD5bAd873c95208D54E1c003b2d",pools:[{v:3,fee:3e3,pool:"0xf4ACdAEEB7022862A763C9B1B885e11191c889E3"},{v:4,fee:3e3,tickSpacing:60,id:"0x8517f8071ae5b831b738052f12125e8e3d6c158b78728aa44ce3b25e5104d32e"}]},{symbol:"TSM",token:"0x58FfE4a942d3885bAa22D7520691F611EF09e7AA",pools:[{v:4,fee:7500,tickSpacing:75,id:"0x0ba5d53d2f6255f334b7c8ead4f56b6aef5af3402c5e4d11180afd38c6b85fb1"},{v:3,fee:1e4,pool:"0x07e8Ea83D4C1340774c8965125e26e12bf943bf1"}]},{symbol:"USAR",token:"0xd917B029C761D264c6A312BBbcDA868658eF86a6",pools:[{v:3,fee:3e3,pool:"0x04391780F519B7d3ba59c9590459D76e23d225C4"}]},{symbol:"USO",token:"0xa30FA36Db767ad9eD3f7a60fC79526fB4d56D344",pools:[{v:4,fee:1200,tickSpacing:15,id:"0x1f2ad5a274a776d8e1408292bde1d92d8fa7b6444acf14ad60b9c3e4e5b66420"},{v:3,fee:3e3,pool:"0x02175608F1b5E6b5ed221cCFdC7Be197D111D915"}]}],notOffered:{CLSK:"thin",EWY:"thin",IONQ:"thin",RGTI:"thin",RKLB:"thin"},sourceCommit:"02230282d8888e00794207ed271ee01b4ce30309"};export{a};
@@ -1 +0,0 @@
1
- var a={partner:"Factor is an official Oak partner. Factor's own team runs its product and contracts; Oak didn't build them and doesn't run them.",trust:"Factor's desk contract has no owner, and its rules are fixed in its code. Factor's website and API are run by Factor and can lag the chain.",fees:"An advance costs a 1% fee taken from the advance, paid to Factor's burn pot contract. A settled job pays Factor's 2% job fee from the agent's payout.",half:"At most half of a job's price can be advanced before delivery.",poolBar:"If a job you drew on isn't delivered within 12 hours after its due time, anyone can refund it, and this wallet can never draw from Factor's pool again.",decline:"You can decline a job only before drawing on it. A rejected job settles at half, with no appeal.",payLink:"A signed pay link can't be revoked; anyone holding it can pay it until it expires.",names:"Names are first come, and a fixed-price application can't be withdrawn.",privateWork:"Your work text stays on this computer; only its fingerprint (a hash) goes on chain.",publicWork:"Your work text will be public on Factor's job page and can't be edited.",walletCode:"This wallet has contract code, so Factor would hold its payouts until they are collected, which Oak can't do yet. Nothing was sent.",compute:"Oak doesn't send compute advances: that ETH goes to Factor's gateway as off-chain credit Oak can't check. Nothing was sent.",lineAccount:"This wallet uses a Factor credit line, which Oak doesn't support yet. Nothing was sent.",offers:"This Factor job takes offers, which Oak can't send yet. Nothing was signed.",deskOnly:"Desk figures only; jobs and limits held through a Factor credit line are not shown.",stateMismatch:"Factor's site names a different desk than the one Oak checked on chain. Nothing was signed or sent.",stateUnavailable:"Factor's site isn't answering, so Oak can't date this message. Nothing was signed.",apiLabel:"Factor API (can lag the chain)"},e={factor_sign_up:`Register this wallet as a Factor agent on Robinhood Chain, then sign its public profile with a name and description. Gas for registration; identity, active plan and human confirmation required. ${a.partner} ${a.trust} ${a.names}`,factor_create_pay_link:`Sign a pay link for a fixed-price ETH job on Robinhood Chain. Price is a wei string; expiry is 1-30 days. No payment now; a customer pays later. Identity, active plan and human confirmation required. ${a.payLink} ${a.half} ${a.fees}`,factor_apply_to_job:`Sign an application for a fixed-price Factor open job. Identity, active plan and human confirmation required. ${a.offers} ${a.names}`,factor_draw:`Draw an early or pool advance to this wallet on Robinhood Chain, with amount in integer wei. Identity, active plan and human confirmation required. ${a.half} ${a.fees} ${a.poolBar} ${a.compute}`,factor_deliver:`Deliver a work fingerprint on Robinhood Chain. Show defaults to false; public posting follows successful delivery only when requested. Identity, active plan and human confirmation required. ${a.privateWork} With show true: ${a.publicWork}`,factor_decline:`Decline a Factor job on Robinhood Chain and return its price to the customer. Identity, active plan and human confirmation required. ${a.decline}`,factor_job:`Read a Factor job and its public details from the ${a.apiLabel}. API data does not authorize an action. No identity or plan required.`,factor_can_draw:`Read the desk's early and pool advance amounts in wei on Robinhood Chain; these amounts share the same half-price cap. No identity or plan required. ${a.deskOnly}`,factor_my_jobs:`Read at most 50 Factor jobs for this wallet as agent or customer from the ${a.apiLabel}. No identity or plan required. ${a.deskOnly}`,factor_open_jobs:`Read at most 25 Factor open-job listings from the ${a.apiLabel}. Filter by this wallet or verified owners when requested. No identity or plan required.`,factor_open_job:`Read a Factor open-job listing and public application details from the ${a.apiLabel}. No identity or plan required.`};export{a,e as b};
@@ -1,2 +0,0 @@
1
- import{a as s}from"./ZTX4WT62.js";import{formatUnits as c}from"viem";var r="Oak x Chop. Chop's own team runs its product and contracts; Oak didn't build them and doesn't run them.",i="Chop's upgrade key can replace log code without a timelock.",u="Chop's unwrap has no on-chain minimum output. Oak checks the simulated net output, but the contract itself will not stop a worse result if state moves before inclusion.",d="Farming pairs tokens 50/50 with impermanent loss and pays in $CHOP, which can fall in price or be paused by Chop. Stake and newly earned rewards can be locked for 10 minutes.",y=[r,i,u,d],g="Wrapping $OAK moves it out of your wallet. Chop's log contract holds the underlying token; unwrap the log to receive its share, subject to Chop's fees and contract risks.",k="Oak checks that CHOP actually reached your wallet; a successful transaction alone does not prove a payout.",p=e=>(e.bond+e.debond)/100;function m(e){return`Wrap fee ${e.fees.bond/100}%; unwrap fee ${e.fees.debond/100}%. A short round trip loses about ${p(e.fees)}%. Caller exemptions and rounding can change the actual fee.`}function $(e){return[r,i,m(e),u,d,...e.underlying.address.toLowerCase()===s.oak.toLowerCase()?[g]:[],...e.drift.length?[`Warning: Chop code changed since Oak checked it (${e.drift.join(", ")}). New wraps and farms are refused; this exit uses the changed code.`]:[]].join(`
2
- `)}function f(e){let o=e.underlying.symbol;return[`A log is a wrapped version of one token. You hand in ${o} and receive a log token that stays worth a share of the ${o} the log holds.`,"You can earn two ways: the log's backing can grow from other people's trading fees, and you can farm the log for CHOP rewards. Neither is a promised rate.",`Getting in and out costs about ${p(e.fees)}% together: the wrap fee plus the unwrap fee. Other fees set by the log can also apply.`,"The biggest risk: Chop's team holds a key that can replace the log's code at any time, with no waiting period."].join(" ")}function C(e,o,n,t){let a=o.usdEstimate===null?`price unavailable: ${o.estimateReason}`:`$${o.usdEstimate}, estimate, not a quote`,l=n.usdEstimate===null?"The pool's full USD depth has price unavailable; each reserve shows its amount and available estimate.":`The pool holds about $${n.usdEstimate} (estimate, not a quote).`,h=t.pct===null?`A rough $100 price move is unavailable: ${t.reason}.`:`A rough $100 trade using ${t.inputToken.symbol} to buy the log would move its price about ${t.pct}%.`;return[f(e),`This farm's whole CHOP reward pot is about ${o.humanAmount} CHOP (${a}). Oak can't read a reward rate, so it shows no yield.`,l,h,t.assumptions].join(" ")}var x=e=>`You hold 0 ${e}, so there is nothing to unwrap. Unwrapping needs a balance of that log. Nothing was signed.`;function v(e,o,n){let t=a=>c(a,e.decimals);return`You asked to unwrap ${t(o)} ${e.symbol} but hold ${t(n)} ${e.symbol}. Ask for ${t(n)} or less ("${n}" in base units).`}export{r as a,i as b,u as c,d,y as e,g as f,k as g,p as h,m as i,$ as j,f as k,C as l,x as m,v as n};
@@ -1 +0,0 @@
1
- import{g as V,k as T}from"./EQEMI54U.js";import{t as R,y as A}from"./4E7FJQLL.js";import{e as O,h as D,i as M,j as S,m as U,o as _,p as q}from"./XRDLMTBJ.js";import{a as I,b as k,g as F,h as H,i as N}from"./MQK6OP7S.js";import{a as t}from"./XSD5NL7J.js";import{randomUUID as J}from"node:crypto";import{getAddress as g,parseAbiItem as E}from"viem";var Q=E("event FamilyLaunched(bytes32 indexed familyId,address indexed owner,address indexed subject,address root)"),Y=E("event FamilyTransferred(bytes32 indexed familyId,address indexed owner)"),j=100000n,Z=64,z=512,K=300*1e3;function ce(P){let l=new Map,h=[g(k.launcherLegacy),g(k.launcherV1)],L=I.launcherDeployments,W=h.reduce((r,d)=>BigInt(L[d].blockNumber)<r?BigInt(L[d].blockNumber):r,BigInt(I.blockNumber));return{name:"hookr_lp_positions",inputSchema:{type:"object",additionalProperties:!1,properties:{cursor:{type:"string",minLength:1,maxLength:64,description:"Opaque, wallet-bound cursor from the preceding page; expires after five minutes. Restart without it if expired."},limit:{type:"integer",minimum:1,maximum:20,description:"Position summaries per page; defaults to 10. A page scans at most 100000 blocks and 32 family checks."}}},execute:async(r,d)=>{if(O(r,["cursor","limit"]),P.network==="testnet")throw new t("Hookr LP reads are configured only on mainnet, chain 4663.");let u=r.limit??10;if(typeof u!="number"||!Number.isInteger(u)||u<1||u>20)throw new t("Provide a Hookr position page limit from 1 to 20.");for(let[o,s]of l)s.expires<=Date.now()&&l.delete(o);let f=P.clientFor(4663),e;if(r.cursor!==void 0){if(typeof r.cursor!="string"||!l.has(r.cursor))throw new t("Hookr position cursor is unknown or expired. Restart without cursor; completeness has not been established.");let o=l.get(r.cursor);if(o.wallet!==d)throw new t("Hookr position cursor belongs to a different wallet. Restart without cursor.");if((await H(f,o.block.number)).hash!==o.block.hash)throw new t("Hookr position snapshot changed. Restart without cursor.");e={...o,candidates:[...o.candidates],seen:new Set(o.seen)}}else{let o=await H(f);e={wallet:d,block:o,nextBlock:o.number,firstBlock:W,candidates:[],member:0,seen:new Set,expires:Date.now()+K}}await F(f,e.block.number,[...h,k.rootV1]);let b=[],y=[],w=!1;if(e.candidates.length===0&&e.nextBlock>=e.firstBlock){let o=e.nextBlock,s=o-j+1n>e.firstBlock?o-j+1n:e.firstBlock;try{let i=(await Promise.all(h.flatMap(n=>[Q,Y].map(c=>f.getLogs({address:n,event:c,args:{owner:d},fromBlock:s,toBlock:o,strict:!0}))))).flat();if(i.length>z*2)throw new t("Hookr event page exceeds the bounded discovery limit. A dedicated position index is required.");let m=new Map;for(let n of i){let c=g(n.address),p=D(n.args.familyId);if(n.removed||!n.blockNumber||n.blockNumber<s||n.blockNumber>o||!h.includes(c)||n.args.owner!==d)throw new t("Hookr event page is incomplete or inconsistent with the requested wallet and block range.");let a=`${c}:${p}`;e.seen.has(a)||m.set(a,{launcher:c,familyId:p})}if(e.seen.size+m.size>z)throw new t("Hookr wallet history exceeds the bounded discovery limit. Completeness requires a dedicated position index.");e.candidates=[...m.values()];for(let n of m.keys())e.seen.add(n);e.nextBlock=s-1n}catch(i){w=!0,b.push(i instanceof t?i.message:"Hookr event history is unavailable for this block range. Retry this cursor; an empty page does not establish no positions.")}}let X=0;for(;!w&&e.candidates.length&&y.length<u&&X++<32;){let o=e.candidates[0],s=(i,m)=>q(f,o.launcher,_(o.launcher===g(k.launcherV1)?"launcherV1":"launcher"),i,m,e.block.number);try{let[i,m]=await Promise.all([s("familyOwner",[o.familyId]),s("memberCount",[o.familyId])]),n=M(i);if(BigInt(n)===0n)throw new t("Hookr family owner is unavailable for an indexed family.");if(n!==d){e.candidates.shift(),e.member=0;continue}let c=Number(S(m,8));if(c<1||c>8)throw new t("Hookr family member count is invalid.");for(;e.member<c&&y.length<u;){let p=e.member,a=U(await s("position",[o.familyId,p])),v=T(a.key);if(typeof a.tickLower!="number"||typeof a.tickUpper!="number")throw new t("Hookr family range is incomplete.");A(a.tickLower,a.tickUpper,v.tickSpacing);let $=S(a.liquidity,128),C=R(v);if(await s("poolFamily",[C])!==o.familyId)throw new t("Hookr position does not belong to this family.");let G=V({kind:"family",...o,member:String(p)});y.push({position:G,poolId:C,owner:d,liquidity:$.toString(),range:{tickLower:a.tickLower,tickUpper:a.tickUpper},poolKey:v}),e.member++}e.member===c&&(e.candidates.shift(),e.member=0)}catch(i){w=!0,b.push(i instanceof t?i.message:"Hookr family state is unavailable. Retry this cursor; no zero position is inferred.")}}await N(f,e.block);let x=!w&&e.nextBlock<e.firstBlock&&e.candidates.length===0;x||b.push("Discovery is incomplete. Continue nextCursor, including after an empty page. Current ownership is checked at the fixed snapshot; history gaps are not evidence of no positions.");let B=null;if(!x){for(;l.size>=Z;)l.delete(l.keys().next().value);B=J(),e.expires=Date.now()+K,l.set(B,e)}return typeof r.cursor=="string"&&l.delete(r.cursor),{chainId:4663,blockNumber:e.block.number.toString(),blockHash:e.block.hash,positions:y,nextCursor:B,complete:x,warnings:b,coverage:{custody:"reviewed Launcher families only",historyStartBlock:e.firstBlock.toString(),scannedFromBlock:e.nextBlock<e.block.number?(e.nextBlock+1n).toString():null,scannedThroughBlock:e.nextBlock<e.block.number?e.block.number.toString():null,snapshotBlock:e.block.number.toString()}}}}}export{ce as a};
@@ -1 +0,0 @@
1
- import{f as L,k as r,l as $}from"./MIKQWF6Q.js";import{a as I,e as c,h as v}from"./LEHBRAZX.js";import{j as h,k as p}from"./2GXHYI23.js";async function M(k,b,d={},O){I(b);let o=new AbortController,C=()=>o.abort(),l=()=>c(o.signal);c(d.signal),d.signal?.addEventListener("abort",C,{once:!0});let u=[];try{let f=await L(k,O,o.signal);l();let w=k.clientFor(4663),S=await v(w,o.signal),T=Array.from({length:Math.ceil(f.logs.length/r)},(t,n)=>f.logs.slice(n*r,(n+1)*r));return await Promise.all(T.map(async(t,n)=>{l(),await $(w,t,b,S,o.signal,(e,y)=>{if(l(),BigInt(e.logTokens.amount)===0n&&BigInt(e.stakedLp.amount)===0n&&BigInt(e.pendingChop.amount)===0n&&BigInt(e.claimableChop.amount)===0n)return;let a=t[y],m=BigInt(e.pendingChop.amount),B=BigInt(e.claimableChop.amount),g=B<=m,s=e.rewardsPaused?0n:B,i={principal:[],debt:[],rewards:[],backing:[],coverage:g?{complete:!0}:{complete:!1,reason:"Chop reward reads disagree."}};if(BigInt(e.logTokens.amount)>0n&&i.backing.push(p({...e.net,source:"chop.redemption.net",heldAs:e.logTokens.token.address,measuredAtBlock:e.measuredAtBlock})),BigInt(e.stakedLp.amount)>0n&&i.backing.push(p({token:a.underlying,amount:null,source:"chop.stakedLp",heldAs:e.stakedLp.token.address,measuredAtBlock:e.measuredAtBlock,unknownReason:"Staked log tokens are not redeemed in this read; unstake to see their redemption."})),g){let A={tool:"chop_harvest",args:{log:a.log.address}},P=m-s;P>0n&&i.rewards.push(h("unpaid",{token:e.pendingChop.token,amount:P.toString(),source:"chop.getUnpaid",measuredAtBlock:e.measuredAtBlock,claim:A})),s>0n&&i.rewards.push(h("claimable",{token:e.claimableChop.token,amount:s.toString(),source:"chop.getClaimable",measuredAtBlock:e.measuredAtBlock,claim:A}))}let E=g?`unpaid CHOP ${m-s} base units; claimable CHOP ${s} base units${e.rewardsPaused?"; rewards are paused":""}.`:"Chop reward reads disagree.";u[n*r+y]=[{module:"chop",id:`4663:${a.log.address}`,chainId:4663,assets:[e.logTokens,e.stakedLp,e.pendingChop],economics:i,description:`Chop log held: ${e.logTokens.amount} base units; redeemable net underlying ${e.net.amount} base units (${a.underlying.address}, decimals ${a.underlying.decimals}); staked LP ${e.stakedLp.amount} base units; ${E}`,oakNotice:e.warnings}]})}).map(t=>t.catch(n=>{throw o.abort(),n}))),[...u.flat(),{module:"chop",id:"4663:coverage",chainId:4663,assets:[],incomplete:!0,description:"Chop positions cover currently verified registry logs only. Delisted or unverified log holdings are not included."}]}catch{return o.abort(),c(d.signal),[...u.flat(),{module:"chop",id:"4663:coverage",chainId:4663,assets:[],incomplete:!0,description:"Chop positions are incomplete because a chain read is unavailable. Please try again."}]}finally{d.signal?.removeEventListener("abort",C)}}export{M as a};