@oakagentkit/core 0.2.6 → 0.2.7

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 (651) hide show
  1. package/build/dist/api/abort-scope.d.ts +2 -0
  2. package/build/dist/api/abort-scope.js +1 -0
  3. package/build/dist/api/chain.js +1 -1
  4. package/build/dist/api/history.js +1 -1
  5. package/build/dist/api/http.js +1 -1
  6. package/build/dist/api/metadata.js +1 -1
  7. package/build/dist/api/modules/beefy/boosts.js +1 -1
  8. package/build/dist/api/modules/beefy/clm.js +1 -1
  9. package/build/dist/api/modules/beefy/guard.js +1 -1
  10. package/build/dist/api/modules/beefy/index.js +1 -1
  11. package/build/dist/api/modules/beefy/liquidity.js +1 -1
  12. package/build/dist/api/modules/beefy/management.js +1 -1
  13. package/build/dist/api/modules/beefy/vaults.js +1 -1
  14. package/build/dist/api/modules/borro/actions.js +1 -1
  15. package/build/dist/api/modules/borro/checks.js +1 -1
  16. package/build/dist/api/modules/borro/copy.d.ts +15 -10
  17. package/build/dist/api/modules/borro/copy.js +1 -1
  18. package/build/dist/api/modules/borro/index.js +1 -1
  19. package/build/dist/api/modules/borro/liquidity.js +1 -1
  20. package/build/dist/api/modules/borro/positions.js +1 -1
  21. package/build/dist/api/modules/borro/reader.js +1 -1
  22. package/build/dist/api/modules/chop/abi.d.ts +31 -0
  23. package/build/dist/api/modules/chop/abi.js +1 -1
  24. package/build/dist/api/modules/chop/actions.js +1 -1
  25. package/build/dist/api/modules/chop/checks.d.ts +13 -5
  26. package/build/dist/api/modules/chop/checks.js +1 -1
  27. package/build/dist/api/modules/chop/copy.d.ts +11 -1
  28. package/build/dist/api/modules/chop/copy.js +1 -1
  29. package/build/dist/api/modules/chop/guard.js +1 -1
  30. package/build/dist/api/modules/chop/index.js +1 -1
  31. package/build/dist/api/modules/chop/positions.js +1 -1
  32. package/build/dist/api/modules/chop/reader.d.ts +132 -7
  33. package/build/dist/api/modules/chop/reader.js +1 -1
  34. package/build/dist/api/modules/chop/types.d.ts +12 -0
  35. package/build/dist/api/modules/clanker/extensions.d.ts +9 -0
  36. package/build/dist/api/modules/clanker/extensions.js +1 -1
  37. package/build/dist/api/modules/clanker/index.js +1 -1
  38. package/build/dist/api/modules/clanker/manage.js +1 -1
  39. package/build/dist/api/modules/clanker/pool-config.d.ts +15 -0
  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/earn/copy.d.ts +32 -10
  43. package/build/dist/api/modules/earn/copy.js +1 -1
  44. package/build/dist/api/modules/earn/cost.d.ts +11 -1
  45. package/build/dist/api/modules/earn/cost.js +1 -1
  46. package/build/dist/api/modules/earn/index.js +1 -1
  47. package/build/dist/api/modules/earn/lp.d.ts +14 -1
  48. package/build/dist/api/modules/earn/lp.js +1 -1
  49. package/build/dist/api/modules/earn/options.d.ts +6 -4
  50. package/build/dist/api/modules/earn/options.js +1 -1
  51. package/build/dist/api/modules/erc8004/common.d.ts +1 -1
  52. package/build/dist/api/modules/erc8004/common.js +1 -1
  53. package/build/dist/api/modules/erc8004/domain.js +1 -1
  54. package/build/dist/api/modules/erc8004/index.js +1 -1
  55. package/build/dist/api/modules/erc8004/management.js +1 -1
  56. package/build/dist/api/modules/erc8004/reputation.js +1 -1
  57. package/build/dist/api/modules/erc8004/services.js +1 -1
  58. package/build/dist/api/modules/erc8004/validation.js +1 -1
  59. package/build/dist/api/modules/factor/abi.d.ts +642 -0
  60. package/build/dist/api/modules/factor/abi.js +1 -0
  61. package/build/dist/api/modules/factor/actions.d.ts +15 -0
  62. package/build/dist/api/modules/factor/actions.js +1 -0
  63. package/build/dist/api/modules/factor/api.d.ts +7 -0
  64. package/build/dist/api/modules/factor/api.js +1 -0
  65. package/build/dist/api/modules/factor/checks.d.ts +11 -0
  66. package/build/dist/api/modules/factor/checks.js +1 -0
  67. package/build/dist/api/modules/factor/copy.d.ts +33 -0
  68. package/build/dist/api/modules/factor/copy.js +1 -0
  69. package/build/dist/api/modules/factor/guard.d.ts +12 -0
  70. package/build/dist/api/modules/factor/guard.js +1 -0
  71. package/build/dist/api/modules/factor/index.d.ts +16 -0
  72. package/build/dist/api/modules/factor/index.js +8 -0
  73. package/build/dist/api/modules/factor/messages.d.ts +46 -0
  74. package/build/dist/api/modules/factor/messages.js +1 -0
  75. package/build/dist/api/modules/factor/pins.d.ts +64 -0
  76. package/build/dist/api/modules/factor/pins.js +1 -0
  77. package/build/dist/api/modules/factor/reader.d.ts +17 -0
  78. package/build/dist/api/modules/factor/reader.js +1 -0
  79. package/build/dist/api/modules/factor/types.d.ts +18 -0
  80. package/build/dist/api/modules/factor/types.js +0 -0
  81. package/build/dist/api/modules/gloam/copy.d.ts +4 -3
  82. package/build/dist/api/modules/gloam/copy.js +2 -2
  83. package/build/dist/api/modules/gloam/index.js +1 -1
  84. package/build/dist/api/modules/grove/index.js +1 -1
  85. package/build/dist/api/modules/heyresearch/builder-feed.js +1 -1
  86. package/build/dist/api/modules/heyresearch/index.js +1 -1
  87. package/build/dist/api/modules/heyresearch/public-reads.d.ts +29 -1
  88. package/build/dist/api/modules/heyresearch/public-reads.js +1 -1
  89. package/build/dist/api/modules/heyresearch/scan.js +1 -1
  90. package/build/dist/api/modules/heyresearch/status-labels.d.ts +2 -0
  91. package/build/dist/api/modules/heyresearch/status-labels.js +1 -1
  92. package/build/dist/api/modules/heyresearch/token-facts.js +1 -1
  93. package/build/dist/api/modules/hoodag/chain-reads.js +1 -1
  94. package/build/dist/api/modules/hoodag/index.js +1 -1
  95. package/build/dist/api/modules/hoodag/management.js +1 -1
  96. package/build/dist/api/modules/hoodag/public-reads.js +1 -1
  97. package/build/dist/api/modules/hoodag/reconstruct.js +1 -1
  98. package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
  99. package/build/dist/api/modules/hoodlock/commerce.js +1 -1
  100. package/build/dist/api/modules/hoodlock/fee.js +1 -1
  101. package/build/dist/api/modules/hoodlock/guard.js +1 -1
  102. package/build/dist/api/modules/hoodlock/index.js +1 -1
  103. package/build/dist/api/modules/hoodlock/lifecycle.js +1 -1
  104. package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
  105. package/build/dist/api/modules/hoodlock/public.js +1 -1
  106. package/build/dist/api/modules/hookr/actions.js +1 -1
  107. package/build/dist/api/modules/hookr/addons.js +1 -1
  108. package/build/dist/api/modules/hookr/agent-gate.js +1 -1
  109. package/build/dist/api/modules/hookr/contracts.d.ts +2 -1
  110. package/build/dist/api/modules/hookr/contracts.js +1 -1
  111. package/build/dist/api/modules/hookr/create-cancel.js +1 -1
  112. package/build/dist/api/modules/hookr/discovery.js +1 -1
  113. package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
  114. package/build/dist/api/modules/hookr/index.js +1 -1
  115. package/build/dist/api/modules/hookr/launch-options.js +1 -1
  116. package/build/dist/api/modules/hookr/launch-receipt.js +1 -1
  117. package/build/dist/api/modules/hookr/launch.js +1 -1
  118. package/build/dist/api/modules/hookr/liquidity.js +1 -1
  119. package/build/dist/api/modules/hookr/lp-positions.js +1 -1
  120. package/build/dist/api/modules/hookr/lp-reads.d.ts +2 -0
  121. package/build/dist/api/modules/hookr/lp-reads.js +1 -1
  122. package/build/dist/api/modules/hookr/lp-receipt.js +1 -1
  123. package/build/dist/api/modules/hookr/lp-state.js +1 -1
  124. package/build/dist/api/modules/hookr/public-reads.js +1 -1
  125. package/build/dist/api/modules/hookr/read-utils.js +1 -1
  126. package/build/dist/api/modules/hookr/relay.js +1 -1
  127. package/build/dist/api/modules/hookr/revenue.js +1 -1
  128. package/build/dist/api/modules/kyberswap/index.js +1 -1
  129. package/build/dist/api/modules/kyberswap/source-pools.js +1 -1
  130. package/build/dist/api/modules/layerbank/actions.js +1 -1
  131. package/build/dist/api/modules/layerbank/index.js +1 -1
  132. package/build/dist/api/modules/layerbank/merkl.js +1 -1
  133. package/build/dist/api/modules/layerbank/reader.js +1 -1
  134. package/build/dist/api/modules/lighter/index.js +1 -1
  135. package/build/dist/api/modules/longbow/administration.js +1 -1
  136. package/build/dist/api/modules/longbow/fixed.js +1 -1
  137. package/build/dist/api/modules/longbow/index.js +1 -1
  138. package/build/dist/api/modules/longbow/nft.js +1 -1
  139. package/build/dist/api/modules/longbow/rebates.js +1 -1
  140. package/build/dist/api/modules/longbow/staking.js +1 -1
  141. package/build/dist/api/modules/meridian/index.js +1 -1
  142. package/build/dist/api/modules/meridian/markets.js +1 -1
  143. package/build/dist/api/modules/meridian/perps-batch.js +1 -1
  144. package/build/dist/api/modules/meridian/perps-stream.js +1 -1
  145. package/build/dist/api/modules/meridian/perps.js +1 -1
  146. package/build/dist/api/modules/meridian/predict-read.js +1 -1
  147. package/build/dist/api/modules/meridian/rfq.js +1 -1
  148. package/build/dist/api/modules/merkl/discovery.js +1 -1
  149. package/build/dist/api/modules/merkl/index.js +1 -1
  150. package/build/dist/api/modules/merkl/manage.js +1 -1
  151. package/build/dist/api/modules/merkl/protocol.js +1 -1
  152. package/build/dist/api/modules/morpho/allocator.js +1 -1
  153. package/build/dist/api/modules/morpho/bundles.js +1 -1
  154. package/build/dist/api/modules/morpho/in-kind.js +1 -1
  155. package/build/dist/api/modules/morpho/index.js +1 -1
  156. package/build/dist/api/modules/morpho/local-guard.js +1 -1
  157. package/build/dist/api/modules/morpho/midnight.js +1 -1
  158. package/build/dist/api/modules/morpho/protocol.js +1 -1
  159. package/build/dist/api/modules/morpho/vault-management.js +1 -1
  160. package/build/dist/api/modules/morpho/vault-tools.js +1 -1
  161. package/build/dist/api/modules/morpho/vault-v2.d.ts +2 -0
  162. package/build/dist/api/modules/morpho/vault-v2.js +1 -1
  163. package/build/dist/api/modules/netnet/card-plan.js +1 -1
  164. package/build/dist/api/modules/netnet/card-read.js +1 -1
  165. package/build/dist/api/modules/netnet/card-recovery.js +1 -1
  166. package/build/dist/api/modules/netnet/desk-action.js +1 -1
  167. package/build/dist/api/modules/netnet/desk-read.js +1 -1
  168. package/build/dist/api/modules/netnet/financial.js +1 -1
  169. package/build/dist/api/modules/netnet/index.js +1 -1
  170. package/build/dist/api/modules/netnet/staking.js +1 -1
  171. package/build/dist/api/modules/orbio/gateway.js +1 -1
  172. package/build/dist/api/modules/orbio/index.js +1 -1
  173. package/build/dist/api/modules/pendle/convert.js +1 -1
  174. package/build/dist/api/modules/pendle/costs.js +1 -1
  175. package/build/dist/api/modules/pendle/index.js +1 -1
  176. package/build/dist/api/modules/pendle/markets.js +1 -1
  177. package/build/dist/api/modules/pendle/positions.js +1 -1
  178. package/build/dist/api/modules/pendle/pricecheck.js +1 -1
  179. package/build/dist/api/modules/pendle/reader.js +1 -1
  180. package/build/dist/api/modules/pendle/redeem.js +1 -1
  181. package/build/dist/api/modules/pendle/trade.js +1 -1
  182. package/build/dist/api/modules/pendle/validate.js +1 -1
  183. package/build/dist/api/modules/pons/claim.js +1 -1
  184. package/build/dist/api/modules/pons/holder-directory.js +1 -1
  185. package/build/dist/api/modules/pons/index.js +1 -1
  186. package/build/dist/api/modules/pons/launch-status.js +1 -1
  187. package/build/dist/api/modules/pons/reads.js +1 -1
  188. package/build/dist/api/modules/pons/trade.d.ts +3 -2
  189. package/build/dist/api/modules/pons/trade.js +1 -1
  190. package/build/dist/api/modules/poolstrade/index.js +1 -1
  191. package/build/dist/api/modules/priors/coverage.js +1 -1
  192. package/build/dist/api/modules/priors/discovery.js +1 -1
  193. package/build/dist/api/modules/priors/features.js +1 -1
  194. package/build/dist/api/modules/priors/holdings.js +1 -1
  195. package/build/dist/api/modules/priors/index.js +1 -1
  196. package/build/dist/api/modules/priors/integration.d.ts +1 -0
  197. package/build/dist/api/modules/priors/integration.js +1 -1
  198. package/build/dist/api/modules/priors/market.js +1 -1
  199. package/build/dist/api/modules/priors/pt.js +1 -1
  200. package/build/dist/api/modules/priors/savings-exit.js +1 -1
  201. package/build/dist/api/modules/priors/stock-swap.js +1 -1
  202. package/build/dist/api/modules/raeto/authorization.d.ts +30 -0
  203. package/build/dist/api/modules/raeto/authorization.js +1 -0
  204. package/build/dist/api/modules/raeto/copy.d.ts +46 -0
  205. package/build/dist/api/modules/raeto/copy.js +1 -0
  206. package/build/dist/api/modules/raeto/errors.d.ts +4 -0
  207. package/build/dist/api/modules/raeto/errors.js +1 -0
  208. package/build/dist/api/modules/raeto/estimate.d.ts +2 -0
  209. package/build/dist/api/modules/raeto/estimate.js +1 -0
  210. package/build/dist/api/modules/raeto/index.d.ts +16 -0
  211. package/build/dist/api/modules/raeto/index.js +1 -0
  212. package/build/dist/api/modules/raeto/pairing.d.ts +40 -0
  213. package/build/dist/api/modules/raeto/pairing.js +1 -0
  214. package/build/dist/api/modules/raeto/pins.d.ts +24 -0
  215. package/build/dist/api/modules/raeto/pins.js +1 -0
  216. package/build/dist/api/modules/raeto/templates.d.ts +22 -0
  217. package/build/dist/api/modules/raeto/templates.js +1 -0
  218. package/build/dist/api/modules/raeto/terms.d.ts +8 -0
  219. package/build/dist/api/modules/raeto/terms.js +1 -0
  220. package/build/dist/api/modules/raeto/types.d.ts +64 -0
  221. package/build/dist/api/modules/raeto/types.js +0 -0
  222. package/build/dist/api/modules/relay/api.d.ts +16 -0
  223. package/build/dist/api/modules/relay/api.js +1 -1
  224. package/build/dist/api/modules/relay/discovery.js +1 -1
  225. package/build/dist/api/modules/relay/inbound.js +1 -1
  226. package/build/dist/api/modules/relay/index.d.ts +1 -0
  227. package/build/dist/api/modules/relay/index.js +1 -1
  228. package/build/dist/api/modules/relay/order.js +1 -1
  229. package/build/dist/api/modules/relay/outbound-status.js +1 -1
  230. package/build/dist/api/modules/relay/readiness.d.ts +1 -0
  231. package/build/dist/api/modules/relay/readiness.js +1 -1
  232. package/build/dist/api/modules/relay/reads.js +1 -1
  233. package/build/dist/api/modules/relay/vaults.js +1 -1
  234. package/build/dist/api/modules/spark/actions.js +1 -1
  235. package/build/dist/api/modules/spark/index.js +1 -1
  236. package/build/dist/api/modules/spark/management.js +1 -1
  237. package/build/dist/api/modules/steakhouse/analytics.js +1 -1
  238. package/build/dist/api/modules/steakhouse/erc4626.js +1 -1
  239. package/build/dist/api/modules/steakhouse/index.js +1 -1
  240. package/build/dist/api/modules/steakhouse/local-guard.js +1 -1
  241. package/build/dist/api/modules/steakhouse/management.js +1 -1
  242. package/build/dist/api/modules/steakhouse/v2-exit.js +1 -1
  243. package/build/dist/api/modules/tickerspring/basket-routes.js +1 -1
  244. package/build/dist/api/modules/tickerspring/contract-reads.js +1 -1
  245. package/build/dist/api/modules/tickerspring/exit-preview.js +1 -1
  246. package/build/dist/api/modules/tickerspring/guards.js +1 -1
  247. package/build/dist/api/modules/tickerspring/index.js +1 -1
  248. package/build/dist/api/modules/tickerspring/journeys.d.ts +1 -0
  249. package/build/dist/api/modules/tickerspring/journeys.js +1 -1
  250. package/build/dist/api/modules/tickerspring/ladder.js +1 -1
  251. package/build/dist/api/modules/tickerspring/maker.js +1 -1
  252. package/build/dist/api/modules/tickerspring/order-accounting.js +1 -1
  253. package/build/dist/api/modules/tickerspring/research.js +1 -1
  254. package/build/dist/api/modules/tickerspring/strategies.js +1 -1
  255. package/build/dist/api/modules/uniswap/auction-create.js +1 -1
  256. package/build/dist/api/modules/uniswap/auction.js +1 -1
  257. package/build/dist/api/modules/uniswap/batch.js +1 -1
  258. package/build/dist/api/modules/uniswap/common.js +1 -1
  259. package/build/dist/api/modules/uniswap/fee-percent.d.ts +4 -0
  260. package/build/dist/api/modules/uniswap/fee-percent.js +1 -0
  261. package/build/dist/api/modules/uniswap/fees.js +1 -1
  262. package/build/dist/api/modules/uniswap/index.js +1 -1
  263. package/build/dist/api/modules/uniswap/local-guard.d.ts +2 -0
  264. package/build/dist/api/modules/uniswap/local-guard.js +1 -1
  265. package/build/dist/api/modules/uniswap/oracle.js +1 -1
  266. package/build/dist/api/modules/uniswap/pool-math.js +1 -1
  267. package/build/dist/api/modules/uniswap/pools.d.ts +2 -0
  268. package/build/dist/api/modules/uniswap/pools.js +1 -1
  269. package/build/dist/api/modules/uniswap/position.js +1 -1
  270. package/build/dist/api/modules/uniswap/protocol.js +1 -1
  271. package/build/dist/api/modules/uniswap/quote-guard.d.ts +38 -0
  272. package/build/dist/api/modules/uniswap/quote-guard.js +1 -0
  273. package/build/dist/api/modules/uniswap/token-jar.js +1 -1
  274. package/build/dist/api/modules/uniswap/trade-batch.js +1 -1
  275. package/build/dist/api/modules/uniswap/trade.d.ts +10 -3
  276. package/build/dist/api/modules/uniswap/trade.js +1 -1
  277. package/build/dist/api/modules/uniswap/v2.js +1 -1
  278. package/build/dist/api/modules/uniswap/v3.js +1 -1
  279. package/build/dist/api/modules/uniswap/v4.d.ts +6 -0
  280. package/build/dist/api/modules/uniswap/v4.js +1 -1
  281. package/build/dist/api/modules/uniswap/wrap.js +1 -1
  282. package/build/dist/api/modules/velora/claims.js +1 -1
  283. package/build/dist/api/modules/velora/delta-reads.js +1 -1
  284. package/build/dist/api/modules/velora/index.js +1 -1
  285. package/build/dist/api/modules/wormhole/index.js +1 -1
  286. package/build/dist/api/modules/wormhole/scan-text.js +1 -1
  287. package/build/dist/api/modules/wormhole/swap-token-verdict.js +1 -1
  288. package/build/dist/api/modules/wormhole/third-party-text.d.ts +14 -3
  289. package/build/dist/api/modules/wormhole/third-party-text.js +1 -1
  290. package/build/dist/api/modules/wormhole/token-check.js +1 -1
  291. package/build/dist/api/modules/wormhole/x402-client.js +1 -1
  292. package/build/dist/api/oak-fee.d.ts +12 -0
  293. package/build/dist/api/oak-fee.js +1 -0
  294. package/build/dist/api/param-text.d.ts +22 -0
  295. package/build/dist/api/param-text.js +1 -0
  296. package/build/dist/api/position-economics.d.ts +70 -0
  297. package/build/dist/api/position-economics.js +1 -0
  298. package/build/dist/api/positions.d.ts +8 -5
  299. package/build/dist/api/positions.js +1 -1
  300. package/build/dist/api/prices.d.ts +3 -0
  301. package/build/dist/api/prices.js +1 -1
  302. package/build/dist/api/progress.d.ts +7 -0
  303. package/build/dist/api/progress.js +1 -0
  304. package/build/dist/api/read-budgets.d.ts +4 -0
  305. package/build/dist/api/read-budgets.js +1 -0
  306. package/build/dist/api/read-shape.d.ts +45 -0
  307. package/build/dist/api/read-shape.js +1 -0
  308. package/build/dist/api/revert.d.ts +23 -0
  309. package/build/dist/api/revert.js +1 -0
  310. package/build/dist/api/routes.js +1 -1
  311. package/build/dist/api/rpc.d.ts +1 -0
  312. package/build/dist/api/rpc.js +1 -1
  313. package/build/dist/api/secret-fields.js +1 -1
  314. package/build/dist/api/send.js +1 -1
  315. package/build/dist/api/signing-registry.d.ts +8 -0
  316. package/build/dist/api/signing-registry.js +1 -1
  317. package/build/dist/api/simulate.js +1 -1
  318. package/build/dist/api/swap.d.ts +4 -0
  319. package/build/dist/api/swap.js +1 -1
  320. package/build/dist/api/tokens.d.ts +1 -0
  321. package/build/dist/api/tokens.js +1 -1
  322. package/build/dist/api/tool-policy.js +1 -1
  323. package/build/dist/api/types.d.ts +3 -0
  324. package/build/dist/api/untrusted-unwrap.d.ts +1 -0
  325. package/build/dist/api/untrusted-unwrap.js +1 -0
  326. package/build/dist/api/usd-estimate.d.ts +23 -0
  327. package/build/dist/api/usd-estimate.js +1 -0
  328. package/build/dist/api/vendor-limits.js +1 -1
  329. package/build/dist/chunks/{T7TFUH5K.js → 2E4I7CJ7.js} +1 -1
  330. package/build/dist/chunks/2FHELZ7Y.js +1 -0
  331. package/build/dist/chunks/2GXHYI23.js +1 -0
  332. package/build/dist/chunks/2LWBN35N.js +1 -0
  333. package/build/dist/chunks/{4HG6FRVH.js → 2OKYXT25.js} +1 -1
  334. package/build/dist/chunks/2SUHQWND.js +1 -0
  335. package/build/dist/chunks/2ZWKIBJT.js +1 -0
  336. package/build/dist/chunks/32RXFUOH.js +1 -0
  337. package/build/dist/chunks/3CH2IPQL.js +1 -0
  338. package/build/dist/chunks/3DNJTJ2X.js +1 -0
  339. package/build/dist/chunks/3K2N5VFH.js +1 -0
  340. package/build/dist/chunks/3VBIRLU3.js +1 -0
  341. package/build/dist/chunks/3ZABD6ZF.js +2 -0
  342. package/build/dist/chunks/44MB6SA6.js +1 -0
  343. package/build/dist/chunks/4D4ZRZUW.js +1 -0
  344. package/build/dist/chunks/{IPN6Z4JM.js → 4FPV4CRC.js} +1 -1
  345. package/build/dist/chunks/4GNUXN4K.js +1 -0
  346. package/build/dist/chunks/{K4DHHQBI.js → 4JRXEN7C.js} +2 -2
  347. package/build/dist/chunks/4JTTA3BX.js +1 -0
  348. package/build/dist/chunks/4OVIMYNH.js +2 -0
  349. package/build/dist/chunks/{7QIO77VE.js → 4Q2ZBZXM.js} +1 -1
  350. package/build/dist/chunks/4RQAOOO2.js +1 -0
  351. package/build/dist/chunks/4TTDAF4B.js +1 -0
  352. package/build/dist/chunks/523ZIR3J.js +1 -0
  353. package/build/dist/chunks/5DPJQCKJ.js +68 -0
  354. package/build/dist/chunks/5HIHUYA4.js +1 -0
  355. package/build/dist/chunks/5PI57UC2.js +1 -0
  356. package/build/dist/chunks/5RXALTDT.js +1 -0
  357. package/build/dist/chunks/5TUXSOMI.js +1 -0
  358. package/build/dist/chunks/5UAXLWJ2.js +1 -0
  359. package/build/dist/chunks/5XAXJEWM.js +5 -0
  360. package/build/dist/chunks/67BWOVET.js +1 -0
  361. package/build/dist/chunks/6NUNCD5J.js +1 -0
  362. package/build/dist/chunks/{FJ4S4GHY.js → 6PZGDVHV.js} +1 -1
  363. package/build/dist/chunks/{RTAHNWHN.js → 6UVGQYZ3.js} +1 -1
  364. package/build/dist/chunks/753HZZTY.js +1 -0
  365. package/build/dist/chunks/7D73A6KS.js +1 -0
  366. package/build/dist/chunks/7MBVTNLU.js +1 -0
  367. package/build/dist/chunks/7QKYDNF6.js +18 -0
  368. package/build/dist/chunks/7VC53B5X.js +70 -0
  369. package/build/dist/chunks/7VNO46LV.js +1 -0
  370. package/build/dist/chunks/ACH4BSME.js +3 -0
  371. package/build/dist/chunks/AHUCYDBC.js +1 -0
  372. package/build/dist/chunks/AI3VAPA3.js +1 -0
  373. package/build/dist/chunks/AMTRDPVO.js +1 -0
  374. package/build/dist/chunks/APHNOGNS.js +1 -0
  375. package/build/dist/chunks/{BND2UFVW.js → ARI72OYT.js} +1 -1
  376. package/build/dist/chunks/ARLGF5MU.js +1 -0
  377. package/build/dist/chunks/BAIY32AV.js +1 -0
  378. package/build/dist/chunks/BB765L75.js +3 -0
  379. package/build/dist/chunks/BE3A7677.js +1 -0
  380. package/build/dist/chunks/{PAY5PD4H.js → BX46C5ZP.js} +1 -1
  381. package/build/dist/chunks/{XL3LLGIR.js → BZ34ZR65.js} +1 -1
  382. package/build/dist/chunks/C3WBHFLX.js +1 -0
  383. package/build/dist/chunks/C75MT5SD.js +1 -0
  384. package/build/dist/chunks/CAWTAR5V.js +1 -0
  385. package/build/dist/chunks/CNLL4NCR.js +1 -0
  386. package/build/dist/chunks/CO4GCF4L.js +1 -0
  387. package/build/dist/chunks/{P5PYFK7L.js → CQ5WRWV4.js} +1 -1
  388. package/build/dist/chunks/{SJJR4ZBZ.js → CSDN4MYP.js} +1 -1
  389. package/build/dist/chunks/CSOO4SW7.js +1 -0
  390. package/build/dist/chunks/CZL6T2ZQ.js +1 -0
  391. package/build/dist/chunks/D742AYEV.js +1 -0
  392. package/build/dist/chunks/DGCJZ3HO.js +1 -0
  393. package/build/dist/chunks/DNNFKDZR.js +1 -0
  394. package/build/dist/chunks/DPE7SPW7.js +1 -0
  395. package/build/dist/chunks/DSTMEY5F.js +1 -0
  396. package/build/dist/chunks/{FUDAXV5X.js → DYYEA5HB.js} +1 -1
  397. package/build/dist/chunks/EFESPGA2.js +1 -0
  398. package/build/dist/chunks/EGZREEG2.js +1 -0
  399. package/build/dist/chunks/EH5G4O3U.js +1 -0
  400. package/build/dist/chunks/EI6GGPDS.js +20 -0
  401. package/build/dist/chunks/EVBHQQQG.js +1 -0
  402. package/build/dist/chunks/EZZM2GQT.js +2 -0
  403. package/build/dist/chunks/F3VDVTMS.js +1 -0
  404. package/build/dist/chunks/F4UQEPJT.js +1 -0
  405. package/build/dist/chunks/FHTNMGFR.js +1 -0
  406. package/build/dist/chunks/FJLJ7ZQ5.js +1 -0
  407. package/build/dist/chunks/{WP6RHXGN.js → FL5SSHUL.js} +1 -1
  408. package/build/dist/chunks/FNGIJKMZ.js +1 -0
  409. package/build/dist/chunks/{KIFZ5ZSK.js → FOD34G2H.js} +1 -1
  410. package/build/dist/chunks/{WV3A3OUU.js → FOKEFXGP.js} +1 -1
  411. package/build/dist/chunks/FV4WZOTD.js +1 -0
  412. package/build/dist/chunks/FWIFTPSE.js +2 -0
  413. package/build/dist/chunks/FZ6IJZZM.js +1 -0
  414. package/build/dist/chunks/G2LAO23N.js +1 -0
  415. package/build/dist/chunks/GDRQ2ANN.js +1 -0
  416. package/build/dist/chunks/GG24LO2R.js +1 -0
  417. package/build/dist/chunks/GLF7WEY2.js +1 -0
  418. package/build/dist/chunks/GQ3XZFRL.js +1 -0
  419. package/build/dist/chunks/{QU5XKRGK.js → GQYV4TFO.js} +1 -1
  420. package/build/dist/chunks/GRSXWQWD.js +1 -0
  421. package/build/dist/chunks/{DL6AEWEM.js → GSFHM5L3.js} +1 -1
  422. package/build/dist/chunks/{QHBS3PVU.js → H5DY7CNB.js} +1 -1
  423. package/build/dist/chunks/HCBX4NFM.js +1 -0
  424. package/build/dist/chunks/HHO5ISMM.js +1 -0
  425. package/build/dist/chunks/HIX5N25Z.js +1 -0
  426. package/build/dist/chunks/HKVQ646Q.js +1 -0
  427. package/build/dist/chunks/IEG6GLFR.js +1 -0
  428. package/build/dist/chunks/INOYMBWE.js +1 -0
  429. package/build/dist/chunks/IV4K7FMD.js +1 -0
  430. package/build/dist/chunks/{PIIHOXWF.js → J73ATSEQ.js} +1 -1
  431. package/build/dist/chunks/JBTOZ6IH.js +1 -0
  432. package/build/dist/chunks/JESMX2UC.js +1 -0
  433. package/build/dist/chunks/JJGZ7W3V.js +1 -0
  434. package/build/dist/chunks/JKRBGAX2.js +1 -0
  435. package/build/dist/chunks/JLRHM2DQ.js +1 -0
  436. package/build/dist/chunks/JOKL5L6X.js +1 -0
  437. package/build/dist/chunks/JS53DQVT.js +1 -0
  438. package/build/dist/chunks/{WIRBCS4W.js → JWR5XVP2.js} +1 -1
  439. package/build/dist/chunks/{JFYBH3DX.js → K6D6SDIG.js} +1 -1
  440. package/build/dist/chunks/K7HTDKAT.js +1 -0
  441. package/build/dist/chunks/{2VXLVXIB.js → KDGSYNOP.js} +1 -1
  442. package/build/dist/chunks/KKPMOAVI.js +1 -0
  443. package/build/dist/chunks/KREBNL2D.js +1 -0
  444. package/build/dist/chunks/L646YWDP.js +1 -0
  445. package/build/dist/chunks/{GSBIERZD.js → LR4XTZ37.js} +1 -1
  446. package/build/dist/chunks/LVFI74ST.js +1 -0
  447. package/build/dist/chunks/{QBIY6FQN.js → M7ZXDLKM.js} +1 -1
  448. package/build/dist/chunks/MVD3KWPP.js +1 -0
  449. package/build/dist/chunks/N245WC5R.js +1 -0
  450. package/build/dist/chunks/{WTXC3XKW.js → N4XNNXOJ.js} +1 -1
  451. package/build/dist/chunks/N6GIC7HJ.js +1 -0
  452. package/build/dist/chunks/{RUC7KH7A.js → NA424YAL.js} +1 -1
  453. package/build/dist/chunks/NUFZUKYS.js +1 -0
  454. package/build/dist/chunks/{XD6X3KTC.js → O3JWCJIF.js} +1 -1
  455. package/build/dist/chunks/OARVU3RC.js +1 -0
  456. package/build/dist/chunks/OEZ7FCLF.js +1 -0
  457. package/build/dist/chunks/{H43RNCX2.js → OUROA7XR.js} +1 -1
  458. package/build/dist/chunks/{2MT3G7YZ.js → OYJFXEDU.js} +1 -1
  459. package/build/dist/chunks/OYPAVXGQ.js +1 -0
  460. package/build/dist/chunks/{SMYWWIE6.js → OZ5MDUD2.js} +1 -1
  461. package/build/dist/chunks/P6OMKZMR.js +3 -0
  462. package/build/dist/chunks/PV4AK32X.js +1 -0
  463. package/build/dist/chunks/{HKEMQBFA.js → PXVREXCS.js} +1 -1
  464. package/build/dist/chunks/PZEF5LBL.js +2 -0
  465. package/build/dist/chunks/Q2ACLVWR.js +1 -0
  466. package/build/dist/chunks/QFSBDPLN.js +1 -0
  467. package/build/dist/chunks/QJNLLI6N.js +1 -0
  468. package/build/dist/chunks/QMZEGT5B.js +1 -0
  469. package/build/dist/chunks/{PNA6UIE5.js → REWXG6X6.js} +1 -1
  470. package/build/dist/chunks/{ALLLYOUG.js → RLI4JDOL.js} +1 -1
  471. package/build/dist/chunks/{UD2XMNIT.js → RLMVA575.js} +1 -1
  472. package/build/dist/chunks/RPB46QAC.js +1 -0
  473. package/build/dist/chunks/{Q42YI3EP.js → RT7IU6TI.js} +1 -1
  474. package/build/dist/chunks/{ER47KGRM.js → SBY4RJ7I.js} +1 -1
  475. package/build/dist/chunks/SCG5HWMN.js +1 -0
  476. package/build/dist/chunks/{XQA5LCL6.js → SENOU5JR.js} +1 -1
  477. package/build/dist/chunks/SKEKXEUU.js +1 -0
  478. package/build/dist/chunks/SOTYQGPT.js +1 -0
  479. package/build/dist/chunks/SZ466I5X.js +1 -0
  480. package/build/dist/chunks/{GNC6RXLT.js → TDZTC5WR.js} +1 -1
  481. package/build/dist/chunks/TE6D3OIX.js +1 -0
  482. package/build/dist/chunks/TID4C2KC.js +1 -0
  483. package/build/dist/chunks/TK55VASJ.js +2 -0
  484. package/build/dist/chunks/TM7Z5SA4.js +1 -0
  485. package/build/dist/chunks/TNJTET4G.js +1 -0
  486. package/build/dist/chunks/TPEKCXVE.js +1 -0
  487. package/build/dist/chunks/TVIMP5CK.js +1 -0
  488. package/build/dist/chunks/U2YCQWZK.js +1 -0
  489. package/build/dist/chunks/U363GQTF.js +1 -0
  490. package/build/dist/chunks/{U4JGEMKT.js → UEDGYZOC.js} +1 -1
  491. package/build/dist/chunks/UOCRYXAB.js +1 -0
  492. package/build/dist/chunks/UQEEF5W5.js +1 -0
  493. package/build/dist/chunks/{QQECG3WP.js → UUID2E22.js} +1 -1
  494. package/build/dist/chunks/UWBKAWX3.js +7 -0
  495. package/build/dist/chunks/V37L4DU4.js +1 -0
  496. package/build/dist/chunks/VR344DAZ.js +1 -0
  497. package/build/dist/chunks/{TX2EOIRS.js → VST6LFUB.js} +1 -1
  498. package/build/dist/chunks/VTPT5544.js +1 -0
  499. package/build/dist/chunks/VVWFB53Q.js +1 -0
  500. package/build/dist/chunks/WHTRPRRD.js +1 -0
  501. package/build/dist/chunks/WHVZ372B.js +1 -0
  502. package/build/dist/chunks/{AFBEZXNV.js → WNWRF4HE.js} +1 -1
  503. package/build/dist/chunks/{4DP2VPXR.js → WOGWLFAL.js} +1 -1
  504. package/build/dist/chunks/WUT7TZYM.js +1 -0
  505. package/build/dist/chunks/XCKTE4ON.js +1 -0
  506. package/build/dist/chunks/XEPCDGN2.js +1 -0
  507. package/build/dist/chunks/XHYFISVV.js +1 -0
  508. package/build/dist/chunks/XPEDQBLI.js +1 -0
  509. package/build/dist/chunks/{QFNT73OF.js → XQ24RSEI.js} +1 -1
  510. package/build/dist/chunks/XRDXFHIK.js +1 -0
  511. package/build/dist/chunks/XTFRPI4G.js +1 -0
  512. package/build/dist/chunks/XVJ7ILKK.js +1 -0
  513. package/build/dist/chunks/XWKK75TO.js +1 -0
  514. package/build/dist/chunks/{CBLMQ5UU.js → XYPGLG6A.js} +1 -1
  515. package/build/dist/chunks/Y77EVVT4.js +1 -0
  516. package/build/dist/chunks/YEIM6BZQ.js +1 -0
  517. package/build/dist/chunks/{XSKFKBDR.js → YMV5TL5C.js} +1 -1
  518. package/build/dist/chunks/YSMWCKIX.js +1 -0
  519. package/build/dist/chunks/YTLH4M4Y.js +1 -0
  520. package/build/dist/chunks/YUHNPUNK.js +1 -0
  521. package/build/dist/chunks/YWZQJJYY.js +1 -0
  522. package/build/dist/chunks/{EGYVRQUR.js → ZF2VPDRQ.js} +1 -1
  523. package/build/dist/chunks/ZFU65MB4.js +1 -0
  524. package/build/dist/chunks/ZKZUS3QU.js +1 -0
  525. package/build/dist/chunks/ZOMFHTB2.js +1 -0
  526. package/build/dist/chunks/{OLSP46ZD.js → ZP36DSOD.js} +1 -1
  527. package/build/dist/chunks/ZQ6AF3VX.js +1 -0
  528. package/package.json +1 -1
  529. package/build/dist/chunks/2THSW4QN.js +0 -1
  530. package/build/dist/chunks/2TK3ETUO.js +0 -1
  531. package/build/dist/chunks/35KR3VSS.js +0 -1
  532. package/build/dist/chunks/3GQ7A3VB.js +0 -1
  533. package/build/dist/chunks/3XNZUIRU.js +0 -1
  534. package/build/dist/chunks/46547QT3.js +0 -1
  535. package/build/dist/chunks/4EN6MQEI.js +0 -1
  536. package/build/dist/chunks/4I3OU56B.js +0 -1
  537. package/build/dist/chunks/52ELWNXJ.js +0 -2
  538. package/build/dist/chunks/5AXWBSPG.js +0 -1
  539. package/build/dist/chunks/5N3O42X6.js +0 -1
  540. package/build/dist/chunks/5SMVQCAP.js +0 -1
  541. package/build/dist/chunks/5SZPNZG4.js +0 -1
  542. package/build/dist/chunks/64GOINYS.js +0 -1
  543. package/build/dist/chunks/6I4NTKB2.js +0 -1
  544. package/build/dist/chunks/6JAXZNZ3.js +0 -1
  545. package/build/dist/chunks/6O3Q5B6M.js +0 -1
  546. package/build/dist/chunks/6OGDTEGH.js +0 -1
  547. package/build/dist/chunks/6WZX7C4T.js +0 -2
  548. package/build/dist/chunks/6YB3VOUL.js +0 -1
  549. package/build/dist/chunks/7GJ6SLEV.js +0 -1
  550. package/build/dist/chunks/7KWZ5QJU.js +0 -1
  551. package/build/dist/chunks/7QZOTRSA.js +0 -2
  552. package/build/dist/chunks/7WSHW7KW.js +0 -1
  553. package/build/dist/chunks/A7I4IWUB.js +0 -1
  554. package/build/dist/chunks/ABPL3ZZI.js +0 -1
  555. package/build/dist/chunks/ACW63WIL.js +0 -20
  556. package/build/dist/chunks/AEL62KCG.js +0 -1
  557. package/build/dist/chunks/AKYF5264.js +0 -7
  558. package/build/dist/chunks/AW7AXQCZ.js +0 -1
  559. package/build/dist/chunks/AXRL3REN.js +0 -1
  560. package/build/dist/chunks/BBTPRZ6T.js +0 -1
  561. package/build/dist/chunks/BOVMED7R.js +0 -1
  562. package/build/dist/chunks/BTPXJAUX.js +0 -1
  563. package/build/dist/chunks/C7AXJHBT.js +0 -1
  564. package/build/dist/chunks/CBG5HARQ.js +0 -2
  565. package/build/dist/chunks/CDPSMI3Z.js +0 -1
  566. package/build/dist/chunks/CHXBOXOD.js +0 -1
  567. package/build/dist/chunks/CQEJSCFQ.js +0 -1
  568. package/build/dist/chunks/DBNTZEAJ.js +0 -1
  569. package/build/dist/chunks/DHUDSOGR.js +0 -18
  570. package/build/dist/chunks/DJN3JAWB.js +0 -1
  571. package/build/dist/chunks/FEYAY6OZ.js +0 -1
  572. package/build/dist/chunks/GG6Y4OCJ.js +0 -1
  573. package/build/dist/chunks/GGHBFLRC.js +0 -1
  574. package/build/dist/chunks/GGSAKCND.js +0 -1
  575. package/build/dist/chunks/GRQYTVNT.js +0 -1
  576. package/build/dist/chunks/H6T5FXEX.js +0 -1
  577. package/build/dist/chunks/HHXBUYHO.js +0 -1
  578. package/build/dist/chunks/HQUVB7Z5.js +0 -3
  579. package/build/dist/chunks/HU7IMNBI.js +0 -1
  580. package/build/dist/chunks/HWX36XJI.js +0 -1
  581. package/build/dist/chunks/I26DMNJG.js +0 -1
  582. package/build/dist/chunks/I55MURSJ.js +0 -1
  583. package/build/dist/chunks/IMO3GDA5.js +0 -1
  584. package/build/dist/chunks/IPRVIKYC.js +0 -1
  585. package/build/dist/chunks/IVX4R5OL.js +0 -1
  586. package/build/dist/chunks/JQOQMFWD.js +0 -3
  587. package/build/dist/chunks/JUZ5JU6D.js +0 -70
  588. package/build/dist/chunks/JZS3E66E.js +0 -1
  589. package/build/dist/chunks/K3RDPI5J.js +0 -1
  590. package/build/dist/chunks/KBKK7UNY.js +0 -1
  591. package/build/dist/chunks/KVFZKPJT.js +0 -1
  592. package/build/dist/chunks/L5BLHY34.js +0 -1
  593. package/build/dist/chunks/LKXO2BQS.js +0 -1
  594. package/build/dist/chunks/LKZX4CAA.js +0 -1
  595. package/build/dist/chunks/LYMNHO5T.js +0 -1
  596. package/build/dist/chunks/M2UXYCKH.js +0 -1
  597. package/build/dist/chunks/M37654RL.js +0 -1
  598. package/build/dist/chunks/M6LC6DRE.js +0 -1
  599. package/build/dist/chunks/MOE3EVAL.js +0 -1
  600. package/build/dist/chunks/N4Q6GN65.js +0 -1
  601. package/build/dist/chunks/NAZPDRIF.js +0 -1
  602. package/build/dist/chunks/NKX3FE34.js +0 -1
  603. package/build/dist/chunks/NKZKKCK2.js +0 -1
  604. package/build/dist/chunks/NOFUKKP5.js +0 -1
  605. package/build/dist/chunks/O6ROOKY2.js +0 -1
  606. package/build/dist/chunks/OJ4WJUPP.js +0 -1
  607. package/build/dist/chunks/OOZSE2R7.js +0 -1
  608. package/build/dist/chunks/OTXSKFUD.js +0 -1
  609. package/build/dist/chunks/P5AJSLZ7.js +0 -1
  610. package/build/dist/chunks/PACN53TR.js +0 -1
  611. package/build/dist/chunks/PAHXBLCS.js +0 -1
  612. package/build/dist/chunks/PK66GCDT.js +0 -1
  613. package/build/dist/chunks/PSBQWDYI.js +0 -1
  614. package/build/dist/chunks/PXT5YTWU.js +0 -1
  615. package/build/dist/chunks/PZGGE5D3.js +0 -1
  616. package/build/dist/chunks/QA2RRIES.js +0 -1
  617. package/build/dist/chunks/QA3UHEO3.js +0 -1
  618. package/build/dist/chunks/QW2OPEYJ.js +0 -1
  619. package/build/dist/chunks/QYVREJYC.js +0 -1
  620. package/build/dist/chunks/ROFPXEQ5.js +0 -2
  621. package/build/dist/chunks/RTGS7RIO.js +0 -1
  622. package/build/dist/chunks/RUX3RY7Y.js +0 -1
  623. package/build/dist/chunks/RVDUSNWW.js +0 -1
  624. package/build/dist/chunks/S5CBVFHY.js +0 -1
  625. package/build/dist/chunks/SIYUNOLI.js +0 -1
  626. package/build/dist/chunks/TEJ7W534.js +0 -1
  627. package/build/dist/chunks/TPBAFS7K.js +0 -1
  628. package/build/dist/chunks/TVWMTMEF.js +0 -1
  629. package/build/dist/chunks/U2RMUVVY.js +0 -1
  630. package/build/dist/chunks/U5PMVP56.js +0 -1
  631. package/build/dist/chunks/V5JWGWXC.js +0 -1
  632. package/build/dist/chunks/VCOTCVKN.js +0 -1
  633. package/build/dist/chunks/VEQBHI6O.js +0 -1
  634. package/build/dist/chunks/VNV6ZISN.js +0 -1
  635. package/build/dist/chunks/VYAJXLND.js +0 -1
  636. package/build/dist/chunks/WCNHZYQQ.js +0 -1
  637. package/build/dist/chunks/X2P55AC3.js +0 -1
  638. package/build/dist/chunks/XBE3B6Y2.js +0 -1
  639. package/build/dist/chunks/XKSVTN5X.js +0 -1
  640. package/build/dist/chunks/XSRIJUFU.js +0 -1
  641. package/build/dist/chunks/YCZPSMZ5.js +0 -1
  642. package/build/dist/chunks/YN56C7PN.js +0 -1
  643. package/build/dist/chunks/YRNXGQJC.js +0 -1
  644. package/build/dist/chunks/YWRLY5EA.js +0 -1
  645. package/build/dist/chunks/YWSX6IE6.js +0 -1
  646. package/build/dist/chunks/YXTSWRV5.js +0 -1
  647. package/build/dist/chunks/Z6LZGCVW.js +0 -1
  648. package/build/dist/chunks/ZQWZGH7V.js +0 -1
  649. package/build/dist/chunks/ZSN4IRI5.js +0 -1
  650. package/build/dist/chunks/ZV5HIQXC.js +0 -1
  651. package/build/dist/chunks/ZXJ24B4L.js +0 -1
@@ -0,0 +1 @@
1
+ import{a as q}from"./NCQFWPAW.js";import{a as v}from"./D742AYEV.js";import{K as A}from"./7QKYDNF6.js";import{c as k}from"./DNNFKDZR.js";import{a as $}from"./43LI5NKJ.js";import{a as I}from"./66F5ZH34.js";import{d as M,g as F,i as G,m as U}from"./NWNYJ26T.js";import{a as y}from"./FWD4L3CJ.js";import{a as o}from"./XSD5NL7J.js";import{encodeFunctionData as L,erc20Abi as R,getAddress as N,zeroAddress as j}from"viem";var C={genesis:N("0x575b7B7c97Ef3E21C82DAeB427899d583e1E913f"),bond:N("0xff32a969A0c567129eECD926D04657728E1980C1"),inverse:N("0x92166e94Eea5B7799b761653881692f881dFC4C9"),treasury:N("0x04822Ea321A0DEE6F40656172F29312104855d66"),pteam:N("0x650F58079dAa17ee28928c2F92d22291d038B2B0"),rwa:N("0x99B6eE6eDe47d9a8a9bfd03F728a99B789df1961"),premium:N("0x346e1a31171A0f7aC73909010b5435768d3B5462"),tax:N("0x086C58400b8708Ef993f256E12e752dcF0AC918e")},z=N("0x59F95461E68e0c77605299791E1449f175165B54"),O={genesis:["purchase","finalize","refund","claim"],bond:["deposit","redeem"],inverse:["swap"],treasury:["rebalanceToMorpho","rebalanceFromMorpho","mintNet","spendUsdg"],pteam:["exercise"],rwa:["redeem","depositInventory","pokeHwm","setDiscount","setInventoryMax","setHalt","setMenu","skim"],premium:["execute"],tax:["convert"]},V={genesis:["wired","finalized","finalizeTime","saleStart","saleDeadline","raisedRaw","totalRaised","registryLength"],bond:["wired","enabled","startTime","marketCount"],inverse:["active","price","capacityRemaining","spreadBps"],treasury:["wired","rfv","backingPerToken","liquidUsdg","morphoAssets","polRfv","morphoCapBps","morphoVault","canonicalPair"],pteam:["wired","holder","vestedFraction","exercisableNow","exercised","strikeWad","capBps","circulatingSupply","excludedFromFloat"],rwa:["manager","halted","inventory","inventoryMax","owedNet","bHwm","deskDiscountBps","VEST","MAX_DISCOUNT_BPS","INVENTORY_HARD_CAP","menu","routerSource","sleeve"],premium:["active","clipSize","lastExecuteAt","premiumThresholdWad","router","pairContract"],tax:["wired","pendingNet","teamBps","treasuryBps","teamWallet","router","pairContract"]},T=h=>JSON.parse(JSON.stringify(h,(P,S)=>typeof S=="bigint"?S.toString():S));function g(h){return G(h,"Provide a checksummed address.",M)}var oe=h=>{async function P(t){if(typeof t!="string"||!Object.hasOwn(C,t))throw new o("Choose a published NetNet financial product.");let c=t,e=C[c],r=q[c],u=h.clientFor(y);if(await u.getChainId()!==y)throw new o("NetNet requires chain 4663.");let n=await u.getBlock(),a=(w,x=[])=>u.readContract({address:e,abi:r,functionName:w,args:x,blockNumber:n.number}),[i,s,l,p]=await Promise.all([a("net"),a("usdg"),u.readContract({address:v.address,abi:R,functionName:"decimals",blockNumber:n.number}),u.readContract({address:k.address,abi:R,functionName:"decimals",blockNumber:n.number})]);if(g(i)!==v.address||g(s)!==k.address||l!==v.decimals||p!==k.decimals)throw new o("NetNet financial token pins or decimals do not match the deployment.");return{product:c,contract:e,abi:r,rpc:u,block:n,read:a}}async function S(t){$(t);let c=(e,r)=>({module:"netnet",id:`4663:${C.bond.toLowerCase()}:${e}`,chainId:y,incomplete:!0,assets:[],description:`NetNet bond notes unreadable: ${h.plainError(r)} Use netnet_financial_status with product bond to inspect notes.`});try{let e=await P("bond"),r=U(await e.read("noteCount",[t]),"Invalid NetNet bond note count."),u=r<50n?Number(r):50,n=[];for(let a=0;a<u;a++)try{let i=await e.read("notes",[t,BigInt(a)]);if(!Array.isArray(i)||i.length!==4)throw new o("Invalid NetNet bond note.");let[s,l,p,w]=i.map(B=>U(B,"Invalid NetNet bond note amount or timestamp."));if(l>s||w<=p||w>=1n<<64n)throw new o("Invalid NetNet bond note vesting or claimed amount.");let x=s-l;if(x===0n)continue;let E=e.block.timestamp>=w?s:e.block.timestamp<=p?0n:s*(e.block.timestamp-p)/(w-p),D=E>l?E-l:0n;n.push({module:"netnet",id:`4663:${e.contract.toLowerCase()}:${a}`,chainId:y,matured:e.block.timestamp>=w,assets:[{token:v,amount:x.toString()}],description:`NetNet bond note ${a}: ${x} NET base units outstanding; ${D} claimable now, vesting ends at Unix ${w}. Redeem vested NET with netnet_financial_action product bond operation redeem. Payment cannot be withdrawn. Block ${e.block.number}.`})}catch(i){n.push(c(String(a),i))}return r>BigInt(u)&&n.push({module:"netnet",id:`4663:${e.contract.toLowerCase()}:coverage`,chainId:y,incomplete:!0,assets:[],description:`NetNet bond positions checked the first ${u} of ${r} notes. Use netnet_financial_status product bond offset ${u} to read the remaining notes.`}),n}catch(e){return[c("unreadable",e)]}}let _=(t,c,e,r)=>({name:t,inputSchema:{type:"object",properties:c,required:e,additionalProperties:!1},execute:async(u,n)=>{try{if($(n),Object.keys(u).some(a=>!Object.hasOwn(c,a)))throw new o("Unsupported NetNet financial argument.");return await r(u,n)}catch(a){throw new o(h.plainError(a))}}}),W={type:"string",enum:Object.keys(C),description:"NetNet financial product: genesis (founding sale), bond, inverse (NET buyback), treasury, pteam (team option), rwa (equity desk), premium (premium keeper) or tax (tax collector)."};return{positions:S,tools:[_("netnet_financial_status",{product:W,offset:{type:"integer",minimum:0,description:"Index of the first wallet note to return (bond and rwa products only). Default 0."},limit:{type:"integer",minimum:1,maximum:50,description:"Maximum notes to return, 1 to 50 (default 20; bond and rwa products only)."}},["product"],async(t,c)=>{let e=await P(t.product),r=V[e.product],u=t.offset??0,n=t.limit??20;if(!Number.isSafeInteger(u)||Number(u)<0||!Number.isSafeInteger(n)||Number(n)<1||Number(n)>50)throw new o("Use a nonnegative offset and limit 1..50.");let a=await Promise.all(r.map(async s=>{try{return[s,{value:T(await e.read(s))}]}catch(l){return[s,{unavailable:h.plainError(l)}]}})),i={};if(e.product==="genesis")for(let s of["purchasedRaw","purchasedNetOf","claimedNet","claimableNetOf"])i[s]=T(await e.read(s,[c]));if(e.product==="bond"||e.product==="rwa"){i.pending=T(await e.read("pendingFor",[c]));let s=await e.read("noteCount",[c]);if(typeof s!="bigint"||s<0n)throw new o("Invalid NetNet note count.");let l=s<BigInt(Number(u)+Number(n))?s:BigInt(Number(u)+Number(n));i.noteCount=s.toString(),i.notes=await Promise.all(Array.from({length:Math.max(0,Number(l-BigInt(Number(u))))},async(p,w)=>({id:String(Number(u)+w),note:T(await e.read(e.product==="bond"?"notes":"noteAt",[c,BigInt(Number(u)+w)]))}))),i.nextOffset=l<s?l.toString():null,e.product==="bond"&&(i.markets=await Promise.all([0n,1n].map(async p=>{try{return{id:p.toString(),quoteToken:g(await e.read("quoteToken",[p])),priceWad:String(await e.read("bondPrice",[p]))}}catch(w){return{id:p.toString(),unavailable:h.plainError(w)}}})))}return e.product==="treasury"&&(i.isMinter=await e.read("isMinter",[c]),i.isSpender=await e.read("isSpender",[c])),{chainId:y,contract:e.contract,product:e.product,blockNumber:String(e.block.number),tokens:[v,k],metrics:Object.fromEntries(a),wallet:i,units:"Raw token amounts use each token\u2019s decimals. Prices, NAV, reserve values and capacityRemaining use 18-decimal USDG WAD. Note timestamps are Unix seconds.",operations:O[e.product],caveat:"An unavailable metric is not zero. Formulaic eligibility, oracle liveness, caps and vesting are checked by the action preview. RWA entry/router calldata and initial deployment wiring remain unsupported."}}),_("netnet_financial_action",{product:W,operation:{type:"string",enum:[...new Set(Object.values(O).flat())],description:"Action to run; it must be one the chosen product supports, for example bond deposit or redeem, genesis purchase or claim, inverse swap."},amount:I('Amount in base units of the token the operation spends or moves: USDG has 6 decimals, NET 9 ("1000000" = 1 USDG, "1000000000" = 1 NET).'),minAmountOut:I('Least output you must receive, in base units of the output token (USDG 6 decimals, NET 9). Example: "1000000" = 1 USDG.'),maxPriceWad:I("Highest bond price you accept, as an 18-decimal wad of USDG per NET in base units (1e18 = 1 USDG). Bond deposit only."),maxPayment:I('Most USDG you will pay to exercise, in USDG base units (6 decimals). Example: "1000000" = 1 USDG. pteam exercise only.'),marketId:{type:"integer",enum:[0,1],description:"Bond market: 0 pays with USDG, 1 pays with the canonical NET/USDG LP token. Bond deposit only."},recipient:{type:"string",description:"Address that receives the minted NET or spent USDG. Treasury mintNet and spendUsdg only; use the intended address."},halted:{type:"boolean",description:"rwa setHalt only: true halts the desk, false resumes it."},token:{type:"string",description:"Address of the stray token to sweep (0x + 40 hex digits). rwa skim only."},noteIds:{type:"array",maxItems:50,description:"Bond note ids to redeem, unique decimal strings (rwa redeem only); omit to redeem every vested note.",items:I('Note id (index of the wallet note), as a decimal string. Example: "0".')},menu:{type:"array",maxItems:32,description:"Complete replacement RWA equity menu (rwa setMenu only): up to 32 entries; target weights must sum to 10000 basis points.",items:{type:"object",description:"Menu entry with token and feed addresses, targetWeightBps (10000 = 100%) and active (boolean)."}}},["product","operation"],async(t,c)=>{let e=await P(t.product),r=t.operation;if(typeof r!="string"||!O[e.product].includes(r))throw new o("This operation is not supported by the selected financial product.");let u=new Set(["product","operation"]),n=[],a,i=0n,s="",l=(...d)=>d.forEach(m=>u.add(m)),p=()=>(l("amount"),A(t.amount)),w=()=>(l("minAmountOut"),A(t.minAmountOut));if(e.product==="genesis"){if(r==="purchase"&&(i=p(),a=k,n=[i],s="Founding subscription; NET is claimable only after successful finalization and vesting. A failed sale requires refund."),r==="claim"&&await e.read("claimableNetOf",[c])===0n)throw new o("No vested founding NET is claimable by this wallet.")}else if(e.product==="bond")if(r==="deposit"){if(l("marketId","maxPriceWad"),t.marketId!==0&&t.marketId!==1)throw new o("Bond marketId must be 0 (USDG) or 1 (canonical LP).");let d=BigInt(t.marketId);if(g(await e.read("quoteToken",[d]))!==(d===0n?k.address:z))throw new o("Bond quote token is not the pinned USDG or canonical LP.");i=p(),a=d===0n?k:{address:z,decimals:18,symbol:"NET/USDG LP",chainId:y};let f=A(t.maxPriceWad),b=await e.read("bondPrice",[d]);if(typeof b!="bigint"||b===0n||b>f)throw new o("Bond price exceeds maxPriceWad or is invalid.");n=[d,i,f,c],s="Payment is exchanged for a non-transferable NET note with two-day linear vesting. Redeem vested NET with the same product; payment cannot be withdrawn."}else n=[c];else if(e.product==="inverse"){if(i=p(),a=v,n=[i,w()],s="Purchased NET is burned permanently; USDG pays directly to this wallet. Capacity is denominated in USDG WAD, not raw USDG.",await e.read("active")!==!0)throw new o("NetNet buyback is inactive: oracle, finalization or capacity is unavailable.")}else if(e.product==="pteam"){if(g(await e.read("holder"))!==N(c))throw new o("This wallet is not the immutable pTEAM holder.");let d=p();if(l("maxPayment"),d>await e.read("exercisableNow"))throw new o("The NET exercise amount exceeds the vested cap.");let m=await e.read("strikeWad");if(i=(d*m/10n**BigInt(v.decimals)+10n**12n-1n)/10n**12n,i===0n||i>A(t.maxPayment))throw new o("The exercise payment exceeds maxPayment or rounds to zero.");a=k,n=[d],s=`Exercise pays ${i} USDG base units into treasury reserves and mints ${d} NET base units to the immutable holder. No withdrawal or exercise reversal exists.`}else if(e.product==="treasury"){let d=p();if(r==="mintNet"||r==="spendUsdg"){l("recipient");let m=g(t.recipient);if(await e.read(r==="mintNet"?"isMinter":"isSpender",[c])!==!0)throw new o("This wallet lacks the fixed NetNet treasury minter/spender role.");n=[m,d],s=`Protocol treasury operation sends ${d} base units to ${m}; it does not deposit into this wallet\u2019s savings.`}else n=[d],s="Permissionless protocol reserve rebalance; assets remain owned by the NetNet treasury. The deployed fraction is constrained by the immutable cap."}else if(e.product==="rwa"){if(["depositInventory","setDiscount","setInventoryMax","setHalt","setMenu"].includes(r)&&g(await e.read("manager"))!==N(c))throw new o("This wallet lacks the immutable RWA manager role.");if(r==="redeem")if(l("noteIds"),t.noteIds===void 0)n=[c];else{if(!Array.isArray(t.noteIds)||!t.noteIds.length||t.noteIds.length>50)throw new o("Provide 1..50 unique note IDs.");let m=t.noteIds.map(b=>A(b,!0));if(new Set(m.map(String)).size!==m.length)throw new o("Note IDs must be unique.");let f=await e.read("noteCount",[c]);if(m.some(b=>b>=f))throw new o("RWA note ID is out of range.");n=[c,m]}else if(r==="setHalt"){if(l("halted"),typeof t.halted!="boolean")throw new o("Provide halted as a boolean.");n=[t.halted]}else if(r==="setMenu"){if(l("menu"),!Array.isArray(t.menu)||!t.menu.length||t.menu.length>32)throw new o("Provide 1..32 explicit RWA menu entries.");let m=t.menu.map(f=>{if(!f||typeof f!="object"||Array.isArray(f)||Object.keys(f).some(H=>!["token","feed","targetWeightBps","active"].includes(H)))throw new o("Invalid RWA menu fields.");let b=f;if(typeof b.active!="boolean")throw new o("RWA active must be boolean.");return{token:g(b.token),feed:g(b.feed),targetWeightBps:A(b.targetWeightBps,!0),active:b.active}});if(new Set(m.map(f=>f.token)).size!==m.length||m.reduce((f,b)=>f+b.targetWeightBps,0n)!==10000n||m.some(f=>f.active&&(f.token===j||f.feed===j)))throw new o("RWA menu tokens must be unique, weights sum to 10000, active feeds/tokens nonzero.");n=[m],s=`Replace the complete RWA equity menu: ${JSON.stringify(T(m))}.`}else if(r==="skim")l("token"),n=[g(t.token)],s=`Sweep eligible stray assets to sleeve ${g(await e.read("sleeve"))}, not to this wallet.`;else if(r!=="pokeHwm"){let m=p();if(n=[m],r==="depositInventory"&&(a=v,i=m,s="Inventory funding is one-way. The manager cannot withdraw these NET; they are committed to bond obligations."),r==="setDiscount"&&m>await e.read("MAX_DISCOUNT_BPS")||r==="setInventoryMax"&&m>await e.read("INVENTORY_HARD_CAP"))throw new o("RWA setting exceeds its immutable maximum.")}}else e.product==="premium"?(n=[w()],s="Permissionless mint-and-sell keeper operation; all sale proceeds go to NetNet treasury. The caller receives no reward."):(n=[p(),w()],s="Convert NET already owned by the tax collector. Proceeds split to treasury and team; the caller receives no reward and supplies no NET.");if(Object.keys(t).some(d=>!u.has(d)))throw new o("Unexpected fields for this NetNet operation.");if(a&&await e.rpc.readContract({address:a.address,abi:R,functionName:"balanceOf",args:[c],blockNumber:e.block.number})<i)throw new o(`Top up ${a.symbol}: needs ${i} base units.`);let x=`NetNet ${e.product}.${r}, contract ${e.contract}, chain ${y}, values ${JSON.stringify(T(n))}. ${a?`Approve exactly ${i} ${a.symbol} base units (${a.address}, decimals ${a.decimals}). `:""}${s}`,E=[...a?[h.approval(a.address,e.contract,i.toString(),y)]:[],h.unsignedTx({to:e.contract,data:L({abi:e.abi,functionName:r,args:n}),value:"0",chainId:y,description:x})],D=await h.preview(E,c),B=0n;for(let d of D.changes){if(!/^-?\d+$/.test(d.amount))throw new o("Invalid NetNet preview amount.");if(BigInt(d.amount)<0n&&(B-=BigInt(d.amount)),BigInt(d.amount)<0n&&(!a||d.token.chainId!==y||!F(d.token.address,a.address)||d.token.decimals!==a.decimals||-BigInt(d.amount)>i))throw new o("NetNet preview spends outside the exact input budget.")}if(B>i)throw new o("NetNet preview exceeds the aggregate input budget.");return{txs:E,preview:D,summary:x}})]}};export{C as a,z as b,oe as c};
@@ -0,0 +1 @@
1
+ import{b as P,e as _,f as b}from"./O7HCEPQY.js";import{c as p,f as r,g as f,h as M,i as S,k as D,p as v,q}from"./46KWRAYK.js";import{b as I}from"./66F5ZH34.js";import{h as A}from"./NWNYJ26T.js";import{randomInt as $,randomUUID as H}from"node:crypto";import{isDeepStrictEqual as h}from"node:util";import{recoverTypedDataAddress as z}from"viem";function j(t){Object.keys(t).some(c=>!["subaccount","subaccountId","instructions","failureBehavior","continuation","signature"].includes(c))&&r("Use the Meridian batch schema."),D(t.subaccountId),(!Array.isArray(t.instructions)||t.instructions.length<1||t.instructions.length>20)&&r("A Meridian batch needs 1\u201320 instructions."),["ContinueOnFailure","StopOnFailure"].includes(String(t.failureBehavior))||r("Choose ContinueOnFailure or StopOnFailure explicitly; a batch does not roll back earlier results.");let u=new Set;return t.instructions.map(c=>{let e=f(c),a=e.kind;a!=="NEW"&&a!=="CANCEL"&&r("Each Meridian batch instruction needs kind NEW or CANCEL.");let o=a==="NEW"?P.order:["orderId","clientOrderId"];Object.keys(e).some(i=>i!=="kind"&&!o.includes(i))&&r("Unsupported Meridian batch instruction fields."),a==="CANCEL"&&e.orderId===void 0==(e.clientOrderId===void 0)&&r("Each batch cancellation needs exactly one orderId or clientOrderId.");for(let i of a==="NEW"?["clientOrderId"]:["orderId","clientOrderId"])if(e[i]!==void 0){let g=`${a}:${i}:${e[i]}`;u.has(g)&&r("Duplicate Meridian batch order identifiers."),u.add(g)}let d={subaccountId:t.subaccountId,...t.subaccount===void 0?{}:{subaccount:t.subaccount}};return a==="CANCEL"?{action:"cancel",kind:a,args:{...d,...e.orderId===void 0?{clientOrderIds:[e.clientOrderId]}:{orderIds:[e.orderId]}}}:{action:"order",kind:a,args:{...d,...Object.fromEntries(Object.entries(e).filter(([i])=>i!=="kind"))}}})}function O(t,u,c,e,a){let o=j(t);(!Number.isInteger(u)||u<0||u>=o.length)&&r("Invalid Meridian batch signing index.");let d=o[u],i=_(d.action,d.args,c,e,a);return d.kind==="CANCEL"&&(i.data={sender:c,subaccount:i.data.subaccount,nonce:e,...i.data.orderIds?{orderId:i.data.orderIds[0]}:{clientOrderId:i.data.clientOrderIds[0]}}),i}function ee(t,u,c,e,a,o){(e.stage!=="perps_batch_sign"||e.chainId!==p||!A(e.wallet,u)||typeof e.requestId!="string"||!e.requestId||typeof e.index!="number"||typeof e.signedAt!="number"||typeof e.expiresAt!="number"||e.expiresAt<=o||e.expiresAt>o+120||e.signedAt<o-120||e.signedAt>o+10)&&r("Meridian batch signing round is invalid or expired."),(a?a.requestId!==e.requestId||Number(a.index)+1!==e.index||a.expiresAt!==e.expiresAt:e.index!==0)&&r("Unexpected Meridian batch signing order.");let d=O(t,e.index,u,M(e.nonce,"the nonce",!1,64),e.signedAt),i=b(d,f(e.signatureTypes));(!h(e.request,i)||!h(e.data,d.data)||!h(c,[{kind:"typedData",request:i}]))&&r("Meridian batch signing fields differ from the local instruction.")}function te(t,u){let c=new Map;return{name:"meridian_perps_batch",inputSchema:{type:"object",additionalProperties:!1,required:["subaccountId","instructions","failureBehavior"],description:"Sign 1\u201320 NEW/CANCEL instructions locally and submit one batch. failureBehavior is explicit. Cancel/replace is not atomic. Reconcile each result and check fills after submission.",properties:{subaccountId:{type:"string",format:"uuid",description:"Subaccount identifier as a UUID."},subaccount:{type:"string",description:"ASCII subaccount name (default primary) or 0x-prefixed bytes32."},failureBehavior:{type:"string",enum:["ContinueOnFailure","StopOnFailure"],description:"ContinueOnFailure continues after a failed instruction; StopOnFailure stops the batch."},instructions:{type:"array",minItems:1,maxItems:20,items:{type:"object",properties:{kind:{type:"string",enum:["NEW","CANCEL"],description:"NEW places an order; CANCEL cancels one order."},quantity:I('Product base-asset quantity in D9 base units (9 decimals): "1000000000" = 1 base asset; "0" only for a full close.'),price:I('Limit price in quote-token D9 base units per base asset (9 decimals): "1000000000" = 1 quote token per base asset.'),stopPrice:I('Trigger price in quote-token D9 base units per base asset (9 decimals): "1000000000" = 1 quote token per base asset.'),expiresAt:I("Order expiry in Unix seconds, as a decimal string.")},additionalProperties:!0},description:"Ordered NEW or CANCEL instructions to sign and submit."},continuation:{type:"object",description:"Internal continuation returned by the previous local signing round."},signature:{type:"string",description:"Internal hexadecimal signature supplied by local signing; never enter manually."}}},execute:async(e,a)=>{let o=S(a),d=j(e);d.forEach((s,n)=>O(e,n,o,"0",Math.floor(Date.now()/1e3)));let i=s=>({steps:[{kind:"typedData",request:structuredClone(s.round.request)}],continuation:structuredClone(s.round),summary:`Review and confirm Meridian batch instruction ${Number(s.round.index)+1}/${d.length}. D9 signed quantities and prices have 9 decimals. Every instruction is separately signed; no API submission occurs until all signatures are collected. ${e.failureBehavior}; earlier successful results are never rolled back.`});if(e.continuation!==void 0){let s=f(e.continuation),n=c.get(String(s.requestId));(!n||!A(s.wallet,o)||!h(n.round,s)||!h(n.args,Object.fromEntries(Object.entries(e).filter(([l])=>!["continuation","signature"].includes(l)))))&&r("Meridian batch continuation is lost, expired or changed. Check orders before restarting."),c.delete(String(s.requestId));let L=s.request;(typeof s.expiresAt!="number"||s.expiresAt<=Math.floor(Date.now()/1e3))&&(clearTimeout(n.timer),r("Meridian batch expired. Check orders before restarting."));try{(typeof e.signature!="string"||!/^0x[0-9a-fA-F]{130}$/.test(e.signature)||!A(await z({...L,signature:e.signature}),o))&&r("The local Meridian batch signature does not match this wallet.");let l=Number(s.index),R=n.values[l];if(n.signed.push({type:d[l].kind,data:R.data,signature:e.signature}),l+1<d.length){let m=n.values[l+1],U=f(s.signatureTypes);return n.round={...s,index:l+1,nonce:m.message.nonce,data:m.data,request:b(m,U),review:n.reviews[l+1]},c.set(String(s.requestId),n),i(n)}clearTimeout(n.timer),(t.network==="testnet"||await t.clientFor(p).getChainId()!==p)&&r("Meridian batch requires chain 4663.");let W=await q(t);return n.values.some(m=>!h(b(m,W).types,b(m,f(s.signatureTypes)).types))&&r("Meridian batch signing types changed; check orders before restarting."),{result:await v(t,"/v1/order/batch",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({failureBehavior:e.failureBehavior,instructions:n.signed})}),chainId:p,summary:"Meridian batch API responded. Inspect every instruction result and subsequent order/fill state. HTTP success is not atomic success or proof of execution."}}catch(l){throw clearTimeout(n.timer),l}}e.signature!==void 0&&r("Meridian batch signatures require an active local signing round."),c.size>=1e3&&r("Too many pending Meridian batches. Try again shortly."),(t.network==="testnet"||await t.clientFor(p).getChainId()!==p)&&r("Meridian batch requires chain 4663.");let g=await q(t),y=f(await v(t,"/v1/time")).time;(typeof y!="number"||!Number.isSafeInteger(y)||Math.abs(y-Date.now())>3e4)&&r("Synchronize the clock before signing a Meridian batch.");let C=Math.floor(y/1e3),B=BigInt(y)*1000000n+BigInt($(999980)),k=d.map((s,n)=>O(e,n,o,(B+BigInt(n)).toString(),C)),x=[];for(let[s,n]of d.entries())x.push(await u(n.action,n.args,o,k[s].data));let w=H(),T=k[0],F={stage:"perps_batch_sign",chainId:p,wallet:o,requestId:w,index:0,signedAt:C,expiresAt:C+90,nonce:T.message.nonce,data:T.data,request:b(T,g),signatureTypes:{TradeOrder:g.TradeOrder,CancelOrder:g.CancelOrder},review:x[0]},E=setTimeout(()=>c.delete(w),9e4);E.unref?.();let N={args:structuredClone(e),round:F,values:k,reviews:x,signed:[],timer:E};return c.set(w,N),i(N)}}}export{ee as a,te as b};
@@ -1 +1 @@
1
- import{a as U,b as N,c as _}from"./HKEMQBFA.js";import{e as S}from"./Q42YI3EP.js";import{b as k,c as R}from"./QU5XKRGK.js";import{a as q,c as f,d as h,f as I,g as D}from"./4HG6FRVH.js";import{g as B}from"./H43RNCX2.js";import{a as b,c as O}from"./43LI5NKJ.js";import{b as v}from"./66F5ZH34.js";import{a as A}from"./FWD4L3CJ.js";import{a as s}from"./XSD5NL7J.js";import{erc20Abi as $}from"viem";var K=a=>{function w(e,n){if(Object.keys(e).some(m=>!n.includes(m)))throw new s("Use only the inputs shown for this Pendle tool. YT and LP actions are not supported.")}function j(e){if(typeof e!="string"||!/^[0-9]+$/.test(e)||e.length>78)throw new s("Provide a positive decimal base-unit amount as a string.");return k(BigInt(e),!0)}function C(e,n){let m=e==="stable"?100:200,r=n===void 0?e==="stable"?50:100:n;if(typeof r!="number"||!Number.isInteger(r)||r<0)throw new s("Slippage must be a whole number of basis points.");if(r>m)throw new s(`Oak won't accept a price move that big. The most it allows is ${m/100}%.`);return r}async function y(e,n,m){w(n,["market","amount","slippageBps"]),f(h(m,a.wallet),"wallet does not match this request"),b(n.market);for(let r=0;r<2;r++){let t=await a.verify(n.market);f(h(t.market,n.market),"verified market does not match the request");let d=await a.client.getBlock();if(t.expired||d.timestamp>=BigInt(t.expiry))throw new s("This Pendle term has ended. Use pendle_redeem to cash out.");let p=C(t.kind,n.slippageBps),o=e==="sell"&&n.amount==="max"?k(await a.client.readContract({address:t.pt,abi:$,functionName:"balanceOf",args:[a.wallet],blockNumber:d.number}),!0):j(n.amount),i=e==="buy"?t.inputToken:t.pt,l=e==="buy"?t.pt:t.inputToken,u=await B(a.http,{inputToken:i,outputToken:l,amount:o,wallet:a.wallet,slippageBps:p}),c=(e==="buy"?I:D)(u.body,{market:t,wallet:a.wallet,amount:o,slippageBps:p});if(Math.abs(c.priceImpact)>.03)throw new s("This is a thin market and your size moves the price too much. Try a smaller amount.");if(Date.now()-u.receivedAt>3e4)continue;await R(a.client,t,e,o,c.amountOut,c.priceImpact);let T=Date.now()-u.receivedAt;if(T<0||T>3e4)continue;let x=e==="sell"?{wallet:a.wallet,market:t.market,pt:t.pt,outputToken:l,amountIn:o.toString(),amountOut:c.amountOut.toString(),minOut:c.minOut.toString(),ptDecimals:t.ptDecimals,outputDecimals:t.inputDecimals,endsAt:t.expiry,feeUsd:c.feeUsd,receivedAt:u.receivedAt,data:c.tx.data}:void 0;return{txs:[O(i,q,o.toString(),A),c.tx],...x?{pendleSellQuote:x}:{},summary:e==="buy"?"Approve the exact input amount, then buy Pendle PT.":"Approve the exact PT amount, then sell early at today\u2019s market price."}}throw new s("Pendle\u2019s quote became too old. Try again for a fresh price.")}async function M(e,n){w(e,["market","minOutBps"]),f(h(n,a.wallet),"wallet does not match this request");let m=U(e.minOutBps),r;if(e.market==="all")try{r=await S(a.client)}catch{throw new s("Oak could not read ended Pendle markets from the chain. Provide one ended market address to cash it out.")}else b(e.market),r=[e.market];let t=[];for(let o of r){let i=await a.verify(o);if(f(h(i.market,o),"verified market does not match the request"),e.market==="all"&&!i.expired)continue;let l=k(await a.client.readContract({address:i.pt,abi:$,functionName:"balanceOf",args:[a.wallet]}));l!==0n&&t.push({verified:i,balance:l})}if(t.length>1)throw new s(`Ended Pendle terms are cashed out one at a time. Run pendle_redeem with one of these market addresses: ${t.map(({verified:o})=>o.market).join(", ")}.`);let d=[],p=[];for(let{verified:o,balance:i}of t){let l=await N(a,o,i,m);d.push(...l.txs);let u=await _(a,o,i,l.expected,m);u&&p.push(u)}return{txs:d,summary:d.length?["Cash out ended Pendle PT balances to each market\u2019s input token.",...p].join(" "):"No PT balance in the selected ended Pendle terms."}}let g={type:"string",pattern:"^0x[0-9a-fA-F]{40}$",description:"Pendle market address returned by pendle_list."},P={type:"integer",minimum:0,maximum:200,description:"USDG: default 50, cap 100 bps. Stock tokens: default 100, cap 200 bps; the verified market determines the cap."};return[{name:"pendle_buy",inputSchema:{type:"object",properties:{market:g,amount:v("Positive decimal base units of the market input token; read its decimals first."),slippageBps:P},required:["market","amount"],additionalProperties:!1},execute:(e,n)=>y("buy",e,n)},{name:"pendle_sell",inputSchema:{type:"object",properties:{market:g,amount:{type:"string",anyOf:[{pattern:"^[0-9]+$"},{const:"max"}],description:"PT decimal base units, or max for the full PT balance."},slippageBps:P},required:["market","amount"],additionalProperties:!1},execute:(e,n)=>y("sell",e,n)},{name:"pendle_redeem",inputSchema:{type:"object",properties:{market:{type:"string",anyOf:[{pattern:"^0x[0-9a-fA-F]{40}$"},{const:"all"}],description:"Ended market address, or all ended markets held by this wallet."},minOutBps:{type:"integer",minimum:0,maximum:50,default:10,description:"Maximum reduction from the on-chain redemption estimate, in basis points."}},required:["market"],additionalProperties:!1},execute:M}]};export{K as a};
1
+ import{a as U,b as N,c as _}from"./PXVREXCS.js";import{e as S}from"./RT7IU6TI.js";import{b as k,c as R}from"./GQYV4TFO.js";import{a as q,c as f,d as h,f as I,g as D}from"./2OKYXT25.js";import{g as B}from"./OUROA7XR.js";import{a as b,c as O}from"./43LI5NKJ.js";import{b as v}from"./66F5ZH34.js";import{a as A}from"./FWD4L3CJ.js";import{a as s}from"./XSD5NL7J.js";import{erc20Abi as $}from"viem";var K=a=>{function w(e,n){if(Object.keys(e).some(m=>!n.includes(m)))throw new s("Use only the inputs shown for this Pendle tool. YT and LP actions are not supported.")}function j(e){if(typeof e!="string"||!/^[0-9]+$/.test(e)||e.length>78)throw new s("Provide a positive decimal base-unit amount as a string.");return k(BigInt(e),!0)}function C(e,n){let m=e==="stable"?100:200,r=n===void 0?e==="stable"?50:100:n;if(typeof r!="number"||!Number.isInteger(r)||r<0)throw new s("Slippage must be a whole number of basis points.");if(r>m)throw new s(`Oak won't accept a price move that big. The most it allows is ${m/100}%.`);return r}async function y(e,n,m){w(n,["market","amount","slippageBps"]),f(h(m,a.wallet),"wallet does not match this request"),b(n.market);for(let r=0;r<2;r++){let t=await a.verify(n.market);f(h(t.market,n.market),"verified market does not match the request");let d=await a.client.getBlock();if(t.expired||d.timestamp>=BigInt(t.expiry))throw new s("This Pendle term has ended. Use pendle_redeem to cash out.");let p=C(t.kind,n.slippageBps),o=e==="sell"&&n.amount==="max"?k(await a.client.readContract({address:t.pt,abi:$,functionName:"balanceOf",args:[a.wallet],blockNumber:d.number}),!0):j(n.amount),i=e==="buy"?t.inputToken:t.pt,l=e==="buy"?t.pt:t.inputToken,u=await B(a.http,{inputToken:i,outputToken:l,amount:o,wallet:a.wallet,slippageBps:p}),c=(e==="buy"?I:D)(u.body,{market:t,wallet:a.wallet,amount:o,slippageBps:p});if(Math.abs(c.priceImpact)>.03)throw new s("This is a thin market and your size moves the price too much. Try a smaller amount.");if(Date.now()-u.receivedAt>3e4)continue;await R(a.client,t,e,o,c.amountOut,c.priceImpact);let T=Date.now()-u.receivedAt;if(T<0||T>3e4)continue;let x=e==="sell"?{wallet:a.wallet,market:t.market,pt:t.pt,outputToken:l,amountIn:o.toString(),amountOut:c.amountOut.toString(),minOut:c.minOut.toString(),ptDecimals:t.ptDecimals,outputDecimals:t.inputDecimals,endsAt:t.expiry,feeUsd:c.feeUsd,receivedAt:u.receivedAt,data:c.tx.data}:void 0;return{txs:[O(i,q,o.toString(),A),c.tx],...x?{pendleSellQuote:x}:{},summary:e==="buy"?"Approve the exact input amount, then buy Pendle PT.":"Approve the exact PT amount, then sell early at today\u2019s market price."}}throw new s("Pendle\u2019s quote became too old. Try again for a fresh price.")}async function M(e,n){w(e,["market","minOutBps"]),f(h(n,a.wallet),"wallet does not match this request");let m=U(e.minOutBps),r;if(e.market==="all")try{r=await S(a.client)}catch{throw new s("Oak could not read ended Pendle markets from the chain. Provide one ended market address to cash it out.")}else b(e.market),r=[e.market];let t=[];for(let o of r){let i=await a.verify(o);if(f(h(i.market,o),"verified market does not match the request"),e.market==="all"&&!i.expired)continue;let l=k(await a.client.readContract({address:i.pt,abi:$,functionName:"balanceOf",args:[a.wallet]}));l!==0n&&t.push({verified:i,balance:l})}if(t.length>1)throw new s(`Ended Pendle terms are cashed out one at a time. Run pendle_redeem with one of these market addresses: ${t.map(({verified:o})=>o.market).join(", ")}.`);let d=[],p=[];for(let{verified:o,balance:i}of t){let l=await N(a,o,i,m);d.push(...l.txs);let u=await _(a,o,i,l.expected,m);u&&p.push(u)}return{txs:d,summary:d.length?["Cash out ended Pendle PT balances to each market\u2019s input token.",...p].join(" "):"No PT balance in the selected ended Pendle terms."}}let g={type:"string",pattern:"^0x[0-9a-fA-F]{40}$",description:"Pendle market address returned by pendle_list."},P={type:"integer",minimum:0,maximum:200,description:"USDG: default 50, cap 100 bps. Stock tokens: default 100, cap 200 bps; the verified market determines the cap."};return[{name:"pendle_buy",inputSchema:{type:"object",properties:{market:g,amount:v("Positive decimal base units of the market input token; read its decimals first."),slippageBps:P},required:["market","amount"],additionalProperties:!1},execute:(e,n)=>y("buy",e,n)},{name:"pendle_sell",inputSchema:{type:"object",properties:{market:g,amount:{type:"string",anyOf:[{pattern:"^[0-9]+$"},{const:"max"}],description:"PT decimal base units, or max for the full PT balance."},slippageBps:P},required:["market","amount"],additionalProperties:!1},execute:(e,n)=>y("sell",e,n)},{name:"pendle_redeem",inputSchema:{type:"object",properties:{market:{type:"string",anyOf:[{pattern:"^0x[0-9a-fA-F]{40}$"},{const:"all"}],description:"Ended market address, or all ended markets held by this wallet."},minOutBps:{type:"integer",minimum:0,maximum:50,default:10,description:"Maximum reduction from the on-chain redemption estimate, in basis points."}},required:["market"],additionalProperties:!1},execute:M}]};export{K as a};
@@ -0,0 +1 @@
1
+ import{a,b as o,d as r,e as i}from"./GG24LO2R.js";import{c as s}from"./JESMX2UC.js";import{a as t}from"./FWD4L3CJ.js";var n=[{feature:"Ethos claim",source:"https://go.priors.trade/start-ethos.js",missing:"Public claim endpoint signs/sends the sponsor transaction remotely. No unsigned final transaction with a local preview/confirmation handoff is published. Use the owner Go Start workflow; Oak offers status and route discovery."},{feature:"x402 pay_url, paid reports, hire payments and pay_gateway",source:"https://github.com/priors-agents/priors/tree/02230282d8888e00794207ed271ee01b4ce30309/packages/x402",missing:"These hand EIP-3009 payment authorization to an external merchant/facilitator. The recipient settles remotely; no Oak-local unsigned transaction handoff is exposed. Oak discovery is supported; external payment-signature validation, recipient/invoice binding and preview semantics require a shared add-on protocol, beyond this module write scope. Gateway source also says its live 402 surface was not measured."},{feature:"Go Google/Privy account, gas sponsorship, recovery and agent001 approvals",source:"https://go.priors.trade/account",missing:"Authenticated smart-account/session and sponsored-operation APIs are not publicly specified as an unsigned plain-wallet contract. Owner uses Priors UI. Underlying pool, stock, savings and backing contracts are supported here."},{feature:"Publish merchant listings, job offers/results, board requests and signed public offers",source:"https://priors.trade/agent",missing:"Hosted MCP supplies discovery and signed board reads. A versioned authenticated mutation/withdrawal contract is not pinned from the inspected public SDK. Existing owner consent plus direct sponsor offer is supported on chain; creating external listings/messages remains an owner workflow."},{feature:"Create the X proof post",source:"https://go.priors.trade/xlink-core.js",missing:"Requires the human account owner to publish on X. Oak can set or clear the canonical proof URL as public ERC-8004 metadata, but does not publish posts or claim metadata alone verifies X ownership."}];function l(){return{tools:[{name:"priors_capabilities",inputSchema:{type:"object",properties:{},additionalProperties:!1},async execute(){return{chainId:t,sourceCommit:"02230282d8888e00794207ed271ee01b4ce30309",reads:[...a],actions:[...r],localOwnerSignatures:[...o],core:[...i],ownerOnly:s.filter(e=>e.owner).map(e=>e.name),blocked:n.map(e=>({...e,status:"BLOCKED"})),integration:"The shared bridge/server diffs must be integrated for open reads, local signing continuations, exact calldata reconstruction, action destinations and human confirmation. New core builders fail closed in older add-ons; a core-only install does not establish end-to-end feature availability.",safety:"Every local action previews its exact unsigned transaction bundle. Approvals equal inputs or explicit finite future budgets; never unlimited. Persistent autopay and bids authorize later third-party execution within the stated budget. Token backing is collateral and provides no promised returns."}}}]}}export{n as a,l as b};
@@ -0,0 +1 @@
1
+ import{b as Z}from"./SOTYQGPT.js";import{a as I,b as J,d as V}from"./D742AYEV.js";import{a as Q}from"./CEQNXF6A.js";import{a as E}from"./QYKXWBZC.js";import{K as y}from"./7QKYDNF6.js";import{c as $}from"./DNNFKDZR.js";import{a as H}from"./43LI5NKJ.js";import{a as N}from"./66F5ZH34.js";import{d as M,g as O,i as K}from"./NWNYJ26T.js";import{a as b}from"./FWD4L3CJ.js";import{a as e}from"./XSD5NL7J.js";import{encodeFunctionData as Y,erc20Abi as X,getAddress as W,parseAbi as ee,zeroAddress as te}from"viem";var v={address:W("0xCeF73866b088766DeD46Ba71d9Bd7591B5e931d2"),symbol:"tNET",decimals:9,chainId:b},_={pair_oracle:["checkpoint"],futures:["open","close","marginCall","accrueCarry","sweepCarrySkim"],underwriting:["subscribe","redeem"],prize:["enter","enterWithNet","exit","exitToUsdg","lockTranche","earlyUnlock","pokeRebase"]},fe=x=>({tools:[{name:"netnet_desk_action",inputSchema:{type:"object",additionalProperties:!1,required:["program","operation"],properties:{program:{type:"string",enum:Object.keys(_),description:"Desk program: pair_oracle (price checkpoint), futures, underwriting or prize (WinNET)."},operation:{type:"string",enum:[...new Set(Object.values(_).flat())],description:"Action to run; it must be one the chosen program supports (see the program list in this tool)."},amount:N('Amount in base units of the token the operation spends or moves: tNET 9 decimals for futures and underwriting, USDG 6 or NET 9 for prize. Example: "1000000000" = 1 NET.'),minAmountOut:N('Least output you must receive, in base units of the output token (USDG 6 decimals, NET 9, underwriting shares). Example: "1000000" = 1 USDG.'),maxPayment:N('Most tNET you will pay for futures open (margin plus fee), in tNET base units (9 decimals). Example: "1000000000" = 1 tNET.'),sizeUsdWad:N('Futures position notional in USD as an 18-decimal wad in base units (1e18 = 1 USD). Example: "100000000000000000000" = 100 USD.'),isLong:{type:"boolean",description:"Futures open only: true for a long position, false for a short."},account:{type:"string",description:"Futures marginCall only: address of the trader to margin-call; they must be liquidatable."},referrer:{type:"string",description:"Prize enter only: optional referrer address recorded at the first deposit; cannot be your own wallet."},trancheIndex:N('Zero-based index of your WinNET tranche to lock or unlock early, as a decimal string. Example: "0".'),lockDraws:{enum:["7","30"],description:"Prize lockTranche only: commit the tranche for 7 or 30 draws."},maxPenaltyAssets:N('Prize earlyUnlock only: highest forfeited principal you accept, in NET base units (9 decimals). Example: "1000000000" = 1 NET.')}},execute:async(t,m)=>{try{if(H(m),typeof t.program!="string"||!Object.hasOwn(_,t.program)||typeof t.operation!="string"||!_[t.program].includes(t.operation))throw new e("Choose a supported finite NetNet desk operation.");let p=t.program,r=t.operation,P=E[p],z=Q[p],T=x.clientFor(b);if(await T.getChainId()!==b)throw new e("NetNet desk actions require chain 4663.");let D=await T.getBlock(),q=new Set(["program","operation"]),u=(n,s=[])=>T.readContract({address:P.address,abi:z,functionName:n,args:s,blockNumber:D.number}),h=(...n)=>n.forEach(s=>q.add(s)),A=()=>(h("amount"),y(t.amount)),S=()=>(h("minAmountOut"),y(t.minAmountOut)),d=n=>K(n,"Provide an explicit checksummed account.",M),l=[],a,c=0n,w="",g;if(p==="pair_oracle"){if(d(await u("pairContract"))!==Z)throw new e("The oracle does not use the pinned canonical pair.");w="Permissionless oracle checkpoint; it sends no reward to this wallet and may not yet produce a valid TWAP."}else if(p==="futures"||p==="underwriting"){if(d(await u("token"))!==v.address||await T.readContract({address:v.address,abi:X,functionName:"decimals",blockNumber:D.number})!==9)throw new e("This desk does not use the pinned valueless 9-decimal tNET test collateral.");let n=E.futures.address,s=E.underwriting.address;if(p==="futures"?d(await u("vault"))!==s:d(await u("clearinghouse"))!==n)throw new e("Futures and underwriting counterparties do not match the published pins.");if(w="Experimental tNET test program; tNET has no monetary value. Futures margin and underwriting capital can be lost. Utilization/ADL can prevent redemption. Prices and fees are read from the contract oracle; these calls encode no price floor.",r==="open"){if(h("isLong","sizeUsdWad","maxPayment"),typeof t.isLong!="boolean")throw new e("Provide isLong as a boolean.");let o=A(),f=y(t.sizeUsdWad);if(o>=1n<<128n||f>=1n<<128n)throw new e("Position margin and notional must fit uint128.");let k=d(await u("oracle"));if(k!==W("0xc8a11E8793F8714a159061369173dc86A0A5E23F"))throw new e("The futures oracle is not the published deployment.");let C=await T.readContract({address:k,abi:ee(["function marginPriceWad() view returns (uint256)"]),functionName:"marginPriceWad",blockNumber:D.number});if(C<=0n)throw new e("Futures margin price is unavailable.");let i=f*5n/10000n*1000000000n/C;if(c=o+i,a=v,c>y(t.maxPayment))throw new e("Margin plus taker fee exceeds maxPayment.");l=[t.isLong,f,o],w+=` Entry fee ${i} tNET base units; exact approval caps price drift and may require a fresh preview.`}else if(r==="marginCall"){h("account");let o=d(t.account);if(await u("liquidatable",[o])!==!0)throw new e("The selected futures trader is not liquidatable.");l=[o]}else if(r==="subscribe"){c=A(),a=v,l=[c];let[o,f]=await Promise.all([u("totalShares"),u("equityTokens")]);if(typeof o!="bigint"||typeof f!="bigint"||o>0n&&f===0n)throw new e("Underwriting share price is invalid.");let k=o===0n?c:c*o/f;if(k===0n||k<S())throw new e("Underwriting subscription rounds to zero or misses the local share minimum.");w+=` Current quote ${k} underwriting share units; the share minimum is a local check, not encoded calldata.`}else if(r==="redeem"){let o=A();if(o>await u("sharesOf",[m]))throw new e("The wallet has insufficient underwriting shares.");l=[o],g={token:v,amount:S()}}}else{let[n,s,o,f,k,C]=await Promise.all(["net","usdg","staking","sNet","controller","book"].map(i=>u(i)));if(d(n)!==I.address||d(s)!==$.address||d(o)!==V||d(f)!==J.address||d(k)!==E.draw.address||d(C)!==E.bonus.address)throw new e("WinNET token, staking, book or controller does not match its published pins.");if(w="WinNET principal is a fixed NET claim, exposed to NET price changes. Entry commits through three staking epochs; locks commit for 7 or 30 draws. Early unlock forfeits 1% of principal and cancels streak credits. Pair buys and sells each incur the NET trading tax; no prize or return is guaranteed.",r==="enter"||r==="enterWithNet"){h("referrer");let i=t.referrer===void 0?te:d(t.referrer);if(i===W(m))throw new e("WinNET does not permit self-referral.");c=A(),a=r==="enter"?$:I,l=r==="enter"?[c,S(),i]:[c,i],w+=` Referrer ${i} is recorded at the first deposit and cannot later be changed.`}else if(r==="exit"||r==="exitToUsdg"){let i=A();if(i>await u("principalOf",[m]))throw new e("WinNET exit exceeds this wallet\u2019s fixed principal.");l=r==="exit"?[i,m]:[i,S(),m],g={token:r==="exit"?I:$,amount:r==="exit"?i:y(t.minAmountOut)}}else if(r==="lockTranche"||r==="earlyUnlock"){h("trancheIndex");let i=y(t.trancheIndex,!0),U=await u("trancheAt",[m,i]);if(!Array.isArray(U)||typeof U[0]!="bigint"||U[0]===0n)throw new e("Choose a nonempty WinNET tranche.");if(r==="lockTranche"){if(h("lockDraws"),t.lockDraws!=="7"&&t.lockDraws!=="30")throw new e("Choose a 7- or 30-draw lock.");l=[i,BigInt(t.lockDraws)]}else{h("maxPenaltyAssets");let j=(U[0]+99n)/100n;if(j>y(t.maxPenaltyAssets,!0))throw new e("Early unlock exceeds maxPenaltyAssets in NET base units.");l=[i],w+=` Current irreversible forfeiture ${j} NET base units.`}}}if(Object.keys(t).some(n=>!q.has(n)))throw new e("Unexpected fields for this desk operation.");if(a&&await T.readContract({address:a.address,abi:X,functionName:"balanceOf",args:[m],blockNumber:D.number})<c)throw new e(`Top up ${a.symbol}; this action needs ${c} base units.`);let F=`NetNet ${p}.${r}, contract ${P.address}, chain ${b}, ordered values ${JSON.stringify(l,(n,s)=>typeof s=="bigint"?String(s):s)}. ${a?`Approve exactly ${c} ${a.symbol} base units (token ${a.address}, decimals ${a.decimals}). `:""}${w}`,L=[...a?[x.approval(a.address,P.address,c.toString(),b)]:[],x.unsignedTx({to:P.address,data:Y({abi:z,functionName:r,args:l}),value:"0",chainId:b,description:F})],R=await x.preview(L,m),B=0n,G=0n;for(let n of R.changes){if(n.token.chainId!==b||!/^-?\d+$/.test(n.amount))throw new e("Invalid desk preview metadata.");let s=BigInt(n.amount);if(s<0n){if(!a||!O(n.token.address,a.address)||n.token.decimals!==a.decimals)throw new e("Desk preview spends an unexpected wallet asset.");B-=s}if(g&&O(n.token.address,g.token.address)){if(n.token.decimals!==g.token.decimals)throw new e("Desk receipt decimals mismatch.");G+=s}}if(B>c||g&&G<g.amount)throw new e("Desk preview exceeds its input budget or misses the requested receipt minimum.");return{txs:L,preview:R,summary:F}}catch(p){throw new e(x.plainError(p))}}}]});export{v as a,fe as b};
@@ -0,0 +1,2 @@
1
+ import{c as R}from"./MRMR4QHA.js";import{b,i as O}from"./RT7IU6TI.js";import{d as P,e as D,f as C,g as w}from"./SK2VBNAU.js";import{h as x}from"./2GXHYI23.js";import{a as m}from"./FWD4L3CJ.js";import{a as S}from"./XSD5NL7J.js";var T=/^PT-[\p{L}\p{N}._-]{1,40}$/u,L=10n**18n,N=e=>new Date(e*1e3).toISOString().slice(0,10);async function E(e,i,t){let a=await w(e,t.map(s=>({address:s.pt,abi:C,functionName:"balanceOf",args:[i]}))),r=new Map;return t.forEach((s,l)=>{let n=a[l];if(!n.ok||typeof n.value!="bigint")throw new S("Oak couldn't read every Pendle balance, so it won't show this wallet's terms as complete.");r.set(s.pt.toLowerCase(),n.value)}),r}function M(e,i,t){let[a,r=""]=e.formatAmount(i.toString(),t).split("."),s=r.slice(0,6).replace(/0+$/,"");return s?`${a}.${s}`:a}function Y(e){let i=`Your fixed term on Pendle ended on ${e.endDate}.`;if(e.kind==="stable"){let r=e.unitAmount?`Your ${e.ptAmount} tokens are worth ${e.unitAmount} USDG now.`:`Your ${e.ptAmount} tokens can be cashed out to USDG now.`;return`${i} ${r}
2
+ Want me to cash out to USDG, or start a new term? One "yes" is enough; say "cash out" or "new term".`}let t=e.unitAddress?`${e.unitSymbol} (token ${e.unitAddress})`:e.unitSymbol,a=e.unitAmount?`Your ${e.ptAmount} tokens pay out about ${e.unitAmount} ${t} now.`:`Your ${e.ptAmount} tokens can be cashed out for ${t} now.`;return`${i} ${a} Want me to cash out and swap that to USDG, or start a new term? One "yes" is enough.`}async function G(e,i){let t=new Map,a=await w(e,i.map(n=>({address:n.facts.verified.yt,abi:D,functionName:"pyIndexStored"}))),r=i.map((n,c)=>{let d=a[c];if(!d.ok||typeof d.value!="bigint")return;let p=d.value>n.facts.syExchangeRate?d.value:n.facts.syExchangeRate;return p>0n?n.balance*L/p:void 0}),s=i.flatMap((n,c)=>r[c]===void 0?[]:[{item:n,amount:r[c]}]),l=await w(e,s.map(({item:n,amount:c})=>({address:n.facts.verified.sy,abi:P,functionName:"previewRedeem",args:[n.facts.verified.inputToken,c]})));return s.forEach(({item:n},c)=>{let d=l[c];d.ok&&typeof d.value=="bigint"&&t.set(n.row.market.toLowerCase(),d.value)}),t}async function H(e,i,t={}){let a=e.clientFor(m),r=t.now!==void 0?{now:t.now}:{},s=await O(e,{allowChain:!0,...r,...t.signal?{signal:t.signal}:{}});b(t.signal);let l=await E(a,i,s.rows),n=s.rows.filter(u=>(l.get(u.pt.toLowerCase())??0n)>0n);b(t.signal);let{ok:c}=await R(a,n,r),d=c.map(u=>({...u,balance:l.get(u.row.pt.toLowerCase())}));b(t.signal);let p=await G(a,d.filter(u=>u.facts.verified.expired));return d.map(({row:u,facts:g,balance:A})=>{let o=g.verified,h=M(e,A,o.ptDecimals),f=N(o.expiry),k=T.test(g.ptSymbol)?g.ptSymbol:"PT",y=p.get(u.market.toLowerCase()),$={module:"pendle",id:`${m}:${o.pt}`,chainId:m,assets:[{token:{address:o.pt,chainId:m,symbol:k,decimals:o.ptDecimals},amount:A.toString()}],economics:{principal:[x(o.expired?"redeemable":"maturity",{token:{address:o.inputToken,chainId:m,symbol:o.inputSymbol,decimals:o.inputDecimals},amount:y?.toString()??null,source:o.expired?"pendle.previewRedeem":"pendle.expiry",heldAs:o.pt,dueAt:o.expiry.toString(),...y===void 0?{unknownReason:o.expired?"The payout preview is unavailable; try again.":`The term pays out on ${f}; Oak reads the payout only after the term ends.`}:{}})],debt:[],rewards:[],backing:[],coverage:{complete:!0}}};if(!o.expired)return{...$,description:`${h} ${k} in the Pendle term ending ${f}. It pays out at the end date if held until then; leaving early sells at that day's market price.`};let v=y===void 0?void 0:M(e,y,o.inputDecimals),I=Y({kind:o.kind,endDate:f,ptAmount:h,unitSymbol:o.inputSymbol,...v!==void 0?{unitAmount:v}:{},...u.source==="chain"?{unitAddress:o.inputToken}:{}});return{...$,matured:!0,oakNotice:I,description:`${h} ${k} in a Pendle term that ended ${f}; ready to cash out.`}})}export{N as a,E as b,M as c,Y as d,H as e};
@@ -0,0 +1 @@
1
+ import{a as p}from"./QYKXWBZC.js";import{a as c}from"./FWD4L3CJ.js";import{a as n}from"./XSD5NL7J.js";import{a as f}from"./JXOEJPJ4.js";import{getAddress as k}from"viem";function y(e){return e.type.startsWith("tuple")?`(${("components"in e?e.components:[]).map(y).join(",")})${e.type.slice(5)}`:e.type}var m=e=>`${e.name}(${e.inputs.map(y).join(",")})`;function l(e,t,s=0){if(s>8)throw new n("Desk argument nesting exceeds eight levels.");let o=/^(.*)\[(\d*)\]$/.exec(e.type);if(o){if(!Array.isArray(t)||t.length>64||o[2]&&t.length!==Number(o[2]))throw new n("Desk arrays must match the ABI shape and contain at most 64 values.");return t.map(r=>l({...e,type:o[1]},r,s+1))}if(e.type==="tuple"){let r="components"in e?e.components:[];if(!Array.isArray(t)||t.length!==r.length)throw new n("Desk tuples use exact ordered value arrays.");return r.map((a,u)=>l(a,t[u],s+1))}if(e.type==="bool"){if(typeof t!="boolean")throw new n("Use boolean desk values.");return t}if(typeof t!="string"||t.length>8194)throw new n("Desk integers, addresses, bytes and text must be bounded strings.");if(e.type==="address")return k(t);if(/^u?int\d*$/.test(e.type)){let r=e.type.startsWith("int"),a=Number(e.type.replace(/^u?int/,"")||"256");if(!/^-?\d{1,78}$/.test(t))throw new n("Desk integers use decimal base-unit strings.");let u=BigInt(t),d=1n<<BigInt(r?a-1:a);if(u<(r?-d:0n)||u>=d)throw new n("Desk integer exceeds its ABI width.");return u}if(/^bytes\d*$/.test(e.type)){let r=Number(e.type.slice(5));if(!/^0x(?:[0-9a-f]{2})*$/i.test(t)||r&&t.length!==r*2+2)throw new n("Desk byte values must match the ABI width.");return t}if(e.type==="string")return t;throw new n("Unsupported desk read argument type.")}function h(e,t=0){if(t>12)throw new n("Desk result nesting exceeds the supported size.");if(typeof e=="bigint")return e.toString();if(typeof e=="string"){if(/^0x[0-9a-f]*$/i.test(e)){if(e.length>8194)throw new n("Desk byte result exceeds the supported size. Choose a bounded getter.");return e}return f(e)}if(Array.isArray(e)){if(e.length>4096)throw new n("Desk result is too large. Choose a paginated getter.");return e.map(s=>h(s,t+1))}return e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([s,o])=>[s,h(o,t+1)])):e}var B=e=>({tools:[{name:"netnet_desk_read",inputSchema:{type:"object",additionalProperties:!1,required:["program"],properties:{program:{type:"string",enum:Object.keys(p),description:"Published NetNet desk program to read (choose one of the enum values)."},method:{type:"string",description:"Exact ABI signature returned by the catalog. Omit to list all qualified reads."},values:{type:"array",maxItems:16,description:"Ordered ABI input values; integer strings, booleans, or bounded arrays/tuples. Wallet parameters are explicit public addresses."}}},execute:async t=>{try{if(Object.keys(t).some(i=>!["program","method","values"].includes(i))||typeof t.program!="string"||!Object.hasOwn(p,t.program))throw new n("Choose a published NetNet desk program.");let s=p[t.program],o=s.abi.filter(i=>i.type==="function"&&["view","pure"].includes(i.stateMutability));if(t.method===void 0){if(t.values!==void 0)throw new n("values requires an exact method signature.");return{chainId:c,program:t.program,contract:s.address,methods:o.map(i=>({method:m(i),inputs:i.inputs,outputs:i.outputs})),access:"Public read-only ABI. No transaction, approval, signature or external publication is available here."}}let r=o.find(i=>m(i)===t.method),a=t.values??[];if(!r||!Array.isArray(a)||a.length!==r.inputs.length)throw new n("Choose an exact catalog method and ordered values matching its inputs. State-changing methods are unavailable.");let u=r.inputs.map((i,w)=>l(i,a[w])),d=e.clientFor(c);if(await d.getChainId()!==c)throw new n("NetNet desk reads require chain 4663.");let g=await d.getBlock(),b=await d.readContract({address:s.address,abi:[r],functionName:r.name,args:u,blockNumber:g.number});return{chainId:c,program:t.program,contract:s.address,blockNumber:String(g.number),method:m(r),outputs:r.outputs,data:h(b),units:"ABI-native raw fields. Integers are decimal strings; check the output names and official program terms for token decimals, price scales and timestamps. A zero balance or unavailable getter does not establish a complete wallet inventory."}}catch(s){throw new n(e.plainError(s))}}}]});export{m as a,l as b,B as c};
@@ -0,0 +1 @@
1
+ import{b as ne}from"./SZ466I5X.js";import{a as ee,b as re,d as ie,e as R,f as X,g as te}from"./O7HCEPQY.js";import{a as z,c as f,d as L,f as t,g,h as N,i as S,j as G,k as w,l as U,m as k,n as Z,p as A,q as O,s as W,t as V}from"./46KWRAYK.js";import{b as M}from"./66F5ZH34.js";import{c as C,h as I}from"./NWNYJ26T.js";import{a as Y}from"./XSD5NL7J.js";import{randomInt as le,randomUUID as he}from"node:crypto";import{isDeepStrictEqual as K}from"node:util";import{encodeFunctionData as ae,erc20Abi as se,pad as qe,recoverTypedDataAddress as fe,zeroHash as ge}from"viem";var B={funding:{path:"/v1/funding",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!0,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["chargedAt"]}}]},"funding/projected-rate":{path:"/v1/funding/projected-rate",parameters:[{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}}]},"linked-signer":{path:"/v1/linked-signer",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"statuses",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["PENDING","ACTIVE","PENDING_REVOKE","REVOKED","REJECTED"]}}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt","expiresAt"]}}]},"linked-signer/address/{address}":{path:"/v1/linked-signer/address/{address}",parameters:[{name:"address",in:"path",required:!0,schema:{type:"string",format:"hex"}}]},"linked-signer/quota":{path:"/v1/linked-signer/quota",parameters:[{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}}]},"linked-signer/{id}":{path:"/v1/linked-signer/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},maintenance:{path:"/v1/maintenance",parameters:[]},order:{path:"/v1/order",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"clientOrderId",in:"query",required:!1,schema:{type:"string"}},{name:"productIds",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"uuid"},minItems:1,uniqueItems:!0}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}},{name:"side",in:"query",required:!1,schema:{type:"integer",enum:[0,1],"x-enum-varnames":["BUY","SELL"]}},{name:"close",in:"query",required:!1,schema:{type:"boolean"}},{name:"stopTypes",in:"query",required:!1,schema:{type:"array",items:{type:"integer",enum:[0,1],"x-enum-varnames":["GAIN","LOSS"]}}},{name:"isWorking",in:"query",required:!1,schema:{type:"boolean",enum:[!0]}},{name:"isPending",in:"query",required:!1,schema:{type:"boolean",enum:[!0]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"order/fill":{path:"/v1/order/fill",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"productIds",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"uuid"},minItems:1,uniqueItems:!0}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}},{name:"side",in:"query",required:!1,schema:{type:"integer",enum:[0,1],"x-enum-varnames":["BUY","SELL"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["productId","filled","price","createdAt"]}},{name:"includeSelfTrades",in:"query",required:!1,schema:{type:"boolean"}},{name:"expandSelfTrades",in:"query",required:!1,schema:{type:"boolean"}}]},"order/trade":{path:"/v1/order/trade",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"order/{id}":{path:"/v1/order/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},"order/{id}/group":{path:"/v1/order/{id}/group",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}},{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},points:{path:"/v1/points",parameters:[{name:"address",in:"query",required:!0,schema:{type:"string",format:"hex"}},{name:"season",in:"query",required:!0,schema:{type:"integer",maximum:10,minimum:0}},{name:"epoch",in:"query",required:!0,schema:{type:"integer",maximum:256,minimum:1}}]},"points/summary":{path:"/v1/points/summary",parameters:[{name:"address",in:"query",required:!0,schema:{type:"string",format:"hex"}}]},"points/total":{path:"/v1/points/total",parameters:[{name:"season",in:"query",required:!1,schema:{type:"integer",maximum:10,minimum:0}},{name:"epoch",in:"query",required:!1,schema:{type:"integer",maximum:256,minimum:1}}]},position:{path:"/v1/position",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"productIds",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"uuid"},minItems:1,uniqueItems:!0}},{name:"open",in:"query",required:!1,schema:{type:"boolean"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["size","createdAt","updatedAt","realizedPnl"]}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}},{name:"side",in:"query",required:!1,schema:{type:"integer",enum:[0,1],"x-enum-varnames":["BUY","SELL"]}},{name:"isLiquidated",in:"query",required:!1,schema:{type:"boolean"}}]},"position-fee":{path:"/v1/position-fee",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!0,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["chargedAt"]}}]},"position-fee/projected-rate":{path:"/v1/position-fee/projected-rate",parameters:[{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}}]},"position/active":{path:"/v1/position/active",parameters:[{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}}]},"position/fill":{path:"/v1/position/fill",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"positionId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["price","filled","createdAt"]}}]},"position/liquidation":{path:"/v1/position/liquidation",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"position/{id}":{path:"/v1/position/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},product:{path:"/v1/product",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt","openInterest","baseTokenName","quoteTokenName"]}},{name:"ticker",in:"query",required:!1,schema:{type:"string",pattern:"^[a-zA-Z0-9]{1,32}$"}}]},"product/mark-price-gap":{path:"/v1/product/mark-price-gap",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!0,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["startTime"]}}]},"product/market-liquidity":{path:"/v1/product/market-liquidity",parameters:[{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}}]},"product/market-price":{path:"/v1/product/market-price",parameters:[{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}}]},"product/{id}":{path:"/v1/product/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},"rate-limit/config":{path:"/v1/rate-limit/config",parameters:[]},"rpc/config":{path:"/v1/rpc/config",parameters:[]},subaccount:{path:"/v1/subaccount",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"name",in:"query",required:!1,schema:{type:"string",format:"hex"}},{name:"sender",in:"query",required:!0,schema:{type:"string",format:"hex"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt","name"]}}]},"subaccount/all":{path:"/v1/subaccount/all",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"subaccount/balance":{path:"/v1/subaccount/balance",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["tokenName","updatedAt","amount"]}}]},"subaccount/{id}":{path:"/v1/subaccount/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},time:{path:"/v1/time",parameters:[]},token:{path:"/v1/token",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"depositEnabled",in:"query",required:!1,schema:{type:"boolean"}},{name:"withdrawEnabled",in:"query",required:!1,schema:{type:"boolean"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"token/transfer":{path:"/v1/token/transfer",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"statuses",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["SUBMITTED","PENDING","COMPLETED","REJECTED"]},uniqueItems:!0}},{name:"types",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["DEPOSIT","WITHDRAW","CONVERT"]}}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}}]},"token/withdraw":{path:"/v1/token/withdraw",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"isActive",in:"query",required:!1,schema:{type:"boolean"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"token/{id}":{path:"/v1/token/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},"usde/transfer":{path:"/v1/usde/transfer",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"address",in:"query",required:!0,schema:{type:"string",format:"hex"}},{name:"excludeTransferAddresses",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"hex"},maxItems:10,uniqueItems:!0}},{name:"statuses",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["PENDING","COMPLETED"]},uniqueItems:!0}},{name:"types",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["DEPOSIT","WITHDRAW","TRANSFER"]},uniqueItems:!0}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["initiatedAt"]}},{name:"initiatedAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"initiatedBefore",in:"query",required:!1,schema:{type:"integer"}}]},"archive/subaccount/balance":{path:"/v1/subaccount/balance",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["hour1","hour2","hour4","hour8","hour12","day1","week1","month1"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"tokenIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/funding":{path:"/v1/subaccount/funding",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"positionIds",in:"query",required:!1,schema:{minItems:1,maxItems:128,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}},{name:"productIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/position-fee":{path:"/v1/subaccount/position-fee",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"positionIds",in:"query",required:!1,schema:{minItems:1,maxItems:128,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}},{name:"productIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/unrealized-pnl":{path:"/v1/subaccount/unrealized-pnl",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["hour1","hour2","hour4","hour8","hour12","day1","week1","month1"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"productIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/volume":{path:"/v1/subaccount/volume",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["hour1","hour2","hour4","hour8","hour12","day1","week1","month1"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}}]},"archive/subaccount/total-volume":{path:"/v1/subaccount/total-volume",host:"archive",parameters:[{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}}]},"candles/last-price/config":{path:"/v1/last-price/config",host:"candles",parameters:[]},"candles/last-price/time":{path:"/v1/last-price/time",host:"candles",parameters:[]},"candles/last-price/symbols":{path:"/v1/last-price/symbols",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}}]},"candles/last-price/search":{path:"/v1/last-price/search",host:"candles",parameters:[{name:"query",in:"query",schema:{type:"string"}},{name:"type",in:"query",schema:{type:"string"}},{name:"exchange",in:"query",schema:{type:"string"}},{name:"limit",in:"query",schema:{type:"integer",minimum:1,maximum:100}}]},"candles/last-price/history":{path:"/v1/last-price/history",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["1","3","5","15","30","60","120","240","480","720","1D","3D","1W","1M"]}},{name:"from",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"to",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"countback",in:"query",required:!1,schema:{type:"integer",minimum:0}}]},"candles/oracle-price/config":{path:"/v1/oracle-price/config",host:"candles",parameters:[]},"candles/oracle-price/time":{path:"/v1/oracle-price/time",host:"candles",parameters:[]},"candles/oracle-price/symbols":{path:"/v1/oracle-price/symbols",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}}]},"candles/oracle-price/search":{path:"/v1/oracle-price/search",host:"candles",parameters:[{name:"query",in:"query",schema:{type:"string"}},{name:"type",in:"query",schema:{type:"string"}},{name:"exchange",in:"query",schema:{type:"string"}},{name:"limit",in:"query",schema:{type:"integer",minimum:1,maximum:100}}]},"candles/oracle-price/history":{path:"/v1/oracle-price/history",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["1","3","5","15","30","60","120","240","480","720","1D","3D","1W","1M"]}},{name:"from",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"to",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"countback",in:"query",required:!1,schema:{type:"integer",minimum:0}}]}};var $={type:"string",format:"uuid"},me={type:"string",description:"ASCII subaccount name (default primary) or bytes32. Query IDs are UUIDs."},ue={subaccount:me,subaccountId:{...$,description:"Subaccount identifier as a UUID."}};function ce(i,a){return a.type==="array"?((!Array.isArray(i)||i.length<Number(a.minItems??1)||i.length>Number(a.maxItems??200)||a.uniqueItems&&new Set(i).size!==i.length)&&t("Invalid Meridian perps query array."),i.flatMap(s=>ce(s,g(a.items)))):(a.type==="integer"||a.type==="number"?(typeof i!="number"||!Number.isSafeInteger(i)||i<Number(a.minimum??0)||i>Number(a.maximum??Number.MAX_SAFE_INTEGER))&&t("Invalid Meridian perps query integer."):a.type==="boolean"?typeof i!="boolean"&&t("Invalid Meridian perps query flag."):((typeof i!="string"||i.length<1||i.length>4096)&&t("Invalid Meridian perps query string."),a.format==="uuid"&&w(i),a.format==="hex"&&!/^0x(?:[0-9a-fA-F]{2})+$/.test(i)&&t("Invalid Meridian perps hexadecimal query.")),Array.isArray(a.enum)&&!a.enum.includes(i)&&t("Invalid Meridian perps query option."),[String(i)])}async function be(i,a,s){if(i.network==="testnet"&&t("Meridian perps extended reads require mainnet."),Object.keys(a).some(r=>!["resource","params"].includes(r))&&t("Use resource and params for Meridian perps reads."),a.resource===void 0&&a.params===void 0)return{chainId:f,resources:B,scope:"Fixed official public read routes and their exact query/path parameter schemas."};(typeof a.resource!="string"||!Object.hasOwn(B,a.resource))&&t("Choose a Meridian perps resource from the tool schema.");let b=B[a.resource],l=a.params===void 0?{}:{...g(a.params)};a.resource==="subaccount"&&l.sender===void 0&&(l.sender=s),Object.keys(l).some(r=>!b.parameters.some(e=>e.name===r))&&t("Unsupported Meridian perps query parameter.");let h=new URLSearchParams,o=b.path;for(let r of b.parameters){let e=l[r.name];if(e===void 0){r.required&&t(`Meridian perps ${a.resource} needs ${r.name}.`);continue}r.name==="limit"&&(typeof e!="number"||e<1||e>100)&&t("Choose a page limit from 1 to 100.");let n=ce(e,r.schema);if(r.in==="path")r.name==="id"&&w(e),r.name==="address"&&S(e),o=o.replace(`{${r.name}}`,encodeURIComponent(n[0]));else for(let p of n)h.append(r.name,p)}let u=await A(i,`${o}${h.size?`?${h}`:""}`,void 0,b.host);if(u&&typeof u=="object"&&"hasNext"in u){let r=g(u);(typeof r.hasNext!="boolean"||!Array.isArray(r.data)||r.hasNext&&(typeof r.nextCursor!="string"||!r.nextCursor))&&t("Meridian perps returned invalid pagination metadata.")}return{chainId:f,resource:a.resource,data:u,scope:"One API response. Follow hasNext/nextCursor using the same filters; an accepted action or API balance is not proof of final on-chain delivery."}}async function D(i,a){let s=[],b=new Set,l;for(let h=0;h<100;h++){let o=g(await A(i,`${a}${a.includes("?")?"&":"?"}limit=100${l?`&cursor=${encodeURIComponent(l)}`:""}`));if((!Array.isArray(o.data)||typeof o.hasNext!="boolean")&&t("Meridian perps listing is incomplete."),s.push(...o.data.map(g)),!o.hasNext)return s;(typeof o.nextCursor!="string"||!o.nextCursor||b.has(o.nextCursor))&&t("Meridian perps pagination did not advance."),l=o.nextCursor,b.add(l)}return t("Meridian perps listing exceeded the safety bound; retry after indexing stabilizes.")}async function oe(i,a,s,b,l){let h={};if(a!=="referral"&&!(a==="signer"&&s.mode==="extend")&&await W(i,s.subaccountId,b,U(s.subaccount)),a==="order"){let o=(await D(i,"/v1/product?order=asc")).filter(d=>d.onchainId===s.onchainId&&d.engineType===0);o.length!==1&&t("No unique Meridian perps product matches this onchainId.");let u=o[0];u.status!=="ACTIVE"&&t("The Meridian perps product is not active.");let r=BigInt(N(s.quantity,"the D9 quantity")),e=k(u.lotSize),n=k(u.tickSize);(!e||!n||r%e||r>k(u.maxQuantity)||!s.close&&r<k(u.minQuantity))&&t("Meridian perps quantity violates the current product limits or lot size.");for(let d of["price","stopPrice"])if(s[d]!==void 0){let m=BigInt(N(s[d],`the D9 ${d}`));(m%n||m<k(u.minPrice)||m>k(u.maxPrice))&&t("Meridian perps price violates current bounds or tick size.")}let p=g(await A(i,"/v1/order/dry-run",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({data:l})}));p.code!=="Ok"&&t("Meridian perps dry run did not accept this order. Inspect balances, isolated-pool conversions and current risk limits."),h={marginMode:u.marginMode,quoteTokenAddress:u.quoteTokenAddress,currentApiFeeFractions:{maker:u.makerFee,taker:u.takerFee},dryRun:p}}if(a==="withdraw"){let o=await V(i,s.tokenId);(!I(o.address,s.token)||o.withdrawEnabled!==!0)&&t("The chosen Meridian perps token is not enabled for withdrawal.");let u=(await D(i,`/v1/subaccount/balance?subaccountId=${w(s.subaccountId)}`)).find(r=>r.tokenId===s.tokenId);(!u||k(u.available)<BigInt(N(s.amount,"the D9 withdrawal amount")))&&t("Not enough available Meridian perps collateral. Unrealized trading profit is not withdrawable."),h={availableD9:k(u.available).toString(),withdrawFeeD9:k(o.withdrawFee).toString(),tokenSymbol:o.erc20Symbol,tokenNativeDecimals:o.erc20Decimals}}if(a==="convert"){let o=await D(i,"/v1/token?order=asc"),u=o.find(e=>I(e.address,s.fromToken)),r=o.find(e=>I(e.address,s.toToken));(!u||!r||(u.backingTokenId??u.id)!==(r.backingTokenId??r.id))&&t("The Meridian perps quote-token pools do not share a backing token."),h={fromTokenId:u.id,toTokenId:r.id,conversionFeeD9:"0",conversionRate:"1:1 in D9 accounting units"}}if(a==="signer"){let o=S(s.mode==="extend"?b:s.signer),r=(s.mode==="extend"?[g(await A(i,`/v1/linked-signer/address/${o}`))]:await D(i,`/v1/linked-signer?subaccountId=${w(s.subaccountId)}`)).filter(e=>I(e.signer,o));if(r.length!==1&&t("The Meridian linked signer does not match the requested subaccount."),s.mode==="extend"&&(r[0].status!=="ACTIVE"||typeof r[0].expiresAt!="number"||r[0].expiresAt<=Date.now())&&t("Only an active unexpired local Meridian signer can extend itself."),h={currentSignerStatus:r[0].status,expiresAtMilliseconds:r[0].expiresAt},s.mode==="revoke"){let e=g(await A(i,`/v1/order?subaccountId=${w(s.subaccountId)}&statuses=NEW&statuses=PENDING&statuses=FILLED_PARTIAL&limit=1`));(!Array.isArray(e.data)||e.data.length||e.hasNext!==!1)&&t("Cancel every working order and confirm cancellation before revoking a Meridian signer.")}}return h}var de="Oak cannot place Meridian perps orders or initiate withdrawals; use Meridian's supported interface for those. Oak can only finalize a withdrawal that was already initiated there.",Ce=i=>{let a=new Map;async function s(){(i.network==="testnet"||await i.clientFor(f).getChainId()!==f)&&t("Meridian perps requires the mainnet RPC on chain 4663.")}async function b(r,e,n){if(ie(r,e),R(r,e,n,"0",Math.floor(Date.now()/1e3)),e.continuation!==void 0){let v=g(e.continuation),E=typeof v.requestId=="string"?a.get(v.requestId):void 0;(!E||!I(E.round.wallet,n)||!K(E.round,v)||!K(E.args,Object.fromEntries(Object.entries(e).filter(([x])=>!["continuation","signature"].includes(x)))))&&t("Meridian perps continuation is lost, expired or belongs to different arguments. Check history before starting again.");let _=g(v.request);te(`meridian_perps_${r}`,e,n,[{kind:"typedData",request:_}],v,void 0,Math.floor(Date.now()/1e3)),(typeof e.signature!="string"||!/^0x[0-9a-fA-F]{130}$/.test(e.signature))&&t("The local Meridian perps signature is missing."),clearTimeout(E.timer),a.delete(v.requestId),I(await fe({..._,signature:e.signature}),n)||t("The Meridian perps signature does not match this wallet."),await s();let pe=await O(i);K(X(R(r,e,n,String(v.nonce),Number(v.signedAt)),pe),_)||t("Meridian perps signing configuration changed; start again after checking history.");let P=R(r,e,n,String(v.nonce),Number(v.signedAt)),Q=P.path,j={};if(P.method==="GET"){Object.assign(j,{"X-Meridian-Auth":"EIP712Auth","X-Meridian-Sender":n,"X-Meridian-Signature":e.signature,"X-Meridian-Intent":"2","X-Meridian-SignedAt":String(v.signedAt)});let x=new URLSearchParams;e.cursor!==void 0&&((typeof e.cursor!="string"||!e.cursor||e.cursor.length>4096)&&t("Provide the returned Meridian referral cursor."),x.set("cursor",e.cursor)),e.limit!==void 0&&((typeof e.limit!="number"||!Number.isInteger(e.limit)||e.limit<1||e.limit>100)&&t("Choose a referral page limit from 1 to 100."),x.set("limit",String(e.limit))),x.size&&(Q+=`?${x}`)}else j["content-type"]="application/json";return{result:await A(i,Q,{method:P.method,headers:j,...P.method==="GET"?{}:{body:JSON.stringify({data:P.data,signature:e.signature})}}),chainId:f,summary:"Meridian API responded. This is not a fill or final withdrawal receipt. Check order, position and transfer status before a dependent action or retry."}}e.signature!==void 0&&t("A Meridian perps signature requires an active local signing round."),a.size>=1e3&&t("Too many pending Meridian perps signing rounds. Try again shortly."),await s();let p=await O(i),d=g(await A(i,"/v1/time")).time;(typeof d!="number"||!Number.isSafeInteger(d)||Math.abs(d-Date.now())>3e4)&&t("Meridian perps server time differs from the local clock; synchronize the clock before signing.");let m=Math.floor(d/1e3),y=(BigInt(d)*1000000n+BigInt(le(1e6))).toString(),c=R(r,e,n,y,m),q=await oe(i,r,e,n,c.data),T=X(c,p),F=he(),H={stage:"perps_sign",requestId:F,chainId:f,wallet:n,expiresAt:m+90,signedAt:m,nonce:y,request:T,signatureTypes:{[c.primaryType]:p[c.primaryType]},data:c.data,path:c.path,method:c.method,review:q},J=setTimeout(()=>a.delete(F),9e4);return J.unref?.(),a.set(F,{args:structuredClone(e),round:structuredClone(H),timer:J}),{steps:[{kind:"typedData",request:T}],continuation:H,summary:"Review every Meridian perps field and sign locally. Amounts and prices in the typed message use D9 base units (9 decimals). An API acceptance is not an executed trade. No gasless signature simulates future sequencer execution."}}function l(r,e,n,p,d){return{name:r,inputSchema:{type:"object",properties:e,required:n,additionalProperties:!1,description:p},execute:async(m,y)=>{try{return g(m),S(y),(Object.keys(m).some(c=>!Object.hasOwn(e,c))||n.some(c=>m[c]===void 0))&&t("Provide the required Meridian perps tool inputs only."),await d(m,y)}catch(c){throw new Y(i.plainError(c))}}}}let h={...ue,continuation:{type:"object",description:"Internal continuation returned by the previous local signing round."},signature:{type:"string",description:"Internal hexadecimal signature supplied by local signing; never enter manually."},type:{type:"string",enum:["LIMIT","MARKET"],description:"LIMIT places a limit order; MARKET places a market order."},side:{type:"integer",enum:[0,1],description:"Order side: 0 is buy/long, 1 is sell/short."},onchainId:{type:"integer",minimum:1,maximum:4294967295,description:"Product on-chain identifier as a positive integer."},quantity:M('Product base-asset quantity in D9 base units (9 decimals): "1000000000" = 1 base asset; "0" only for a full close.'),price:M('Limit price in quote-token D9 base units per base asset (9 decimals): "1000000000" = 1 quote token per base asset.'),stopPrice:M('Trigger price in quote-token D9 base units per base asset (9 decimals): "1000000000" = 1 quote token per base asset.'),amount:M('Withdrawal token or conversion input token amount in D9 base units (9 decimals): "1000000000" = 1 token.'),timeInForce:{type:"string",enum:["GTD","IOC","FOK"],description:"GTD is good till date; IOC is immediate or cancel; FOK is fill or kill."},postOnly:{type:"boolean",description:"Place only as a maker order; requires GTD."},reduceOnly:{type:"boolean",description:"Only reduce an existing position."},close:{type:"boolean",description:'Close the full position; requires MARKET, reduceOnly and quantity "0".'},clientOrderId:{type:"string",description:"Client order identifier: up to 32 alphanumeric characters or a UUID."},stopType:{type:"integer",enum:[0,1],description:"Product trigger type code, 0 or 1."},expiresAt:M("Order expiry in Unix seconds, as a decimal string."),groupId:{...$,description:"Order group identifier as a UUID."},groupContingencyType:{type:"integer",enum:[0,1],description:"Order group contingency code, 0 or 1."},all:{type:"boolean",description:"Cancel all orders in the subaccount."},orderIds:{type:"array",items:$,maxItems:200,description:"UUID identifiers of orders to cancel."},clientOrderIds:{type:"array",items:{type:"string"},maxItems:200,description:"Client order identifiers to cancel."},token:{...C,description:"Withdrawal token contract address."},tokenId:{...$,description:"Token identifier as a UUID."},fromToken:{...C,description:"Conversion input token contract address."},toToken:{...C,description:"Conversion output token contract address."},mode:{type:"string",description:"Signer: revoke removes, refresh renews, extend adds duration. Referral: activate enables, claim uses a code, summary shows totals, history lists entries."},signer:{...C,description:"Linked signer address to revoke or refresh."},code:{type:"string",description:"Referral claim code: 12 uppercase alphanumeric characters."},cursor:{type:"string",description:"Opaque next cursor for referral history."},limit:{type:"integer",minimum:1,maximum:100,description:"Maximum referral history entries, from 1 to 100."}},o={order:["subaccountId","type","side","onchainId","quantity"],cancel:["subaccountId"],withdraw:["subaccountId","token","tokenId","amount"],convert:["subaccountId","fromToken","toToken","amount"],signer:["mode"],referral:["mode"]},u=ee.map(r=>l(`meridian_perps_${r}`,Object.fromEntries([...re[r],"subaccount","subaccountId","continuation","signature"].map(e=>[e,h[e]])),o[r],`Prepare and locally sign a Meridian perps ${r}. Internal continuation only; never supply a signature manually. Requires the perps bridge integration.`,(e,n)=>b(r,e,n)));return u.unshift(l("meridian_perps_read",{resource:{type:"string",enum:Object.keys(B),description:"Official mainnet public GET route. Includes products, accounts, balances, orders, fills, risk, transfers, signers, points and configuration."},params:{type:"object",description:"Exact documented query/path parameters; API decimals are returned verbatim, while Oak action inputs use base-unit strings."}},[],"Omit resource to discover every parameter schema locally. Otherwise read one official Meridian perps API page. Use nextCursor while hasNext is true.",(r,e)=>be(i,r,e))),u.push(ne(i,(r,e,n,p)=>oe(i,r,e,n,p))),u.push(l("meridian_perps_deposit",{subaccount:me,tokenId:{...$,description:"Token identifier as a UUID."},amount:M('Deposit token amount in base units using erc20Decimals from token metadata (USDG has 6 decimals: "1000000" = 1 USDG).'),referralCode:{type:"string",pattern:"^0x[0-9a-fA-F]{64}$",description:"Referral code as a 0x-prefixed 32-byte hex string."}},["tokenId","amount"],`Preview an exact ERC-20 approval and exchange deposit. First deposit registers the subaccount. ${de}`,async(r,e)=>{await s(),await O(i);let n=await V(i,r.tokenId),p=S(n.address);(n.depositEnabled!==!0||typeof n.erc20Decimals!="number"||!Number.isInteger(n.erc20Decimals)||n.erc20Decimals<0||n.erc20Decimals>36||typeof n.erc20Symbol!="string")&&t("The Meridian perps token is not enabled for ERC-20 deposits.");let d=N(r.amount,"the deposit amount",!0);Z(d,n.erc20Decimals)<k(n.minDeposit)&&t(`Meridian perps deposit is below the current minimum ${n.minDeposit} ${n.erc20Symbol}.`);let m=i.clientFor(f),[y,c]=await Promise.all([m.readContract({address:p,abi:se,functionName:"balanceOf",args:[e]}),m.readContract({address:p,abi:se,functionName:"decimals"})]);(c!==n.erc20Decimals||y<BigInt(d))&&t("Meridian perps deposit token decimals or wallet balance do not match the requested deposit.");let q=[i.approval(p,z,d,f),i.unsignedTx({to:z,chainId:f,value:"0",data:ae({abi:L,functionName:"deposit",args:[U(r.subaccount),p,BigInt(d),r.referralCode===void 0?ge:G(r.referralCode)]}),description:`Deposit ${d} ${n.erc20Symbol} base units (${c} decimals) into Meridian perps.`})],T=await i.preview(q,e);return{txs:q,preview:T,token:{address:p,decimals:c,symbol:n.erc20Symbol,chainId:f},depositFee:n.depositFee,summary:`${T.summary} Approve exactly ${d} token base units and deposit. Sequencer registration and available margin must be checked separately. ${de}`}})),u.push(l("meridian_perps_finalize",{...ue,withdrawDigest:{type:"string",pattern:"^0x[0-9a-fA-F]{64}$",description:"Withdrawal digest as a 0x-prefixed 32-byte hex string."}},["subaccountId","withdrawDigest"],"Preview same-chain withdrawal finalization for this owner after on-chain initiation. API acceptance alone does not permit finalization.",async(r,e)=>{await s(),await O(i);let n=await W(i,r.subaccountId,e,U(r.subaccount)),p=G(r.withdrawDigest),d=(await D(i,`/v1/token/withdraw?subaccountId=${w(n.id)}&order=desc`)).filter(q=>I(q.withdrawDigest,p));d.length!==1&&t("The withdrawal digest is not uniquely present in this subaccount history. Reconcile the request before retrying.");let m=d[0];(!I(m.subaccount,n.name)||m.finalizedBlockNumber!==void 0||typeof m.initiatedBlockNumber!="string"||m.lzDestinationEid!==0||!I(m.lzDestinationAddress,qe(e)))&&t("The withdrawal is not an initiated, unfinalized same-chain withdrawal to this wallet.");let y=[i.unsignedTx({to:z,chainId:f,value:"0",data:ae({abi:L,functionName:"finalizeWithdraw",args:[e,p]}),description:"Finalize the pending Meridian perps withdrawal to this wallet."})],c=await i.preview(y,e);return c.changes.some(q=>I(q.token.address,m.token)&&q.token.chainId===f&&BigInt(q.amount)>0n)||t("Meridian perps finalization preview did not show the token payout to this wallet."),{txs:y,preview:c,summary:`${c.summary} Finalize the same-chain withdrawal. Check the mined receipt and wallet balance; do not submit a digest twice.`}})),{tools:u,positions:async r=>{i.network==="testnet"&&t("Meridian perps positions require mainnet."),S(r);let e=await D(i,`/v1/subaccount?sender=${r}&order=asc`),n=[],p=new Set;for(let d of e){I(d.account,r)||t("Meridian perps returned another owner in the subaccount listing.");let m=w(d.id);for(let y of await D(i,`/v1/position?subaccountId=${m}&open=true`)){let c=k(y.size);if(c===0n)continue;let q=`perps:${m}:${w(y.id)}`,T=w(y.productId);(p.has(q)||y.side!==0&&y.side!==1)&&t("Meridian perps returned a repeated or invalid position."),p.add(q),n.push({module:"meridian",id:q,chainId:f,assets:[],economics:{principal:[],debt:[],rewards:[],backing:[],coverage:{complete:!1,reason:"Oak reads open size only; no margin, PnL or funding read."}},description:`Meridian perps ${y.side===0?"long":"short"} product ${T}: ${c} D9 quantity base units (9 decimals), subaccount ${m}. Derivatives exposure; inspect perps account balances, funding and position fees separately.`})}}return n}}};export{be as a,de as b,Ce as c};
@@ -0,0 +1 @@
1
+ import{d as ee}from"./JKRBGAX2.js";import{e as ie}from"./DPE7SPW7.js";import{a as ne,h as se,k as re}from"./UUID2E22.js";import{a as ae,b as D,c as F}from"./FOKEFXGP.js";import{e as te}from"./UQEEF5W5.js";import{b as Z}from"./SPJCSEKP.js";import{a as $}from"./43LI5NKJ.js";import{c as B}from"./SCG5HWMN.js";import{b as X}from"./66F5ZH34.js";import{c as A,d as z,e as b,g as N,j as J,m as Q,n as K}from"./NWNYJ26T.js";import{a as l,i as O}from"./FWD4L3CJ.js";import{a as u}from"./XSD5NL7J.js";import{a as g}from"./JXOEJPJ4.js";import{encodeFunctionData as oe,erc20Abi as M,parseAbi as ce}from"viem";var I="https://api.beefy.finance/vaults",de="https://api.beefy.finance/fees",le="https://api.beefy.finance/apy/breakdown",pe="https://api.beefy.finance/tvl",me="https://databarn.beefy.finance/api/v1/price",V=O[l].vaults.beefyTestedLpVault,q=ce(["function want() view returns (address)","function balance() view returns (uint256)","function getPricePerFullShare() view returns (uint256)","function strategy() view returns (address)","function paused() view returns (bool)","function deposit(uint256 amount)","function withdraw(uint256 shares)"]),E=X("Positive integer string in base units. Send quoted digits, never a JSON number.");function v(a){return J(a,"Provide a valid contract or wallet address.",z)}function T(a){return Q(a,"The contract returned an invalid integer.")}function R(a){return K(a,"Amount must be positive and fit in uint256.",{notString:"Amount must be a positive integer string in base units.",positive:!0})}function ue(a){if(typeof a!="number"||!Number.isInteger(a)||a<0||a>255)throw new u("Invalid token decimals.");return a}function U(a){return N(a,V.address)}function P(a){return ne.some(f=>N(f.vault,a))}function L(a,f=!0){return P(a)&&f?"Use beefy_withdraw to exchange vault shares for CLM shares, redeem them into pair tokens with beefy_clm_withdraw, then convert the tokens to USDG with beefy_clm_swap.":"Use beefy_withdraw to exchange vault shares for the want token. Redeem that want into its pair tokens through a qualified Oak route or the Beefy app, then swap the received tokens to USDG."}function fe(a){return!b(a)||!b(a.performance)?!1:[a.deposit,a.withdraw,a.performance.total].every(f=>typeof f=="number"&&Number.isFinite(f)&&f>=0&&f<=1)&&typeof a.lastUpdated=="number"&&Number.isSafeInteger(a.lastUpdated)&&a.lastUpdated>=0}var he=a=>{async function f(s){try{return await s()}catch(i){throw new u(a.plainError(i))}}function S(s,i){if(s.chainId!==void 0&&s.chainId!==l)throw new u("Beefy requires chain 4663.");for(let d of Object.keys(s))if(!["chainId",...i].includes(d))throw new u(`Unsupported Beefy input: ${d}.`)}async function C(){let s=await B(a.http,I,{headers:{"User-Agent":"Oak-Beefy/1.0"}},e=>Array.isArray(e)&&e.every(n=>b(n)&&typeof n.chain=="string")),i=new Set,d=new Set;return s.filter(e=>e.chain==="robinhood").map(e=>{if(typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name||e.type!=="standard"||!["active","paused","eol"].includes(String(e.status)))throw new u("The Beefy API returned an unexpected vault record.");let n=v(e.earnContractAddress);if(i.has(e.id)||d.has(n))throw new u("The Beefy API returned duplicate vault records.");return i.add(e.id),d.add(n),{id:e.id,name:e.name,type:"standard",chain:"robinhood",status:e.status,tokenAddress:v(e.tokenAddress),tokenDecimals:ue(e.tokenDecimals),earnContractAddress:n,assets:Array.isArray(e.assets)&&e.assets.every(o=>typeof o=="string")?e.assets:[],strategyType:typeof e.strategyTypeId=="string"?e.strategyTypeId:null,risks:b(e.risks)?Object.fromEntries(Object.entries(e.risks).filter(o=>typeof o[1]=="boolean")):{},lastHarvest:typeof e.lastHarvest=="number"&&Number.isSafeInteger(e.lastHarvest)&&e.lastHarvest>=0?e.lastHarvest:null}})}async function H(){return B(a.http,de,{headers:{"User-Agent":"Oak-Beefy/1.0"}},b)}function j(s,i){let d=s[i.id];if(!fe(d))throw new u(`Beefy fees are unavailable for ${i.id}.`);return d}async function k(){let s=a.clientFor(l);if(await s.getChainId()!==l)throw new u("The Beefy endpoint must report chain 4663.");let i=T(await s.getBlockNumber()),d=(t,r)=>s.readContract({address:t,abi:q,functionName:r,blockNumber:i}),e=async(t,r)=>T(await s.readContract({address:t,abi:M,functionName:"balanceOf",args:[r],blockNumber:i}));async function n(t){let[r,p]=await Promise.all([s.readContract({address:t,abi:M,functionName:"symbol",blockNumber:i}),s.readContract({address:t,abi:M,functionName:"decimals",blockNumber:i})]);if(typeof r!="string"||!r.trim())throw new u("The contract returned invalid token metadata.");return{address:t,chainId:l,symbol:r,decimals:ue(p)}}async function o(t){let r=t.earnContractAddress,p=v(await d(r,"want"));if(p!==t.tokenAddress)throw new u(`Beefy API token and want() disagree for ${t.id}.`);let[h,y,m,c,w]=await Promise.all([n(p),n(r),d(r,"strategy"),d(r,"balance"),d(r,"getPricePerFullShare")]);if(h.decimals!==t.tokenDecimals)throw new u(`Beefy API and want decimals disagree for ${t.id}.`);let _=v(m),x=await d(_,"paused");if(typeof x!="boolean")throw new u("The strategy returned an invalid pause flag.");let G=T(w);if(G===0n)throw new u("The Beefy share price is zero.");return{want:h,shares:y,strategy:_,paused:x,managed:T(c),pricePerFullShare:G}}return{blockNumber:i,balanceOf:e,vaultState:o}}async function Y(s){let i=v(s.vault),d=D(i),n=(await C()).find(o=>o.earnContractAddress===i);if(!n)throw new u("The selected vault is missing from the current Beefy inventory.");if(n.id!==d.id||n.tokenAddress!==d.tokenAddress.toLowerCase()||n.tokenDecimals!==d.tokenDecimals||n.type!==d.type)throw new u("The Beefy API and pinned vault type or want disagree.");return n}async function W(s,i,d,e){let n=j(await H(),e),o=await a.preview(s,i),t=o.changes.map(r=>{let p=r.amount.startsWith("-"),h=p?r.amount.slice(1):r.amount;return`${p?"-":"+"}${a.formatAmount(h,r.token.decimals)} ${g(r.token.symbol)} (${r.token.address}, chain ${r.token.chainId})`}).join("; ");return{txs:s,preview:o,summary:`${d} ${g(e.name)}. ${t}. ${o.summary} Beefy API fees: deposit ${n.deposit*100}%, withdrawal ${n.withdraw*100}%, performance ${n.performance.total*100}% (updated ${n.lastUpdated} ms). These calls have no on-chain minimum output parameter; preview is an estimate, not a guaranteed amount. LP acquisition and conversion to USDG are separate.`}}return{tools:[{name:"beefy_list",inputSchema:{type:"object",properties:{chainId:{const:l,description:"Chain id; only 4663 (Robinhood Chain mainnet) is supported. Optional."}},additionalProperties:!1},execute:(s,i)=>f(async()=>{S(s,[]);let[d,e,n]=await Promise.all([C(),H(),k()]),o=[];for(let t of d){let r=await n.vaultState(t),p=!1,h=null;if(P(t.earnContractAddress))try{await se(a).tools[0].execute({vault:t.earnContractAddress},i),p=!0}catch(y){h=a.plainError(y)}o.push({id:t.id,name:t.name,vault:t.earnContractAddress,chainId:l,want:r.want,shares:r.shares,vaultTotalWant:{token:r.want,amount:r.managed.toString()},pricePerFullShare:{token:r.want,amount:r.pricePerFullShare.toString(),scale:"1000000000000000000",source:"getPricePerFullShare()"},apiStatus:{value:t.status,source:I},strategyPaused:{value:r.paused,source:"strategy.paused()",address:r.strategy,block:n.blockNumber.toString()},fees:{...j(e,t),source:de},forkQualified:U(t.earnContractAddress),qualification:U(t.earnContractAddress)?{source:V.source,block:V.block}:null,depositAvailable:D(t.earnContractAddress,!1)!==void 0&&t.status==="active"&&!r.paused&&(!P(t.earnContractAddress)||p),underlyingRoute:p?{kind:"clm",read:"beefy_lp",acquire:"beefy_clm_deposit",redeem:"beefy_clm_withdraw",swap:"beefy_clm_swap"}:null,underlyingRouteError:h,exitPath:L(t.earnContractAddress,p),block:n.blockNumber.toString()})}return{vaults:o,summary:"Direct want/LP vaults, not ERC-4626 or direct USDG. Use beefy_withdraw to return vault shares to want tokens. CLM routes and deposit availability require a successful live qualification read; unavailable routes require the Beefy app for want redemption. Fork qualification, API status and strategy pause are separate observations."}})},{name:"beefy_vault_info",inputSchema:{type:"object",properties:{vault:{...A,description:"Address of the Beefy vault contract (from beefy_list)."},chainId:{const:l,description:"Chain id; only 4663 (Robinhood Chain mainnet) is supported. Optional."},historyBucket:{enum:["1h_1d","1h_1w","1h_1M","1d_1M","1d_1Y","1d_all"],description:"Price-history window as candle size_range: 1h_1d = hourly over 1 day, 1h_1w = 1 week, 1h_1M = 1 month, 1d_1M = daily over 1 month (default), 1d_1Y = 1 year, 1d_all = all time."}},required:["vault"],additionalProperties:!1},execute:s=>f(async()=>{S(s,["vault","historyBucket"]);let i=s.historyBucket??"1d_1M";if(!["1h_1d","1h_1w","1h_1M","1d_1M","1d_1Y","1d_all"].includes(String(i)))throw new u("Provide a supported Beefy historyBucket.");let d=v(s.vault),e=(await C()).find(m=>m.earnContractAddress===d);if(!e)throw new u("The selected vault is missing from the current Beefy inventory.");let n=new URL(me);n.searchParams.set("product_key",`beefy:vault:robinhood:${d}`),n.searchParams.set("price_type","share_to_underlying"),n.searchParams.set("time_bucket",String(i));async function o(m,c){try{let w=await B(a.http,m,{headers:{"User-Agent":"Oak-Beefy/1.0"}},_=>_!==void 0);return{status:"available",source:m,value:c(w)}}catch(w){return{status:"unavailable",source:m,error:a.plainError(w)}}}let[t,r,p,h]=await Promise.all([o(le,m=>{if(!b(m))throw new u("Beefy APY is unavailable for this vault.");let c=m[e.id];if(!b(c))throw new u("Beefy APY is unavailable for this vault.");if(!Object.hasOwn(c,"totalApy")||Object.values(c).some(w=>typeof w!="number"||!Number.isFinite(w)||w<0))throw new u("Beefy returned invalid APY data.");return c}),o(pe,m=>{let c=b(m)?m[e.id]:void 0;if(typeof c!="number"||!Number.isFinite(c)||c<0)throw new u("Beefy TVL is unavailable for this vault.");return c}),o(n.toString(),m=>{if(!Array.isArray(m)||m.some(c=>!Array.isArray(c)||c.length<2||typeof c[0]!="string"||!Number.isFinite(Date.parse(c[0]))||typeof c[1]!="string"||!/^\d+(\.\d+)?$/.test(c[1])))throw new u("Beefy returned invalid share-price history.");return m.map(c=>({timestamp:c[0],shareToUnderlying:c[1]}))}),k()]),y=await h.vaultState(e);return{id:e.id,name:e.name,vault:e.earnContractAddress,chainId:l,want:y.want,strategy:{address:y.strategy,type:e.strategyType,assets:e.assets,paused:y.paused,lastHarvest:e.lastHarvest,source:I},risk:{status:Object.keys(e.risks).length?"available":"unavailable",flags:e.risks,source:I,guide:"https://docs.beefy.finance/safety/risk-checklist",summary:"API risk flags are assessments, not guarantees. Uncorrelated LP assets can suffer impermanent loss; vaults also expose strategy, token and contract risks."},apy:t,tvl:{...r,currency:"USD"},history:p,forkQualified:U(e.earnContractAddress),block:h.blockNumber.toString(),app:`https://app.beefy.finance/vault/${encodeURIComponent(e.id)}`,summary:"APY is a fractional annual estimate, not a promised return. Share-price history is not a wallet profit calculation. Missing analytics remain unavailable."}})},{name:"beefy_deposit",inputSchema:{type:"object",description:"Deposit the listed want/LP token to receive vault shares. Exit with beefy_withdraw to receive want tokens; convert them separately using a qualified route or the Beefy app. Check positions after confirmation.",properties:{vault:{...A,description:"Address of the Beefy vault contract (from beefy_list)."},token:{...A,description:"Address of the vault's want (LP or CLM share) token being deposited; must equal the vault's want token."},amount:E,minSharesOut:E,slippageBps:{type:"integer",minimum:0,maximum:9999,description:"Maximum slippage in basis points (50 = 0.5%) used to set the minimum shares if minSharesOut is omitted. Default 50."},chainId:{const:l,description:"Chain id; only 4663 (Robinhood Chain mainnet) is supported. Optional."}},required:["vault","token","amount"],additionalProperties:!1},execute:(s,i)=>f(async()=>{if(S(s,["vault","token","amount","minSharesOut","slippageBps"]),$(i),s.slippageBps!==void 0&&(!Number.isInteger(s.slippageBps)||Number(s.slippageBps)<0||Number(s.slippageBps)>9999))throw new u("slippageBps must be an integer from 0 to 9999.");s.minSharesOut!==void 0&&R(s.minSharesOut);let d=R(s.amount),e=v(s.token),n=await Y(s),o=await k();await F(a.clientFor(l),n.earnContractAddress,o.blockNumber);let t=await o.vaultState(n);if(n.status!=="active")throw new u(`The Beefy API marks this vault ${n.status}; deposits are unavailable. ${L(n.earnContractAddress)}`);if(t.paused)throw new u(`The Beefy strategy is paused; deposits are unavailable. ${L(n.earnContractAddress)}`);if(e!==t.want.address)throw new u(`This vault needs ${g(t.want.symbol)} (${t.want.address}, chain 4663), not the supplied token. ${P(n.earnContractAddress)?"Read beefy_lp, acquire the pair tokens with beefy_clm_swap and mint the want with beefy_clm_deposit first.":"No USDG zap is provided."}`);if(await o.balanceOf(t.want.address,i)<d)throw new u(`Insufficient ${g(t.want.symbol)} want balance.`);let r=[a.approval(t.want.address,n.earnContractAddress,d.toString(),l),a.unsignedTx({to:n.earnContractAddress,data:oe({abi:q,functionName:"deposit",args:[d]}),value:"0",chainId:l,description:`Deposit ${d} want base units into ${n.name}.`})],p=await W(r,i,"Deposit into",n),h=d*10n**18n/t.pricePerFullShare,y=s.minSharesOut===void 0?h*BigInt(1e4-Number(s.slippageBps??50))/10000n:R(s.minSharesOut);if(y<=0n||y>h)throw new u("Minimum shares must be positive and no greater than the current forecast.");let m={token:{address:O[l].tokens.WETH.address,symbol:"WETH",decimals:18,chainId:l},from:t.strategy,recipient:i,optional:!0,includedInMinimumShares:!1},c=`Share forecast ${h}; minimum ${y} share base units (local pre-sign simulation check only; deposit(uint256) has no on-chain minimum). Optional WETH harvest rewards from strategy ${t.strategy} may vary or be zero and are not part of that floor.`;return{...p,harvestReward:m,minimumShares:y.toString(),summary:`${p.summary} ${c}`,preview:{...p.preview,summary:`${p.preview.summary} ${c}`}}})},{name:"beefy_withdraw",inputSchema:{type:"object",description:"Withdraw shares in base units, or shares all for a full exit. Returns want/LP tokens; redemption to pair tokens and conversion to USDG are separate steps.",properties:{vault:{...A,description:"Address of the Beefy vault contract (from beefy_list)."},shares:{description:'Vault shares (moo tokens) to redeem for want, in base units of the share token (read its decimals). "all" redeems your full share balance.',anyOf:[E,{const:"all"}]},chainId:{const:l,description:"Chain id; only 4663 (Robinhood Chain mainnet) is supported. Optional."}},required:["vault","shares"],additionalProperties:!1},execute:(s,i)=>f(async()=>{S(s,["vault","shares"]),$(i);let d=s.shares==="all"?void 0:R(s.shares),e=await Y(s),n=await k();await F(a.clientFor(l),e.earnContractAddress,n.blockNumber),await n.vaultState(e);let o=await n.balanceOf(e.earnContractAddress,i),t=d??o;if(t===0n||t>o)throw new u("Provide a positive share amount no greater than your current Beefy share balance.");let r=[a.unsignedTx({to:e.earnContractAddress,data:oe({abi:q,functionName:"withdraw",args:[t]}),value:"0",chainId:l,description:`Withdraw ${t} share base units from ${e.name} to the calling wallet.`})];return W(r,i,"Withdraw from",e)})}],positions:s=>f(async()=>{$(s);let i,[d,e]=await Promise.all([C().catch(o=>(i=a.plainError(o),ae.map(t=>({...t,type:"standard",chain:"robinhood",status:t.status,tokenAddress:v(t.tokenAddress),earnContractAddress:v(t.earnContractAddress),assets:[],strategyType:null,risks:{},lastHarvest:null})))),k()]),n=[];for(let o of d){let t;try{if(t=await e.balanceOf(o.earnContractAddress,s),t===0n)continue;let r=await e.vaultState(o);n.push({module:"beefy",id:o.earnContractAddress,chainId:l,assets:[{token:r.want,amount:(t*r.pricePerFullShare/10n**18n).toString()}],description:`${g(o.name)}: ${a.formatAmount(t.toString(),r.shares.decimals)} ${g(r.shares.symbol)} shares (${o.earnContractAddress}); want estimate before withdrawal fees at block ${e.blockNumber}. ${i?"API unavailable; inventory from pinned vault table, current API status unknown":`API ${o.status}`}; strategy paused ${r.paused}. ${U(o.earnContractAddress)?"Recorded fork-qualified vault.":P(o.earnContractAddress)?"Direct want/share writes supported; CLM acquisition and redemption have separate qualification.":"Direct want/share writes supported after code/type checks; no recorded fork round trip yet."}`})}catch(r){n.push({module:"beefy",id:`${o.earnContractAddress}:unreadable`,chainId:l,incomplete:!0,assets:[],description:`${g(o.name)} position unreadable: ${a.plainError(r)}${t===void 0?" Share balance is unknown.":` Observed ${t} share base units; want valuation is unavailable.`} No zero holding was inferred.`})}}return i&&n.push({module:"beefy",id:"pinned-inventory-coverage",chainId:l,incomplete:!0,assets:[],description:`Beefy API unavailable: ${i} Checked on-chain balances for ${d.length} pinned vaults only; newer or unpinned vaults may be missing.`}),n})}};function Te(a){return Z("beefy",[he(a),ie(a),re(a),ee(a),te(a)])}export{he as a,Te as b};
@@ -0,0 +1 @@
1
+ function e(n){if(!(typeof n!="string"||!n.startsWith('untrusted "')||!n.endsWith('"')))try{let t=JSON.parse(n.slice(10));return typeof t=="string"?t:void 0}catch{return}}export{e as a};
@@ -0,0 +1 @@
1
+ import{m as v,n as F}from"./VYYSL557.js";import{b as A,i as U,n as X,o as V,q as j}from"./WU7XIAXB.js";import{a as $}from"./6WD4HHID.js";import{b as z,e as C,o as Y}from"./DNNFKDZR.js";import{a as w,b as S}from"./H5DY7CNB.js";import{a as k}from"./LIUXNOLP.js";import{a as P}from"./UEDGYZOC.js";import{a as B}from"./SPJCSEKP.js";import{b as q}from"./SCG5HWMN.js";import{b as T}from"./IX3GZMTM.js";import{p as y}from"./6NUNCD5J.js";import{a as m,b as f,c as H,d as N,i as g,j as W,k as R,p as K}from"./FWD4L3CJ.js";import{a as o}from"./XSD5NL7J.js";import{a as D,b as L}from"./JXOEJPJ4.js";import{getAddress as b,isAddress as Q,parseAbi as oe}from"viem";var J=[{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"}];var M=300,de="1000000000000000000",te=b(g[m].tokens.USDG.address),ne=b(g[f].deployments.test_USDG.address),O=b(g[m].tokens.WETH.address),_=b(g[f].deployments.test_WETH.address);function re(n){let e=n.address.toLowerCase();return n.chainId===m?e===te.toLowerCase():n.chainId===f?e===ne.toLowerCase():!1}function ie(n){return n.chainId!==m&&n.chainId!==f?!1:S(n.address)===w}function ae(n){let e=n.address.toLowerCase();return n.chainId===m?e===O.toLowerCase():n.chainId===f?e===_.toLowerCase():!1}function ce(n){return ie(n)||ae(n)}var ue=-887272,me=887272,fe=(1n<<256n)-1n,le=oe(["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)"]);function I(n,e){if(typeof n=="bigint")return n;if(typeof n=="number"){if(!Number.isSafeInteger(n))throw new o(`Invalid ${e} timestamp.`);return BigInt(n)}if(typeof n=="string"&&/^-?\d+$/.test(n.trim()))return BigInt(n.trim());throw new o(`Invalid ${e} timestamp.`)}function _e(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){try{return l(n,e,t),!0}catch{return!1}}function l(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){if(!Number.isInteger(t)||t<0)throw new o("Maximum price age must be a non-negative integer.");let s=I(n,"price"),a=I(e,"current");if(s<=0n)throw new o("Price timestamp must be positive.");if(s>a)throw new o("Price timestamp is in the future.");let i=a-s;if(i>BigInt(t))throw new o(`Price is stale: age ${i}s exceeds ${t}s.`);return s.toString()}function be(n){if(!Number.isInteger(n)||n<ue||n>me)throw new o(`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=fe/t),(t>>32n)+(t%(1n<<32n)===0n?0n:1n)}async function Z(n,e,t,s){let a=async()=>{throw new o("Price identity resolution is read-only.")},i=B({network:e===f?"testnet":"mainnet",clientFor:r=>t.client??y(t.rpcUrl,r),http:t.http??q(),preview:a,quoteSwap:a,buildSwap:a}),c=await Y(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??y(t.rpcUrl,e),[u,p]=await Promise.all([P(d,e,r,"symbol",t.blockNumber),P(d,e,r,"decimals",t.blockNumber)]);return{address:r,symbol:u,decimals:p,chainId:e}}});return{address:c.address,symbol:c.kind==="erc20"&&s?s.symbol:c.symbol,decimals:c.decimals,chainId:c.chainId}}async function pe(n,e,t){if(typeof n=="object"&&n!==null){let r=n.chainId??e,d=S(n.address)===w?w:b(n.address),u={address:d,symbol:n.symbol,decimals:n.decimals,chainId:r};return re(u)?{address:d,symbol:"USDG",decimals:N,chainId:r}:ie(u)?{address:w,symbol:"ETH",decimals:18,chainId:r}:ae(u)?{address:d,symbol:"WETH",decimals:18,chainId:r}:Z(u.address,r,t,u)}let s=n.trim(),a=s.toUpperCase(),i=s.toLowerCase();if(a==="ETH"||Q(s,{strict:!1})&&S(s)===w)return{...z,chainId:e};if(a==="WETH"||e===m&&i===O.toLowerCase()||e===f&&i===_.toLowerCase()){if(e!==m&&e!==f)throw new o(`No canonical WETH address configured for chain ${e}.`);return{address:e===f?_:O,symbol:"WETH",decimals:18,chainId:e}}if(a==="USDG"||e===m&&i===W.toLowerCase()||e===f&&i===R.toLowerCase()){if(e!==m&&e!==f)throw new o(`No canonical USDG address configured for chain ${e}.`);return{address:e===f?ne:te,symbol:"USDG",decimals:N,chainId:e}}if(e===m&&(a==="USDE"||i===C.address.toLowerCase()))return{...C,chainId:e};let c=t.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS;if(a==="OAK"||c&&s.toLowerCase()===c.toLowerCase()){if(!c&&!Q(s,{strict:!1}))throw new o("OAK token address is required to price OAK.");return{address:b(c??s),symbol:"OAK",decimals:H,chainId:e}}return Z(n,e,t)}async function h(n,e,t){if(e)return(await n.readContract({address:e,abi:J,functionName:"ethUsdE18",blockNumber:t})).toString();let a=(await n.readContract({address:b(K),abi:le,functionName:"observe",args:[[A,0]],blockNumber:t}))[0];if(!a||a.length<2)throw new o("ETH/USDG pool observation returned insufficient tick cumulatives.");let i=X(a[0],a[1],A),c=be(i);return V(c)}async function x(n,e,t,s){if(n.timestamp!==void 0)return l(n.timestamp,t(),s);if(e&&typeof e.getBlock=="function"){let i=await k(e,n.blockNumber);return l(i.timestamp,t(),s)}let a=t();return l(a,a,s)}function ee(n){if(n.startsWith("untrusted "))try{let e=JSON.parse(n.slice(10));if(typeof e=="string"&&D(e)===n)return n}catch{}return D(n)}async function Ie(n,e={}){let t=e.chainId??m,s=e.maxAgeSeconds??M,a=()=>e.now!==void 0?I(e.now,"current"):BigInt(Math.floor(Date.now()/1e3)),i=await pe(n,t,e);if((L(i.symbol)||i.symbol.length>256)&&(i.symbol=ee(i.symbol)),e.signedNote||e.priceNote){let r=e.signedNote?e.signedNote.note:e.priceNote,d=l(r.timestamp,a(),s);if(e.spotOakPerEthE18!==void 0&&!v(r.oakPerEthE18,e.spotOakPerEthE18))throw new o("Price note is outside the 50% spot guard band.");let u=e.signedNote?.signature??e.signature,p=e.signedNote?.consumer??e.consumer;if(u&&p){let G=await F({note:r,signature:u,consumer:p,signer:e.signer,now:a(),spotOakPerEthE18:e.spotOakPerEthE18,chainId:t});if(!G.valid)throw new o(G.error??"Price note verification failed.")}let E=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await h(e.client??y(e.rpcUrl,t),e.oracleAddress);return{token:i,usdE18:U(E,r.oakPerEthE18),timestamp:d}}if(e.trades){let r=await x(e,e.client,a,s),d=j(e.trades,{now:a(),windowStart:e.windowStart,windowEnd:e.windowEnd});if(e.spotOakPerEthE18!==void 0&&!v(d,e.spotOakPerEthE18))throw new o("30-minute average is outside the 50% spot guard band.");let u=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await h(e.client??y(e.rpcUrl,t),e.oracleAddress);return{token:i,usdE18:U(u,d),timestamp:r}}if(e.usdE18!==void 0){let r=await x(e,e.client,a,s),d=T(e.usdE18.toString());if(d<=0n)throw new o("USD price must be positive.");return{token:i,usdE18:d.toString(),timestamp:r}}if(e.resolver){let r=await e.resolver(i),d=l(r.timestamp,a(),s),u=T(r.usdE18);if(u<=0n)throw new o("USD price must be positive.");return{token:i,usdE18:u.toString(),timestamp:d}}let c=e.client??y(e.rpcUrl,t);if(re(i)){let r=await x(e,c,a,s);return{token:i,usdE18:de,timestamp:r}}if(ce(i)){let r=await x(e,c,a,s),d=await h(c,e.oracleAddress,e.blockNumber);return{token:i,usdE18:d,timestamp:r}}if(i.chainId===m)try{let r=await k(c,e.blockNumber),d=l(r.timestamp,a(),s);if(r.number===null)throw new o("Pons reference requires a mined block.");let[u,p]=await Promise.all([$(i,c,r.number),h(c,e.oracleAddress,r.number)]),E=T(p)*u.numerator/u.denominator;if(E<=0n)throw new o("Pons USD reference price must be positive.");return{token:i,usdE18:E.toString(),timestamp:d}}catch{}throw new o(`Oak has no fresh on-chain trade price for ${ee(i.symbol)}, so it shows no price. balances and positions show a labeled estimate where one exists; an estimate is not a quote.`)}export{M as a,de as b,re as c,ie as d,ae as e,ce as f,_e as g,l as h,be as i,h as j,Ie as k};
@@ -0,0 +1 @@
1
+ import{i as Y}from"./U2YCQWZK.js";import{b as V,c as W,d as G}from"./DNNFKDZR.js";import{d as de,e as L}from"./CAWTAR5V.js";import{a as B}from"./H5DY7CNB.js";import{a as N}from"./43LI5NKJ.js";import{b as H,c as se,d as ae,e as j}from"./IX3GZMTM.js";import{a as x,i as D}from"./FWD4L3CJ.js";import{a as o}from"./XSD5NL7J.js";import{a as S}from"./JXOEJPJ4.js";import{decodeEventLog as $e,encodeAbiParameters as pe,encodeFunctionData as ye,erc20Abi as Z,getAddress as l,isAddress as E,keccak256 as Ee,parseAbi as _e,parseAbiParameters as we,toEventSelector as ge}from"viem";var A=l(D[4663].hookr.HookrLimitOrders.address),ve=l(D[4663].hookr.HookrRoot.address),Ne=l(D[4663].hookr.HookrRouter.address),It=l(D[4663].hookr.HookrRegistry.address),Be=l(D[4663].hookr.HookrForwarder.address),Fe=l(D[4663].hookr.PoolManager.address),At=l(D[4663].hookr.HOOKR_Token.address),Me=l("0x000000000000000000000000000000000000dEaD"),ze=8388608,qe=200,ce=60n,Xe=604800n,ue=31536000n,ht=10,St=100,xt="500000000000000",Ct="10000000000000000",me=4096n,Q=32n,Ke=1e4,Ue=(1n<<127n)-1n,le=(1n<<128n)-1n,je=(1n<<160n)-1n,Ve=(1n<<40n)-1n,We=16777215,Ge=8388607,fe=1n<<192n,ee=0,M=1,Ye=2,Qe=3,Ze=ge("OrderCreated(uint256,address,bytes32,bool,uint128,uint128,uint128,uint40,address)"),Dt=ge("OrderCancelled(uint256,address,address,uint256,uint256)"),P=_e(["function bountyBounds((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, bool zeroForOne, uint128 amountIn, uint128 minAmountOut) view returns (uint128 minBounty, uint128 defaultBounty, uint128 maxBounty)","function createOrder(((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, bool zeroForOne, uint128 amountIn, uint128 minAmountOut, uint160 sqrtPriceLimitX96, address recipient, uint40 expiry, uint128 bounty) params) payable returns (uint256 orderId)","function cancel(uint256 orderId, address to)","function getOrder(uint256 orderId) view returns (((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, address owner, uint40 createdAt, uint40 expiry, bool zeroForOne, uint8 status, address recipient, uint128 amountIn, uint128 minAmountOut, uint128 bounty, uint160 sqrtPriceLimitX96))","function quoteFill(uint256 orderId) view returns (bool fillable, uint256 amountOut)","function lastOrderId() view returns (uint256)","function liabilities(address currency) view returns (uint256)","function router() view returns (address)","function registry() view returns (address)","function poolManager() view returns (address)","function forwarder() view returns (address)","event OrderCreated(uint256 indexed orderId, address indexed owner, bytes32 indexed poolId, bool zeroForOne, uint128 amountIn, uint128 minAmountOut, uint128 bounty, uint40 expiry, address recipient)","event OrderCancelled(uint256 indexed orderId, address indexed owner, address indexed to, uint256 amountIn, uint256 bounty)"]);function F(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ke(e){let t=e.toLowerCase();return t===L.toLowerCase()||t===B.toLowerCase()||t===de.toLowerCase()}function $(e,t){if(typeof e!="string"||!e.trim())throw new o(`Provide a valid contract address for ${t}. Identify tokens by chain and address, never by symbol.`);let n=e.trim();if(!E(n,{strict:!1}))throw new o(`Invalid token address "${n}" for ${t}. Identify tokens by chain and address, never by symbol.`);return ke(n)?L:l(n)}function be(e){let t=e===void 0?x:Number(e);if(!Number.isSafeInteger(t)||t!==x)throw new o(`Hookr limit orders are only supported on Robinhood Chain (${x}).`);return x}function Je(e){switch(e){case ee:return"None";case M:return"Open";case Ye:return"Filled";case Qe:return"Cancelled";default:return"Unknown"}}function et(e,t,n=ae){if(typeof e!="string"||!/^-?\d+$/.test(e.trim()))throw new o("Signed amount must be an integer string in base units.");let r=e.trim();if(r.startsWith("-")){let i=r.slice(1),u=n(i,t);return u==="0"?"0":`-${u}`}return n(r,t)}function Pt(e,t,n="floor"){return se(e,t,n)}function Oe(e){return Ee(pe(we("address, address, uint24, int24, address"),[l(e.currency0),l(e.currency1),e.fee,e.tickSpacing,l(e.hooks)]))}function Ie(e,t){let n=e.toLowerCase();if(new Set([L.toLowerCase(),Me.toLowerCase(),A.toLowerCase(),Ne.toLowerCase(),Be.toLowerCase(),Fe.toLowerCase(),t.toLowerCase()]).has(n))throw new o(`Recipient ${e} is a reserved address and cannot receive Hookr limit order funds.`)}async function J(e,t,n,r){if(ke(e))return{address:B,symbol:V.symbol,decimals:V.decimals,chainId:t};let i=l(e),u=i.toLowerCase();if(F(r)){let s=typeof r.decimals=="number"&&Number.isInteger(r.decimals)&&r.decimals>=0&&r.decimals<=255?r.decimals:void 0,a=typeof r.symbol=="string"&&r.symbol.trim()?r.symbol.trim():void 0;if(s!==void 0&&a!==void 0)return{address:i,symbol:a,decimals:s,chainId:t}}if(u===W.address.toLowerCase())return{...W,chainId:t};if(u===G.address.toLowerCase())return{...G,chainId:t};try{let[s,a]=await Promise.all([n.readContract({address:i,abi:Z,functionName:"symbol"}),n.readContract({address:i,abi:Z,functionName:"decimals"})]);if(typeof s!="string"||!s.trim()||typeof a!="number"||!Number.isInteger(a)||a<0||a>255)throw new o(`Invalid token metadata for ${i}.`);return{address:i,symbol:s.trim(),decimals:a,chainId:t}}catch{throw new o(`Could not read valid token metadata for ${i}. Refusing to guess token decimals.`)}}function tt(e){let t=F(e.key)?e.key:F(e.poolKey)?e.poolKey:void 0,n=t?.fee??e.fee??ze,r=(typeof n=="string"&&/^\d+$/.test(n),Number(n));if(!Number.isInteger(r)||r<0||r>We)throw new o("Pool fee must be a valid uint24 integer (default 8388608 for Hookr dynamic fee pools).");let i=t?.tickSpacing??e.tickSpacing??qe,u=(typeof i=="string"&&/^-?\d+$/.test(i),Number(i));if(!Number.isInteger(u)||u<=0||u>Ge)throw new o("Pool tickSpacing must be a positive int24 integer.");let s=t?.hooks??e.hooks??ve;if(typeof s!="string"||!E(s,{strict:!1}))throw new o("Provide a valid Hookr root contract address for hooks.");let a=l(s);if(t?.currency0!==void 0&&t?.currency1!==void 0||e.currency0!==void 0&&e.currency1!==void 0){let m=$(t?.currency0??e.currency0,"currency0"),I=$(t?.currency1??e.currency1,"currency1");if(m.toLowerCase()===I.toLowerCase())throw new o("Pool currency0 and currency1 must be distinct token addresses.");if(BigInt(m)>=BigInt(I))throw new o("Pool currency0 must sort strictly before currency1 by address.");let b;if(typeof e.zeroForOne=="boolean")b=e.zeroForOne;else if(e.tokenIn!==void 0||e.from!==void 0){let C=$(e.tokenIn??e.from,"tokenIn");if(C.toLowerCase()===m.toLowerCase())b=!0;else if(C.toLowerCase()===I.toLowerCase())b=!1;else throw new o("tokenIn does not match currency0 or currency1 of the pool key.")}else throw new o("Provide zeroForOne (boolean) or tokenIn when specifying a pool key.");return{key:{currency0:m,currency1:I,fee:r,tickSpacing:u,hooks:a},zeroForOne:b}}let w=e.tokenIn??e.from,f=e.tokenOut??e.to;if(w===void 0||f===void 0)throw new o("Provide either key ({ currency0, currency1, fee, tickSpacing, hooks }) with zeroForOne or tokenIn and tokenOut addresses.");let g=$(w,"tokenIn"),k=$(f,"tokenOut");if(g.toLowerCase()===k.toLowerCase())throw new o("Input and output tokens must have distinct addresses.");let p=BigInt(g)<BigInt(k),y=p?g:k,d=p?k:g;if(typeof e.zeroForOne=="boolean"&&e.zeroForOne!==p)throw new o("zeroForOne conflicts with the canonical sorting of tokenIn and tokenOut.");return{key:{currency0:y,currency1:d,fee:r,tickSpacing:u,hooks:a},zeroForOne:p}}function nt(e,t,n){let r=Y(t),i=r*r;if(n){let s=j(e.toString(),i.toString(),fe.toString(),"ceil");return BigInt(s)}let u=j(e.toString(),fe.toString(),i.toString(),"ceil");return BigInt(u)}function R(e,t){if(typeof e=="bigint"){if(e<0n)throw new o(`${t} must be a non-negative integer.`);return e}if(typeof e=="number"){if(!Number.isSafeInteger(e)||e<0)throw new o(`${t} must be a non-negative safe integer.`);return BigInt(e)}if(typeof e=="string")return H(e.trim());throw new o(`Provide ${t} as a decimal base-unit string.`)}async function ot(e,t){if(t!==void 0)return R(t,"now");if(typeof e.getBlock=="function"){let n=await e.getBlock().catch(()=>{throw new o("Could not read the chain timestamp for Hookr order expiry.")});return BigInt(n.timestamp)}throw new o("Could not read the chain timestamp for Hookr order expiry.")}function Ae(e,t){return!e.changes||e.changes.length===0?"no net ERC-20 transfer deltas":e.changes.map(n=>`${et(n.amount,n.token.decimals,t.formatAmount)} ${S(n.token.symbol)}`).join(", ")}function rt(e,t,n,r){if(!e||!Array.isArray(e.logs))throw new o("Provide a transaction receipt with a logs array.");for(let i of e.logs){if(!i||typeof i.address!="string"||!E(i.address,{strict:!1})||!Array.isArray(i.topics)||typeof i.data!="string"||i.topics.some(u=>typeof u!="string"||!/^0x[0-9a-fA-F]{64}$/.test(u)))throw new o(`Malformed Hookr ${t} receipt log.`);if(i.address.toLowerCase()===A.toLowerCase()&&i.topics[0]?.toLowerCase()===n.toLowerCase()){if(i.topics.length!==4||!/^0x0{24}/i.test(i.topics[2])||t==="OrderCancelled"&&!/^0x0{24}/i.test(i.topics[3])||!/^0x[0-9a-fA-F]*$/.test(i.data)||i.data.length!==2+r*64)throw new o(`Malformed Hookr ${t} receipt log.`);return{topics:i.topics,data:i.data}}}throw new o(`Could not find Hookr ${t} event in transaction receipt logs.`)}function he(e){if(e.receipt!==void 0){if(!F(e.receipt)||!Array.isArray(e.receipt.logs))throw new o("Provide a transaction receipt with a logs array.");return st({logs:e.receipt.logs})}if(e.logs!==void 0){if(!Array.isArray(e.logs))throw new o("Provide receipt logs as an array.");return it(e.logs)}}function Se(e){let t=rt(e,"OrderCreated",Ze,6);try{let n=$e({abi:P,eventName:"OrderCreated",...t,strict:!0});if(pe(we("bool, uint128, uint128, uint128, uint40, address"),[n.args.zeroForOne,n.args.amountIn,n.args.minAmountOut,n.args.bounty,n.args.expiry,n.args.recipient]).toLowerCase()!==t.data.toLowerCase())throw new o("Noncanonical Hookr OrderCreated event data.");return{orderId:n.args.orderId.toString(),owner:l(n.args.owner),poolId:n.args.poolId,zeroForOne:n.args.zeroForOne,amountIn:n.args.amountIn.toString(),minAmountOut:n.args.minAmountOut.toString(),bounty:n.args.bounty.toString(),expiry:n.args.expiry.toString(),recipient:l(n.args.recipient)}}catch{throw new o("Malformed Hookr OrderCreated receipt log.")}}function it(e){return Se({logs:e}).orderId}function st(e){return Se(e).orderId}function xe(e){if(Array.isArray(e)){let[n,r,i,u,s,a,c,w,f,g,k]=e;return{key:Array.isArray(n)?{currency0:n[0],currency1:n[1],fee:Number(n[2]),tickSpacing:Number(n[3]),hooks:n[4]}:n,owner:r,createdAt:i,expiry:u,zeroForOne:s,status:a,recipient:c,amountIn:BigInt(w),minAmountOut:BigInt(f),bounty:BigInt(g),sqrtPriceLimitX96:BigInt(k)}}let t=e;return{key:{currency0:t.key.currency0,currency1:t.key.currency1,fee:Number(t.key.fee),tickSpacing:Number(t.key.tickSpacing),hooks:t.key.hooks},owner:t.owner,createdAt:t.createdAt,expiry:t.expiry,zeroForOne:!!t.zeroForOne,status:Number(t.status),recipient:t.recipient,amountIn:BigInt(t.amountIn),minAmountOut:BigInt(t.minAmountOut),bounty:BigInt(t.bounty),sqrtPriceLimitX96:BigInt(t.sqrtPriceLimitX96)}}async function Ce(e,t,n){let r=R(t,"orderId");if(r<=0n)throw new o("Order ID must be a positive integer.");let i=e.clientFor(x),u=n?.order??await i.readContract({address:A,abi:P,functionName:"getOrder",args:[r]}).catch(()=>{throw new o(`Could not read Hookr order #${r}. Order coverage is incomplete.`)}),s=xe(u),a=Number(s.status);if(s.owner.toLowerCase()===L.toLowerCase()||a===ee)throw new o(`Hookr order #${r} does not exist.`);let c={currency0:l(s.key.currency0),currency1:l(s.key.currency1),fee:Number(s.key.fee),tickSpacing:Number(s.key.tickSpacing),hooks:l(s.key.hooks)},w=s.zeroForOne?c.currency0:c.currency1,f=s.zeroForOne?c.currency1:c.currency0,g=m=>{let I=m.toLowerCase(),b=n?.tokens.get(I);if(b)return b;let C=J(m,x,i);return n?.tokens.set(I,C),C},[k,p]=await Promise.all([g(w),g(f)]),y=!1,d=0n;if(a===M)try{let m=await i.readContract({address:A,abi:P,functionName:"quoteFill",args:[r]});if(typeof m[0]!="boolean"||typeof m[1]!="bigint"||m[1]<0n)throw new o(`Invalid quote for Hookr order #${r}.`);y=m[0],d=m[1]}catch{throw new o(`Could not quote Hookr order #${r}. Fillability and output amount are unknown.`)}return{orderId:r.toString(),poolId:Oe(c),key:c,owner:l(s.owner),recipient:l(s.recipient),createdAt:BigInt(s.createdAt).toString(),expiry:BigInt(s.expiry).toString(),zeroForOne:s.zeroForOne,status:a,statusLabel:Je(a),amountIn:s.amountIn.toString(),minAmountOut:s.minAmountOut.toString(),bounty:s.bounty.toString(),sqrtPriceLimitX96:s.sqrtPriceLimitX96.toString(),tokenIn:k,tokenOut:p,fillable:y,quotedAmountOut:d.toString()}}function at(e){return{name:"hookr_create",inputSchema:{type:"object",properties:{key:{type:"object",description:"Uniswap v4 PoolKey of the pool to place the order in; omitted fee, tickSpacing and hooks use Hookr defaults. tokenIn or zeroForOne picks the direction.",properties:{currency0:{type:"string",description:"Lower-sorted pool token address (0x followed by 40 hex digits)."},currency1:{type:"string",description:"Higher-sorted pool token address (0x followed by 40 hex digits)."},fee:{type:"number",description:"Pool fee in pips, hundredths of a basis point (3000 = 0.3%); default 8388608, the v4 dynamic-fee flag of Hookr pools."},tickSpacing:{type:"number",description:"Pool tick spacing, a positive integer; defaults to the Hookr pool spacing."},hooks:{type:"string",description:"Address of the pool hook contract; defaults to the Hookr root hook."}}},tokenIn:{type:"string",description:"Input token address on chain 4663."},tokenOut:{type:"string",description:"Output token address on chain 4663."},zeroForOne:{type:"boolean",description:"True when selling currency0 for currency1."},amountIn:{type:"string",description:"Input amount in base units (uint128)."},minAmountOut:{type:"string",description:"Minimum net output amount in base units (uint128)."},tick:{type:"number",description:"Optional limit tick in [-887272, 887272]."},expiry:{type:"string",description:"Order expiry unix timestamp in seconds (uint40)."},deadline:{type:"string",description:"Alias for expiry unix timestamp in seconds."},bounty:{type:"string",description:"Keeper bounty in native ETH wei (uint128)."},recipient:{type:"string",description:"Order output recipient address (must be the signing wallet)."},sqrtPriceLimitX96:{type:"string",description:"Optional sqrtPriceLimitX96 (defaults to 0)."},chainId:{type:"number",description:"Must be 4663 (Robinhood Chain)."}},required:["amountIn"]},async execute(t,n){N(n);let r=l(n),i=be(t.chainId),u=e.clientFor(i),s=he(t),{key:a,zeroForOne:c}=tt(t),w=c?a.currency0:a.currency1,f=c?a.currency1:a.currency0,[g,k]=await Promise.all([J(w,i,u,t.tokenInMeta),J(f,i,u,t.tokenOutMeta)]),p=t.recipient??r;if(typeof p!="string"||!E(p,{strict:!1}))throw new o("Provide a valid recipient address for the Hookr limit order.");let y=l(p);if(Ie(y,a.hooks),y!==r)throw new o("Hookr recipient must be the signing wallet.");if(typeof t.amountIn!="string")throw new o("Provide amountIn as an integer string in base units.");let d=H(t.amountIn);if(d<=0n||d>Ue)throw new o("amountIn must be between 1 and int128.max base units.");if(t.tick!==void 0){let T=Number(t.tick);Y(T)}let m;if(t.minAmountOut!==void 0){if(typeof t.minAmountOut!="string")throw new o("Provide minAmountOut as an integer string in base units.");m=H(t.minAmountOut)}else if(t.tick!==void 0)m=nt(d,Number(t.tick),c);else throw new o("Provide minAmountOut in base units (or tick to derive minAmountOut).");if(m<=0n||m>le)throw new o("minAmountOut must be between 1 and uint128.max base units.");let I=t.sqrtPriceLimitX96!==void 0?R(t.sqrtPriceLimitX96,"sqrtPriceLimitX96"):0n;if(I>je)throw new o("sqrtPriceLimitX96 exceeds uint160 bounds.");let b=await ot(u,t.now),C=t.expiry??t.deadline,O;if(C!==void 0)O=R(C,"expiry");else if(t.lifetime!==void 0||t.ttlSeconds!==void 0){let T=R(t.lifetime??t.ttlSeconds,"lifetime");O=b+T}else O=b+Xe;if(O<b+ce)throw new o(`Order expiry (${O}) is expired or below the minimum lifetime of ${ce} seconds from block timestamp ${b}.`);if(O>b+ue||O>Ve)throw new o(`Order expiry (${O}) exceeds the maximum lifetime of ${ue} seconds (365 days).`);let z=await u.readContract({address:A,abi:P,functionName:"bountyBounds",args:[a,c,d,m]}).catch(()=>{throw new o("Could not read Hookr bounty bounds.")}),_=BigInt(z[0]),q=BigInt(z[1]),X=BigInt(z[2]);if(t.bounty!==void 0&&typeof t.bounty!="string")throw new o("Provide bounty as an integer string in base units.");let h=t.bounty!==void 0?H(t.bounty):q,K=_>0n?_:q;if(h<_||K>0n&&h<K)throw new o(`Order keeper bounty (${h} wei) is underbounty: must be at least ${K} wei (default keeper bounty floor).`);if(h>X||h>le)throw new o(`Order keeper bounty (${h} wei) exceeds the maximum allowed bounty of ${X} wei.`);let te=w.toLowerCase()===L.toLowerCase(),v=[];if(!te){let T;try{let U=await u.readContract({address:w,abi:Z,functionName:"allowance",args:[r,A]});if(typeof U!="bigint"||U<0n)throw new o("Invalid token allowance.");T=U}catch{throw new o(`Could not read token allowance for ${w}. No approval was prepared.`)}T<d&&v.push(e.approval(w,A,d.toString(),i))}let Pe=te?d+h:h,Le=ye({abi:P,functionName:"createOrder",args:[{key:a,zeroForOne:c,amountIn:d,minAmountOut:m,sqrtPriceLimitX96:I,recipient:y,expiry:Number(O),bounty:h}]}),ne=e.formatAmount(d.toString(),g.decimals),oe=e.formatAmount(m.toString(),k.decimals),re=e.formatAmount(h.toString(),18),Te=e.unsignedTx({to:A,data:Le,value:Pe.toString(),chainId:i,description:`Create Hookr limit order on ${A}: sell ${ne} ${S(g.symbol)} (${g.address}) for at least ${oe} ${S(k.symbol)} (${k.address}) with ${re} ETH keeper bounty (fee=${a.fee}, tickSpacing=${a.tickSpacing}, expiry=${O}).`});v.push(Te);let ie=await e.preview(v,r),Re=Ae(ie,e),He=Oe(a);return{txs:v,summary:`Hookr limit order prepared: sell ${ne} ${S(g.symbol)} for at least ${oe} ${S(k.symbol)} (bounty ${re} ETH, expiry ${O}; preview deltas: ${Re}).`,preview:ie,poolId:He,key:a,zeroForOne:c,amountIn:d.toString(),minAmountOut:m.toString(),bounty:h.toString(),bountyBounds:{minBounty:_.toString(),defaultBounty:q.toString(),maxBounty:X.toString()},expiry:O.toString(),recipient:y,sqrtPriceLimitX96:I.toString(),tokenIn:g,tokenOut:k,...s!==void 0?{orderId:s}:{}}}}}function dt(e){return{name:"hookr_cancel",inputSchema:{type:"object",properties:{orderId:{type:"string",description:"Hookr order ID to cancel (uint256 decimal string)."},to:{type:"string",description:"Recipient address for the refunded principal and bounty (must be the signing wallet)."},chainId:{type:"number",description:"Must be 4663 (Robinhood Chain)."}},required:["orderId"]},async execute(t,n){N(n);let r=l(n),i=be(t.chainId),u=he(t),s=t.orderId??t.id??u;if(s===void 0)throw new o("Provide orderId to cancel a Hookr limit order.");let a=R(s,"orderId");if(a<=0n)throw new o("orderId must be a positive integer.");let c=await Ce(e,a);if(c.owner.toLowerCase()!==r.toLowerCase())throw new o(`Unauthorized cancellation: only the order owner (${c.owner}) can cancel Hookr order #${a} (caller is ${r}).`);if(c.status!==M)throw new o(`Hookr order #${a} is not open (current status: ${c.statusLabel}).`);let w=t.to??r;if(typeof w!="string"||!E(w,{strict:!1}))throw new o("Provide a valid refund recipient address for cancel.");let f=l(w);if(Ie(f,c.key.hooks),f!==r)throw new o("Hookr refund recipient must be the signing wallet.");let g=ye({abi:P,functionName:"cancel",args:[a,f]}),k=e.formatAmount(c.amountIn,c.tokenIn.decimals),p=e.formatAmount(c.bounty,18),y=e.unsignedTx({to:A,data:g,value:"0",chainId:i,description:`Cancel Hookr limit order #${a} on ${A} and refund ${k} ${S(c.tokenIn.symbol)} plus ${p} ETH bounty to ${f}.`}),d=await e.preview([y],r),m=Ae(d,e);return{txs:[y],summary:`Cancel Hookr limit order #${a}: refund ${k} ${S(c.tokenIn.symbol)} and ${p} ETH bounty to ${f} (preview deltas: ${m}).`,preview:d,orderId:a.toString(),to:f,refundedAmountIn:c.amountIn,refundedBounty:c.bounty,tokenIn:c.tokenIn,tokenOut:c.tokenOut}}}}function ct(e){let t=performance.now()+Ke;return new Proxy(e,{get(n,r,i){return r!=="readContract"?Reflect.get(n,r,i):async(...u)=>{let s=t-performance.now(),a=()=>new o("Hookr scan deadline exceeded. Order coverage is incomplete; retry later.");if(s<=0)throw a();let c;try{return await Promise.race([n.readContract(...u),new Promise((w,f)=>{c=setTimeout(()=>f(a()),s)})])}finally{c!==void 0&&clearTimeout(c)}}}})}function ut(e){return async t=>{N(t);let n=l(t),r=ct(e.clientFor(x)),i={...e,clientFor:()=>r},u=await r.readContract({address:A,abi:P,functionName:"lastOrderId"}).catch(()=>{throw new o("Could not read the last Hookr order ID. Order coverage is incomplete.")});if(typeof u!="bigint"||u<0n)throw new o("Could not read a valid last Hookr order ID. Order coverage is incomplete.");let s=u,a=s>me?s-me+1n:1n;if(s<=0n)return[];let c=[],w=new Map;for(let f=a;f<=s;f+=Q){let g=Array.from({length:Number(s-f+1n<Q?s-f+1n:Q)},(p,y)=>f+BigInt(y)),k=await Promise.all(g.map(async p=>{let y=await r.readContract({address:A,abi:P,functionName:"getOrder",args:[p]}).catch(()=>{throw new o(`Could not read Hookr order #${p}. Order coverage is incomplete.`)}),d=xe(y);if(d.owner.toLowerCase()===L||Number(d.status)===ee)throw new o(`Hookr order #${p} does not exist. Order coverage is incomplete.`);return{id:p,order:d}}));for(let{id:p,order:y}of k){if(y.owner.toLowerCase()!==n.toLowerCase()||Number(y.status)!==M)continue;let d=await Ce(i,p,{order:y,tokens:w}),m=[{token:d.tokenIn,amount:d.amountIn}];BigInt(d.bounty)>0n&&m.push({token:{address:B,symbol:"ETH",decimals:18,chainId:x},amount:d.bounty});let I=e.formatAmount(d.amountIn,d.tokenIn.decimals),b=e.formatAmount(d.minAmountOut,d.tokenOut.decimals),C=e.formatAmount(d.bounty,18),O=e.formatAmount(d.quotedAmountOut,d.tokenOut.decimals);c.push({module:"hookr",id:d.orderId,chainId:x,assets:m,description:`Hookr open limit order #${d.orderId}: sell ${I} ${S(d.tokenIn.symbol)} (${d.tokenIn.address}) for at least ${b} ${S(d.tokenOut.symbol)} (${d.tokenOut.address}), bounty ${C} ETH, expiry ${d.expiry}, fillable=${d.fillable} (quoted output ${O} ${S(d.tokenOut.symbol)}).`})}}return a>1n&&c.push({module:"hookr",id:"coverage",chainId:x,assets:[],description:`Hookr order coverage is incomplete: scanned IDs ${a}-${s}. Older orders require an explicit order ID.`}),c}}var De=e=>{let t=[at(e),dt(e)],n=ut(e);return{tools:t,positions:n}},Lt=De,Tt=De;export{A as a,ve as b,Ne as c,It as d,Be as e,Fe as f,At as g,Me as h,ze as i,qe as j,ce as k,Xe as l,ue as m,ht as n,St as o,xt as p,Ct as q,me as r,Ke as s,ee as t,M as u,Ye as v,Qe as w,Ze as x,Dt as y,P as z,et as A,Pt as B,Oe as C,rt as D,Se as E,it as F,st as G,xe as H,Ce as I,at as J,dt as K,ct as L,ut as M,De as N,Lt as O,Tt as P};
@@ -1 +1 @@
1
- import{c as A}from"./5HCXZWUH.js";import{n as y}from"./ABPL3ZZI.js";import{a as b}from"./XSD5NL7J.js";import{erc20Abi as F,getAddress as $}from"viem";var P=new WeakMap,E=3e3,k=new WeakMap;async function q(C,h,u,m,c){u=$(u);let n=A(C),e=P.get(n);e||(e=new Map,P.set(n,e));let i=`${h}:${u.toLowerCase()}:${m}:${c??"latest"}`,t=e.get(i);if(t&&(e.delete(i),e.set(i,t)),!t){for(t=new Promise((s,T)=>{let a=k.get(n);a||(a=new Map,k.set(n,a));let f=`${h}:${c??"latest"}`,l=a.get(f);if(!l){l=[],a.set(f,l);let d=l;queueMicrotask(async()=>{a.delete(f);let w=d.map(r=>({address:r.address,abi:F,functionName:r.field}));try{if(d.length>1&&n.chain?.contracts?.multicall3&&typeof n.multicall=="function"){let r=await y(()=>n.multicall({contracts:w,blockNumber:c,allowFailure:!0}));d.forEach((o,p)=>{let g=r[p];g?.status==="success"?o.resolve(g.result):o.reject(g?.error??new b("Token metadata could not be read."))})}else await Promise.all(d.map(async(r,o)=>{try{r.resolve(await y(()=>n.readContract({...w[o],blockNumber:c})))}catch(p){r.reject(p)}}))}catch(r){d.forEach(o=>o.reject(r))}})}l.push({address:u,field:m,resolve:s,reject:T})}).then(s=>{if(m==="decimals"?!Number.isInteger(s)||Number(s)<0||Number(s)>255:typeof s!="string"||!s.trim())throw new b("The contract returned invalid token metadata.");return s});e.size>=E;)e.delete(e.keys().next().value);e.set(i,t);let M=t;t.catch(()=>{e.get(i)===M&&e.delete(i)})}try{return await t}finally{c!==void 0&&e.get(i)===t&&e.delete(i)}}export{q as a};
1
+ import{c as A}from"./5HCXZWUH.js";import{o as y}from"./6NUNCD5J.js";import{a as b}from"./XSD5NL7J.js";import{erc20Abi as F,getAddress as $}from"viem";var P=new WeakMap,E=3e3,k=new WeakMap;async function q(C,h,u,m,c){u=$(u);let n=A(C),e=P.get(n);e||(e=new Map,P.set(n,e));let i=`${h}:${u.toLowerCase()}:${m}:${c??"latest"}`,t=e.get(i);if(t&&(e.delete(i),e.set(i,t)),!t){for(t=new Promise((s,T)=>{let a=k.get(n);a||(a=new Map,k.set(n,a));let f=`${h}:${c??"latest"}`,l=a.get(f);if(!l){l=[],a.set(f,l);let d=l;queueMicrotask(async()=>{a.delete(f);let w=d.map(r=>({address:r.address,abi:F,functionName:r.field}));try{if(d.length>1&&n.chain?.contracts?.multicall3&&typeof n.multicall=="function"){let r=await y(()=>n.multicall({contracts:w,blockNumber:c,allowFailure:!0}));d.forEach((o,p)=>{let g=r[p];g?.status==="success"?o.resolve(g.result):o.reject(g?.error??new b("Token metadata could not be read."))})}else await Promise.all(d.map(async(r,o)=>{try{r.resolve(await y(()=>n.readContract({...w[o],blockNumber:c})))}catch(p){r.reject(p)}}))}catch(r){d.forEach(o=>o.reject(r))}})}l.push({address:u,field:m,resolve:s,reject:T})}).then(s=>{if(m==="decimals"?!Number.isInteger(s)||Number(s)<0||Number(s)>255:typeof s!="string"||!s.trim())throw new b("The contract returned invalid token metadata.");return s});e.size>=E;)e.delete(e.keys().next().value);e.set(i,t);let M=t;t.catch(()=>{e.get(i)===M&&e.delete(i)})}try{return await t}finally{c!==void 0&&e.get(i)===t&&e.delete(i)}}export{q as a};
@@ -0,0 +1 @@
1
+ import{b as H,c as N}from"./NUFZUKYS.js";import{a as S}from"./LT5P6PZW.js";import{a as O}from"./G2LAO23N.js";import{a as D}from"./H5DY7CNB.js";import{a as C}from"./66F5ZH34.js";import{c as _,f as I}from"./NWNYJ26T.js";import{a as d}from"./FWD4L3CJ.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};
@@ -0,0 +1 @@
1
+ import{c as w,d as A,i as T,m as C}from"./NWNYJ26T.js";import{a as c,i as _}from"./FWD4L3CJ.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as O,getAddress as x,keccak256 as D,parseAbi as P}from"viem";var g=x("0x03695edcfcf2c62a4dc36b032eb2513cd1d928a2"),S="0x0b3d9287f6788f70f8f32597eb50d8aaf791742819ecf58053f3e22fd96cb76b",$=["beefy_vault_manage"],I=P(["function owner() view returns(address)","function want() view returns(address)","function vault() view returns(address)","function strategy() view returns(address)","function approvalDelay() view returns(uint256)","function stratCandidate() view returns(address implementation,uint256 proposedTime)","function earn()","function proposeStrat(address)","function upgradeStrat()","function inCaseTokensGetStuck(address)","function transferOwnership(address)","function renounceOwnership()"]),i=x(_[c].vaults.beefyTestedLpVault.address);function d(p){return T(p,"Provide a contract or wallet address.",A)}function m(p){return C(p,"Invalid Beefy administration integer.")}var F=p=>{async function v(e){try{return await e()}catch(t){throw new r(p.plainError(t))}}function b(e,t){if(e.chainId!==void 0&&e.chainId!==c)throw new r("Beefy requires chain 4663.");for(let u of Object.keys(e))if(!["chainId","vault",...t].includes(u))throw new r(`Unsupported Beefy input: ${u}.`);if(d(e.vault)!==i)throw new r("Administration is qualified only for the measured up33-weth-up vault.")}async function k(){let e=p.clientFor(c);if(await e.getChainId()!==c)throw new r("The Beefy endpoint must report chain 4663.");let t=m(await e.getBlockNumber()),[u,n]=await Promise.all([e.getCode({address:i,blockNumber:t}),e.getCode({address:g,blockNumber:t})]),o=`0x363d3d373d3d3d363d73${g.slice(2).toLowerCase()}5af43d82803e903d91602b57fd5bf3`;if(u?.toLowerCase()!==o||!n||D(n)!==S)throw new r("The Beefy vault implementation no longer matches its qualified code hash.");let a=(E,N)=>e.readContract({address:E,abi:I,functionName:N,blockNumber:t}),[f,h,y,s,l,B]=await Promise.all([a(i,"owner"),a(i,"want"),a(i,"strategy"),a(i,"approvalDelay"),a(i,"stratCandidate"),e.getBlock({blockNumber:t})]);if(!Array.isArray(l)||l.length!==2)throw new r("Invalid Beefy strategy candidate.");return{client:e,blockNumber:t,owner:d(f),want:d(h),strategy:d(y),approvalDelay:m(s),candidate:{implementation:d(l[0]),proposedTime:m(l[1])},timestamp:m(B.timestamp),read:a}}return{tools:[{name:"beefy_vault_admin",inputSchema:{type:"object",properties:{vault:{...w,description:"Address of the Beefy vault contract; only the qualified up33-weth-up vault is supported."},chainId:{const:c,description:"Chain id; only 4663 (Robinhood Chain mainnet) is supported. Optional."}},required:["vault"],additionalProperties:!1},execute:e=>v(async()=>{b(e,[]);let t=await k();return{vault:i,chainId:c,owner:t.owner,want:t.want,strategy:t.strategy,candidate:{implementation:t.candidate.implementation,proposedTime:t.candidate.proposedTime.toString()},approvalDelay:t.approvalDelay.toString(),block:t.blockNumber.toString(),implementation:g,codeHash:S}})},{name:"beefy_vault_manage",inputSchema:{type:"object",properties:{vault:{...w,description:"Address of the Beefy vault contract; only the qualified up33-weth-up vault is supported."},action:{enum:["earn","propose_strategy","upgrade_strategy","rescue_tokens","transfer_ownership","renounce_ownership"],description:"earn: put idle want to work; propose_strategy then upgrade_strategy after the approval delay; rescue stuck tokens; transfer or permanently renounce ownership. Owner only except earn."},strategy:{...w,description:"Address of the new strategy contract to propose, deployed for this vault and its want token."},token:{...w,description:"Address of the stuck token to rescue to the owner wallet; the want token cannot be rescued."},recipient:{...w,description:"Address of the new owner for transfer_ownership; must not be the zero address."},chainId:{const:c,description:"Chain id; only 4663 (Robinhood Chain mainnet) is supported. Optional."}},required:["vault","action"],additionalProperties:!1},execute:(e,t)=>v(async()=>{let u={earn:[],propose_strategy:["strategy"],upgrade_strategy:[],rescue_tokens:["token"],transfer_ownership:["recipient"],renounce_ownership:[]},n=String(e.action);if(!Object.hasOwn(u,n))throw new r("Choose a documented Beefy vault management action.");b(e,["action",...u[n]]),t=d(t);let o=await k();if(n!=="earn"&&o.owner!==t)throw new r("This wallet is not the Beefy vault owner.");let a,f=[];if(n==="earn")a="earn";else if(n==="propose_strategy"){let s=d(e.strategy),l=await o.client.getCode({address:s,blockNumber:o.blockNumber});if(!l||l==="0x"||d(await o.read(s,"vault"))!==i||d(await o.read(s,"want"))!==o.want)throw new r("The proposed strategy must be deployed for this exact vault and want token.");a="proposeStrat",f=[s]}else if(n==="upgrade_strategy"){if(o.candidate.implementation==="0x0000000000000000000000000000000000000000"||o.candidate.proposedTime+o.approvalDelay>=o.timestamp)throw new r("Propose a strategy first and wait until the on-chain approval delay has fully passed.");a="upgradeStrat"}else if(n==="rescue_tokens"){let s=d(e.token);if(s===o.want)throw new r("The vault owner cannot rescue the want token.");a="inCaseTokensGetStuck",f=[s]}else if(n==="transfer_ownership"){let s=d(e.recipient);if(s==="0x0000000000000000000000000000000000000000")throw new r("Ownership transfer needs a nonzero recipient.");a="transferOwnership",f=[s]}else a="renounceOwnership";let h=[p.unsignedTx({to:i,data:O({abi:I,functionName:a,args:f}),value:"0",chainId:c,description:`Beefy vault ${n}.`})],y=n==="renounce_ownership"?" This permanently gives up owner administration.":n==="rescue_tokens"?" Rescued tokens go to the calling owner wallet; want is excluded.":n==="propose_strategy"||n==="upgrade_strategy"?" Strategy changes affect all vault depositors.":"";return{txs:h,inputs:[],preview:await p.preview(h,t),summary:`Beefy vault action ${n} on ${i}.${y} Inspect the preview before local human confirmation.`}})}]}};export{g as a,S as b,$ as c,I as d,F as e};