@oakagentkit/core 0.3.5 → 0.3.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 (525) hide show
  1. package/build/dist/api/addresses.d.ts +14 -0
  2. package/build/dist/api/addresses.js +1 -1
  3. package/build/dist/api/chain.js +1 -1
  4. package/build/dist/api/history.d.ts +2 -0
  5. package/build/dist/api/history.js +1 -1
  6. package/build/dist/api/identity-link.js +1 -1
  7. package/build/dist/api/metadata.js +1 -1
  8. package/build/dist/api/modules/beefy/boosts.js +1 -1
  9. package/build/dist/api/modules/beefy/clm.js +1 -1
  10. package/build/dist/api/modules/beefy/guard.js +1 -1
  11. package/build/dist/api/modules/beefy/index.js +1 -1
  12. package/build/dist/api/modules/beefy/liquidity.js +1 -1
  13. package/build/dist/api/modules/beefy/management.js +1 -1
  14. package/build/dist/api/modules/beefy/vaults.js +1 -1
  15. package/build/dist/api/modules/borro/actions.js +1 -1
  16. package/build/dist/api/modules/borro/index.js +1 -1
  17. package/build/dist/api/modules/borro/liquidity.js +1 -1
  18. package/build/dist/api/modules/borro/positions.js +1 -1
  19. package/build/dist/api/modules/borro/reader.js +1 -1
  20. package/build/dist/api/modules/chop/display.js +1 -1
  21. package/build/dist/api/modules/chop/guard.js +1 -1
  22. package/build/dist/api/modules/chop/index.js +1 -1
  23. package/build/dist/api/modules/clanker/extensions.js +1 -1
  24. package/build/dist/api/modules/clanker/index.js +1 -1
  25. package/build/dist/api/modules/clanker/manage.js +1 -1
  26. package/build/dist/api/modules/clanker/pool-config.js +1 -1
  27. package/build/dist/api/modules/clanker/protocol.js +1 -1
  28. package/build/dist/api/modules/clanker/state.js +1 -1
  29. package/build/dist/api/modules/earn/index.js +1 -1
  30. package/build/dist/api/modules/erc8004/common.js +1 -1
  31. package/build/dist/api/modules/erc8004/domain.js +1 -1
  32. package/build/dist/api/modules/erc8004/index.js +1 -1
  33. package/build/dist/api/modules/erc8004/management.js +1 -1
  34. package/build/dist/api/modules/erc8004/reputation.js +1 -1
  35. package/build/dist/api/modules/erc8004/services.js +1 -1
  36. package/build/dist/api/modules/erc8004/thesis.js +1 -1
  37. package/build/dist/api/modules/erc8004/validation.js +1 -1
  38. package/build/dist/api/modules/fobo/index.js +1 -1
  39. package/build/dist/api/modules/fobo/intent.js +1 -1
  40. package/build/dist/api/modules/fobo/steps.js +1 -1
  41. package/build/dist/api/modules/fobo/verify.js +1 -1
  42. package/build/dist/api/modules/grove/index.js +1 -1
  43. package/build/dist/api/modules/heyresearch/builder-feed.js +1 -1
  44. package/build/dist/api/modules/heyresearch/index.js +1 -1
  45. package/build/dist/api/modules/heyresearch/public-reads.js +1 -1
  46. package/build/dist/api/modules/heyresearch/token-facts.js +1 -1
  47. package/build/dist/api/modules/hoodag/chain-reads.js +1 -1
  48. package/build/dist/api/modules/hoodag/index.js +1 -1
  49. package/build/dist/api/modules/hoodag/management.js +1 -1
  50. package/build/dist/api/modules/hoodag/public-reads.js +1 -1
  51. package/build/dist/api/modules/hoodag/reconstruct.js +1 -1
  52. package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
  53. package/build/dist/api/modules/hoodlock/buyback.js +1 -1
  54. package/build/dist/api/modules/hoodlock/commerce.js +1 -1
  55. package/build/dist/api/modules/hoodlock/fee.js +1 -1
  56. package/build/dist/api/modules/hoodlock/guard.js +1 -1
  57. package/build/dist/api/modules/hoodlock/index.js +1 -1
  58. package/build/dist/api/modules/hoodlock/lifecycle.js +1 -1
  59. package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
  60. package/build/dist/api/modules/hoodlock/public.js +1 -1
  61. package/build/dist/api/modules/hookr/actions.d.ts +39 -2
  62. package/build/dist/api/modules/hookr/actions.js +1 -1
  63. package/build/dist/api/modules/hookr/addons.js +1 -1
  64. package/build/dist/api/modules/hookr/agent-gate.d.ts +14 -2
  65. package/build/dist/api/modules/hookr/agent-gate.js +1 -1
  66. package/build/dist/api/modules/hookr/agent-link.d.ts +17 -0
  67. package/build/dist/api/modules/hookr/agent-link.js +1 -0
  68. package/build/dist/api/modules/hookr/api-client.d.ts +9 -0
  69. package/build/dist/api/modules/hookr/api-client.js +1 -0
  70. package/build/dist/api/modules/hookr/blocks/advisory.d.ts +41 -0
  71. package/build/dist/api/modules/hookr/blocks/advisory.js +1 -0
  72. package/build/dist/api/modules/hookr/blocks/buy-sell-block.d.ts +7 -0
  73. package/build/dist/api/modules/hookr/blocks/buy-sell-block.js +1 -0
  74. package/build/dist/api/modules/hookr/blocks/core-settings.d.ts +6 -0
  75. package/build/dist/api/modules/hookr/blocks/core-settings.js +1 -0
  76. package/build/dist/api/modules/hookr/blocks/exit-clock.d.ts +14 -0
  77. package/build/dist/api/modules/hookr/blocks/exit-clock.js +1 -0
  78. package/build/dist/api/modules/hookr/blocks/holder-pot.d.ts +30 -0
  79. package/build/dist/api/modules/hookr/blocks/holder-pot.js +1 -0
  80. package/build/dist/api/modules/hookr/blocks/managed-fee.d.ts +96 -0
  81. package/build/dist/api/modules/hookr/blocks/managed-fee.js +1 -0
  82. package/build/dist/api/modules/hookr/blocks/market-guard.d.ts +116 -0
  83. package/build/dist/api/modules/hookr/blocks/market-guard.js +1 -0
  84. package/build/dist/api/modules/hookr/blocks/market-hours-fee.d.ts +87 -0
  85. package/build/dist/api/modules/hookr/blocks/market-hours-fee.js +1 -0
  86. package/build/dist/api/modules/hookr/blocks/pay-later.d.ts +199 -0
  87. package/build/dist/api/modules/hookr/blocks/pay-later.js +1 -0
  88. package/build/dist/api/modules/hookr/blocks/sandwich-guard.d.ts +3 -0
  89. package/build/dist/api/modules/hookr/blocks/sandwich-guard.js +1 -0
  90. package/build/dist/api/modules/hookr/blocks/storm-fee.d.ts +3 -0
  91. package/build/dist/api/modules/hookr/blocks/storm-fee.js +1 -0
  92. package/build/dist/api/modules/hookr/blocks/swap-cut.d.ts +3 -0
  93. package/build/dist/api/modules/hookr/blocks/swap-cut.js +1 -0
  94. package/build/dist/api/modules/hookr/blocks/swap-reward-mint.d.ts +125 -0
  95. package/build/dist/api/modules/hookr/blocks/swap-reward-mint.js +1 -0
  96. package/build/dist/api/modules/hookr/blocks/wallet-cap.d.ts +3 -0
  97. package/build/dist/api/modules/hookr/blocks/wallet-cap.js +1 -0
  98. package/build/dist/api/modules/hookr/blocks/zap-source.d.ts +161 -0
  99. package/build/dist/api/modules/hookr/blocks/zap-source.js +1 -0
  100. package/build/dist/api/modules/hookr/blocks/zap-target.d.ts +51 -0
  101. package/build/dist/api/modules/hookr/blocks/zap-target.js +1 -0
  102. package/build/dist/api/modules/hookr/claims.d.ts +53 -0
  103. package/build/dist/api/modules/hookr/claims.js +1 -0
  104. package/build/dist/api/modules/hookr/contracts.d.ts +3 -1
  105. package/build/dist/api/modules/hookr/contracts.js +1 -1
  106. package/build/dist/api/modules/hookr/create-cancel.js +1 -1
  107. package/build/dist/api/modules/hookr/discovery.d.ts +2 -2
  108. package/build/dist/api/modules/hookr/discovery.js +1 -1
  109. package/build/dist/api/modules/hookr/fill-bounty.d.ts +2 -0
  110. package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
  111. package/build/dist/api/modules/hookr/gas.d.ts +48 -0
  112. package/build/dist/api/modules/hookr/gas.js +1 -0
  113. package/build/dist/api/modules/hookr/gates.d.ts +51 -0
  114. package/build/dist/api/modules/hookr/gates.js +1 -0
  115. package/build/dist/api/modules/hookr/hook-blocks.d.ts +304 -0
  116. package/build/dist/api/modules/hookr/hook-blocks.js +1 -0
  117. package/build/dist/api/modules/hookr/index.d.ts +4 -2
  118. package/build/dist/api/modules/hookr/index.js +1 -1
  119. package/build/dist/api/modules/hookr/jobs.d.ts +7 -0
  120. package/build/dist/api/modules/hookr/jobs.js +1 -0
  121. package/build/dist/api/modules/hookr/launch-options.d.ts +52 -3
  122. package/build/dist/api/modules/hookr/launch-options.js +1 -1
  123. package/build/dist/api/modules/hookr/launch-profile.d.ts +8 -0
  124. package/build/dist/api/modules/hookr/launch-profile.js +1 -1
  125. package/build/dist/api/modules/hookr/launch-receipt.js +1 -1
  126. package/build/dist/api/modules/hookr/launch.d.ts +24 -0
  127. package/build/dist/api/modules/hookr/launch.js +1 -1
  128. package/build/dist/api/modules/hookr/liquidity.js +1 -1
  129. package/build/dist/api/modules/hookr/lp-positions.js +1 -1
  130. package/build/dist/api/modules/hookr/lp-reads.js +1 -1
  131. package/build/dist/api/modules/hookr/lp-receipt.js +1 -1
  132. package/build/dist/api/modules/hookr/lp-state.d.ts +90 -2
  133. package/build/dist/api/modules/hookr/lp-state.js +1 -1
  134. package/build/dist/api/modules/hookr/pay-later-actions.d.ts +52 -0
  135. package/build/dist/api/modules/hookr/pay-later-actions.js +1 -0
  136. package/build/dist/api/modules/hookr/pins.d.ts +5 -0
  137. package/build/dist/api/modules/hookr/pins.js +1 -1
  138. package/build/dist/api/modules/hookr/pm-liquidity.d.ts +215 -0
  139. package/build/dist/api/modules/hookr/pm-liquidity.js +1 -0
  140. package/build/dist/api/modules/hookr/public-reads.d.ts +1 -1
  141. package/build/dist/api/modules/hookr/public-reads.js +1 -1
  142. package/build/dist/api/modules/hookr/read-utils.js +1 -1
  143. package/build/dist/api/modules/hookr/relay.js +1 -1
  144. package/build/dist/api/modules/hookr/revenue.d.ts +4 -1
  145. package/build/dist/api/modules/hookr/revenue.js +1 -1
  146. package/build/dist/api/modules/hookr/scan.d.ts +25 -0
  147. package/build/dist/api/modules/hookr/scan.js +1 -0
  148. package/build/dist/api/modules/hookr/swap.d.ts +161 -0
  149. package/build/dist/api/modules/hookr/swap.js +1 -0
  150. package/build/dist/api/modules/kyberswap/index.js +1 -1
  151. package/build/dist/api/modules/kyberswap/source-pools.js +1 -1
  152. package/build/dist/api/modules/layerbank/abi.js +1 -1
  153. package/build/dist/api/modules/layerbank/actions.js +1 -1
  154. package/build/dist/api/modules/layerbank/checks.js +1 -1
  155. package/build/dist/api/modules/layerbank/index.js +1 -1
  156. package/build/dist/api/modules/layerbank/merkl.js +1 -1
  157. package/build/dist/api/modules/layerbank/reader.js +1 -1
  158. package/build/dist/api/modules/layerbank/reserve.js +1 -1
  159. package/build/dist/api/modules/lighter/index.js +1 -1
  160. package/build/dist/api/modules/longbow/administration.js +1 -1
  161. package/build/dist/api/modules/longbow/analytics.js +1 -1
  162. package/build/dist/api/modules/longbow/fixed.js +1 -1
  163. package/build/dist/api/modules/longbow/index.js +1 -1
  164. package/build/dist/api/modules/longbow/nft.js +1 -1
  165. package/build/dist/api/modules/longbow/rebates.js +1 -1
  166. package/build/dist/api/modules/longbow/staking.js +1 -1
  167. package/build/dist/api/modules/meridian/index.js +1 -1
  168. package/build/dist/api/modules/meridian/markets.js +1 -1
  169. package/build/dist/api/modules/meridian/rfq.js +1 -1
  170. package/build/dist/api/modules/merkl/discovery.js +1 -1
  171. package/build/dist/api/modules/merkl/index.js +1 -1
  172. package/build/dist/api/modules/merkl/manage.js +1 -1
  173. package/build/dist/api/modules/merkl/protocol.js +1 -1
  174. package/build/dist/api/modules/merkl/stock-lp.d.ts +51 -0
  175. package/build/dist/api/modules/merkl/stock-lp.js +1 -0
  176. package/build/dist/api/modules/morpho/allocator.js +1 -1
  177. package/build/dist/api/modules/morpho/bundles.js +1 -1
  178. package/build/dist/api/modules/morpho/in-kind.js +1 -1
  179. package/build/dist/api/modules/morpho/index.js +1 -1
  180. package/build/dist/api/modules/morpho/local-guard.js +1 -1
  181. package/build/dist/api/modules/morpho/midnight.js +1 -1
  182. package/build/dist/api/modules/morpho/protocol.js +1 -1
  183. package/build/dist/api/modules/morpho/vault-management.js +1 -1
  184. package/build/dist/api/modules/morpho/vault-tools.js +1 -1
  185. package/build/dist/api/modules/morpho/vault-v2.js +1 -1
  186. package/build/dist/api/modules/netnet/card-plan.js +1 -1
  187. package/build/dist/api/modules/netnet/card-read.js +1 -1
  188. package/build/dist/api/modules/netnet/card-recovery.js +1 -1
  189. package/build/dist/api/modules/netnet/desk-action.js +1 -1
  190. package/build/dist/api/modules/netnet/desk-read.js +1 -1
  191. package/build/dist/api/modules/netnet/financial.js +1 -1
  192. package/build/dist/api/modules/netnet/index.js +1 -1
  193. package/build/dist/api/modules/netnet/staking.js +1 -1
  194. package/build/dist/api/modules/orbio/index.js +1 -1
  195. package/build/dist/api/modules/orbio/positions.js +1 -1
  196. package/build/dist/api/modules/pendle/costs.js +1 -1
  197. package/build/dist/api/modules/pendle/index.js +1 -1
  198. package/build/dist/api/modules/pendle/markets.js +1 -1
  199. package/build/dist/api/modules/pendle/positions.js +1 -1
  200. package/build/dist/api/modules/pendle/pricecheck.js +1 -1
  201. package/build/dist/api/modules/pendle/reader.js +1 -1
  202. package/build/dist/api/modules/pendle/redeem.js +1 -1
  203. package/build/dist/api/modules/pendle/trade.js +1 -1
  204. package/build/dist/api/modules/pendle/validate.js +1 -1
  205. package/build/dist/api/modules/pendle/verify.js +1 -1
  206. package/build/dist/api/modules/pons/claim.js +1 -1
  207. package/build/dist/api/modules/pons/index.js +1 -1
  208. package/build/dist/api/modules/pons/launch-status.js +1 -1
  209. package/build/dist/api/modules/pons/prices.js +1 -1
  210. package/build/dist/api/modules/pons/reads.js +1 -1
  211. package/build/dist/api/modules/pons/swap-terms.js +1 -1
  212. package/build/dist/api/modules/pons/trade.js +1 -1
  213. package/build/dist/api/modules/poolstrade/index.js +1 -1
  214. package/build/dist/api/modules/priors/coverage.js +1 -1
  215. package/build/dist/api/modules/priors/discovery.js +1 -1
  216. package/build/dist/api/modules/priors/features.js +1 -1
  217. package/build/dist/api/modules/priors/holdings.js +1 -1
  218. package/build/dist/api/modules/priors/index.js +1 -1
  219. package/build/dist/api/modules/priors/integration.js +1 -1
  220. package/build/dist/api/modules/priors/market.js +1 -1
  221. package/build/dist/api/modules/priors/pt.js +1 -1
  222. package/build/dist/api/modules/priors/savings-exit.js +1 -1
  223. package/build/dist/api/modules/priors/starter-line.js +1 -1
  224. package/build/dist/api/modules/priors/stock-swap.js +1 -1
  225. package/build/dist/api/modules/raeto/index.js +1 -1
  226. package/build/dist/api/modules/relay/bootstrap.js +1 -1
  227. package/build/dist/api/modules/relay/discovery.js +1 -1
  228. package/build/dist/api/modules/relay/inbound.js +1 -1
  229. package/build/dist/api/modules/relay/index.js +1 -1
  230. package/build/dist/api/modules/relay/outbound-status.js +1 -1
  231. package/build/dist/api/modules/relay/reads.js +1 -1
  232. package/build/dist/api/modules/spark/actions.js +1 -1
  233. package/build/dist/api/modules/spark/details.js +1 -1
  234. package/build/dist/api/modules/spark/index.js +1 -1
  235. package/build/dist/api/modules/spark/management.js +1 -1
  236. package/build/dist/api/modules/steakhouse/analytics.js +1 -1
  237. package/build/dist/api/modules/steakhouse/erc4626.js +1 -1
  238. package/build/dist/api/modules/steakhouse/index.js +1 -1
  239. package/build/dist/api/modules/steakhouse/local-guard.js +1 -1
  240. package/build/dist/api/modules/steakhouse/management.js +1 -1
  241. package/build/dist/api/modules/steakhouse/v2-exit.js +1 -1
  242. package/build/dist/api/modules/tickerspring/basket-routes.js +1 -1
  243. package/build/dist/api/modules/tickerspring/contract-reads.js +1 -1
  244. package/build/dist/api/modules/tickerspring/discovery.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.js +1 -1
  249. package/build/dist/api/modules/tickerspring/ladder.js +1 -1
  250. package/build/dist/api/modules/tickerspring/maker.js +1 -1
  251. package/build/dist/api/modules/tickerspring/order-accounting.js +1 -1
  252. package/build/dist/api/modules/tickerspring/research.js +1 -1
  253. package/build/dist/api/modules/tickerspring/strategies.js +1 -1
  254. package/build/dist/api/modules/uniswap/auction-create.js +1 -1
  255. package/build/dist/api/modules/uniswap/auction.js +1 -1
  256. package/build/dist/api/modules/uniswap/batch.js +1 -1
  257. package/build/dist/api/modules/uniswap/common.js +1 -1
  258. package/build/dist/api/modules/uniswap/fees.js +1 -1
  259. package/build/dist/api/modules/uniswap/index.js +1 -1
  260. package/build/dist/api/modules/uniswap/local-guard.js +1 -1
  261. package/build/dist/api/modules/uniswap/oracle.js +1 -1
  262. package/build/dist/api/modules/uniswap/pool-math.js +1 -1
  263. package/build/dist/api/modules/uniswap/pools.js +1 -1
  264. package/build/dist/api/modules/uniswap/position.js +1 -1
  265. package/build/dist/api/modules/uniswap/protocol.js +1 -1
  266. package/build/dist/api/modules/uniswap/quote-guard.js +1 -1
  267. package/build/dist/api/modules/uniswap/stock-prices.d.ts +25 -0
  268. package/build/dist/api/modules/uniswap/stock-prices.js +1 -1
  269. package/build/dist/api/modules/uniswap/stocks.js +1 -1
  270. package/build/dist/api/modules/uniswap/token-jar.js +1 -1
  271. package/build/dist/api/modules/uniswap/trade-batch.js +1 -1
  272. package/build/dist/api/modules/uniswap/trade.js +1 -1
  273. package/build/dist/api/modules/uniswap/v2.js +1 -1
  274. package/build/dist/api/modules/uniswap/v3.js +1 -1
  275. package/build/dist/api/modules/uniswap/v4.js +1 -1
  276. package/build/dist/api/modules/uniswap/wrap.js +1 -1
  277. package/build/dist/api/modules/upoch/index.js +1 -1
  278. package/build/dist/api/modules/upoch/reads.js +1 -1
  279. package/build/dist/api/modules/velora/claims.js +1 -1
  280. package/build/dist/api/modules/velora/delta-reads.js +1 -1
  281. package/build/dist/api/modules/velora/index.js +1 -1
  282. package/build/dist/api/modules/wormhole/index.js +1 -1
  283. package/build/dist/api/modules/wormhole/scan-text.d.ts +1 -1
  284. package/build/dist/api/positions.js +1 -1
  285. package/build/dist/api/pricenote.js +1 -1
  286. package/build/dist/api/prices.js +1 -1
  287. package/build/dist/api/rpc.js +1 -1
  288. package/build/dist/api/send.js +1 -1
  289. package/build/dist/api/signing-registry.js +1 -1
  290. package/build/dist/api/signing.js +1 -1
  291. package/build/dist/api/simulate.js +1 -1
  292. package/build/dist/api/swap.d.ts +2 -0
  293. package/build/dist/api/swap.js +1 -1
  294. package/build/dist/api/tokens.d.ts +9 -1
  295. package/build/dist/api/tokens.js +1 -1
  296. package/build/dist/api/tool-policy.d.ts +1 -0
  297. package/build/dist/api/tool-policy.js +1 -1
  298. package/build/dist/api/universal-router.js +1 -1
  299. package/build/dist/api/usd-estimate.js +1 -1
  300. package/build/dist/chunks/{DMDOSHV7.js → 266VIESP.js} +1 -1
  301. package/build/dist/chunks/{HFVXNKA5.js → 2BM2WX2G.js} +1 -1
  302. package/build/dist/chunks/{HDBZZOHJ.js → 2GYL3N2O.js} +1 -1
  303. package/build/dist/chunks/{OY5W7ZSL.js → 2H2OZE6X.js} +1 -1
  304. package/build/dist/chunks/{E76Z2TT4.js → 2QQ5CGQI.js} +1 -1
  305. package/build/dist/chunks/{4PLLS6CT.js → 2VYA6WIN.js} +1 -1
  306. package/build/dist/chunks/{FRT6AC6M.js → 2ZYFBBOE.js} +1 -1
  307. package/build/dist/chunks/{LCH6F5HT.js → 342OZP53.js} +1 -1
  308. package/build/dist/chunks/{XADHV2DT.js → 35DTANJW.js} +1 -1
  309. package/build/dist/chunks/{4IOHSX3Z.js → 37UBQQWL.js} +1 -1
  310. package/build/dist/chunks/3RGED2KO.js +1 -0
  311. package/build/dist/chunks/{4HQEJHCD.js → 3XIJCHT7.js} +1 -1
  312. package/build/dist/chunks/3XY44BP5.js +1 -0
  313. package/build/dist/chunks/3YNXQ3EZ.js +1 -0
  314. package/build/dist/chunks/{JDHPMS7X.js → 4JU23O3Z.js} +1 -1
  315. package/build/dist/chunks/{Y2QADJOB.js → 4P6DRKY3.js} +1 -1
  316. package/build/dist/chunks/{W3DGFMQE.js → 4RTXP2YP.js} +1 -1
  317. package/build/dist/chunks/{CNDIAF3P.js → 4WYTIM4T.js} +1 -1
  318. package/build/dist/chunks/{HPS4KOU4.js → 52AEVHKJ.js} +1 -1
  319. package/build/dist/chunks/{ZTKT3ZQK.js → 53VBLEYS.js} +1 -1
  320. package/build/dist/chunks/{ADIPEGNN.js → 5AO2QPWE.js} +1 -1
  321. package/build/dist/chunks/{GQITAJVF.js → 5BPFF7NX.js} +1 -1
  322. package/build/dist/chunks/5EQTOA5F.js +1 -0
  323. package/build/dist/chunks/{WAKZWSHB.js → 5KKAN7XQ.js} +1 -1
  324. package/build/dist/chunks/{VVAM3EAK.js → 5N6YJFFA.js} +1 -1
  325. package/build/dist/chunks/{QIB6OMQV.js → 5O67QQIY.js} +1 -1
  326. package/build/dist/chunks/{FAH7FKUT.js → 5UWVXEPD.js} +1 -1
  327. package/build/dist/chunks/{KKTOBXIT.js → 5VA66LFF.js} +1 -1
  328. package/build/dist/chunks/5VKVAUFQ.js +1 -0
  329. package/build/dist/chunks/5Y457HYC.js +1 -0
  330. package/build/dist/chunks/627SGCTU.js +1 -0
  331. package/build/dist/chunks/64LAWFBE.js +1 -0
  332. package/build/dist/chunks/{6F527FLN.js → 6HNQAYBM.js} +1 -1
  333. package/build/dist/chunks/{FUP53K6G.js → 6LDC5D2S.js} +1 -1
  334. package/build/dist/chunks/6RVAV6BB.js +1 -0
  335. package/build/dist/chunks/{WSILNJS2.js → 6STUQOFL.js} +1 -1
  336. package/build/dist/chunks/{4Z3IGMU6.js → 7AYP4ATZ.js} +1 -1
  337. package/build/dist/chunks/{YGW4ODAP.js → 7EPU3XGY.js} +1 -1
  338. package/build/dist/chunks/7GL547YZ.js +1 -0
  339. package/build/dist/chunks/{E47UYYK4.js → 7KK3OC7Q.js} +1 -1
  340. package/build/dist/chunks/{IZP3EKKS.js → 7PBCV7VS.js} +1 -1
  341. package/build/dist/chunks/{A3BJSQ23.js → 7VU5VCTL.js} +1 -1
  342. package/build/dist/chunks/{Z7FGEWO2.js → 7WXAS54T.js} +1 -1
  343. package/build/dist/chunks/{DRLBTB4E.js → A72ADVYF.js} +1 -1
  344. package/build/dist/chunks/{ANIF3JMV.js → AG66NM3J.js} +1 -1
  345. package/build/dist/chunks/AODUTN65.js +1 -0
  346. package/build/dist/chunks/{DBOGRUPS.js → AONO47JX.js} +1 -1
  347. package/build/dist/chunks/{2I7XHRTI.js → AOTTQPK7.js} +1 -1
  348. package/build/dist/chunks/{JTPHZCO3.js → AQJLEG6B.js} +1 -1
  349. package/build/dist/chunks/AZBTNUXF.js +1 -0
  350. package/build/dist/chunks/B4U43D5Z.js +1 -0
  351. package/build/dist/chunks/B5B7U3NZ.js +1 -0
  352. package/build/dist/chunks/{ZX43P4BK.js → B75SS7H6.js} +1 -1
  353. package/build/dist/chunks/{GBIBRYOV.js → B7HVPHSS.js} +1 -1
  354. package/build/dist/chunks/{LT5P6PZW.js → B7WZJHIJ.js} +1 -1
  355. package/build/dist/chunks/{3A2IKFTV.js → BIFANUTV.js} +1 -1
  356. package/build/dist/chunks/BM4KHOFB.js +1 -0
  357. package/build/dist/chunks/{ZVY7GGSP.js → BW755PNH.js} +1 -1
  358. package/build/dist/chunks/{VXCGMALF.js → BWE5PXRE.js} +1 -1
  359. package/build/dist/chunks/{7U62MMUQ.js → BY2OWKZB.js} +1 -1
  360. package/build/dist/chunks/{F7MGYRPU.js → CCPG6PRL.js} +1 -1
  361. package/build/dist/chunks/{OI3N4EW4.js → CG7ABZXH.js} +1 -1
  362. package/build/dist/chunks/{S37D7HOK.js → CITHH7NK.js} +1 -1
  363. package/build/dist/chunks/CJMVRV34.js +1 -0
  364. package/build/dist/chunks/{JJSCDDQO.js → CLHA557R.js} +1 -1
  365. package/build/dist/chunks/CQPIR6ER.js +1 -0
  366. package/build/dist/chunks/{MI5HZDMH.js → D6JOXK7Q.js} +1 -1
  367. package/build/dist/chunks/{IZFED3R2.js → DLNDJZR4.js} +1 -1
  368. package/build/dist/chunks/{UUF4Z6K6.js → DUTAMN3F.js} +1 -1
  369. package/build/dist/chunks/{NMJVQX5M.js → DWRRIFXS.js} +1 -1
  370. package/build/dist/chunks/{3ZH5SOC2.js → EFOC337C.js} +1 -1
  371. package/build/dist/chunks/{2PS4GCOZ.js → EKHNXPWO.js} +1 -1
  372. package/build/dist/chunks/EWZFZUVF.js +1 -0
  373. package/build/dist/chunks/EXKV6QJD.js +1 -0
  374. package/build/dist/chunks/{OB7BFDOV.js → EYE3ZAJB.js} +1 -1
  375. package/build/dist/chunks/{MQ5F2VOK.js → EZUQMTLE.js} +1 -1
  376. package/build/dist/chunks/FMEO7RX7.js +1 -0
  377. package/build/dist/chunks/{ZQPC54J5.js → FYWK3UK6.js} +1 -1
  378. package/build/dist/chunks/G53U6Y4L.js +1 -0
  379. package/build/dist/chunks/{O5QTITN6.js → GRHBE4MQ.js} +1 -1
  380. package/build/dist/chunks/GV6FZ6UG.js +1 -0
  381. package/build/dist/chunks/GV6Z3MET.js +1 -0
  382. package/build/dist/chunks/{GK3D7OKG.js → GVCNTGLC.js} +1 -1
  383. package/build/dist/chunks/H5J2LFPZ.js +1 -0
  384. package/build/dist/chunks/{DCGNVMKG.js → HC3QFA5I.js} +1 -1
  385. package/build/dist/chunks/{C76D54YG.js → HGSFRN57.js} +1 -1
  386. package/build/dist/chunks/HJI7KO6F.js +1 -0
  387. package/build/dist/chunks/{G5AMH4IP.js → HN5RBTNE.js} +1 -1
  388. package/build/dist/chunks/{MSRCJ2BS.js → HPBTSJW7.js} +1 -1
  389. package/build/dist/chunks/HPO673QQ.js +1 -0
  390. package/build/dist/chunks/{C57DITTF.js → HTOP2OKU.js} +1 -1
  391. package/build/dist/chunks/{DGDMRATN.js → ICHT3H3W.js} +1 -1
  392. package/build/dist/chunks/IJVBCEA2.js +1 -0
  393. package/build/dist/chunks/ILTGXU6G.js +1 -0
  394. package/build/dist/chunks/{I4473OC6.js → IMD33NQS.js} +1 -1
  395. package/build/dist/chunks/{X24YTJST.js → IY7FWTAL.js} +1 -1
  396. package/build/dist/chunks/{TOIKOIY6.js → J5624CVF.js} +1 -1
  397. package/build/dist/chunks/JCS24YBB.js +1 -0
  398. package/build/dist/chunks/JFYC2LVI.js +1 -0
  399. package/build/dist/chunks/JQVTHPUO.js +1 -0
  400. package/build/dist/chunks/{TGXEKBLV.js → JUVY6PCR.js} +1 -1
  401. package/build/dist/chunks/JYED2PZ3.js +1 -0
  402. package/build/dist/chunks/{KO7ANIKY.js → K3HCSCXE.js} +1 -1
  403. package/build/dist/chunks/{7VH6JQ2H.js → K5C6QBOO.js} +1 -1
  404. package/build/dist/chunks/{W7BFM6CK.js → KAXLZJU6.js} +1 -1
  405. package/build/dist/chunks/{YW4W3LPQ.js → KHLM6NIZ.js} +1 -1
  406. package/build/dist/chunks/{OIQTZOBN.js → KKGHXNM4.js} +1 -1
  407. package/build/dist/chunks/{TZ7S5KRB.js → KW5LJGNY.js} +1 -1
  408. package/build/dist/chunks/{SUNTJ6IU.js → KYANIEPX.js} +1 -1
  409. package/build/dist/chunks/{ZZ6FZGHF.js → L4UFGM7M.js} +1 -1
  410. package/build/dist/chunks/{YWVPK3DV.js → L76P6WIH.js} +1 -1
  411. package/build/dist/chunks/{QMNUB2GM.js → LBT6WR4U.js} +1 -1
  412. package/build/dist/chunks/LD3A2KLN.js +1 -0
  413. package/build/dist/chunks/{WRUTW6CG.js → LFSNAQ7V.js} +1 -1
  414. package/build/dist/chunks/LHC2YV2U.js +1 -0
  415. package/build/dist/chunks/{R66NSNNQ.js → LHVGWNMW.js} +1 -1
  416. package/build/dist/chunks/{RUHNLNVX.js → LOH6LUVT.js} +1 -1
  417. package/build/dist/chunks/{23HNDJ76.js → M2SWILNG.js} +1 -1
  418. package/build/dist/chunks/{IT2JLILU.js → MFKDNAHB.js} +1 -1
  419. package/build/dist/chunks/MFQTBUSD.js +1 -0
  420. package/build/dist/chunks/MFRKZOU4.js +1 -0
  421. package/build/dist/chunks/{V4UJMUIB.js → MLN5KTG7.js} +1 -1
  422. package/build/dist/chunks/{TJU644I7.js → MSIT5Q3M.js} +1 -1
  423. package/build/dist/chunks/{S4JUFCT4.js → MSQNOK3I.js} +1 -1
  424. package/build/dist/chunks/NCCKCGKL.js +1 -0
  425. package/build/dist/chunks/NGHRUNXO.js +1 -0
  426. package/build/dist/chunks/{N65J3L2H.js → NIGRNLNM.js} +1 -1
  427. package/build/dist/chunks/{DXAPKN7H.js → NLC36QHL.js} +1 -1
  428. package/build/dist/chunks/NUTTPUYJ.js +1 -0
  429. package/build/dist/chunks/{QMIH6HXH.js → NWW6GY5E.js} +1 -1
  430. package/build/dist/chunks/{O4S6XAYV.js → O7L55XM3.js} +1 -1
  431. package/build/dist/chunks/{NAO7VWZF.js → OCIEVYPR.js} +1 -1
  432. package/build/dist/chunks/{4NBXBKOX.js → OD7CY6BY.js} +1 -1
  433. package/build/dist/chunks/{RUTSEGGD.js → OHZHQSCA.js} +1 -1
  434. package/build/dist/chunks/{A4K5GXVO.js → ORKXBYVC.js} +1 -1
  435. package/build/dist/chunks/OUXPOFY2.js +1 -0
  436. package/build/dist/chunks/{NIWAVMDR.js → OWHXYE2G.js} +1 -1
  437. package/build/dist/chunks/PD5NXIRT.js +1 -0
  438. package/build/dist/chunks/{TXGZ6NWN.js → PG7HZIZL.js} +1 -1
  439. package/build/dist/chunks/PLEJPTTK.js +1 -0
  440. package/build/dist/chunks/{VREGY7E6.js → PMFR47H3.js} +1 -1
  441. package/build/dist/chunks/{ZXRIJG6H.js → PX2G2H6G.js} +1 -1
  442. package/build/dist/chunks/QAAKUIWE.js +1 -0
  443. package/build/dist/chunks/{YXXK6EPI.js → QBHY2QRC.js} +1 -1
  444. package/build/dist/chunks/{WQ2XTDHO.js → QCPJZBEO.js} +1 -1
  445. package/build/dist/chunks/{ELHRXA5U.js → QFK335LC.js} +1 -1
  446. package/build/dist/chunks/{3PHJUFU2.js → QFUSCK5C.js} +1 -1
  447. package/build/dist/chunks/QGO4EKXZ.js +1 -0
  448. package/build/dist/chunks/{IPU656WB.js → QKH7ED6B.js} +1 -1
  449. package/build/dist/chunks/{XW3VGWXK.js → QMWHQRYC.js} +1 -1
  450. package/build/dist/chunks/{USGMGKAG.js → QXBQ7WPB.js} +1 -1
  451. package/build/dist/chunks/{MQXSCNUL.js → R5UOFPDO.js} +1 -1
  452. package/build/dist/chunks/{MDLJFCT4.js → R5Z4HPCA.js} +1 -1
  453. package/build/dist/chunks/{A4FLWHLP.js → REXGROOD.js} +1 -1
  454. package/build/dist/chunks/RKJFSDGV.js +1 -0
  455. package/build/dist/chunks/RKS3M7L5.js +1 -0
  456. package/build/dist/chunks/{GDOHHXNH.js → RLX6YTNT.js} +1 -1
  457. package/build/dist/chunks/{PV7FEVBD.js → RWEA4SWP.js} +1 -1
  458. package/build/dist/chunks/{ZKBOPZH5.js → RWUF6T4I.js} +1 -1
  459. package/build/dist/chunks/{USEF3QKG.js → S432S6NA.js} +1 -1
  460. package/build/dist/chunks/{XTXXWRN2.js → SDDYM2H3.js} +1 -1
  461. package/build/dist/chunks/{2OVJ2BTJ.js → SEXKWYUM.js} +1 -1
  462. package/build/dist/chunks/TKJ4GFUP.js +1 -0
  463. package/build/dist/chunks/{BSX4LFYI.js → TNHU5UBQ.js} +1 -1
  464. package/build/dist/chunks/{PDPTJMTJ.js → TT2ST3Q3.js} +1 -1
  465. package/build/dist/chunks/TTBB6EFN.js +1 -0
  466. package/build/dist/chunks/{OVM4QIET.js → U4MSIH4G.js} +1 -1
  467. package/build/dist/chunks/{LKUZAJPZ.js → UCMOQAVD.js} +1 -1
  468. package/build/dist/chunks/{OB3YMTDI.js → UIVOYAO2.js} +1 -1
  469. package/build/dist/chunks/{3YH5B5NQ.js → UL4DY6GX.js} +1 -1
  470. package/build/dist/chunks/{XRDLMTBJ.js → UMY6SP7C.js} +1 -1
  471. package/build/dist/chunks/UNBRUWSV.js +1 -0
  472. package/build/dist/chunks/{LGLWEGPY.js → UPX3OWKA.js} +1 -1
  473. package/build/dist/chunks/{MJGEGNDU.js → UYYYSFMQ.js} +1 -1
  474. package/build/dist/chunks/{4RCYYN6O.js → V7HTGO23.js} +1 -1
  475. package/build/dist/chunks/{O2QBSINK.js → V7P4PCLL.js} +1 -1
  476. package/build/dist/chunks/{FRVCSDKU.js → VMSGNN3D.js} +1 -1
  477. package/build/dist/chunks/VQMBPY2P.js +1 -0
  478. package/build/dist/chunks/{HZSYMGJ2.js → VS7ZA4OF.js} +1 -1
  479. package/build/dist/chunks/{BJ2U2VXJ.js → VTWAVH74.js} +1 -1
  480. package/build/dist/chunks/W3M4KAPX.js +1 -0
  481. package/build/dist/chunks/{LZM3DO5Q.js → W5GWK72I.js} +1 -1
  482. package/build/dist/chunks/{65OITTDL.js → W73SLWBT.js} +1 -1
  483. package/build/dist/chunks/{2FOI2625.js → W7BTXU3F.js} +1 -1
  484. package/build/dist/chunks/{6LVHN33V.js → WADRRW3E.js} +1 -1
  485. package/build/dist/chunks/{ZXFJKW6H.js → WG7PMGTJ.js} +1 -1
  486. package/build/dist/chunks/{N742W5KX.js → WRNPYW47.js} +1 -1
  487. package/build/dist/chunks/{XL3W7DAQ.js → X3BB6WME.js} +1 -1
  488. package/build/dist/chunks/{SX5YNFHG.js → XD4JA43O.js} +1 -1
  489. package/build/dist/chunks/{GBPB7JIB.js → XSQJOOEY.js} +1 -1
  490. package/build/dist/chunks/{3BQ5XHDJ.js → Y7SKGRWC.js} +1 -1
  491. package/build/dist/chunks/{R73R4KN3.js → YBLJ2MCR.js} +1 -1
  492. package/build/dist/chunks/{6CKCZJ3F.js → YDJHXSS7.js} +1 -1
  493. package/build/dist/chunks/{GKUPC4DO.js → YLU5JVRI.js} +1 -1
  494. package/build/dist/chunks/YR6Y6UIR.js +1 -0
  495. package/build/dist/chunks/{FHB7QYJO.js → Z5WRTISY.js} +1 -1
  496. package/build/dist/chunks/ZB67QDN2.js +1 -0
  497. package/build/dist/chunks/{O4P5IQCP.js → ZRG34Y7Q.js} +1 -1
  498. package/build/dist/chunks/ZSGW2ZSO.js +1 -0
  499. package/build/dist/chunks/{HRAHGYNK.js → ZTNBX4VH.js} +1 -1
  500. package/package.json +1 -1
  501. package/build/dist/chunks/5H7NVE6O.js +0 -1
  502. package/build/dist/chunks/7OOCAZBE.js +0 -1
  503. package/build/dist/chunks/7TRO6MBQ.js +0 -1
  504. package/build/dist/chunks/DFM4T6ZE.js +0 -1
  505. package/build/dist/chunks/FCVH4FYH.js +0 -1
  506. package/build/dist/chunks/GDUKZYE2.js +0 -1
  507. package/build/dist/chunks/GYPMUYB5.js +0 -1
  508. package/build/dist/chunks/J7OZLXSG.js +0 -1
  509. package/build/dist/chunks/JFC2QCMW.js +0 -1
  510. package/build/dist/chunks/M267JEDO.js +0 -1
  511. package/build/dist/chunks/M6JNGU4E.js +0 -1
  512. package/build/dist/chunks/M7OVMIIE.js +0 -1
  513. package/build/dist/chunks/MQK6OP7S.js +0 -1
  514. package/build/dist/chunks/N624NR7Y.js +0 -1
  515. package/build/dist/chunks/OSMOBKRQ.js +0 -1
  516. package/build/dist/chunks/Q3Q3YHEX.js +0 -1
  517. package/build/dist/chunks/QBNASL3T.js +0 -1
  518. package/build/dist/chunks/QQD4PV64.js +0 -1
  519. package/build/dist/chunks/RN3WUJIO.js +0 -1
  520. package/build/dist/chunks/RP5VCG54.js +0 -1
  521. package/build/dist/chunks/TI727O2H.js +0 -1
  522. package/build/dist/chunks/UHIJMDD2.js +0 -1
  523. package/build/dist/chunks/W32UECOL.js +0 -1
  524. package/build/dist/chunks/WWNAGOCD.js +0 -1
  525. package/build/dist/chunks/XWC6IC5E.js +0 -1
@@ -1 +1 @@
1
- import{b as W}from"./USGMGKAG.js";import{b as N}from"./N624NR7Y.js";import{a as k}from"./66F5ZH34.js";import{c as b,i as q,l as j}from"./NWNYJ26T.js";import{b as l}from"./TI727O2H.js";import{a as o}from"./XSD5NL7J.js";import{a as R}from"./JXOEJPJ4.js";import{encodeFunctionData as ye,erc20Abi as X,getAddress as S,zeroAddress as U}from"viem";var v={locker:{address:"0xd0f7d8c6e9f6d80c297bebe4f7fd1b9c8125c32f",source:"https://sourcify.dev/server/v2/contract/4663/0xd0f7d8c6e9f6d80c297bebe4f7fd1b9c8125c32f?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-07-08T19:01:30Z",fetchedAt:"2026-10-31",abi:[{name:"Extended",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newUnlockTime",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"LockOwnershipTransferred",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Locked",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"unlockTime",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Withdrawn",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"extend",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newUnlockTime",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"fee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"getLock",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"owner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"},{name:"withdrawn",type:"bool",internalType:"bool"}],internalType:"struct RobinhoodLocker.Lock"}],stateMutability:"view"},{name:"isUnlocked",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"lock",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"lockedAmount",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"locks",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"owner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"},{name:"withdrawn",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"locksByOwner",type:"function",inputs:[{name:"o",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"locksByToken",type:"function",inputs:[{name:"t",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"nextLockId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"setAdmin",type:"function",inputs:[{name:"a",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFee",type:"function",inputs:[{name:"_fee",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"timeRemaining",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"totalLocks",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"transferLockOwnership",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdraw",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"}]},burner:{address:"0x6bf43ca706faa8ea46803299c191484e82280652",source:"https://sourcify.dev/server/v2/contract/4663/0x6bf43ca706faa8ea46803299c191484e82280652?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-07-22T23:28:15Z",fetchedAt:"2026-10-31",abi:[{name:"Burned",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"burner",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"DEAD",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"burn",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"burns",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"burner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"timestamp",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"burnsByBurner",type:"function",inputs:[{name:"b",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"burnsByToken",type:"function",inputs:[{name:"t",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"fee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"getBurn",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"burner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"timestamp",type:"uint256",internalType:"uint256"}],internalType:"struct RobinhoodBurner.Burn"}],stateMutability:"view"},{name:"nextBurnId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"setAdmin",type:"function",inputs:[{name:"a",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFee",type:"function",inputs:[{name:"_fee",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"totalBurnedOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"totalBurns",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}]},vesting:{address:"0x910e19bcC4bce46999994Ed7297E0Fc4431ec72E",source:"https://sourcify.dev/server/v2/contract/4663/0x910e19bcC4bce46999994Ed7297E0Fc4431ec72E?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-07-27T00:28:59Z",fetchedAt:"2026-10-31",abi:[{name:"AdminTransferStarted",type:"event",inputs:[{name:"current",type:"address",indexed:!0,internalType:"address"},{name:"pending",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AdminTransferred",type:"event",inputs:[{name:"previous",type:"address",indexed:!0,internalType:"address"},{name:"current",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"BeneficiaryTransferred",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Claimed",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"beneficiary",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeCollectorChanged",type:"event",inputs:[{name:"collector",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"FeesWithdrawn",type:"event",inputs:[{name:"collector",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"VestingCreated",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"beneficiary",type:"address",indexed:!0,internalType:"address"},{name:"creator",type:"address",indexed:!1,internalType:"address"},{name:"total",type:"uint256",indexed:!1,internalType:"uint256"},{name:"start",type:"uint64",indexed:!1,internalType:"uint64"},{name:"cliff",type:"uint64",indexed:!1,internalType:"uint64"},{name:"end",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{name:"MAX_BATCH",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_FEE",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MIN_DURATION",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"acceptAdmin",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"accruedFees",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"claim",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"claimable",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"create",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"beneficiary",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"start",type:"uint64",internalType:"uint64"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"end",type:"uint64",internalType:"uint64"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"createMany",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"beneficiaries",type:"address[]",internalType:"address[]"},{name:"amounts",type:"uint256[]",internalType:"uint256[]"},{name:"start",type:"uint64",internalType:"uint64"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"end",type:"uint64",internalType:"uint64"}],outputs:[{name:"firstId",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"fee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"getSchedule",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"creator",type:"address",internalType:"address"},{name:"start",type:"uint64",internalType:"uint64"},{name:"beneficiary",type:"address",internalType:"address"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"token",type:"address",internalType:"address"},{name:"end",type:"uint64",internalType:"uint64"},{name:"total",type:"uint128",internalType:"uint128"},{name:"claimed",type:"uint128",internalType:"uint128"}],internalType:"struct RobinhoodVesting.Schedule"}],stateMutability:"view"},{name:"nextScheduleId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pendingAdmin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"schedules",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"creator",type:"address",internalType:"address"},{name:"start",type:"uint64",internalType:"uint64"},{name:"beneficiary",type:"address",internalType:"address"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"token",type:"address",internalType:"address"},{name:"end",type:"uint64",internalType:"uint64"},{name:"total",type:"uint128",internalType:"uint128"},{name:"claimed",type:"uint128",internalType:"uint128"}],stateMutability:"view"},{name:"schedulesByBeneficiary",type:"function",inputs:[{name:"b",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"schedulesByCreator",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"schedulesByToken",type:"function",inputs:[{name:"token",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"setFee",type:"function",inputs:[{name:"_fee",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"totalSchedules",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"transferAdmin",type:"function",inputs:[{name:"newAdmin",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"transferBeneficiary",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newBeneficiary",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdrawFees",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"}]},airdrop:{address:"0x6B1fE7b821001144Ee74EEA258b0AafdE20102E8",source:"https://sourcify.dev/server/v2/contract/4663/0x6B1fE7b821001144Ee74EEA258b0AafdE20102E8?fields=abi,sources,compilation",match:"match",verifiedAt:"2026-07-30T16:48:51Z",fetchedAt:"2026-10-31",abi:[{name:"AdminTransferStarted",type:"event",inputs:[{name:"current",type:"address",indexed:!0,internalType:"address"},{name:"pending",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AdminTransferred",type:"event",inputs:[{name:"previous",type:"address",indexed:!0,internalType:"address"},{name:"current",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AirdropCreated",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"merkleRoot",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"total",type:"uint256",indexed:!1,internalType:"uint256"},{name:"maxClaims",type:"uint32",indexed:!1,internalType:"uint32"},{name:"endTime",type:"uint64",indexed:!1,internalType:"uint64"},{name:"listURI",type:"string",indexed:!1,internalType:"string"}],anonymous:!1},{name:"Claimed",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"index",type:"uint256",indexed:!1,internalType:"uint256"},{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"feeBase",type:"uint256",indexed:!1,internalType:"uint256"},{name:"feePerWallet",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeCollectorChanged",type:"event",inputs:[{name:"collector",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"FeesWithdrawn",type:"event",inputs:[{name:"collector",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Swept",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"MAX_FEE",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_RECIPIENTS",type:"function",inputs:[],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{name:"MAX_URI",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MIN_WINDOW",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"acceptAdmin",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"accruedFees",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"airdrops",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"creator",type:"address",internalType:"address"},{name:"endTime",type:"uint64",internalType:"uint64"},{name:"maxClaims",type:"uint32",internalType:"uint32"},{name:"token",type:"address",internalType:"address"},{name:"claims",type:"uint32",internalType:"uint32"},{name:"swept",type:"bool",internalType:"bool"},{name:"merkleRoot",type:"bytes32",internalType:"bytes32"},{name:"total",type:"uint128",internalType:"uint128"},{name:"remaining",type:"uint128",internalType:"uint128"}],stateMutability:"view"},{name:"claim",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"},{name:"account",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"proof",type:"bytes32[]",internalType:"bytes32[]"}],outputs:[],stateMutability:"nonpayable"},{name:"create",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"merkleRoot",type:"bytes32",internalType:"bytes32"},{name:"total",type:"uint256",internalType:"uint256"},{name:"maxClaims",type:"uint32",internalType:"uint32"},{name:"endTime",type:"uint64",internalType:"uint64"},{name:"uri",type:"string",internalType:"string"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"feeBase",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"feePerWallet",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"getAirdrop",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"creator",type:"address",internalType:"address"},{name:"endTime",type:"uint64",internalType:"uint64"},{name:"maxClaims",type:"uint32",internalType:"uint32"},{name:"token",type:"address",internalType:"address"},{name:"claims",type:"uint32",internalType:"uint32"},{name:"swept",type:"bool",internalType:"bool"},{name:"merkleRoot",type:"bytes32",internalType:"bytes32"},{name:"total",type:"uint128",internalType:"uint128"},{name:"remaining",type:"uint128",internalType:"uint128"}],internalType:"struct RobinhoodAirdrop.Airdrop"}],stateMutability:"view"},{name:"isClaimed",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"listURI",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{name:"nextAirdropId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pendingAdmin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"quote",type:"function",inputs:[{name:"maxClaims",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"setFee",type:"function",inputs:[{name:"_feeBase",type:"uint256",internalType:"uint256"},{name:"_feePerWallet",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"sweep",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"totalAirdrops",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"transferAdmin",type:"function",inputs:[{name:"newAdmin",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdrawFees",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"}]},liquidityLocker:{address:"0x91Aa2dA1956C77F8448E18DCaf53383bCc658e67",source:"https://sourcify.dev/server/v2/contract/4663/0x91Aa2dA1956C77F8448E18DCaf53383bCc658e67?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-10-04T15:10:02Z",fetchedAt:"2026-10-31",abi:[{name:"AdminTransferStarted",type:"event",inputs:[{name:"next",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AdminTransferred",type:"event",inputs:[{name:"previous",type:"address",indexed:!0,internalType:"address"},{name:"next",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"CollectFailed",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{name:"CollectFeeChanged",type:"event",inputs:[{name:"bps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{name:"Collected",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount0",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amount1",type:"uint256",indexed:!1,internalType:"uint256"},{name:"cut0",type:"uint256",indexed:!1,internalType:"uint256"},{name:"cut1",type:"uint256",indexed:!1,internalType:"uint256"},{name:"byAdmin",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{name:"CutDeferred",type:"event",inputs:[{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"CutSwept",type:"event",inputs:[{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"EthClaimed",type:"event",inputs:[{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"EthCredited",type:"event",inputs:[{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Extended",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newUnlockTime",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeRecipientChanged",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"recipient",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"FeeVaultChanged",type:"event",inputs:[{name:"vault",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"FixedFeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"HookAllowedChanged",type:"event",inputs:[{name:"hook",type:"address",indexed:!0,internalType:"address"},{name:"allowed",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{name:"KeeperChanged",type:"event",inputs:[{name:"keeper",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"LockOwnershipTransferred",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Locked",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"manager",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!1,internalType:"uint256"},{name:"token0",type:"address",indexed:!1,internalType:"address"},{name:"token1",type:"address",indexed:!1,internalType:"address"},{name:"pool",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"unlockTime",type:"uint256",indexed:!1,internalType:"uint256"},{name:"collectFeeBps",type:"uint16",indexed:!1,internalType:"uint16"},{name:"hookVerified",type:"bool",indexed:!1,internalType:"bool"},{name:"feeRecipient",type:"address",indexed:!1,internalType:"address"},{name:"fixedFeePaid",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"PausedChanged",type:"event",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{name:"PreLockFeesReturned",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"amount0",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amount1",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Rescued",type:"event",inputs:[{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"RevenueSinkChanged",type:"event",inputs:[{name:"sink",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"ShareRedirected",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"StrayPositionReturned",type:"event",inputs:[{name:"manager",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Withdrawn",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"BATCH_GAS_PER_LOCK",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_BATCH",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_COLLECT_FEE_BPS",type:"function",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"MAX_FIXED_FEE",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_LOCK_DURATION",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MIN_COLLECT_FEE_BPS",type:"function",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"V3_FACTORY",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"V3_POSITIONS",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IV3PositionManager"}],stateMutability:"view"},{name:"V4_POOL_MANAGER",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"V4_POSITIONS",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IV4PositionManager"}],stateMutability:"view"},{name:"acceptAdmin",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"adminCollect",type:"function",inputs:[{name:"ids",type:"uint256[]",internalType:"uint256[]"}],outputs:[],stateMutability:"nonpayable"},{name:"claimOwedEth",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"claimOwedEthTo",type:"function",inputs:[{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"collect",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"collectFeeBps",type:"function",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"collectMany",type:"function",inputs:[{name:"ids",type:"uint256[]",internalType:"uint256[]"}],outputs:[],stateMutability:"nonpayable"},{name:"collectOneIsolated",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"byAdmin",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{name:"cutOf",type:"function",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"bps",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{name:"extend",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newUnlockTime",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"feeVault",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"fixedFee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"getLock",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"owner",type:"address",internalType:"address"},{name:"unlockTime",type:"uint40",internalType:"uint40"},{name:"collectFeeBps",type:"uint16",internalType:"uint16"},{name:"isV4",type:"bool",internalType:"bool"},{name:"hookVerified",type:"bool",internalType:"bool"},{name:"withdrawn",type:"bool",internalType:"bool"},{name:"feeRecipient",type:"address",internalType:"address"},{name:"token0",type:"address",internalType:"address"},{name:"token1",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],internalType:"struct HoodLockLPLocker.Lock"}],stateMutability:"view"},{name:"hookAllowed",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"isUnlocked",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"keeper",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"lock",type:"function",inputs:[{name:"manager",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"},{name:"feeRecipient",type:"address",internalType:"address"},{name:"acceptUnverifiedHook",type:"bool",internalType:"bool"},{name:"maxCollectFeeBps",type:"uint16",internalType:"uint16"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"lockIdOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"locksOf",type:"function",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"name",type:"function",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{name:"nextLockId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"onERC721Received",type:"function",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes4",internalType:"bytes4"}],stateMutability:"pure"},{name:"owedEth",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"paused",type:"function",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"pendingAdmin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"pendingCut",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pushOwedEth",type:"function",inputs:[{name:"who",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"rescueERC20",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"returnStrayPosition",type:"function",inputs:[{name:"manager",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"revenueSink",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"setCollectFeeBps",type:"function",inputs:[{name:"bps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeRecipient",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeVault",type:"function",inputs:[{name:"vault",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFixedFee",type:"function",inputs:[{name:"fee_",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setHookAllowed",type:"function",inputs:[{name:"hook",type:"address",internalType:"address"},{name:"allowed",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{name:"setKeeper",type:"function",inputs:[{name:"k",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setPaused",type:"function",inputs:[{name:"p",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{name:"setRevenueSink",type:"function",inputs:[{name:"sink",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"sweepPendingCut",type:"function",inputs:[{name:"token",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"transferAdmin",type:"function",inputs:[{name:"next",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"transferLockOwnership",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdraw",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"}]}};var _e=v,Ie=S(v.vesting.address),Ee=["hoodlock_read","hoodlock_record","hoodlock_vesting_status","hoodlock_public"],Le=["hoodlock_vesting_create","hoodlock_vesting_claim","hoodlock_vesting_transfer","hoodlock_withdraw","hoodlock_extend","hoodlock_transfer_lock","hoodlock_set_fee_recipient","hoodlock_collect","hoodlock_airdrop_sweep","hoodlock_recover","hoodlock_admin"],C=k("Decimal record ID, including zero for token locks, burns, vesting and airdrops. LP IDs start at one."),le={id:C,kind:{type:"string",enum:["token","v2","v3","v4"],description:"Lock type: token = ERC-20 token lock; v2 = V2 LP-token lock; v3 or v4 = Uniswap v3 or v4 liquidity-position (NFT) lock."}},Y=(1n<<256n)-1n;function m(e,n,t=256){if(typeof e!="string"||!/^\d+$/.test(e))throw new o(`${n} must be a decimal base-unit string.`);let a=BigInt(e);if(a>(1n<<BigInt(t))-1n)throw new o(`${n} exceeds uint${t}.`);return a}function f(e,n,t=!1){let a=q(e,`Provide a valid ${n} address.`);return t?a:j(a,`${n} must not be the zero address.`)}function ce(e,n){let t=m(e,n);if(t===0n||t===Y)throw new o(`${n} must be a positive exact amount, never unlimited.`);return t}function Q(e){if(typeof e!="string"||!Object.hasOwn(v,e))throw new o("Choose locker, burner, vesting, airdrop or liquidityLocker.");return e}function B(e){return v[e].abi}function h(e){return S(v[e].address)}function D(e,n){let t=B(e).find(a=>a.type==="function"&&a.name===n);if(!t)throw new o(`No published HoodLock ${e}.${n} function exists.`);return t}async function p(e,n,t,a=[]){return e.clientFor(l).readContract({address:h(n),abi:B(n),functionName:t,args:a})}function F(e,n){if(Array.isArray(e))return Object.fromEntries(n.map((t,a)=>[t,e[a]]));if(e&&typeof e=="object")return e;throw new o("HoodLock returned an invalid record. Retry the chain read.")}var me=["owner","token","amount","unlockTime","withdrawn"],fe=["owner","unlockTime","collectFeeBps","isV4","hookVerified","withdrawn","feeRecipient","token0","token1","tokenId"],ee=["creator","start","beneficiary","cliff","token","end","total","claimed"],K=["creator","endTime","maxClaims","token","claims","swept","merkleRoot","total","remaining"];function x(e){return JSON.parse(JSON.stringify(e,(n,t)=>typeof t=="bigint"?t.toString():t))}async function g(e,n){let t=f(n,"token",!0);if(t===U)return N;let a=e.clientFor(l),[i,s]=await Promise.all([a.readContract({address:t,abi:X,functionName:"symbol"}),a.readContract({address:t,abi:X,functionName:"decimals"})]);if(!Number.isInteger(s)||s<0||s>255)throw new o("Token decimals are invalid.");return{address:t,chainId:l,symbol:R(String(i)),decimals:s}}function _(e,n,t="current owner"){if(f(e,t)!==S(n))throw new o(`This wallet is not the ${t}.`)}function z(e){if(e.withdrawn)throw new o("This HoodLock lock was already withdrawn.")}function Z(e){if(!["token","v2","v3","v4"].includes(String(e.kind)))throw new o("Provide kind: token, v2, v3 or v4.");return e.kind==="token"||e.kind==="v2"?"locker":"liquidityLocker"}async function H(e,n,t){return F(await p(e,n,"getLock",[t]),n==="locker"?me:fe)}function G(e,n){if((e.kind==="v3"||e.kind==="v4")&&!!n.isV4!=(e.kind==="v4"))throw new o("Lock kind disagrees with the on-chain NFT version.")}async function T(e,n,t,a,i,s,r=0n,u=[]){let d=e.unsignedTx({to:h(t),chainId:l,value:r.toString(),data:ye({abi:B(t),functionName:a,args:i}),description:s}),c=await e.preview([...u,d],S(n));return{txs:c.txs,preview:c,summary:s,contract:h(t),chainId:l,method:a,arguments:x(i)}}function w(e,n,t,a,i){return{name:n,inputSchema:{type:"object",properties:t,required:a,additionalProperties:!1},async execute(s,r){try{return await i(s,S(r))}catch(u){throw new o(e.plainError(u))}}}}async function Te(e,n,t){let a=f(n.token,"token"),i=m(n.start,"start",64),s=m(n.cliff,"cliff",64),r=m(n.end,"end",64),[u,d,c,y,M]=await Promise.all([e.clientFor(l).getBlock(),p(e,"vesting","fee"),p(e,"vesting","MIN_DURATION"),p(e,"vesting","MAX_BATCH"),g(e,a)]);if(i>s||s>r||r<=i)throw new o("Vesting dates require start <= cliff <= end and end > start.");if(r>=1000000000000n||r<=u.timestamp+BigInt(String(c))+30n)throw new o("Vesting end must be Unix seconds, more than 24 hours plus a 30-second inclusion margin after the current block.");let I=n.entries!==void 0;if(I&&(n.beneficiary!==void 0||n.amount!==void 0))throw new o("Use entries or beneficiary/amount, not both.");if(I&&(!Array.isArray(n.entries)||n.entries.length===0||n.entries.length>Number(y)))throw new o(`Provide between 1 and ${String(y)} vesting entries.`);let L=I?n.entries:[{beneficiary:n.beneficiary,amount:n.amount}],P=L.map(A=>f(A?.beneficiary,"beneficiary")),O=L.map(A=>ce(A?.amount,"amount"));if(O.some(A=>A>=1n<<128n))throw new o("Each vesting amount must fit uint128.");let $=O.reduce((A,de)=>A+de,0n);if($>=Y)throw new o("Vesting total exceeds the exact approval range.");let E=BigInt(String(d))*BigInt(L.length);if(n.maxFee!==void 0&&E>m(n.maxFee,"maxFee"))throw new o("Live vesting fee exceeds maxFee.");let re=I?"createMany":"create",oe=I?[a,P,O,i,s,r]:[a,P[0],O[0],i,s,r],ue=`Create ${L.length} irrevocable HoodLock vesting schedule(s): ${$} ${M.symbol} base units (${a}, decimals ${M.decimals}) for ${P.join(", ")}; start ${i}, cliff ${s}, end ${r}; exact fee ${E} wei. Creator cannot cancel or recover principal. Recorded totals use tokens actually received; preserve mined schedule IDs.`;return W(e,{...await T(e,t,"vesting",re,oe,ue,E,[e.approval(a,h("vesting"),$.toString(),l)]),token:M,amount:$.toString(),fee:{token:N,amount:E.toString()}},h("vesting"),E)}async function te(e,n){let t=F(await p(e,"vesting","getSchedule",[n]),ee);if(BigInt(String(t.total))===0n)throw new o("No HoodLock vesting schedule exists for this ID.");let[a,i]=await Promise.all([p(e,"vesting","claimable",[n]),g(e,t.token)]);return{id:n.toString(),contract:h("vesting"),chainId:l,schedule:x(t),token:i,claimable:String(a),remaining:(BigInt(String(t.total))-BigInt(String(t.claimed))).toString(),proofUrl:`https://hoodlock.tech/proof/vesting/${n}`}}async function ne(e,n,t){let a=n.account===void 0?t:f(n.account,"account"),i=n.role??"beneficiary";if(!["beneficiary","creator","token"].includes(String(i)))throw new o("Choose beneficiary, creator or token for vesting discovery.");let r=await p(e,"vesting",i==="creator"?"schedulesByCreator":i==="token"?"schedulesByToken":"schedulesByBeneficiary",[a]),u=[];for(let d of[...new Set(r.map(String))]){let c=await te(e,BigInt(d));(i!=="beneficiary"||f(c.schedule.beneficiary,"beneficiary")===a)&&u.push(c)}return{account:a,role:i,schedules:u,summary:`Found ${u.length} HoodLock vesting schedule(s); completed schedules remain visible.`}}async function J(e,n,t){return n.id===void 0?ne(e,n,t):te(e,m(n.id,"id"))}function Oe(e){return{tools:[w(e,"hoodlock_vesting_create",{token:{...b,description:"Address of the ERC-20 token to vest. The wallet approves and transfers it to the vesting contract."},beneficiary:{...b,description:"Address that receives the vested tokens (single schedule). Use this with amount, or use entries, not both."},amount:k('Amount of the token to vest, in base units of that token (read its decimals). Example: "1000000000000000000" = 1 token at 18 decimals. Single schedule only.'),entries:{type:"array",minItems:1,maxItems:200,description:"Batch of schedules sharing one token, start, cliff and end. Use this instead of beneficiary and amount.",items:{type:"object",properties:{beneficiary:{...b,description:"Address that receives this entry's vested tokens."},amount:k('Amount of the token vested to this beneficiary, in base units of that token (read its decimals). Example: "1000000000000000000" = 1 token at 18 decimals.')},required:["beneficiary","amount"],additionalProperties:!1}},start:k('Vesting start time in Unix seconds, as a decimal string. Example: "1800000000".'),cliff:k("Cliff time in Unix seconds, between start and end; nothing is claimable before it."),end:k("Vesting end time in Unix seconds, more than 24 hours after the current block."),maxFee:k("Optional cap on the total creation fee in wei of native ETH (1 ETH = 10^18 wei); the call fails if the live fee is higher.")},["token","start","cliff","end"],(t,a)=>Te(e,t,a)),w(e,"hoodlock_vesting_status",{id:C,account:{...b,description:"Address to list vesting schedules for when no id is given. Defaults to the connected wallet."},role:{type:"string",enum:["beneficiary","creator","token"],description:"How account relates to the schedules when listing: beneficiary (default), creator, or the vested token address."}},[],(t,a)=>J(e,t,a)),...["claim","transfer"].map(t=>w(e,`hoodlock_vesting_${t}`,{id:C,...t==="transfer"?{beneficiary:{...b,description:"Address of the new beneficiary who takes over the remaining vesting rights."}}:{}},t==="transfer"?["id","beneficiary"]:["id"],async(a,i)=>{let s=m(a.id,"id"),r=F(await p(e,"vesting","getSchedule",[s]),ee);if(_(r.beneficiary,i,"current beneficiary"),t==="transfer"){let c=f(a.beneficiary,"beneficiary");return T(e,i,"vesting","transferBeneficiary",[s,c],`Transfer beneficiary rights for vesting #${s} from ${i} to ${c}. Remaining tokens follow the schedule; creator cannot revoke it.`)}let u=BigInt(String(await p(e,"vesting","claimable",[s])));if(u===0n)throw new o("Nothing is claimable yet; check the cliff and previous claims.");let d=await g(e,r.token);return{...await T(e,i,"vesting","claim",[s],`Claim currently ${u} ${d.symbol} base units from vesting #${s} to current beneficiary ${i}; live inclusion time determines the final amount.`),token:d,amount:u.toString()}})),...["withdraw","extend","transfer_lock","set_fee_recipient"].map(t=>w(e,`hoodlock_${t}`,{...le,...t==="withdraw"?{to:{...b,description:"Address that receives the withdrawn position NFT or LP; defaults to the connected wallet. Token locks withdraw only to the owner."}}:t==="extend"?{unlockTime:k('New unlock time in Unix seconds, later than the current unlock time and in the future (at most 100 years). Example: "1800000000".')}:t==="transfer_lock"?{owner:{...b,description:"Address of the new lock owner, who can withdraw after maturity."}}:{recipient:{...b,description:"Address that receives future collected fees for this NFT lock."}}},["kind","id",...t==="extend"?["unlockTime"]:t==="transfer_lock"?["owner"]:t==="set_fee_recipient"?["recipient"]:[]],async(a,i)=>{let s=Z(a),r=m(a.id,"id"),u=await H(e,s,r);_(u.owner,i),z(u),G(a,u);let d=(await e.clientFor(l).getBlock()).timestamp;if(t==="withdraw"){if(d<BigInt(String(u.unlockTime)))throw new o(`Still locked until Unix ${String(u.unlockTime)}; expiry never withdraws automatically.`);let y=a.to===void 0?i:f(a.to,"withdrawal recipient");if(s==="locker"&&y!==i)throw new o("Token locks withdraw only to the current owner; omit to or use this wallet.");return{...await T(e,i,s,"withdraw",s==="locker"?[r]:[r,y],`Withdraw mature HoodLock ${a.kind} lock #${r} to ${y}; ${s==="locker"?`${String(u.amount)} token base units`:`position NFT #${String(u.tokenId)}`}.`),record:x(u),recipient:y}}if(t==="extend"){let y=m(a.unlockTime,"unlockTime");if(y<=BigInt(String(u.unlockTime))||y<=d||y>d+3153600000n)throw new o("New unlockTime must extend the lock, be future Unix seconds, and at most 100 years away.");return T(e,i,s,"extend",[r,y],`Extend HoodLock ${a.kind} lock #${r} from ${String(u.unlockTime)} to ${y}; it cannot be shortened.`)}if(t==="set_fee_recipient"){if(s!=="liquidityLocker")throw new o("Only NFT locks have a fee recipient.");let y=f(a.recipient,"fee recipient");return T(e,i,s,"setFeeRecipient",[r,y],`Redirect future collected fees for HoodLock NFT lock #${r} to ${y}; ownership and maturity stay the same.`)}let c=f(a.owner,"new owner");return T(e,i,s,"transferLockOwnership",[r,c],`Transfer HoodLock ${a.kind} lock #${r} to ${c}; that owner can withdraw after maturity.${s==="liquidityLocker"?" The contract also resets feeRecipient to the new owner.":""}`)})),w(e,"hoodlock_collect",{id:C,ids:{type:"array",minItems:1,maxItems:50,description:"Several NFT lock ids to collect in one batch, 1 to 50 distinct. Use this or id, not both.",items:C}},[],async(t,a)=>{if(t.id===void 0==(t.ids===void 0))throw new o("Provide exactly one of id or ids.");let i=t.ids===void 0?[m(t.id,"id")]:ie(t.ids),s=[];for(let u of i){let d=await H(e,"liquidityLocker",u);_(d.owner,a),z(d),s.push({id:u.toString(),...x(d)})}let r=t.ids!==void 0;return{...await T(e,a,"liquidityLocker",r?"collectMany":"collect",r?[i]:[i[0]],`Collect fees for HoodLock NFT lock(s) ${i.join(", ")}; each lock's frozen collectFeeBps goes to HoodLock, the net to its recorded feeRecipient. Liquidity stays locked.${r?" Individual locks may fail; inspect Collected/CollectFailed events and balances.":""} Native ETH may become owedEth if delivery fails; refused ERC-20 fee shares fall back to the lock owner.`),locks:s}}),w(e,"hoodlock_airdrop_sweep",{id:C},["id"],async(t,a)=>{let i=m(t.id,"id"),s=F(await p(e,"airdrop","getAirdrop",[i]),K);if(_(s.creator,a,"airdrop creator"),s.swept)throw new o("This airdrop was already swept.");if(BigInt(String(s.endTime))===0n)throw new o("A zero-deadline airdrop can never be swept.");if((await e.clientFor(l).getBlock()).timestamp<BigInt(String(s.endTime)))throw new o("This airdrop has not ended; wait until endTime.");let r=await g(e,s.token);return{...await T(e,a,"airdrop","sweep",[i],`Recover the ${String(s.remaining)} remaining ${r.symbol} base units from expired airdrop #${i} to creator ${a}. This closes claims permanently.`),token:r,amount:String(s.remaining)}}),w(e,"hoodlock_record",{id:C,kind:{type:"string",enum:["token","v2","v3","v4","burn","vesting","airdrop"],description:"Record type: token, v2, v3 or v4 lock; or a burn, vesting schedule or airdrop. The id is looked up in that registry."}},["kind","id"],async(t,a)=>{let i=m(t.id,"id");if(t.kind==="vesting")return J(e,t,a);if(t.kind==="burn"){let d=F(await p(e,"burner","getBurn",[i]),["burner","token","amount","timestamp"]);if(BigInt(String(d.amount))===0n)throw new o("No HoodLock burn exists for this ID.");return{id:i.toString(),chainId:l,contract:h("burner"),record:x(d),token:await g(e,d.token),totalSupplyReduced:!1,proofUrl:`https://hoodlock.tech/proof/burn/${i}`}}if(t.kind==="airdrop"){let d=F(await p(e,"airdrop","getAirdrop",[i]),K);if(String(d.creator).toLowerCase()===U)throw new o("No HoodLock airdrop exists for this ID.");return{id:i.toString(),chainId:l,contract:h("airdrop"),record:x(d),token:await g(e,d.token),listURI:R(String(await p(e,"airdrop","listURI",[i])))}}let s=Z(t),r=await H(e,s,i);if(String(r.owner).toLowerCase()===U)throw new o("No HoodLock lock exists for this ID.");G(t,r);let u=s==="locker"?{token:await g(e,r.token)}:{token0:await g(e,r.token0),token1:await g(e,r.token1)};return{id:i.toString(),chainId:l,contract:h(s),record:x(r),...u,proofUrl:`https://hoodlock.tech/proof/${s==="locker"?"lock":"position"}/${i}`}}),w(e,"hoodlock_read",{contract:{type:"string",enum:Object.keys(v),description:"Which HoodLock contract to read: locker, burner, vesting, airdrop or liquidityLocker."},method:{type:"string",enum:be(),description:"Name of a published view or pure function on that contract."},arguments:{type:"array",maxItems:6,description:"Function arguments in ABI order: addresses as 0x strings, uint values as decimal strings, booleans as true/false.",items:{}}},["contract","method"],async t=>{let a=Q(t.contract),i=D(a,String(t.method));if(i.stateMutability!=="view"&&i.stateMutability!=="pure")throw new o("hoodlock_read accepts only published view/pure functions.");let s=V(i,t.arguments??[]),r=await p(e,a,i.name,s);return{chainId:l,contract:h(a),method:i.name,value:i.outputs.length===1&&i.outputs[0].type==="string"?R(String(r)):x(r),outputs:i.outputs,summary:"Raw contract view; owner indexes may include previous owners. Check current records. No transaction was built."}}),w(e,"hoodlock_recover",{method:{type:"string",enum:["claimOwedEth","claimOwedEthTo","pushOwedEth","sweepPendingCut"],description:"Recovery call on the liquidity locker: claimOwedEth (to you), claimOwedEthTo (to a given address), pushOwedEth (send a holder's owed ETH to that holder), sweepPendingCut (protocol cut of a token)."},arguments:{type:"array",maxItems:1,description:"ABI-ordered arguments: one address for claimOwedEthTo (recipient), pushOwedEth (holder) or sweepPendingCut (token); empty for claimOwedEth.",items:b}},["method"],async(t,a)=>{let i=String(t.method);if(!["claimOwedEth","claimOwedEthTo","pushOwedEth","sweepPendingCut"].includes(i))throw new o("Choose a published deferred ETH or protocol-cut recovery method.");let s=V(D("liquidityLocker",i),t.arguments??[]),r=i==="claimOwedEthTo"||i==="pushOwedEth"?f(s[0],"recipient"):a,u=i==="sweepPendingCut"?await p(e,"liquidityLocker","pendingCut",s):await p(e,"liquidityLocker","owedEth",[i==="pushOwedEth"?r:a]);if(BigInt(String(u))===0n)throw new o("There is no deferred balance to recover.");let d=i==="sweepPendingCut"?String(await p(e,"liquidityLocker","feeVault")):r;return T(e,a,"liquidityLocker",i,s,`HoodLock ${i}: recover ${String(u)} base units to ${d}; only the contract-recorded credit or cut can move.`)}),w(e,"hoodlock_admin",{contract:{type:"string",enum:Object.keys(v),description:"Which HoodLock contract to administer: locker, burner, vesting, airdrop or liquidityLocker. Only its admin or role holder can succeed."},method:{type:"string",enum:[...new Set(Object.values(se).flat())],description:"Admin function to call; must be supported on the chosen contract."},arguments:{type:"array",maxItems:3,description:"Function arguments in ABI order: addresses as 0x strings, uint values as decimal strings, booleans as true/false.",items:{}}},["contract","method"],(t,a)=>we(e,t,a))],positions:async t=>((await ne(e,{},t)).schedules??[]).filter(s=>BigInt(s.remaining)>0n).map(s=>({module:"hoodlock",id:`vesting:${s.id}`,chainId:l,assets:[{token:s.token,amount:s.remaining}],description:`HoodLock vesting #${s.id}: ${s.claimable} base units claimable; ${s.remaining} remain for current beneficiary ${t}.`}))}}function ie(e){if(!Array.isArray(e)||e.length===0||e.length>50)throw new o("Provide between 1 and 50 distinct decimal IDs.");let n=e.map(t=>m(t,"id"));if(new Set(n.map(String)).size!==n.length)throw new o("Duplicate IDs are not allowed in a collection batch.");return n}function be(){return[...new Set(Object.keys(v).flatMap(e=>B(e).filter(n=>n.type==="function"&&["view","pure"].includes(n.stateMutability)&&n.name!=="onERC721Received").map(n=>n.name)))]}function ae(e,n){if(e.type.endsWith("[]")){if(!Array.isArray(n)||n.length>200)throw new o("Function arrays must contain at most 200 items.");return n.map(t=>ae({...e,type:e.type.slice(0,-2)},t))}if(e.type==="address")return f(n,e.name??"address",!0);if(e.type==="bool"){if(typeof n!="boolean")throw new o("Function boolean arguments must be booleans.");return n}if(/^uint\d*$/.test(e.type))return m(n,e.name??"integer",Number(e.type.slice(4)||256));throw new o(`Unsupported published argument type ${e.type}.`)}function V(e,n){if(!Array.isArray(n)||n.length!==e.inputs.length)throw new o(`${e.name} needs ${e.inputs.length} ABI-ordered arguments.`);return e.inputs.map((t,a)=>ae(t,n[a]))}var se={locker:["setAdmin","setFee","setFeeCollector"],burner:["setAdmin","setFee","setFeeCollector"],vesting:["setFee","setFeeCollector","transferAdmin","acceptAdmin","withdrawFees"],airdrop:["setFee","setFeeCollector","transferAdmin","acceptAdmin","withdrawFees"],liquidityLocker:["setCollectFeeBps","setFixedFee","setFeeVault","setRevenueSink","setPaused","setHookAllowed","setKeeper","transferAdmin","acceptAdmin","adminCollect","rescueERC20","returnStrayPosition"]};async function we(e,n,t){let a=Q(n.contract),i=String(n.method);if(!se[a].includes(i))throw new o(`No supported admin ${a}.${i} route exists.`);let s=V(D(a,i),n.arguments??[]),r=i==="acceptAdmin"?"pendingAdmin":i==="withdrawFees"?"feeCollector":"admin",u=await p(e,a,r);if(i==="adminCollect"&&S(String(u))!==t?_(await p(e,a,"keeper"),t,"admin or keeper"):_(u,t,r),i==="adminCollect"&&ie(s[0].map(String)),i==="returnStrayPosition"){let d=f(s[0],"manager"),c=["V3_POSITIONS","V4_POSITIONS"];if(!(await Promise.all(c.map(M=>p(e,"liquidityLocker",M)))).some(M=>S(String(M))===d))throw new o("Only a configured position manager can return a stray NFT.");if(BigInt(String(await p(e,"liquidityLocker","lockIdOf",s.slice(0,2))))!==0n)throw new o("An actively locked NFT cannot be rescued.")}return T(e,t,a,i,s,`HoodLock ${a}.${i}(${JSON.stringify(x(s))}) by authorized ${r} ${t}. This changes protocol configuration or recovers only assets allowed by the contract. Existing custody rights cannot be overridden.`)}export{_e as a,Ie as b,Ee as c,Le as d,m as e,Oe as f};
1
+ import{b as W}from"./QXBQ7WPB.js";import{b as N}from"./GV6FZ6UG.js";import{a as k}from"./66F5ZH34.js";import{c as b,i as q,l as j}from"./NWNYJ26T.js";import{b as l}from"./EWZFZUVF.js";import{a as o}from"./XSD5NL7J.js";import{a as R}from"./JXOEJPJ4.js";import{encodeFunctionData as ye,erc20Abi as X,getAddress as S,zeroAddress as U}from"viem";var v={locker:{address:"0xd0f7d8c6e9f6d80c297bebe4f7fd1b9c8125c32f",source:"https://sourcify.dev/server/v2/contract/4663/0xd0f7d8c6e9f6d80c297bebe4f7fd1b9c8125c32f?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-07-08T19:01:30Z",fetchedAt:"2026-10-31",abi:[{name:"Extended",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newUnlockTime",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"LockOwnershipTransferred",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Locked",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"unlockTime",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Withdrawn",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"extend",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newUnlockTime",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"fee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"getLock",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"owner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"},{name:"withdrawn",type:"bool",internalType:"bool"}],internalType:"struct RobinhoodLocker.Lock"}],stateMutability:"view"},{name:"isUnlocked",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"lock",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"lockedAmount",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"locks",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"owner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"},{name:"withdrawn",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"locksByOwner",type:"function",inputs:[{name:"o",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"locksByToken",type:"function",inputs:[{name:"t",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"nextLockId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"setAdmin",type:"function",inputs:[{name:"a",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFee",type:"function",inputs:[{name:"_fee",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"timeRemaining",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"totalLocks",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"transferLockOwnership",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdraw",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"}]},burner:{address:"0x6bf43ca706faa8ea46803299c191484e82280652",source:"https://sourcify.dev/server/v2/contract/4663/0x6bf43ca706faa8ea46803299c191484e82280652?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-07-22T23:28:15Z",fetchedAt:"2026-10-31",abi:[{name:"Burned",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"burner",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"DEAD",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"burn",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"burns",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"burner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"timestamp",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"burnsByBurner",type:"function",inputs:[{name:"b",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"burnsByToken",type:"function",inputs:[{name:"t",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"fee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"getBurn",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"burner",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"timestamp",type:"uint256",internalType:"uint256"}],internalType:"struct RobinhoodBurner.Burn"}],stateMutability:"view"},{name:"nextBurnId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"setAdmin",type:"function",inputs:[{name:"a",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFee",type:"function",inputs:[{name:"_fee",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"totalBurnedOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"totalBurns",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}]},vesting:{address:"0x910e19bcC4bce46999994Ed7297E0Fc4431ec72E",source:"https://sourcify.dev/server/v2/contract/4663/0x910e19bcC4bce46999994Ed7297E0Fc4431ec72E?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-07-27T00:28:59Z",fetchedAt:"2026-10-31",abi:[{name:"AdminTransferStarted",type:"event",inputs:[{name:"current",type:"address",indexed:!0,internalType:"address"},{name:"pending",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AdminTransferred",type:"event",inputs:[{name:"previous",type:"address",indexed:!0,internalType:"address"},{name:"current",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"BeneficiaryTransferred",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Claimed",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"beneficiary",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeCollectorChanged",type:"event",inputs:[{name:"collector",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"FeesWithdrawn",type:"event",inputs:[{name:"collector",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"VestingCreated",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"beneficiary",type:"address",indexed:!0,internalType:"address"},{name:"creator",type:"address",indexed:!1,internalType:"address"},{name:"total",type:"uint256",indexed:!1,internalType:"uint256"},{name:"start",type:"uint64",indexed:!1,internalType:"uint64"},{name:"cliff",type:"uint64",indexed:!1,internalType:"uint64"},{name:"end",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{name:"MAX_BATCH",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_FEE",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MIN_DURATION",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"acceptAdmin",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"accruedFees",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"claim",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"claimable",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"create",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"beneficiary",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"start",type:"uint64",internalType:"uint64"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"end",type:"uint64",internalType:"uint64"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"createMany",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"beneficiaries",type:"address[]",internalType:"address[]"},{name:"amounts",type:"uint256[]",internalType:"uint256[]"},{name:"start",type:"uint64",internalType:"uint64"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"end",type:"uint64",internalType:"uint64"}],outputs:[{name:"firstId",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"fee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"getSchedule",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"creator",type:"address",internalType:"address"},{name:"start",type:"uint64",internalType:"uint64"},{name:"beneficiary",type:"address",internalType:"address"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"token",type:"address",internalType:"address"},{name:"end",type:"uint64",internalType:"uint64"},{name:"total",type:"uint128",internalType:"uint128"},{name:"claimed",type:"uint128",internalType:"uint128"}],internalType:"struct RobinhoodVesting.Schedule"}],stateMutability:"view"},{name:"nextScheduleId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pendingAdmin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"schedules",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"creator",type:"address",internalType:"address"},{name:"start",type:"uint64",internalType:"uint64"},{name:"beneficiary",type:"address",internalType:"address"},{name:"cliff",type:"uint64",internalType:"uint64"},{name:"token",type:"address",internalType:"address"},{name:"end",type:"uint64",internalType:"uint64"},{name:"total",type:"uint128",internalType:"uint128"},{name:"claimed",type:"uint128",internalType:"uint128"}],stateMutability:"view"},{name:"schedulesByBeneficiary",type:"function",inputs:[{name:"b",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"schedulesByCreator",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"schedulesByToken",type:"function",inputs:[{name:"token",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"setFee",type:"function",inputs:[{name:"_fee",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"totalSchedules",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"transferAdmin",type:"function",inputs:[{name:"newAdmin",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"transferBeneficiary",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newBeneficiary",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdrawFees",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"}]},airdrop:{address:"0x6B1fE7b821001144Ee74EEA258b0AafdE20102E8",source:"https://sourcify.dev/server/v2/contract/4663/0x6B1fE7b821001144Ee74EEA258b0AafdE20102E8?fields=abi,sources,compilation",match:"match",verifiedAt:"2026-07-30T16:48:51Z",fetchedAt:"2026-10-31",abi:[{name:"AdminTransferStarted",type:"event",inputs:[{name:"current",type:"address",indexed:!0,internalType:"address"},{name:"pending",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AdminTransferred",type:"event",inputs:[{name:"previous",type:"address",indexed:!0,internalType:"address"},{name:"current",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AirdropCreated",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"merkleRoot",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"total",type:"uint256",indexed:!1,internalType:"uint256"},{name:"maxClaims",type:"uint32",indexed:!1,internalType:"uint32"},{name:"endTime",type:"uint64",indexed:!1,internalType:"uint64"},{name:"listURI",type:"string",indexed:!1,internalType:"string"}],anonymous:!1},{name:"Claimed",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"index",type:"uint256",indexed:!1,internalType:"uint256"},{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeChanged",type:"event",inputs:[{name:"feeBase",type:"uint256",indexed:!1,internalType:"uint256"},{name:"feePerWallet",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeCollectorChanged",type:"event",inputs:[{name:"collector",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"FeesWithdrawn",type:"event",inputs:[{name:"collector",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Swept",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"MAX_FEE",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_RECIPIENTS",type:"function",inputs:[],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{name:"MAX_URI",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MIN_WINDOW",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"acceptAdmin",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"accruedFees",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"airdrops",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"creator",type:"address",internalType:"address"},{name:"endTime",type:"uint64",internalType:"uint64"},{name:"maxClaims",type:"uint32",internalType:"uint32"},{name:"token",type:"address",internalType:"address"},{name:"claims",type:"uint32",internalType:"uint32"},{name:"swept",type:"bool",internalType:"bool"},{name:"merkleRoot",type:"bytes32",internalType:"bytes32"},{name:"total",type:"uint128",internalType:"uint128"},{name:"remaining",type:"uint128",internalType:"uint128"}],stateMutability:"view"},{name:"claim",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"},{name:"account",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"proof",type:"bytes32[]",internalType:"bytes32[]"}],outputs:[],stateMutability:"nonpayable"},{name:"create",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"merkleRoot",type:"bytes32",internalType:"bytes32"},{name:"total",type:"uint256",internalType:"uint256"},{name:"maxClaims",type:"uint32",internalType:"uint32"},{name:"endTime",type:"uint64",internalType:"uint64"},{name:"uri",type:"string",internalType:"string"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"feeBase",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"feeCollector",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"feePerWallet",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"getAirdrop",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"creator",type:"address",internalType:"address"},{name:"endTime",type:"uint64",internalType:"uint64"},{name:"maxClaims",type:"uint32",internalType:"uint32"},{name:"token",type:"address",internalType:"address"},{name:"claims",type:"uint32",internalType:"uint32"},{name:"swept",type:"bool",internalType:"bool"},{name:"merkleRoot",type:"bytes32",internalType:"bytes32"},{name:"total",type:"uint128",internalType:"uint128"},{name:"remaining",type:"uint128",internalType:"uint128"}],internalType:"struct RobinhoodAirdrop.Airdrop"}],stateMutability:"view"},{name:"isClaimed",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"listURI",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{name:"nextAirdropId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pendingAdmin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"quote",type:"function",inputs:[{name:"maxClaims",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"setFee",type:"function",inputs:[{name:"_feeBase",type:"uint256",internalType:"uint256"},{name:"_feePerWallet",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeCollector",type:"function",inputs:[{name:"c",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"sweep",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"totalAirdrops",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"transferAdmin",type:"function",inputs:[{name:"newAdmin",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdrawFees",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"}]},liquidityLocker:{address:"0x91Aa2dA1956C77F8448E18DCaf53383bCc658e67",source:"https://sourcify.dev/server/v2/contract/4663/0x91Aa2dA1956C77F8448E18DCaf53383bCc658e67?fields=abi,sources,compilation",match:"exact_match",verifiedAt:"2026-10-04T15:10:02Z",fetchedAt:"2026-10-31",abi:[{name:"AdminTransferStarted",type:"event",inputs:[{name:"next",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"AdminTransferred",type:"event",inputs:[{name:"previous",type:"address",indexed:!0,internalType:"address"},{name:"next",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"CollectFailed",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{name:"CollectFeeChanged",type:"event",inputs:[{name:"bps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{name:"Collected",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount0",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amount1",type:"uint256",indexed:!1,internalType:"uint256"},{name:"cut0",type:"uint256",indexed:!1,internalType:"uint256"},{name:"cut1",type:"uint256",indexed:!1,internalType:"uint256"},{name:"byAdmin",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{name:"CutDeferred",type:"event",inputs:[{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"CutSwept",type:"event",inputs:[{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"EthClaimed",type:"event",inputs:[{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"EthCredited",type:"event",inputs:[{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Extended",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newUnlockTime",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"FeeRecipientChanged",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"recipient",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"FeeVaultChanged",type:"event",inputs:[{name:"vault",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"FixedFeeChanged",type:"event",inputs:[{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"HookAllowedChanged",type:"event",inputs:[{name:"hook",type:"address",indexed:!0,internalType:"address"},{name:"allowed",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{name:"KeeperChanged",type:"event",inputs:[{name:"keeper",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"LockOwnershipTransferred",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Locked",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"manager",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!1,internalType:"uint256"},{name:"token0",type:"address",indexed:!1,internalType:"address"},{name:"token1",type:"address",indexed:!1,internalType:"address"},{name:"pool",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"unlockTime",type:"uint256",indexed:!1,internalType:"uint256"},{name:"collectFeeBps",type:"uint16",indexed:!1,internalType:"uint16"},{name:"hookVerified",type:"bool",indexed:!1,internalType:"bool"},{name:"feeRecipient",type:"address",indexed:!1,internalType:"address"},{name:"fixedFeePaid",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"PausedChanged",type:"event",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{name:"PreLockFeesReturned",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"amount0",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amount1",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"Rescued",type:"event",inputs:[{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"RevenueSinkChanged",type:"event",inputs:[{name:"sink",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{name:"ShareRedirected",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"token",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{name:"StrayPositionReturned",type:"event",inputs:[{name:"manager",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"Withdrawn",type:"event",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"to",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{name:"BATCH_GAS_PER_LOCK",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_BATCH",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_COLLECT_FEE_BPS",type:"function",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"MAX_FIXED_FEE",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MAX_LOCK_DURATION",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"MIN_COLLECT_FEE_BPS",type:"function",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"V3_FACTORY",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"V3_POSITIONS",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IV3PositionManager"}],stateMutability:"view"},{name:"V4_POOL_MANAGER",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"V4_POSITIONS",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IV4PositionManager"}],stateMutability:"view"},{name:"acceptAdmin",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"admin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"adminCollect",type:"function",inputs:[{name:"ids",type:"uint256[]",internalType:"uint256[]"}],outputs:[],stateMutability:"nonpayable"},{name:"claimOwedEth",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"claimOwedEthTo",type:"function",inputs:[{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"collect",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"collectFeeBps",type:"function",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"collectMany",type:"function",inputs:[{name:"ids",type:"uint256[]",internalType:"uint256[]"}],outputs:[],stateMutability:"nonpayable"},{name:"collectOneIsolated",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"byAdmin",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{name:"cutOf",type:"function",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"bps",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{name:"extend",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newUnlockTime",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"feeVault",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"fixedFee",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"getLock",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"owner",type:"address",internalType:"address"},{name:"unlockTime",type:"uint40",internalType:"uint40"},{name:"collectFeeBps",type:"uint16",internalType:"uint16"},{name:"isV4",type:"bool",internalType:"bool"},{name:"hookVerified",type:"bool",internalType:"bool"},{name:"withdrawn",type:"bool",internalType:"bool"},{name:"feeRecipient",type:"address",internalType:"address"},{name:"token0",type:"address",internalType:"address"},{name:"token1",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],internalType:"struct HoodLockLPLocker.Lock"}],stateMutability:"view"},{name:"hookAllowed",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"isUnlocked",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"keeper",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"lock",type:"function",inputs:[{name:"manager",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"unlockTime",type:"uint256",internalType:"uint256"},{name:"feeRecipient",type:"address",internalType:"address"},{name:"acceptUnverifiedHook",type:"bool",internalType:"bool"},{name:"maxCollectFeeBps",type:"uint16",internalType:"uint16"}],outputs:[{name:"id",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{name:"lockIdOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"locksOf",type:"function",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{name:"name",type:"function",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{name:"nextLockId",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"onERC721Received",type:"function",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes4",internalType:"bytes4"}],stateMutability:"pure"},{name:"owedEth",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"paused",type:"function",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"pendingAdmin",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"pendingCut",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pushOwedEth",type:"function",inputs:[{name:"who",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"rescueERC20",type:"function",inputs:[{name:"token",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"returnStrayPosition",type:"function",inputs:[{name:"manager",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"revenueSink",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"setCollectFeeBps",type:"function",inputs:[{name:"bps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeRecipient",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFeeVault",type:"function",inputs:[{name:"vault",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setFixedFee",type:"function",inputs:[{name:"fee_",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"setHookAllowed",type:"function",inputs:[{name:"hook",type:"address",internalType:"address"},{name:"allowed",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{name:"setKeeper",type:"function",inputs:[{name:"k",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"setPaused",type:"function",inputs:[{name:"p",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{name:"setRevenueSink",type:"function",inputs:[{name:"sink",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"sweepPendingCut",type:"function",inputs:[{name:"token",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"transferAdmin",type:"function",inputs:[{name:"next",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"transferLockOwnership",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"withdraw",type:"function",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"}]}};var _e=v,Ie=S(v.vesting.address),Ee=["hoodlock_read","hoodlock_record","hoodlock_vesting_status","hoodlock_public"],Le=["hoodlock_vesting_create","hoodlock_vesting_claim","hoodlock_vesting_transfer","hoodlock_withdraw","hoodlock_extend","hoodlock_transfer_lock","hoodlock_set_fee_recipient","hoodlock_collect","hoodlock_airdrop_sweep","hoodlock_recover","hoodlock_admin"],C=k("Decimal record ID, including zero for token locks, burns, vesting and airdrops. LP IDs start at one."),le={id:C,kind:{type:"string",enum:["token","v2","v3","v4"],description:"Lock type: token = ERC-20 token lock; v2 = V2 LP-token lock; v3 or v4 = Uniswap v3 or v4 liquidity-position (NFT) lock."}},Y=(1n<<256n)-1n;function m(e,n,t=256){if(typeof e!="string"||!/^\d+$/.test(e))throw new o(`${n} must be a decimal base-unit string.`);let a=BigInt(e);if(a>(1n<<BigInt(t))-1n)throw new o(`${n} exceeds uint${t}.`);return a}function f(e,n,t=!1){let a=q(e,`Provide a valid ${n} address.`);return t?a:j(a,`${n} must not be the zero address.`)}function ce(e,n){let t=m(e,n);if(t===0n||t===Y)throw new o(`${n} must be a positive exact amount, never unlimited.`);return t}function Q(e){if(typeof e!="string"||!Object.hasOwn(v,e))throw new o("Choose locker, burner, vesting, airdrop or liquidityLocker.");return e}function B(e){return v[e].abi}function h(e){return S(v[e].address)}function D(e,n){let t=B(e).find(a=>a.type==="function"&&a.name===n);if(!t)throw new o(`No published HoodLock ${e}.${n} function exists.`);return t}async function p(e,n,t,a=[]){return e.clientFor(l).readContract({address:h(n),abi:B(n),functionName:t,args:a})}function F(e,n){if(Array.isArray(e))return Object.fromEntries(n.map((t,a)=>[t,e[a]]));if(e&&typeof e=="object")return e;throw new o("HoodLock returned an invalid record. Retry the chain read.")}var me=["owner","token","amount","unlockTime","withdrawn"],fe=["owner","unlockTime","collectFeeBps","isV4","hookVerified","withdrawn","feeRecipient","token0","token1","tokenId"],ee=["creator","start","beneficiary","cliff","token","end","total","claimed"],K=["creator","endTime","maxClaims","token","claims","swept","merkleRoot","total","remaining"];function x(e){return JSON.parse(JSON.stringify(e,(n,t)=>typeof t=="bigint"?t.toString():t))}async function g(e,n){let t=f(n,"token",!0);if(t===U)return N;let a=e.clientFor(l),[i,s]=await Promise.all([a.readContract({address:t,abi:X,functionName:"symbol"}),a.readContract({address:t,abi:X,functionName:"decimals"})]);if(!Number.isInteger(s)||s<0||s>255)throw new o("Token decimals are invalid.");return{address:t,chainId:l,symbol:R(String(i)),decimals:s}}function _(e,n,t="current owner"){if(f(e,t)!==S(n))throw new o(`This wallet is not the ${t}.`)}function z(e){if(e.withdrawn)throw new o("This HoodLock lock was already withdrawn.")}function Z(e){if(!["token","v2","v3","v4"].includes(String(e.kind)))throw new o("Provide kind: token, v2, v3 or v4.");return e.kind==="token"||e.kind==="v2"?"locker":"liquidityLocker"}async function H(e,n,t){return F(await p(e,n,"getLock",[t]),n==="locker"?me:fe)}function G(e,n){if((e.kind==="v3"||e.kind==="v4")&&!!n.isV4!=(e.kind==="v4"))throw new o("Lock kind disagrees with the on-chain NFT version.")}async function T(e,n,t,a,i,s,r=0n,u=[]){let d=e.unsignedTx({to:h(t),chainId:l,value:r.toString(),data:ye({abi:B(t),functionName:a,args:i}),description:s}),c=await e.preview([...u,d],S(n));return{txs:c.txs,preview:c,summary:s,contract:h(t),chainId:l,method:a,arguments:x(i)}}function w(e,n,t,a,i){return{name:n,inputSchema:{type:"object",properties:t,required:a,additionalProperties:!1},async execute(s,r){try{return await i(s,S(r))}catch(u){throw new o(e.plainError(u))}}}}async function Te(e,n,t){let a=f(n.token,"token"),i=m(n.start,"start",64),s=m(n.cliff,"cliff",64),r=m(n.end,"end",64),[u,d,c,y,M]=await Promise.all([e.clientFor(l).getBlock(),p(e,"vesting","fee"),p(e,"vesting","MIN_DURATION"),p(e,"vesting","MAX_BATCH"),g(e,a)]);if(i>s||s>r||r<=i)throw new o("Vesting dates require start <= cliff <= end and end > start.");if(r>=1000000000000n||r<=u.timestamp+BigInt(String(c))+30n)throw new o("Vesting end must be Unix seconds, more than 24 hours plus a 30-second inclusion margin after the current block.");let I=n.entries!==void 0;if(I&&(n.beneficiary!==void 0||n.amount!==void 0))throw new o("Use entries or beneficiary/amount, not both.");if(I&&(!Array.isArray(n.entries)||n.entries.length===0||n.entries.length>Number(y)))throw new o(`Provide between 1 and ${String(y)} vesting entries.`);let L=I?n.entries:[{beneficiary:n.beneficiary,amount:n.amount}],P=L.map(A=>f(A?.beneficiary,"beneficiary")),O=L.map(A=>ce(A?.amount,"amount"));if(O.some(A=>A>=1n<<128n))throw new o("Each vesting amount must fit uint128.");let $=O.reduce((A,de)=>A+de,0n);if($>=Y)throw new o("Vesting total exceeds the exact approval range.");let E=BigInt(String(d))*BigInt(L.length);if(n.maxFee!==void 0&&E>m(n.maxFee,"maxFee"))throw new o("Live vesting fee exceeds maxFee.");let re=I?"createMany":"create",oe=I?[a,P,O,i,s,r]:[a,P[0],O[0],i,s,r],ue=`Create ${L.length} irrevocable HoodLock vesting schedule(s): ${$} ${M.symbol} base units (${a}, decimals ${M.decimals}) for ${P.join(", ")}; start ${i}, cliff ${s}, end ${r}; exact fee ${E} wei. Creator cannot cancel or recover principal. Recorded totals use tokens actually received; preserve mined schedule IDs.`;return W(e,{...await T(e,t,"vesting",re,oe,ue,E,[e.approval(a,h("vesting"),$.toString(),l)]),token:M,amount:$.toString(),fee:{token:N,amount:E.toString()}},h("vesting"),E)}async function te(e,n){let t=F(await p(e,"vesting","getSchedule",[n]),ee);if(BigInt(String(t.total))===0n)throw new o("No HoodLock vesting schedule exists for this ID.");let[a,i]=await Promise.all([p(e,"vesting","claimable",[n]),g(e,t.token)]);return{id:n.toString(),contract:h("vesting"),chainId:l,schedule:x(t),token:i,claimable:String(a),remaining:(BigInt(String(t.total))-BigInt(String(t.claimed))).toString(),proofUrl:`https://hoodlock.tech/proof/vesting/${n}`}}async function ne(e,n,t){let a=n.account===void 0?t:f(n.account,"account"),i=n.role??"beneficiary";if(!["beneficiary","creator","token"].includes(String(i)))throw new o("Choose beneficiary, creator or token for vesting discovery.");let r=await p(e,"vesting",i==="creator"?"schedulesByCreator":i==="token"?"schedulesByToken":"schedulesByBeneficiary",[a]),u=[];for(let d of[...new Set(r.map(String))]){let c=await te(e,BigInt(d));(i!=="beneficiary"||f(c.schedule.beneficiary,"beneficiary")===a)&&u.push(c)}return{account:a,role:i,schedules:u,summary:`Found ${u.length} HoodLock vesting schedule(s); completed schedules remain visible.`}}async function J(e,n,t){return n.id===void 0?ne(e,n,t):te(e,m(n.id,"id"))}function Oe(e){return{tools:[w(e,"hoodlock_vesting_create",{token:{...b,description:"Address of the ERC-20 token to vest. The wallet approves and transfers it to the vesting contract."},beneficiary:{...b,description:"Address that receives the vested tokens (single schedule). Use this with amount, or use entries, not both."},amount:k('Amount of the token to vest, in base units of that token (read its decimals). Example: "1000000000000000000" = 1 token at 18 decimals. Single schedule only.'),entries:{type:"array",minItems:1,maxItems:200,description:"Batch of schedules sharing one token, start, cliff and end. Use this instead of beneficiary and amount.",items:{type:"object",properties:{beneficiary:{...b,description:"Address that receives this entry's vested tokens."},amount:k('Amount of the token vested to this beneficiary, in base units of that token (read its decimals). Example: "1000000000000000000" = 1 token at 18 decimals.')},required:["beneficiary","amount"],additionalProperties:!1}},start:k('Vesting start time in Unix seconds, as a decimal string. Example: "1800000000".'),cliff:k("Cliff time in Unix seconds, between start and end; nothing is claimable before it."),end:k("Vesting end time in Unix seconds, more than 24 hours after the current block."),maxFee:k("Optional cap on the total creation fee in wei of native ETH (1 ETH = 10^18 wei); the call fails if the live fee is higher.")},["token","start","cliff","end"],(t,a)=>Te(e,t,a)),w(e,"hoodlock_vesting_status",{id:C,account:{...b,description:"Address to list vesting schedules for when no id is given. Defaults to the connected wallet."},role:{type:"string",enum:["beneficiary","creator","token"],description:"How account relates to the schedules when listing: beneficiary (default), creator, or the vested token address."}},[],(t,a)=>J(e,t,a)),...["claim","transfer"].map(t=>w(e,`hoodlock_vesting_${t}`,{id:C,...t==="transfer"?{beneficiary:{...b,description:"Address of the new beneficiary who takes over the remaining vesting rights."}}:{}},t==="transfer"?["id","beneficiary"]:["id"],async(a,i)=>{let s=m(a.id,"id"),r=F(await p(e,"vesting","getSchedule",[s]),ee);if(_(r.beneficiary,i,"current beneficiary"),t==="transfer"){let c=f(a.beneficiary,"beneficiary");return T(e,i,"vesting","transferBeneficiary",[s,c],`Transfer beneficiary rights for vesting #${s} from ${i} to ${c}. Remaining tokens follow the schedule; creator cannot revoke it.`)}let u=BigInt(String(await p(e,"vesting","claimable",[s])));if(u===0n)throw new o("Nothing is claimable yet; check the cliff and previous claims.");let d=await g(e,r.token);return{...await T(e,i,"vesting","claim",[s],`Claim currently ${u} ${d.symbol} base units from vesting #${s} to current beneficiary ${i}; live inclusion time determines the final amount.`),token:d,amount:u.toString()}})),...["withdraw","extend","transfer_lock","set_fee_recipient"].map(t=>w(e,`hoodlock_${t}`,{...le,...t==="withdraw"?{to:{...b,description:"Address that receives the withdrawn position NFT or LP; defaults to the connected wallet. Token locks withdraw only to the owner."}}:t==="extend"?{unlockTime:k('New unlock time in Unix seconds, later than the current unlock time and in the future (at most 100 years). Example: "1800000000".')}:t==="transfer_lock"?{owner:{...b,description:"Address of the new lock owner, who can withdraw after maturity."}}:{recipient:{...b,description:"Address that receives future collected fees for this NFT lock."}}},["kind","id",...t==="extend"?["unlockTime"]:t==="transfer_lock"?["owner"]:t==="set_fee_recipient"?["recipient"]:[]],async(a,i)=>{let s=Z(a),r=m(a.id,"id"),u=await H(e,s,r);_(u.owner,i),z(u),G(a,u);let d=(await e.clientFor(l).getBlock()).timestamp;if(t==="withdraw"){if(d<BigInt(String(u.unlockTime)))throw new o(`Still locked until Unix ${String(u.unlockTime)}; expiry never withdraws automatically.`);let y=a.to===void 0?i:f(a.to,"withdrawal recipient");if(s==="locker"&&y!==i)throw new o("Token locks withdraw only to the current owner; omit to or use this wallet.");return{...await T(e,i,s,"withdraw",s==="locker"?[r]:[r,y],`Withdraw mature HoodLock ${a.kind} lock #${r} to ${y}; ${s==="locker"?`${String(u.amount)} token base units`:`position NFT #${String(u.tokenId)}`}.`),record:x(u),recipient:y}}if(t==="extend"){let y=m(a.unlockTime,"unlockTime");if(y<=BigInt(String(u.unlockTime))||y<=d||y>d+3153600000n)throw new o("New unlockTime must extend the lock, be future Unix seconds, and at most 100 years away.");return T(e,i,s,"extend",[r,y],`Extend HoodLock ${a.kind} lock #${r} from ${String(u.unlockTime)} to ${y}; it cannot be shortened.`)}if(t==="set_fee_recipient"){if(s!=="liquidityLocker")throw new o("Only NFT locks have a fee recipient.");let y=f(a.recipient,"fee recipient");return T(e,i,s,"setFeeRecipient",[r,y],`Redirect future collected fees for HoodLock NFT lock #${r} to ${y}; ownership and maturity stay the same.`)}let c=f(a.owner,"new owner");return T(e,i,s,"transferLockOwnership",[r,c],`Transfer HoodLock ${a.kind} lock #${r} to ${c}; that owner can withdraw after maturity.${s==="liquidityLocker"?" The contract also resets feeRecipient to the new owner.":""}`)})),w(e,"hoodlock_collect",{id:C,ids:{type:"array",minItems:1,maxItems:50,description:"Several NFT lock ids to collect in one batch, 1 to 50 distinct. Use this or id, not both.",items:C}},[],async(t,a)=>{if(t.id===void 0==(t.ids===void 0))throw new o("Provide exactly one of id or ids.");let i=t.ids===void 0?[m(t.id,"id")]:ie(t.ids),s=[];for(let u of i){let d=await H(e,"liquidityLocker",u);_(d.owner,a),z(d),s.push({id:u.toString(),...x(d)})}let r=t.ids!==void 0;return{...await T(e,a,"liquidityLocker",r?"collectMany":"collect",r?[i]:[i[0]],`Collect fees for HoodLock NFT lock(s) ${i.join(", ")}; each lock's frozen collectFeeBps goes to HoodLock, the net to its recorded feeRecipient. Liquidity stays locked.${r?" Individual locks may fail; inspect Collected/CollectFailed events and balances.":""} Native ETH may become owedEth if delivery fails; refused ERC-20 fee shares fall back to the lock owner.`),locks:s}}),w(e,"hoodlock_airdrop_sweep",{id:C},["id"],async(t,a)=>{let i=m(t.id,"id"),s=F(await p(e,"airdrop","getAirdrop",[i]),K);if(_(s.creator,a,"airdrop creator"),s.swept)throw new o("This airdrop was already swept.");if(BigInt(String(s.endTime))===0n)throw new o("A zero-deadline airdrop can never be swept.");if((await e.clientFor(l).getBlock()).timestamp<BigInt(String(s.endTime)))throw new o("This airdrop has not ended; wait until endTime.");let r=await g(e,s.token);return{...await T(e,a,"airdrop","sweep",[i],`Recover the ${String(s.remaining)} remaining ${r.symbol} base units from expired airdrop #${i} to creator ${a}. This closes claims permanently.`),token:r,amount:String(s.remaining)}}),w(e,"hoodlock_record",{id:C,kind:{type:"string",enum:["token","v2","v3","v4","burn","vesting","airdrop"],description:"Record type: token, v2, v3 or v4 lock; or a burn, vesting schedule or airdrop. The id is looked up in that registry."}},["kind","id"],async(t,a)=>{let i=m(t.id,"id");if(t.kind==="vesting")return J(e,t,a);if(t.kind==="burn"){let d=F(await p(e,"burner","getBurn",[i]),["burner","token","amount","timestamp"]);if(BigInt(String(d.amount))===0n)throw new o("No HoodLock burn exists for this ID.");return{id:i.toString(),chainId:l,contract:h("burner"),record:x(d),token:await g(e,d.token),totalSupplyReduced:!1,proofUrl:`https://hoodlock.tech/proof/burn/${i}`}}if(t.kind==="airdrop"){let d=F(await p(e,"airdrop","getAirdrop",[i]),K);if(String(d.creator).toLowerCase()===U)throw new o("No HoodLock airdrop exists for this ID.");return{id:i.toString(),chainId:l,contract:h("airdrop"),record:x(d),token:await g(e,d.token),listURI:R(String(await p(e,"airdrop","listURI",[i])))}}let s=Z(t),r=await H(e,s,i);if(String(r.owner).toLowerCase()===U)throw new o("No HoodLock lock exists for this ID.");G(t,r);let u=s==="locker"?{token:await g(e,r.token)}:{token0:await g(e,r.token0),token1:await g(e,r.token1)};return{id:i.toString(),chainId:l,contract:h(s),record:x(r),...u,proofUrl:`https://hoodlock.tech/proof/${s==="locker"?"lock":"position"}/${i}`}}),w(e,"hoodlock_read",{contract:{type:"string",enum:Object.keys(v),description:"Which HoodLock contract to read: locker, burner, vesting, airdrop or liquidityLocker."},method:{type:"string",enum:be(),description:"Name of a published view or pure function on that contract."},arguments:{type:"array",maxItems:6,description:"Function arguments in ABI order: addresses as 0x strings, uint values as decimal strings, booleans as true/false.",items:{}}},["contract","method"],async t=>{let a=Q(t.contract),i=D(a,String(t.method));if(i.stateMutability!=="view"&&i.stateMutability!=="pure")throw new o("hoodlock_read accepts only published view/pure functions.");let s=V(i,t.arguments??[]),r=await p(e,a,i.name,s);return{chainId:l,contract:h(a),method:i.name,value:i.outputs.length===1&&i.outputs[0].type==="string"?R(String(r)):x(r),outputs:i.outputs,summary:"Raw contract view; owner indexes may include previous owners. Check current records. No transaction was built."}}),w(e,"hoodlock_recover",{method:{type:"string",enum:["claimOwedEth","claimOwedEthTo","pushOwedEth","sweepPendingCut"],description:"Recovery call on the liquidity locker: claimOwedEth (to you), claimOwedEthTo (to a given address), pushOwedEth (send a holder's owed ETH to that holder), sweepPendingCut (protocol cut of a token)."},arguments:{type:"array",maxItems:1,description:"ABI-ordered arguments: one address for claimOwedEthTo (recipient), pushOwedEth (holder) or sweepPendingCut (token); empty for claimOwedEth.",items:b}},["method"],async(t,a)=>{let i=String(t.method);if(!["claimOwedEth","claimOwedEthTo","pushOwedEth","sweepPendingCut"].includes(i))throw new o("Choose a published deferred ETH or protocol-cut recovery method.");let s=V(D("liquidityLocker",i),t.arguments??[]),r=i==="claimOwedEthTo"||i==="pushOwedEth"?f(s[0],"recipient"):a,u=i==="sweepPendingCut"?await p(e,"liquidityLocker","pendingCut",s):await p(e,"liquidityLocker","owedEth",[i==="pushOwedEth"?r:a]);if(BigInt(String(u))===0n)throw new o("There is no deferred balance to recover.");let d=i==="sweepPendingCut"?String(await p(e,"liquidityLocker","feeVault")):r;return T(e,a,"liquidityLocker",i,s,`HoodLock ${i}: recover ${String(u)} base units to ${d}; only the contract-recorded credit or cut can move.`)}),w(e,"hoodlock_admin",{contract:{type:"string",enum:Object.keys(v),description:"Which HoodLock contract to administer: locker, burner, vesting, airdrop or liquidityLocker. Only its admin or role holder can succeed."},method:{type:"string",enum:[...new Set(Object.values(se).flat())],description:"Admin function to call; must be supported on the chosen contract."},arguments:{type:"array",maxItems:3,description:"Function arguments in ABI order: addresses as 0x strings, uint values as decimal strings, booleans as true/false.",items:{}}},["contract","method"],(t,a)=>we(e,t,a))],positions:async t=>((await ne(e,{},t)).schedules??[]).filter(s=>BigInt(s.remaining)>0n).map(s=>({module:"hoodlock",id:`vesting:${s.id}`,chainId:l,assets:[{token:s.token,amount:s.remaining}],description:`HoodLock vesting #${s.id}: ${s.claimable} base units claimable; ${s.remaining} remain for current beneficiary ${t}.`}))}}function ie(e){if(!Array.isArray(e)||e.length===0||e.length>50)throw new o("Provide between 1 and 50 distinct decimal IDs.");let n=e.map(t=>m(t,"id"));if(new Set(n.map(String)).size!==n.length)throw new o("Duplicate IDs are not allowed in a collection batch.");return n}function be(){return[...new Set(Object.keys(v).flatMap(e=>B(e).filter(n=>n.type==="function"&&["view","pure"].includes(n.stateMutability)&&n.name!=="onERC721Received").map(n=>n.name)))]}function ae(e,n){if(e.type.endsWith("[]")){if(!Array.isArray(n)||n.length>200)throw new o("Function arrays must contain at most 200 items.");return n.map(t=>ae({...e,type:e.type.slice(0,-2)},t))}if(e.type==="address")return f(n,e.name??"address",!0);if(e.type==="bool"){if(typeof n!="boolean")throw new o("Function boolean arguments must be booleans.");return n}if(/^uint\d*$/.test(e.type))return m(n,e.name??"integer",Number(e.type.slice(4)||256));throw new o(`Unsupported published argument type ${e.type}.`)}function V(e,n){if(!Array.isArray(n)||n.length!==e.inputs.length)throw new o(`${e.name} needs ${e.inputs.length} ABI-ordered arguments.`);return e.inputs.map((t,a)=>ae(t,n[a]))}var se={locker:["setAdmin","setFee","setFeeCollector"],burner:["setAdmin","setFee","setFeeCollector"],vesting:["setFee","setFeeCollector","transferAdmin","acceptAdmin","withdrawFees"],airdrop:["setFee","setFeeCollector","transferAdmin","acceptAdmin","withdrawFees"],liquidityLocker:["setCollectFeeBps","setFixedFee","setFeeVault","setRevenueSink","setPaused","setHookAllowed","setKeeper","transferAdmin","acceptAdmin","adminCollect","rescueERC20","returnStrayPosition"]};async function we(e,n,t){let a=Q(n.contract),i=String(n.method);if(!se[a].includes(i))throw new o(`No supported admin ${a}.${i} route exists.`);let s=V(D(a,i),n.arguments??[]),r=i==="acceptAdmin"?"pendingAdmin":i==="withdrawFees"?"feeCollector":"admin",u=await p(e,a,r);if(i==="adminCollect"&&S(String(u))!==t?_(await p(e,a,"keeper"),t,"admin or keeper"):_(u,t,r),i==="adminCollect"&&ie(s[0].map(String)),i==="returnStrayPosition"){let d=f(s[0],"manager"),c=["V3_POSITIONS","V4_POSITIONS"];if(!(await Promise.all(c.map(M=>p(e,"liquidityLocker",M)))).some(M=>S(String(M))===d))throw new o("Only a configured position manager can return a stray NFT.");if(BigInt(String(await p(e,"liquidityLocker","lockIdOf",s.slice(0,2))))!==0n)throw new o("An actively locked NFT cannot be rescued.")}return T(e,t,a,i,s,`HoodLock ${a}.${i}(${JSON.stringify(x(s))}) by authorized ${r} ${t}. This changes protocol configuration or recovers only assets allowed by the contract. Existing custody rights cannot be overridden.`)}export{_e as a,Ie as b,Ee as c,Le as d,m as e,Oe as f};
@@ -0,0 +1 @@
1
+ import{e as g,f as i,i as G,j as o,k as q,m as $,p as y,s as H}from"./UMY6SP7C.js";import{a as n}from"./XSD5NL7J.js";import{decodeAbiParameters as _,decodeFunctionResult as S,encodeAbiParameters as ee,encodeFunctionData as I,erc20Abi as O,keccak256 as j,parseAbi as v,stringToHex as te,zeroAddress as C}from"viem";var B={id:"market-guard",supported:!0,contract:"HookrMarketGuard",address:"0xFc5CAE364FDEE4347D97E2aEB82f3155068693A4",source:"hook-blocks/market-guard/src/HookrMarketGuard.sol",advisoryTerms:"feed:address, knobs:(mode:uint8, flags:uint8, bandBps:uint16, rampBps:uint16, staleness:uint32, surchargePips:uint24, minDepth:uint128)",payment:"Returns an LP fee surcharge; the advisory takes no quote.",wiring:"Requires a separate advisory binding, admitted feed checks and phase, gas and fee-cap handling."},E=[{type:"address"},{type:"tuple",components:[{name:"mode",type:"uint8"},{name:"flags",type:"uint8"},{name:"bandBps",type:"uint16"},{name:"rampBps",type:"uint16"},{name:"staleness",type:"uint32"},{name:"surchargePips",type:"uint24"},{name:"minDepth",type:"uint128"}]}];function N(t){let e=["feed","mode","flags","bandBps","rampBps","staleness","surchargePips","minDepth"];g(t,e,e);let r=G(t.feed),a={mode:Number(i(t.mode,8)),flags:Number(i(t.flags,8)),bandBps:Number(i(t.bandBps,16)),rampBps:Number(i(t.rampBps,16)),staleness:Number(i(t.staleness,32)),surchargePips:Number(i(t.surchargePips,24)),minDepth:i(t.minDepth,128)};if(r===C||![1,2].includes(a.mode)||a.flags>1||a.bandBps<50||a.bandBps>5e3||a.rampBps<50||a.rampBps>5e3||a.staleness<60||a.staleness>345600||a.minDepth>10n**30n||(a.mode===1?a.surchargePips!==0:a.surchargePips<1||a.surchargePips>1e5))throw new n("Invalid market-guard advisory terms.");return ee(E,[r,a])}function L(t){let[e,r]=_(E,t),a=Object.fromEntries(Object.entries(r).map(([p,c])=>[p,String(c)]));if(N({feed:e,...a}).toLowerCase()!==t.toLowerCase())throw new n("Non-canonical market-guard advisory terms.");return{feed:e,...r}}function ae(t){let e=L(t);return`Market Guard feed ${e.feed}: mode ${e.mode===1?"refuse":"surcharge"}, band ${e.bandBps} bps, ramp ${e.rampBps} bps, staleness ${e.staleness} seconds, surcharge up to ${e.surchargePips} pips, minimum depth ${e.minDepth} quote units, feed direction ${e.flags===1?"quote in subject":"subject in quote"}. The advisory takes no quote; any surcharge is an LP fee for in-range LPs. Feed failures stop swaps while fail-closed; the feed operator can change its answers.`}var se={address:B.address,codeHash:"0x68fa83ace73756dea7650094b34b7c25140d1ecc166c7559c370a23d1dbf7d32",schemaHash:j(te("MarketGuardConfig(address feed,MarketGuardKnobs knobs)MarketGuardKnobs(uint8 mode,uint8 flags,uint16 bandBps,uint16 rampBps,uint32 staleness,uint24 surchargePips,uint128 minDepth)")),phaseMask:3,feeOnly:!0,failOpen:!1,gasMin:35e4},R=v(["function poolManager() view returns (address)","function feedOf(address) view returns ((bytes32 codeHash,uint8 decimals,uint32 maxStaleness,bool admitted))"]),T=v(["function decimals() view returns (uint8)","function latestRoundData() view returns (uint80 roundId,int256 answer,uint256 startedAt,uint256 updatedAt,uint80 answeredInRound)"]);function F(t){if(t<2n)return t;let e=1n<<BigInt(Math.ceil(t.toString(2).length/2));for(;;){let r=e+t/e>>1n;if(r>=e)return e;e=r}}async function ie(t,e,r,a){g(r,["terms"],["terms"]);let p=["feed","mode","flags","bandBps","rampBps","staleness","surchargePips","minDepth"],c=N(g(r.terms,p,p)),s=L(c);if(!Number.isInteger(a.tickSpacing)||a.tickSpacing<=0||a.tickSpacing>32767)throw new n("Invalid market-guard tick spacing.");let K=Math.ceil(Math.log1p(s.bandBps/1e4)/Math.log(1.0001)),z=Math.ceil(Math.log1p(s.rampBps/1e4)/Math.log(1.0001));if(Math.floor((2*K+z)/(a.tickSpacing*256))+2>4)throw new n("Market-guard band exceeds the tick bitmap walk limit.");let M=async Z=>{let w=await t.call({to:Z,data:I({abi:O,functionName:"decimals"}),gas:60000n,blockNumber:e});if(!w.data||w.data.length!==66)throw new n("Market-guard decimals response is malformed.");return S({abi:O,functionName:"decimals",data:w.data})},[Q,U,V,l,x,P,J]=await Promise.all([y(t,B.address,R,"poolManager",[],e),y(t,B.address,R,"feedOf",[s.feed],e),M(s.feed),t.call({to:s.feed,data:I({abi:T,functionName:"latestRoundData"}),gas:80000n,blockNumber:e}),t.getBytecode({address:s.feed,blockNumber:e}),t.getBlock({blockNumber:e}),a.quote===C?Promise.resolve(18):M(a.quote)]),u=$(U),m=o(V,8),h=o(J,8);if(Q!==H||!q(u.admitted)||!x||j(x)!==u.codeHash||o(u.decimals,8)!==m||m>36n||h>36n||BigInt(s.staleness)>o(u.maxStaleness,32))throw new n("Market-guard manager or feed admission differs at the named block.");if(!l.data||l.data.length!==322)throw new n("Market-guard feed returned malformed round data.");let d=S({abi:T,functionName:"latestRoundData",data:l.data});if(!Array.isArray(d)||d.length!==5||typeof d[1]!="bigint"||d[1]<=0n||d[1]>=1n<<96n)throw new n("Market-guard feed answer is invalid.");let f=o(d[3]);if(f===0n||f>P.timestamp||P.timestamp-f>BigInt(s.staleness))throw new n("Market-guard feed answer is stale or future-dated.");let W=s.flags===1?h:18n,X=s.flags===1?18n:h,k=d[1]*10n**X,b=10n**(m+W),A=k/b;if(A>=1n<<128n)throw new n("Market-guard feed price is outside the supported pool price range.");let D=A<1n<<64n?F(k*(1n<<192n)/b):F(k*(1n<<64n)/b)<<64n;if(D<4295128739n||D>=1461446703485210103287273052203988822378723970342n)throw new n("Market-guard feed price is outside the supported pool price range.");let Y=s.mode===1?3:1;return{data:c,summary:`${ae(c)} Feed code hash ${u.codeHash}, decimals ${m}, latest answer ${d[1]} updated ${f}; admission can be retired by its owner.`,descriptor:se,phases:Y,requiredCaps:{maxLpFeePips:BigInt(s.surchargePips),maxQuoteTakePips:0n,maxSubjectTakeBps:0n}}}export{B as a,N as b,L as c,ae as d,se as e,R as f,T as g,ie as h};
@@ -1 +1 @@
1
- import{b as H,c as N}from"./W32UECOL.js";import{a as S}from"./LT5P6PZW.js";import{a as O}from"./G2LAO23N.js";import{a as D}from"./Z7FGEWO2.js";import{a as C}from"./66F5ZH34.js";import{c as _,f as I}from"./NWNYJ26T.js";import{b as d}from"./TI727O2H.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as x,erc20Abi as L,getAddress as c,parseAbi as q,zeroAddress as M}from"viem";var k={timeShares:{factory:"timeFactory",abi:[{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ASSETS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"FOREVER",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_AMOUNT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DIVISOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"minLockAmount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"MIN_TIP_GROWTH",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ISSUE_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_CLAIM_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"currencyAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"address"}]},{name:"lockedTotal",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pendingLocks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"amount"},{type:"uint256",name:"tick"},{type:"uint256",name:"firstLock"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"heldAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"blockNumber"}],outputs:[{type:"uint256"}]},{name:"lockEpochs",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"uint256",name:"joinEpoch"},{type:"uint256",name:"leaveEpoch"}]},{name:"sweepable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"from"},{type:"uint256",name:"max"}],outputs:[{type:"uint256[]",name:"ids"},{type:"uint256",name:"next"}]},{name:"lockCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"lockAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"tuple",components:[{type:"address",name:"owner"},{type:"uint64",name:"lockedAt"},{type:"uint32",name:"firstDay"},{type:"uint128",name:"amount"},{type:"uint32",name:"lastDay"},{type:"uint64",name:"unlockedAt"}]}]},{name:"isIssued",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"}],outputs:[{type:"bool"}]},{name:"unitSupply",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"}],outputs:[{type:"uint256"}]},{name:"currentDay",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"k"}],outputs:[{type:"uint64",name:"timestamp"},{type:"uint256[]",name:"indexes"}]},{name:"index",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"carry",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"pulled",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"paid",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"held",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"dayIndex",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"holder"},{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lockClaimable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"uint32",name:"numberOfDays"}],outputs:[{type:"uint256",name:"lockId"}]},{name:"issue",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"},{type:"address",name:"to"}],outputs:[]},{name:"issueRange",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"firstDay"},{type:"uint256",name:"lastDay"},{type:"address",name:"to"}],outputs:[]},{name:"unlock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"address",name:"to"}],outputs:[]},{name:"syncAssets",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"catchUp",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"max"}],outputs:[{type:"bool",name:"done"}]},{name:"settle",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"roll",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"sweepDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"},{type:"uint256",name:"claimGas"}],outputs:[{type:"uint256[]",name:"amounts"}]},{name:"claim",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimMany",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"days_"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimLock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"allowance",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"address",name:"spender"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"receiver"},{type:"uint256",name:"id"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},dayWrapper:{factory:"wrapperFactory",abi:[{name:"shares",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"day",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"basket",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"previewRedeem",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"amount"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"deposit",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"redeemShort",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"owedTo",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimOwed",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[]},{name:"collect",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},compounder:{factory:"compoundFactory",abi:[{name:"MIN_SHARES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BANDS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BAND_TICKS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ADD_GAS_FLOOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_DRIFT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_PERIOD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_TOLERANCE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"DROP_SCAN",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DROP_CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"parked",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"dropId"}],outputs:[{type:"bool"}]},{name:"syncSides",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"count"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolManager",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolId",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bytes32"}]},{name:"poolKey",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"address",name:"currency0"},{type:"address",name:"currency1"},{type:"uint24",name:"fee"},{type:"int24",name:"tickSpacing"},{type:"address",name:"hooks"}]}]},{name:"quote",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tokenIsCurrency0",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bool"}]},{name:"bandTicks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint128"}]},{name:"reserve",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"bands",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple[]",components:[{type:"int24",name:"tickLower"},{type:"int24",name:"tickUpper"},{type:"uint128",name:"liquidity"}]}]},{name:"anchor",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"int24",name:"high"},{type:"int24",name:"low"},{type:"uint40",name:"lookedAt"}]}]},{name:"creator",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"holdings",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"deposit",type:"function",stateMutability:"payable",inputs:[{type:"uint256",name:"tokensMax"},{type:"uint256",name:"quoteMax"},{type:"address",name:"to"},{type:"uint256",name:"minShares"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"shares"},{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeemUnlocked",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"poke",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"claimDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"}],outputs:[{type:"uint256",name:"tip"}]},{name:"listSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"asset"}],outputs:[{type:"uint256",name:"side"}]},{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_SIDES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"SIDE_READ_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DEAD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"sideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"fixedSideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"side"}],outputs:[{type:"tuple",components:[{type:"address",name:"currency"},{type:"uint256",name:"index"},{type:"uint256",name:"carry"},{type:"uint128",name:"recognized"},{type:"uint128",name:"paid"},{type:"uint128",name:"dropped"},{type:"uint40",name:"droppedAt"}]}]},{name:"sideOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"currency"}],outputs:[{type:"bool",name:"listed"},{type:"uint256",name:"side"}]},{name:"dropStream",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"earningSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideClaimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"account"},{type:"uint256",name:"side"}],outputs:[{type:"uint256"}]},{name:"claimSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"side"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]}};var W=q(["function approve(address spender,uint256 id,uint256 amount) returns (bool)"]),R=t=>I(t,"Provide the documented Hookr add-on parameters."),X=t=>["view","pure"].includes(t.stateMutability);function E(t){return Object.entries(k).flatMap(([e,n])=>n.abi.filter(i=>X(i)===t).map(i=>({role:e,fn:i})))}var B={timeShares:"time-share locker of a revenue token",dayWrapper:"one-day wrapper of time shares",compounder:"compounding vault of a revenue token"};function T(t){return{type:"object",oneOf:E(t).map(({role:e,fn:n})=>({type:"object",properties:{addon:{const:e,description:`Add-on kind "${e}": the ${B[e]??e}.`},token:{..._,description:O.address("Hookr revenue token whose add-on is used")},...e==="dayWrapper"?{day:{...C(),description:'Day number that selects the day wrapper, as a decimal string. Example: "42".'}}:{},function:{const:n.name,description:`Add-on function to call: ${n.name}.`},params:{...H(n.inputs,n.name),description:`Arguments of ${e}.${n.name}; integers are decimal strings.`}},required:["addon","token",...e==="dayWrapper"?["day"]:[],"function","params"],additionalProperties:!1}))}}function P(t,e){let n=E(e).find(a=>a.role===t.addon&&a.fn.name===t.function);if(!n)throw new r("Choose a documented Hookr add-on function.");let i=["addon","token","function","params",...n.role==="dayWrapper"?["day"]:[]];if(Object.keys(t).length!==i.length||Object.keys(t).some(a=>!i.includes(a)))throw new r("Provide exactly the documented Hookr add-on arguments.");let s;try{s=c(String(t.token))}catch{throw new r("Provide a valid revenue token address.")}let p=0n;if(n.role==="dayWrapper"){if(typeof t.day!="string"||!/^(0|[1-9][0-9]*)$/.test(t.day)||t.day.length>78||BigInt(t.day)>=1n<<256n)throw new r("Provide a wrapper day as a decimal integer string.");p=BigInt(t.day)}return{...n,token:s,day:p,...N(n.fn,R(t.params))}}async function $(t,e,n,i){let s=t.clientFor(d),p=async(f,b,v=[])=>s.readContract({address:c(S[f].address),abi:S[f].abi,functionName:b,args:v}),a=R(await p("tokenizer","tokenizations",[n]));if(typeof a.createdAt!="bigint"||a.createdAt<=0n||c(String(a.creator))===M)throw new r("Current Hookr tokenizer has no matching token record; legacy add-ons need their generation-specific route.");let m=e==="compounder"?void 0:c(String(await p("timeFactory","sharesOf",[n]))),u=e==="timeShares"?m:e==="compounder"?c(String(await p("compoundFactory","vaultOf",[n]))):c(String(await p("wrapperFactory","wrapperOf",[m,i])));if(u===M||m===M)throw new r("Hookr add-on is not open yet. Open it with its pinned factory through hookr_action first.");let y=k[e].abi,l=await s.readContract({address:u,abi:y,functionName:e==="dayWrapper"?"shares":"token"});if(c(String(l))!==(e==="dayWrapper"?m:n))throw new r("Hookr add-on disagrees with its factory record.");if(e==="dayWrapper"&&await s.readContract({address:u,abi:y,functionName:"day"})!==i)throw new r("Hookr day wrapper disagrees with its factory day.");return{target:u,shares:m}}async function K(t,e,n){if(t.network==="testnet")throw new r("Hookr add-ons require mainnet, chain 4663.");let{role:i,token:s,day:p,fn:a,values:m,params:u}=P(e,!1),{target:y,shares:l}=await $(t,i,s,p),f=[],b=[],v=0n,h=t.clientFor(d),A=async(o,w)=>{if(w<0n||w>=1n<<128n)throw new r("Hookr add-on funding exceeds its bounded exact approval.");if(!w)return;if(o===M){v+=w,b.push({token:D,amount:w,to:y});return}let g=await h.readContract({address:o,abi:L,functionName:"allowance",args:[n,y]});g>0n&&g!==w&&f.push(t.approval(o,y,"0",d)),f.push(t.approval(o,y,w.toString(),d)),b.push({token:o,amount:w})};if(i==="timeShares"&&a.name==="lock"&&await A(s,u.amount),i==="dayWrapper"&&a.name==="deposit"){let o=u.amount;if(o<=0n||o>=1n<<128n)throw new r("Hookr wrapper deposit needs a positive bounded share amount.");f.push(t.unsignedTx({chainId:d,to:l,value:"0",data:x({abi:W,functionName:"approve",args:[y,p,o]}),description:`Approve exactly ${o} time shares of day ${p} to the factory-recorded wrapper ${y}.`})),b.push({token:l,id:p,amount:o,to:y})}if(i==="compounder"&&a.name==="deposit"){let o=c(String(await h.readContract({address:y,abi:k.compounder.abi,functionName:"quote"})));await A(s,u.tokensMax),await A(o,u.quoteMax)}if(["redeem","redeemShort","redeemUnlocked"].includes(a.name)&&b.push({token:y,amount:u.shares??u.amount,to:M}),a.name==="transfer"&&b.push({token:y,amount:u.amount,to:c(String(u.receiver??u.to)),...i==="timeShares"?{id:u.id}:{}}),u.deadline!==void 0){let o=await h.getBlock();if(typeof o.timestamp!="bigint"||u.deadline<o.timestamp)throw new r("Hookr add-on deadline expired or chain time is unavailable.")}return f.push(t.unsignedTx({chainId:d,to:y,value:v.toString(),data:x({abi:[a],functionName:a.name,args:m}),description:`Hookr ${i}.${a.name}: ${JSON.stringify(e.params)}. Token ${s}${i==="dayWrapper"?`; day ${p}`:""}. Review lock duration, recipients and minimum outputs.`})),{txs:f,inputs:b}}function nt(t){return[{name:"hookr_addon_read",inputSchema:{...T(!0),description:"Read factory-verified current Hookr revenue time shares, day wrappers or compounders: locks, day income, unwrap baskets, bands and side assets. Open factories via hookr_action."},execute:async e=>{let{role:n,token:i,day:s,fn:p,values:a}=P(e,!0),{target:m}=await $(t,n,i,s),u=await t.clientFor(d).readContract({address:m,abi:[p],functionName:p.name,args:a});return{chainId:d,token:i,contract:m,function:p.name,result:JSON.parse(JSON.stringify(u,(y,l)=>typeof l=="bigint"?l.toString():l))}}},{name:"hookr_addon_action",inputSchema:{...T(!1),description:"Preview current Hookr time-share lock/issue/unlock/roll/claims, day wrap/unwrap/owed claims, or compound deposit/redeem/poke/side claims. Exact approvals, factory provenance and local human confirmation required."},execute:async(e,n)=>{let{txs:i}=await K(t,e,n),s=await t.preview(i,n);return{txs:i,preview:s,summary:`Hookr ${e.addon}.${e.function}; verify the receipt and read the resulting lock or balances.`}}}]}export{K as a,nt as b};
1
+ import{b as H,c as N}from"./AZBTNUXF.js";import{a as O}from"./G2LAO23N.js";import{a as D}from"./7WXAS54T.js";import{a as S}from"./B7WZJHIJ.js";import{a as C}from"./66F5ZH34.js";import{c as _,f as I}from"./NWNYJ26T.js";import{b as d}from"./EWZFZUVF.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as x,erc20Abi as L,getAddress as c,parseAbi as q,zeroAddress as M}from"viem";var k={timeShares:{factory:"timeFactory",abi:[{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ASSETS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"FOREVER",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint32"}]},{name:"MAX_LOCK_AMOUNT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MIN_LOCK_DIVISOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"minLockAmount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"MIN_TIP_GROWTH",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_ISSUE_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_CLAIM_DAYS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"currencyAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"address"}]},{name:"lockedTotal",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pendingLocks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"amount"},{type:"uint256",name:"tick"},{type:"uint256",name:"firstLock"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"heldAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"blockNumber"}],outputs:[{type:"uint256"}]},{name:"lockEpochs",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"uint256",name:"joinEpoch"},{type:"uint256",name:"leaveEpoch"}]},{name:"sweepable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"from"},{type:"uint256",name:"max"}],outputs:[{type:"uint256[]",name:"ids"},{type:"uint256",name:"next"}]},{name:"lockCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"lockAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"}],outputs:[{type:"tuple",components:[{type:"address",name:"owner"},{type:"uint64",name:"lockedAt"},{type:"uint32",name:"firstDay"},{type:"uint128",name:"amount"},{type:"uint32",name:"lastDay"},{type:"uint64",name:"unlockedAt"}]}]},{name:"isIssued",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"}],outputs:[{type:"bool"}]},{name:"unitSupply",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"}],outputs:[{type:"uint256"}]},{name:"currentDay",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"pointAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"k"}],outputs:[{type:"uint64",name:"timestamp"},{type:"uint256[]",name:"indexes"}]},{name:"index",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"carry",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"pulled",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"paid",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"held",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"dayIndex",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"holder"},{type:"uint256",name:"day"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lockClaimable",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"lock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"uint32",name:"numberOfDays"}],outputs:[{type:"uint256",name:"lockId"}]},{name:"issue",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"day"},{type:"address",name:"to"}],outputs:[]},{name:"issueRange",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"firstDay"},{type:"uint256",name:"lastDay"},{type:"address",name:"to"}],outputs:[]},{name:"unlock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"address",name:"to"}],outputs:[]},{name:"syncAssets",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"catchUp",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"max"}],outputs:[{type:"bool",name:"done"}]},{name:"settle",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"roll",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"sweepDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"},{type:"uint256",name:"claimGas"}],outputs:[{type:"uint256[]",name:"amounts"}]},{name:"claim",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"day"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimMany",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"days_"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"claimLock",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"lockId"},{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"allowance",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"address",name:"spender"},{type:"uint256",name:"id"}],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"receiver"},{type:"uint256",name:"id"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},dayWrapper:{factory:"wrapperFactory",abi:[{name:"shares",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"day",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"assetCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"basket",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"previewRedeem",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"amount"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"deposit",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"redeemShort",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"amount"},{type:"address",name:"to"}],outputs:[{type:"uint256[]",name:"cash"}]},{name:"owedTo",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"},{type:"uint256",name:"asset"}],outputs:[{type:"uint256"}]},{name:"claimOwed",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"asset"},{type:"address",name:"to"}],outputs:[]},{name:"collect",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]},compounder:{factory:"compoundFactory",abi:[{name:"MIN_SHARES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BANDS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_BAND_TICKS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"MAX_TIP_BPS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ADD_GAS_FLOOR",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_DRIFT",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_PERIOD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"ANCHOR_TOLERANCE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"DROP_SCAN",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DROP_CLAIM_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"parked",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"dropId"}],outputs:[{type:"bool"}]},{name:"syncSides",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"count"}]},{name:"token",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolManager",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"poolId",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bytes32"}]},{name:"poolKey",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"address",name:"currency0"},{type:"address",name:"currency1"},{type:"uint24",name:"fee"},{type:"int24",name:"tickSpacing"},{type:"address",name:"hooks"}]}]},{name:"quote",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"tokenIsCurrency0",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"bool"}]},{name:"bandTicks",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"int24"}]},{name:"tipBps",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint16"}]},{name:"tipCap",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint128"}]},{name:"reserve",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"bands",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple[]",components:[{type:"int24",name:"tickLower"},{type:"int24",name:"tickUpper"},{type:"uint128",name:"liquidity"}]}]},{name:"anchor",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"tuple",components:[{type:"int24",name:"high"},{type:"int24",name:"low"},{type:"uint40",name:"lookedAt"}]}]},{name:"creator",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"nextDrop",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"holdings",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"deposit",type:"function",stateMutability:"payable",inputs:[{type:"uint256",name:"tokensMax"},{type:"uint256",name:"quoteMax"},{type:"address",name:"to"},{type:"uint256",name:"minShares"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"shares"},{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeem",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"redeemUnlocked",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"shares"},{type:"address",name:"to"},{type:"uint256",name:"minTokens"},{type:"uint256",name:"minQuote"},{type:"uint256",name:"deadline"}],outputs:[{type:"uint256",name:"tokens"},{type:"uint256",name:"quote"}]},{name:"poke",type:"function",stateMutability:"nonpayable",inputs:[],outputs:[{type:"uint256",name:"tip"}]},{name:"claimDrops",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256[]",name:"dropIds"}],outputs:[{type:"uint256",name:"tip"}]},{name:"listSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"asset"}],outputs:[{type:"uint256",name:"side"}]},{name:"SCALE",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"MAX_SIDES",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"SIDE_READ_GAS",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"DEAD",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"address"}]},{name:"sideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"fixedSideCount",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideAt",type:"function",stateMutability:"view",inputs:[{type:"uint256",name:"side"}],outputs:[{type:"tuple",components:[{type:"address",name:"currency"},{type:"uint256",name:"index"},{type:"uint256",name:"carry"},{type:"uint128",name:"recognized"},{type:"uint128",name:"paid"},{type:"uint128",name:"dropped"},{type:"uint40",name:"droppedAt"}]}]},{name:"sideOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"currency"}],outputs:[{type:"bool",name:"listed"},{type:"uint256",name:"side"}]},{name:"dropStream",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"earningSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"sideClaimable",type:"function",stateMutability:"view",inputs:[{type:"address",name:"account"},{type:"uint256",name:"side"}],outputs:[{type:"uint256"}]},{name:"claimSide",type:"function",stateMutability:"nonpayable",inputs:[{type:"uint256",name:"side"},{type:"address",name:"to"}],outputs:[{type:"uint256",name:"amount"}]},{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{type:"address",name:"owner"}],outputs:[{type:"uint256"}]},{name:"totalSupply",type:"function",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{type:"address",name:"to"},{type:"uint256",name:"amount"}],outputs:[{type:"bool"}]}]}};var W=q(["function approve(address spender,uint256 id,uint256 amount) returns (bool)"]),R=t=>I(t,"Provide the documented Hookr add-on parameters."),X=t=>["view","pure"].includes(t.stateMutability);function E(t){return Object.entries(k).flatMap(([e,n])=>n.abi.filter(i=>X(i)===t).map(i=>({role:e,fn:i})))}var B={timeShares:"time-share locker of a revenue token",dayWrapper:"one-day wrapper of time shares",compounder:"compounding vault of a revenue token"};function T(t){return{type:"object",oneOf:E(t).map(({role:e,fn:n})=>({type:"object",properties:{addon:{const:e,description:`Add-on kind "${e}": the ${B[e]??e}.`},token:{..._,description:O.address("Hookr revenue token whose add-on is used")},...e==="dayWrapper"?{day:{...C(),description:'Day number that selects the day wrapper, as a decimal string. Example: "42".'}}:{},function:{const:n.name,description:`Add-on function to call: ${n.name}.`},params:{...H(n.inputs,n.name),description:`Arguments of ${e}.${n.name}; integers are decimal strings.`}},required:["addon","token",...e==="dayWrapper"?["day"]:[],"function","params"],additionalProperties:!1}))}}function P(t,e){let n=E(e).find(a=>a.role===t.addon&&a.fn.name===t.function);if(!n)throw new r("Choose a documented Hookr add-on function.");let i=["addon","token","function","params",...n.role==="dayWrapper"?["day"]:[]];if(Object.keys(t).length!==i.length||Object.keys(t).some(a=>!i.includes(a)))throw new r("Provide exactly the documented Hookr add-on arguments.");let s;try{s=c(String(t.token))}catch{throw new r("Provide a valid revenue token address.")}let p=0n;if(n.role==="dayWrapper"){if(typeof t.day!="string"||!/^(0|[1-9][0-9]*)$/.test(t.day)||t.day.length>78||BigInt(t.day)>=1n<<256n)throw new r("Provide a wrapper day as a decimal integer string.");p=BigInt(t.day)}return{...n,token:s,day:p,...N(n.fn,R(t.params))}}async function $(t,e,n,i){let s=t.clientFor(d),p=async(f,b,v=[])=>s.readContract({address:c(S[f].address),abi:S[f].abi,functionName:b,args:v}),a=R(await p("tokenizer","tokenizations",[n]));if(typeof a.createdAt!="bigint"||a.createdAt<=0n||c(String(a.creator))===M)throw new r("Current Hookr tokenizer has no matching token record; legacy add-ons need their generation-specific route.");let m=e==="compounder"?void 0:c(String(await p("timeFactory","sharesOf",[n]))),u=e==="timeShares"?m:e==="compounder"?c(String(await p("compoundFactory","vaultOf",[n]))):c(String(await p("wrapperFactory","wrapperOf",[m,i])));if(u===M||m===M)throw new r("Hookr add-on is not open yet. Open it with its pinned factory through hookr_action first.");let y=k[e].abi,l=await s.readContract({address:u,abi:y,functionName:e==="dayWrapper"?"shares":"token"});if(c(String(l))!==(e==="dayWrapper"?m:n))throw new r("Hookr add-on disagrees with its factory record.");if(e==="dayWrapper"&&await s.readContract({address:u,abi:y,functionName:"day"})!==i)throw new r("Hookr day wrapper disagrees with its factory day.");return{target:u,shares:m}}async function K(t,e,n){if(t.network==="testnet")throw new r("Hookr add-ons require mainnet, chain 4663.");let{role:i,token:s,day:p,fn:a,values:m,params:u}=P(e,!1),{target:y,shares:l}=await $(t,i,s,p),f=[],b=[],v=0n,h=t.clientFor(d),A=async(o,w)=>{if(w<0n||w>=1n<<128n)throw new r("Hookr add-on funding exceeds its bounded exact approval.");if(!w)return;if(o===M){v+=w,b.push({token:D,amount:w,to:y});return}let g=await h.readContract({address:o,abi:L,functionName:"allowance",args:[n,y]});g>0n&&g!==w&&f.push(t.approval(o,y,"0",d)),f.push(t.approval(o,y,w.toString(),d)),b.push({token:o,amount:w})};if(i==="timeShares"&&a.name==="lock"&&await A(s,u.amount),i==="dayWrapper"&&a.name==="deposit"){let o=u.amount;if(o<=0n||o>=1n<<128n)throw new r("Hookr wrapper deposit needs a positive bounded share amount.");f.push(t.unsignedTx({chainId:d,to:l,value:"0",data:x({abi:W,functionName:"approve",args:[y,p,o]}),description:`Approve exactly ${o} time shares of day ${p} to the factory-recorded wrapper ${y}.`})),b.push({token:l,id:p,amount:o,to:y})}if(i==="compounder"&&a.name==="deposit"){let o=c(String(await h.readContract({address:y,abi:k.compounder.abi,functionName:"quote"})));await A(s,u.tokensMax),await A(o,u.quoteMax)}if(["redeem","redeemShort","redeemUnlocked"].includes(a.name)&&b.push({token:y,amount:u.shares??u.amount,to:M}),a.name==="transfer"&&b.push({token:y,amount:u.amount,to:c(String(u.receiver??u.to)),...i==="timeShares"?{id:u.id}:{}}),u.deadline!==void 0){let o=await h.getBlock();if(typeof o.timestamp!="bigint"||u.deadline<o.timestamp)throw new r("Hookr add-on deadline expired or chain time is unavailable.")}return f.push(t.unsignedTx({chainId:d,to:y,value:v.toString(),data:x({abi:[a],functionName:a.name,args:m}),description:`Hookr ${i}.${a.name}: ${JSON.stringify(e.params)}. Token ${s}${i==="dayWrapper"?`; day ${p}`:""}. Review lock duration, recipients and minimum outputs.`})),{txs:f,inputs:b}}function nt(t){return[{name:"hookr_addon_read",inputSchema:{...T(!0),description:"Read factory-verified current Hookr revenue time shares, day wrappers or compounders: locks, day income, unwrap baskets, bands and side assets. Open factories via hookr_action."},execute:async e=>{let{role:n,token:i,day:s,fn:p,values:a}=P(e,!0),{target:m}=await $(t,n,i,s),u=await t.clientFor(d).readContract({address:m,abi:[p],functionName:p.name,args:a});return{chainId:d,token:i,contract:m,function:p.name,result:JSON.parse(JSON.stringify(u,(y,l)=>typeof l=="bigint"?l.toString():l))}}},{name:"hookr_addon_action",inputSchema:{...T(!1),description:"Preview current Hookr time-share lock/issue/unlock/roll/claims, day wrap/unwrap/owed claims, or compound deposit/redeem/poke/side claims. Exact approvals, factory provenance and local human confirmation required."},execute:async(e,n)=>{let{txs:i}=await K(t,e,n),s=await t.preview(i,n);return{txs:i,preview:s,summary:`Hookr ${e.addon}.${e.function}; verify the receipt and read the resulting lock or balances.`}}}]}export{K as a,nt as b};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oakagentkit/core",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "engines": {
@@ -1 +0,0 @@
1
- import{d as J,e as Q,f as X,i as Y,n as Z,o as ee}from"./7OOCAZBE.js";import{a as v,d as j}from"./JFC2QCMW.js";import{a as z}from"./Y2QADJOB.js";import{a as G,b as V,c as R}from"./CFPJDLTZ.js";import{b as L,j as W}from"./TI727O2H.js";import{formatUnits as de,getAddress as le,parseAbi as ne}from"viem";var b=10n**18n,F=1n<<192n,te=ne(["function slot0() view returns (uint160,int24,uint16,uint16,uint16,uint8,bool)","function liquidity() view returns (uint128)","function getSlot0(bytes32) view returns (uint160,int24,uint24,uint24)","function getLiquidity(bytes32) view returns (uint128)"]),me=ne(["function getLaunchedToken(address) view returns ((address token,address curve,address deployer,address creatorFeeRecipient,address pairToken,uint256 graduationThreshold,uint24 poolFee,int24 tickSpacing,uint16 creatorTaxBps,bool buybackEnabled,uint8 phase,uint256 sweptQuote,uint256 sweptTokens,uint256 sweptAt,bool exists))"]),a=m=>({usdEstimate:null,estimateLabel:"price unavailable",estimateReason:m}),k=m=>`${m.chainId}:${m.address.toLowerCase()}`;async function we(m,P,w={}){let C=Number.isFinite(w.budgetMs)?Math.min(3e3,Math.max(0,w.budgetMs)):3e3,A=`Oak stopped pricing after ${C===3e3?"3 seconds":`${C} milliseconds`}`,E=new Map,O=[...new Map(P.map(e=>[k(e.token),e.token])).values()],h=!1,T=0,S=[];async function I(e){if(h)throw new Error(A);if(T>=6?await new Promise(t=>S.push(t)):T++,h)throw new Error(A);try{return await e()}finally{let t=S.shift();t?t():T--}}let B=new Map,N=new Map,q=new Map,H;function g(e){let t=B.get(e);if(!t){let n=m.clientFor(e);t=new Proxy(n,{get(r,o,c){let p=Reflect.get(r,o,c);return["readContract","getCode","multicall"].includes(String(o))?(...u)=>I(async()=>Reflect.apply(p,r,u)):p}}),B.set(e,t)}return t}function y(e){let t=N.get(e);return t||(t=I(()=>g(e).getBlockNumber({cacheTime:0})),N.set(e,t)),t}function U(e,t){return H??=Z(e,void 0,t).then(n=>{let r=BigInt(n);if(r<=0n)throw new Error("ETH average unavailable");return r}),H}function ie(e,t){let n=`${e}:${t}`,r=q.get(n);return r||(r=I(()=>g(e).getBlock({blockNumber:t})).then(o=>{if(!(o.number!==t||typeof o.timestamp!="bigint"||o.timestamp<=0n))return o.timestamp.toString()}).catch(()=>{}),q.set(n,r)),r}async function re(e,t){let n=g(e.chainId),r=await y(e.chainId),o=await j(e,n,r);if(!o)return a("Oak has no pinned pool with sufficient in-range depth for this token");let c=BigInt(e.address)<BigInt(v.usdg);return{numerator:c?o.sqrt**2n:F,denominator:(c?F:o.sqrt**2n)*10n**6n,source:`current price in the Uniswap USDG/${t.symbol} pool; on-chain trading can differ from the stock market`,block:r}}async function oe(e){let t=g(e.chainId),n=await y(e.chainId),{assets:r,isLog:o}=await Q(e,t,n,w.chopShareFacts),c=10n**BigInt(e.decimals),p=await Promise.all(r.map(d=>M(d.token,!1))),u=0n,s=1n;for(let d=0;d<r.length;d++){let l=p[d];if(!("numerator"in l))return l;u=u*l.denominator+BigInt(r[d].amount)*l.numerator*s,s*=l.denominator}return{numerator:u,denominator:s*c,block:n,source:`Chop ${o?"log":"LP reserves and log"} net backing estimate; default-caller fees may differ; locks and gas excluded`}}async function M(e,t=!0){if(X(e))return{numerator:1n,denominator:10n**6n,source:"USDG counted at $1.00"};if(e.chainId!==L)return a("Oak has no source for this token");let n=[G.oakLog.address,V].some(i=>i.toLowerCase()===e.address.toLowerCase()),r=w.chopShareFacts?.some(i=>[i.log.address,i.staking.address].some(f=>f.toLowerCase()===e.address.toLowerCase())),o=n||r;if(!o&&w.chopShareTokens?.some(i=>i.toLowerCase()===e.address.toLowerCase()))return a("chop_logs shows this log's backing");if(t&&o){if(P.filter(i=>k(i.token)===k(e)).every(i=>i.amount==="0"))return{numerator:0n,denominator:1n,source:"zero Chop share balance"};try{return await oe(e)}catch{return a("chop_logs shows this log's backing")}}let c=e.symbol;if(c.startsWith("untrusted "))try{let i=JSON.parse(c.slice(10));typeof i=="string"&&(c=i)}catch{}if(J(e))try{let i=g(e.chainId),f=await y(e.chainId),_=le(R.stateView),D=R.poolId,[ce,ue]=await Promise.all([i.readContract({address:_,abi:te,functionName:"getSlot0",args:[D],blockNumber:f}),i.readContract({address:_,abi:te,functionName:"getLiquidity",args:[D],blockNumber:f})]),K=ce[0];return K<=0n||ue<=0n?a("The pinned Uniswap v4 WETH/CHOP pool has no active liquidity, and the only other route is a near-empty pool. A quote is a sale for this amount only; Oak never uses it to value a balance."):{numerator:await U(i,f)*F,denominator:b*K**2n*10n**BigInt(e.decimals),source:"current price in the Uniswap v4 WETH/CHOP pool",block:f}}catch{return a("Oak could not verify the pinned Uniswap v4 WETH/CHOP pool for CHOP. A quote is a sale for this amount only; Oak never uses it to value a balance.")}if(c==="CHOP")return a("Oak has no pinned market for CHOP. A quote is a sale for this amount only; Oak never uses it to value a balance.");let p=v.tokens.find(i=>i.token.toLowerCase()===e.address.toLowerCase());if(p)return re(e,p);if(Object.hasOwn(v.notOffered,c))return a("Oak has no pinned market for this token");let u=g(e.chainId),s=await y(e.chainId);if(Y(e))return{numerator:await U(u,s),denominator:b*b,source:"30-minute average of the Uniswap ETH/USDG pool",block:s};let d=(m.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS)?.toLowerCase()===e.address.toLowerCase();if(d)try{let i=m.resolvePrice?await m.resolvePrice(e,s):await ee(e,{client:u,blockNumber:s,oakTokenAddress:e.address,officialStockTokens:[]}),f=BigInt(i.usdE18);if(f<=0n)throw new Error("OAK price unavailable");return{numerator:f,denominator:b*10n**BigInt(e.decimals),source:"OAK price",block:s}}catch{}if(d&&(await u.readContract({address:W[L].pons.factory.address,abi:me,functionName:"getLaunchedToken",args:[e.address],blockNumber:s})).phase!==2)return a("Oak has no graduated Pons pool price for OAK");let l=await z(e,u,s);return l.numerator<=0n||l.denominator<=0n?a("Oak has no source for this token"):{numerator:await U(u,s)*l.numerator,denominator:b*l.denominator*10n**BigInt(e.decimals),source:d?"OAK's current Pons pool price; fewer than enough trades in 30 minutes for a price":"current Pons pool price",block:s}}let x=0;async function se(){for(;!h&&x<O.length;){let e=O[x++],t;try{if(!Number.isInteger(e.decimals)||e.decimals<0||e.decimals>255)throw new Error("Invalid decimals");if(t=await M(e),h||E.set(k(e),t),"numerator"in t&&t.block!==void 0){let n=await ie(e.chainId,t.block);h||(t.observedAt=n)}}catch{t=a("Oak has no source for this token")}h||E.set(k(e),t)}}let $,ae=new Promise(e=>{$=setTimeout(()=>{h=!0;for(let t of S.splice(0))t();e()},C)});try{await Promise.race([Promise.all(Array.from({length:Math.min(6,O.length)},se)),ae])}finally{clearTimeout($),h=!0}return P.map(e=>{let t;try{if(!/^\d+$/.test(e.amount)||!Number.isInteger(e.token.decimals)||e.token.decimals<0||e.token.decimals>255)throw new Error("Invalid amount");t="humanAmount"in e&&typeof e.humanAmount=="string"?e.humanAmount:de(BigInt(e.amount),e.token.decimals);let n=E.get(k(e.token));if(n&&"numerator"in n){let o=(BigInt(e.amount)*n.numerator*100n*2n+n.denominator)/(n.denominator*2n);return{...e,humanAmount:t,usdEstimate:`${o/100n}.${(o%100n).toString().padStart(2,"0")}`,estimateLabel:"estimate, not a quote",estimateSource:n.source,unitUsdE18:(n.numerator*10n**BigInt(e.token.decimals)*b/n.denominator).toString(),...n.observedAt===void 0?{}:{observedAt:n.observedAt},...n.block===void 0?{}:{estimateAsOf:n.block.toString()}}}return{...e,humanAmount:t,...n??a(A)}}catch{return{...e,...t===void 0?{}:{humanAmount:t},...a("Oak cannot format this token amount")}}})}export{we as a};