@oakagentkit/core 0.2.3 → 0.2.5

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 (576) hide show
  1. package/build/dist/api/addresses.d.ts +112 -0
  2. package/build/dist/api/addresses.js +1 -1
  3. package/build/dist/api/amounts.d.ts +2 -0
  4. package/build/dist/api/amounts.js +1 -1
  5. package/build/dist/api/args.js +1 -1
  6. package/build/dist/api/cache.js +1 -1
  7. package/build/dist/api/canonical.js +1 -1
  8. package/build/dist/api/chain.js +1 -1
  9. package/build/dist/api/deployments.js +1 -1
  10. package/build/dist/api/errors.d.ts +1 -0
  11. package/build/dist/api/errors.js +1 -1
  12. package/build/dist/api/gas.js +1 -1
  13. package/build/dist/api/grandfather.js +1 -1
  14. package/build/dist/api/guards.js +1 -1
  15. package/build/dist/api/history.js +1 -1
  16. package/build/dist/api/http.js +1 -1
  17. package/build/dist/api/identity-link.d.ts +1 -0
  18. package/build/dist/api/identity-link.js +1 -1
  19. package/build/dist/api/launch.js +1 -1
  20. package/build/dist/api/merkle.js +1 -1
  21. package/build/dist/api/metadata.js +1 -1
  22. package/build/dist/api/module.js +1 -1
  23. package/build/dist/api/modules/beefy/boosts.js +1 -1
  24. package/build/dist/api/modules/beefy/clm.js +1 -1
  25. package/build/dist/api/modules/beefy/guard.js +1 -1
  26. package/build/dist/api/modules/beefy/index.js +1 -1
  27. package/build/dist/api/modules/beefy/liquidity.js +1 -1
  28. package/build/dist/api/modules/beefy/management.js +1 -1
  29. package/build/dist/api/modules/beefy/vaults.js +1 -1
  30. package/build/dist/api/modules/borro/abi.d.ts +149 -0
  31. package/build/dist/api/modules/borro/abi.js +1 -0
  32. package/build/dist/api/modules/borro/actions.d.ts +2 -0
  33. package/build/dist/api/modules/borro/actions.js +1 -0
  34. package/build/dist/api/modules/borro/checks.d.ts +151 -0
  35. package/build/dist/api/modules/borro/checks.js +1 -0
  36. package/build/dist/api/modules/borro/copy.d.ts +174 -0
  37. package/build/dist/api/modules/borro/copy.js +1 -0
  38. package/build/dist/api/modules/borro/index.d.ts +13 -0
  39. package/build/dist/api/modules/borro/index.js +1 -0
  40. package/build/dist/api/modules/borro/liquidity.d.ts +4 -0
  41. package/build/dist/api/modules/borro/liquidity.js +1 -0
  42. package/build/dist/api/modules/borro/pins.d.ts +264 -0
  43. package/build/dist/api/modules/borro/pins.js +1 -0
  44. package/build/dist/api/modules/borro/positions.d.ts +8 -0
  45. package/build/dist/api/modules/borro/positions.js +1 -0
  46. package/build/dist/api/modules/borro/rates.d.ts +20 -0
  47. package/build/dist/api/modules/borro/rates.js +1 -0
  48. package/build/dist/api/modules/borro/reader.d.ts +32 -0
  49. package/build/dist/api/modules/borro/reader.js +1 -0
  50. package/build/dist/api/modules/borro/types.d.ts +120 -0
  51. package/build/dist/api/modules/borro/types.js +0 -0
  52. package/build/dist/api/modules/clanker/extensions.js +1 -1
  53. package/build/dist/api/modules/clanker/index.js +1 -1
  54. package/build/dist/api/modules/clanker/manage.js +1 -1
  55. package/build/dist/api/modules/clanker/pool-config.js +1 -1
  56. package/build/dist/api/modules/clanker/protocol.js +1 -1
  57. package/build/dist/api/modules/clanker/state.js +1 -1
  58. package/build/dist/api/modules/earn/copy.d.ts +114 -0
  59. package/build/dist/api/modules/earn/copy.js +1 -0
  60. package/build/dist/api/modules/earn/cost.d.ts +47 -0
  61. package/build/dist/api/modules/earn/cost.js +1 -0
  62. package/build/dist/api/modules/earn/index.d.ts +8 -0
  63. package/build/dist/api/modules/earn/index.js +1 -0
  64. package/build/dist/api/modules/earn/lp.d.ts +17 -0
  65. package/build/dist/api/modules/earn/lp.js +1 -0
  66. package/build/dist/api/modules/earn/options.d.ts +36 -0
  67. package/build/dist/api/modules/earn/options.js +1 -0
  68. package/build/dist/api/modules/earn/types.d.ts +39 -0
  69. package/build/dist/api/modules/earn/types.js +0 -0
  70. package/build/dist/api/modules/erc8004/abi.js +1 -1
  71. package/build/dist/api/modules/erc8004/common.js +1 -1
  72. package/build/dist/api/modules/erc8004/domain.js +1 -1
  73. package/build/dist/api/modules/erc8004/index.js +1 -1
  74. package/build/dist/api/modules/erc8004/management.js +1 -1
  75. package/build/dist/api/modules/erc8004/reputation.js +1 -1
  76. package/build/dist/api/modules/erc8004/services.js +1 -1
  77. package/build/dist/api/modules/erc8004/validation.js +1 -1
  78. package/build/dist/api/modules/grove/index.js +1 -1
  79. package/build/dist/api/modules/heyresearch/backoff.js +1 -1
  80. package/build/dist/api/modules/heyresearch/builder-feed.js +1 -1
  81. package/build/dist/api/modules/heyresearch/freshness.js +1 -1
  82. package/build/dist/api/modules/heyresearch/index.js +1 -1
  83. package/build/dist/api/modules/heyresearch/proof-reads.js +1 -1
  84. package/build/dist/api/modules/heyresearch/public-reads.js +1 -1
  85. package/build/dist/api/modules/heyresearch/scan.js +1 -1
  86. package/build/dist/api/modules/heyresearch/status-labels.d.ts +1 -1
  87. package/build/dist/api/modules/heyresearch/status-labels.js +1 -1
  88. package/build/dist/api/modules/heyresearch/token-facts.js +1 -1
  89. package/build/dist/api/modules/hoodag/chain-reads.js +1 -1
  90. package/build/dist/api/modules/hoodag/index.js +1 -1
  91. package/build/dist/api/modules/hoodag/management.js +1 -1
  92. package/build/dist/api/modules/hoodag/public-reads.js +1 -1
  93. package/build/dist/api/modules/hoodag/reconstruct.js +1 -1
  94. package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
  95. package/build/dist/api/modules/hoodlock/buyback.js +1 -1
  96. package/build/dist/api/modules/hoodlock/commerce.js +1 -1
  97. package/build/dist/api/modules/hoodlock/fee.js +1 -1
  98. package/build/dist/api/modules/hoodlock/guard.js +1 -1
  99. package/build/dist/api/modules/hoodlock/index.js +1 -1
  100. package/build/dist/api/modules/hoodlock/lifecycle.js +1 -1
  101. package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
  102. package/build/dist/api/modules/hoodlock/public.js +1 -1
  103. package/build/dist/api/modules/hookr/actions.js +1 -1
  104. package/build/dist/api/modules/hookr/addons.js +1 -1
  105. package/build/dist/api/modules/hookr/agent-gate.js +1 -1
  106. package/build/dist/api/modules/hookr/contracts.js +1 -1
  107. package/build/dist/api/modules/hookr/create-cancel.js +1 -1
  108. package/build/dist/api/modules/hookr/discovery.js +1 -1
  109. package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
  110. package/build/dist/api/modules/hookr/index.js +1 -1
  111. package/build/dist/api/modules/hookr/launch-options.js +1 -1
  112. package/build/dist/api/modules/hookr/launch-profile.js +1 -1
  113. package/build/dist/api/modules/hookr/launch-receipt.js +1 -1
  114. package/build/dist/api/modules/hookr/launch.js +1 -1
  115. package/build/dist/api/modules/hookr/liquidity.js +1 -1
  116. package/build/dist/api/modules/hookr/lp-positions.js +1 -1
  117. package/build/dist/api/modules/hookr/lp-reads.js +1 -1
  118. package/build/dist/api/modules/hookr/lp-receipt.js +1 -1
  119. package/build/dist/api/modules/hookr/lp-state.js +1 -1
  120. package/build/dist/api/modules/hookr/pins.js +1 -1
  121. package/build/dist/api/modules/hookr/public-reads.js +1 -1
  122. package/build/dist/api/modules/hookr/read-utils.js +1 -1
  123. package/build/dist/api/modules/hookr/relay.js +1 -1
  124. package/build/dist/api/modules/hookr/revenue.js +1 -1
  125. package/build/dist/api/modules/kyberswap/index.js +1 -1
  126. package/build/dist/api/modules/kyberswap/source-pools.js +1 -1
  127. package/build/dist/api/modules/layerbank/abi.d.ts +165 -0
  128. package/build/dist/api/modules/layerbank/abi.js +1 -0
  129. package/build/dist/api/modules/layerbank/actions.d.ts +2 -0
  130. package/build/dist/api/modules/layerbank/actions.js +1 -0
  131. package/build/dist/api/modules/layerbank/checks.d.ts +21 -0
  132. package/build/dist/api/modules/layerbank/checks.js +1 -0
  133. package/build/dist/api/modules/layerbank/index.d.ts +2 -0
  134. package/build/dist/api/modules/layerbank/index.js +1 -0
  135. package/build/dist/api/modules/layerbank/merkl.d.ts +6 -0
  136. package/build/dist/api/modules/layerbank/merkl.js +1 -0
  137. package/build/dist/api/modules/layerbank/reader.d.ts +15 -0
  138. package/build/dist/api/modules/layerbank/reader.js +1 -0
  139. package/build/dist/api/modules/layerbank/reserve.d.ts +13 -0
  140. package/build/dist/api/modules/layerbank/reserve.js +1 -0
  141. package/build/dist/api/modules/lighter/index.js +1 -1
  142. package/build/dist/api/modules/longbow/administration.js +1 -1
  143. package/build/dist/api/modules/longbow/analytics.js +1 -1
  144. package/build/dist/api/modules/longbow/fixed.js +1 -1
  145. package/build/dist/api/modules/longbow/index.js +1 -1
  146. package/build/dist/api/modules/longbow/nft.js +1 -1
  147. package/build/dist/api/modules/longbow/rebates.js +1 -1
  148. package/build/dist/api/modules/longbow/staking.js +1 -1
  149. package/build/dist/api/modules/meridian/index.js +1 -1
  150. package/build/dist/api/modules/meridian/markets.js +1 -1
  151. package/build/dist/api/modules/meridian/perps-batch.js +1 -1
  152. package/build/dist/api/modules/meridian/perps-common.js +1 -1
  153. package/build/dist/api/modules/meridian/perps-guards.js +1 -1
  154. package/build/dist/api/modules/meridian/perps-intents.js +1 -1
  155. package/build/dist/api/modules/meridian/perps-stream.js +1 -1
  156. package/build/dist/api/modules/meridian/perps.d.ts +1 -0
  157. package/build/dist/api/modules/meridian/perps.js +1 -1
  158. package/build/dist/api/modules/meridian/predict-read.js +1 -1
  159. package/build/dist/api/modules/meridian/rfq.js +1 -1
  160. package/build/dist/api/modules/merkl/discovery.js +1 -1
  161. package/build/dist/api/modules/merkl/index.js +1 -1
  162. package/build/dist/api/modules/merkl/manage.js +1 -1
  163. package/build/dist/api/modules/merkl/protocol.js +1 -1
  164. package/build/dist/api/modules/morpho/allocator.js +1 -1
  165. package/build/dist/api/modules/morpho/bundles-abi.js +1 -1
  166. package/build/dist/api/modules/morpho/bundles.js +1 -1
  167. package/build/dist/api/modules/morpho/in-kind.js +1 -1
  168. package/build/dist/api/modules/morpho/index.js +1 -1
  169. package/build/dist/api/modules/morpho/local-guard.js +1 -1
  170. package/build/dist/api/modules/morpho/midnight-abi.js +1 -1
  171. package/build/dist/api/modules/morpho/midnight.js +1 -1
  172. package/build/dist/api/modules/morpho/protocol.js +1 -1
  173. package/build/dist/api/modules/morpho/surface.js +1 -1
  174. package/build/dist/api/modules/morpho/vault-management.js +1 -1
  175. package/build/dist/api/modules/morpho/vault-tools.js +1 -1
  176. package/build/dist/api/modules/morpho/vault-v2.js +1 -1
  177. package/build/dist/api/modules/netnet/blackjack-hashes.js +1 -1
  178. package/build/dist/api/modules/netnet/card-abi.js +1 -1
  179. package/build/dist/api/modules/netnet/card-plan.js +1 -1
  180. package/build/dist/api/modules/netnet/card-policy.js +1 -1
  181. package/build/dist/api/modules/netnet/card-read.js +1 -1
  182. package/build/dist/api/modules/netnet/card-recovery.js +1 -1
  183. package/build/dist/api/modules/netnet/desk-action-abi.js +1 -1
  184. package/build/dist/api/modules/netnet/desk-action.js +1 -1
  185. package/build/dist/api/modules/netnet/desk-read.js +1 -1
  186. package/build/dist/api/modules/netnet/desk-registry.js +1 -1
  187. package/build/dist/api/modules/netnet/financial-abi.js +1 -1
  188. package/build/dist/api/modules/netnet/financial.js +1 -1
  189. package/build/dist/api/modules/netnet/index.js +1 -1
  190. package/build/dist/api/modules/netnet/staking.js +1 -1
  191. package/build/dist/api/modules/orbio/gateway.js +1 -1
  192. package/build/dist/api/modules/orbio/index.js +1 -1
  193. package/build/dist/api/modules/orbio/pins.js +1 -1
  194. package/build/dist/api/modules/orbio/positions.d.ts +2 -0
  195. package/build/dist/api/modules/orbio/positions.js +1 -0
  196. package/build/dist/api/modules/pendle/abi.d.ts +205 -0
  197. package/build/dist/api/modules/pendle/abi.js +1 -0
  198. package/build/dist/api/modules/pendle/convert.d.ts +24 -0
  199. package/build/dist/api/modules/pendle/convert.js +1 -0
  200. package/build/dist/api/modules/pendle/costs.d.ts +3 -0
  201. package/build/dist/api/modules/pendle/costs.js +1 -0
  202. package/build/dist/api/modules/pendle/index.d.ts +11 -0
  203. package/build/dist/api/modules/pendle/index.js +1 -0
  204. package/build/dist/api/modules/pendle/markets.d.ts +37 -0
  205. package/build/dist/api/modules/pendle/markets.js +1 -0
  206. package/build/dist/api/modules/pendle/positions.d.ts +18 -0
  207. package/build/dist/api/modules/pendle/positions.js +1 -0
  208. package/build/dist/api/modules/pendle/pricecheck.d.ts +95 -0
  209. package/build/dist/api/modules/pendle/pricecheck.js +1 -0
  210. package/build/dist/api/modules/pendle/reader.d.ts +17 -0
  211. package/build/dist/api/modules/pendle/reader.js +1 -0
  212. package/build/dist/api/modules/pendle/redeem.d.ts +15 -0
  213. package/build/dist/api/modules/pendle/redeem.js +1 -0
  214. package/build/dist/api/modules/pendle/trade.d.ts +2 -0
  215. package/build/dist/api/modules/pendle/trade.js +1 -0
  216. package/build/dist/api/modules/pendle/types.d.ts +41 -0
  217. package/build/dist/api/modules/pendle/types.js +0 -0
  218. package/build/dist/api/modules/pendle/validate.d.ts +424 -0
  219. package/build/dist/api/modules/pendle/validate.js +1 -0
  220. package/build/dist/api/modules/pendle/verify.d.ts +22 -0
  221. package/build/dist/api/modules/pendle/verify.js +1 -0
  222. package/build/dist/api/modules/pons/claim.js +1 -1
  223. package/build/dist/api/modules/pons/holder-directory.js +1 -1
  224. package/build/dist/api/modules/pons/index.js +1 -1
  225. package/build/dist/api/modules/pons/launch-status.js +1 -1
  226. package/build/dist/api/modules/pons/prices.js +1 -1
  227. package/build/dist/api/modules/pons/reads.d.ts +38 -2
  228. package/build/dist/api/modules/pons/reads.js +1 -1
  229. package/build/dist/api/modules/pons/swap-terms.js +1 -1
  230. package/build/dist/api/modules/pons/trade.js +1 -1
  231. package/build/dist/api/modules/poolstrade/index.js +1 -1
  232. package/build/dist/api/modules/priors/coverage.js +1 -1
  233. package/build/dist/api/modules/priors/discovery.js +1 -1
  234. package/build/dist/api/modules/priors/features.js +1 -1
  235. package/build/dist/api/modules/priors/holdings.d.ts +4 -0
  236. package/build/dist/api/modules/priors/holdings.js +1 -0
  237. package/build/dist/api/modules/priors/index.js +1 -1
  238. package/build/dist/api/modules/priors/integration.js +1 -1
  239. package/build/dist/api/modules/priors/market.js +1 -1
  240. package/build/dist/api/modules/priors/pt.js +1 -1
  241. package/build/dist/api/modules/priors/savings-exit.js +1 -1
  242. package/build/dist/api/modules/priors/starter-line.js +1 -1
  243. package/build/dist/api/modules/priors/stock-swap.js +1 -1
  244. package/build/dist/api/modules/relay/api.js +1 -1
  245. package/build/dist/api/modules/relay/bootstrap.js +1 -1
  246. package/build/dist/api/modules/relay/discovery.js +1 -1
  247. package/build/dist/api/modules/relay/inbound.d.ts +2 -0
  248. package/build/dist/api/modules/relay/inbound.js +1 -1
  249. package/build/dist/api/modules/relay/index.js +1 -1
  250. package/build/dist/api/modules/relay/order.js +1 -1
  251. package/build/dist/api/modules/relay/outbound-status.js +1 -1
  252. package/build/dist/api/modules/relay/readiness.js +1 -1
  253. package/build/dist/api/modules/relay/reads.js +1 -1
  254. package/build/dist/api/modules/relay/vaults.js +1 -1
  255. package/build/dist/api/modules/spark/actions.js +1 -1
  256. package/build/dist/api/modules/spark/details.js +1 -1
  257. package/build/dist/api/modules/spark/index.js +1 -1
  258. package/build/dist/api/modules/spark/management.js +1 -1
  259. package/build/dist/api/modules/steakhouse/analytics.js +1 -1
  260. package/build/dist/api/modules/steakhouse/erc4626.js +1 -1
  261. package/build/dist/api/modules/steakhouse/index.js +1 -1
  262. package/build/dist/api/modules/steakhouse/local-guard.js +1 -1
  263. package/build/dist/api/modules/steakhouse/management.js +1 -1
  264. package/build/dist/api/modules/steakhouse/share-symbol.d.ts +3 -0
  265. package/build/dist/api/modules/steakhouse/share-symbol.js +1 -0
  266. package/build/dist/api/modules/steakhouse/v2-exit.js +1 -1
  267. package/build/dist/api/modules/tickerspring/basket-routes.js +1 -1
  268. package/build/dist/api/modules/tickerspring/contract-reads.js +1 -1
  269. package/build/dist/api/modules/tickerspring/discovery.js +1 -1
  270. package/build/dist/api/modules/tickerspring/exit-preview.js +1 -1
  271. package/build/dist/api/modules/tickerspring/guards.js +1 -1
  272. package/build/dist/api/modules/tickerspring/index.js +1 -1
  273. package/build/dist/api/modules/tickerspring/journeys.js +1 -1
  274. package/build/dist/api/modules/tickerspring/ladder.js +1 -1
  275. package/build/dist/api/modules/tickerspring/maker.js +1 -1
  276. package/build/dist/api/modules/tickerspring/order-accounting.js +1 -1
  277. package/build/dist/api/modules/tickerspring/research.js +1 -1
  278. package/build/dist/api/modules/tickerspring/strategies.js +1 -1
  279. package/build/dist/api/modules/uniswap/auction-create.js +1 -1
  280. package/build/dist/api/modules/uniswap/auction.js +1 -1
  281. package/build/dist/api/modules/uniswap/batch.js +1 -1
  282. package/build/dist/api/modules/uniswap/common.js +1 -1
  283. package/build/dist/api/modules/uniswap/fees.js +1 -1
  284. package/build/dist/api/modules/uniswap/index.js +1 -1
  285. package/build/dist/api/modules/uniswap/local-guard.js +1 -1
  286. package/build/dist/api/modules/uniswap/oracle.js +1 -1
  287. package/build/dist/api/modules/uniswap/pool-math.js +1 -1
  288. package/build/dist/api/modules/uniswap/pools.js +1 -1
  289. package/build/dist/api/modules/uniswap/position.js +1 -1
  290. package/build/dist/api/modules/uniswap/protocol.js +1 -1
  291. package/build/dist/api/modules/uniswap/token-jar.js +1 -1
  292. package/build/dist/api/modules/uniswap/trade-batch.js +1 -1
  293. package/build/dist/api/modules/uniswap/trade.js +1 -1
  294. package/build/dist/api/modules/uniswap/v2.js +1 -1
  295. package/build/dist/api/modules/uniswap/v3.d.ts +11 -0
  296. package/build/dist/api/modules/uniswap/v3.js +1 -1
  297. package/build/dist/api/modules/uniswap/v4.js +1 -1
  298. package/build/dist/api/modules/uniswap/wrap.js +1 -1
  299. package/build/dist/api/modules/velora/claims.js +1 -1
  300. package/build/dist/api/modules/velora/delta-reads.js +1 -1
  301. package/build/dist/api/modules/velora/index.js +1 -1
  302. package/build/dist/api/modules/wormhole/index.js +1 -1
  303. package/build/dist/api/modules/wormhole/license.js +1 -1
  304. package/build/dist/api/modules/wormhole/quotetext.js +1 -1
  305. package/build/dist/api/modules/wormhole/scan-text.js +1 -1
  306. package/build/dist/api/modules/wormhole/token-check.js +1 -1
  307. package/build/dist/api/owner-signature.js +1 -1
  308. package/build/dist/api/positions.d.ts +5 -5
  309. package/build/dist/api/positions.js +1 -1
  310. package/build/dist/api/pricenote.js +1 -1
  311. package/build/dist/api/prices.js +1 -1
  312. package/build/dist/api/pricing.js +1 -1
  313. package/build/dist/api/reads.js +1 -1
  314. package/build/dist/api/routes.js +1 -1
  315. package/build/dist/api/rpc.js +1 -1
  316. package/build/dist/api/secret-fields.js +1 -1
  317. package/build/dist/api/send.js +1 -1
  318. package/build/dist/api/signing-registry.js +1 -1
  319. package/build/dist/api/signing.js +1 -1
  320. package/build/dist/api/simulate.js +1 -1
  321. package/build/dist/api/swap.js +1 -1
  322. package/build/dist/api/token-output.js +1 -1
  323. package/build/dist/api/tokens.d.ts +1 -0
  324. package/build/dist/api/tokens.js +1 -1
  325. package/build/dist/api/tool-policy.js +1 -1
  326. package/build/dist/api/tx.js +1 -1
  327. package/build/dist/api/types.d.ts +7 -2
  328. package/build/dist/api/untrusted.js +1 -1
  329. package/build/dist/api/vendor-limits.js +1 -1
  330. package/build/dist/chunks/{PEA32CWB.js → 2KYAMXTS.js} +1 -1
  331. package/build/dist/chunks/2MAMJJJC.js +1 -0
  332. package/build/dist/chunks/2MZXTOZU.js +1 -0
  333. package/build/dist/chunks/{VC2RCYQE.js → 2TK3ETUO.js} +1 -1
  334. package/build/dist/chunks/{LKJBMHCE.js → 326QMOTR.js} +1 -1
  335. package/build/dist/chunks/{OE3CLZHR.js → 3FUVMSCF.js} +1 -1
  336. package/build/dist/chunks/{3EFV4FQF.js → 3GOHSYHW.js} +1 -1
  337. package/build/dist/chunks/{CY75R4FK.js → 3MLUCYCB.js} +1 -1
  338. package/build/dist/chunks/{5O5ZE3ZV.js → 3NJ5KQ3Q.js} +1 -1
  339. package/build/dist/chunks/{EVANKNJV.js → 3XNZUIRU.js} +1 -1
  340. package/build/dist/chunks/3XXBLNEX.js +1 -0
  341. package/build/dist/chunks/{6IM6A5VA.js → 43LI5NKJ.js} +1 -1
  342. package/build/dist/chunks/{YZSTP2E6.js → 45BRW2ZF.js} +1 -1
  343. package/build/dist/chunks/46547QT3.js +1 -0
  344. package/build/dist/chunks/{C3TJLARP.js → 46KWRAYK.js} +1 -1
  345. package/build/dist/chunks/{SOYQOE5P.js → 4BVP652W.js} +1 -1
  346. package/build/dist/chunks/4HG6FRVH.js +1 -0
  347. package/build/dist/chunks/4MXM6Q4W.js +1 -0
  348. package/build/dist/chunks/{NWSPC3NH.js → 4PY3UFNR.js} +1 -1
  349. package/build/dist/chunks/52ELWNXJ.js +2 -0
  350. package/build/dist/chunks/{O5IVZHHP.js → 553UE2ZQ.js} +1 -1
  351. package/build/dist/chunks/{FUXT7GRK.js → 57MEFFCU.js} +1 -1
  352. package/build/dist/chunks/{XWEFKXKA.js → 5APS4T2D.js} +1 -1
  353. package/build/dist/chunks/{3RFSGU2Y.js → 5CAAFU7R.js} +1 -1
  354. package/build/dist/chunks/{6AWTAE4Q.js → 5SMVQCAP.js} +1 -1
  355. package/build/dist/chunks/63YRSLDK.js +1 -0
  356. package/build/dist/chunks/{53N7PNJH.js → 64GOINYS.js} +1 -1
  357. package/build/dist/chunks/66F5ZH34.js +1 -0
  358. package/build/dist/chunks/{6ZYLNB2B.js → 6B3VVISQ.js} +1 -1
  359. package/build/dist/chunks/6D5DJA5B.js +1 -0
  360. package/build/dist/chunks/{DZGEQBO7.js → 6I4NTKB2.js} +1 -1
  361. package/build/dist/chunks/{DCTUYDWF.js → 6OGDTEGH.js} +1 -1
  362. package/build/dist/chunks/6PBGEPUK.js +20 -0
  363. package/build/dist/chunks/{E7R3J4H7.js → 6WD4HHID.js} +1 -1
  364. package/build/dist/chunks/{RAKUK5VR.js → 6WZX7C4T.js} +1 -1
  365. package/build/dist/chunks/{MKQVS3IO.js → 74Y2KDNR.js} +1 -1
  366. package/build/dist/chunks/{AMICUXS6.js → 7WSHW7KW.js} +1 -1
  367. package/build/dist/chunks/A3PN3PK3.js +1 -0
  368. package/build/dist/chunks/{CXLEQCP3.js → ABPL3ZZI.js} +1 -1
  369. package/build/dist/chunks/{YQUKU2LS.js → AFBEZXNV.js} +1 -1
  370. package/build/dist/chunks/AKYF5264.js +7 -0
  371. package/build/dist/chunks/{ASDKY5NX.js → APGLZXIW.js} +1 -1
  372. package/build/dist/chunks/{UNZRE3YU.js → AVG4W3Y7.js} +1 -1
  373. package/build/dist/chunks/{VFKNXQXI.js → B3RXD5ET.js} +1 -1
  374. package/build/dist/chunks/{V5LTA42G.js → BBS3ODWZ.js} +1 -1
  375. package/build/dist/chunks/{U3F6DDML.js → BJ2VGRF4.js} +1 -1
  376. package/build/dist/chunks/{VFSRRDLY.js → BTD5SMOW.js} +1 -1
  377. package/build/dist/chunks/{PTAWEHKB.js → BTPXJAUX.js} +1 -1
  378. package/build/dist/chunks/{R53P2K3C.js → C36BFZH6.js} +1 -1
  379. package/build/dist/chunks/{L62M7LOB.js → C5ZZAYXD.js} +1 -1
  380. package/build/dist/chunks/{VVEUJ36E.js → C7AXJHBT.js} +1 -1
  381. package/build/dist/chunks/CBG5HARQ.js +2 -0
  382. package/build/dist/chunks/{ELZNT5Q3.js → CCTXCMH4.js} +1 -1
  383. package/build/dist/chunks/{AJP5LDM2.js → CHXBOXOD.js} +1 -1
  384. package/build/dist/chunks/D3YLXQPW.js +1 -0
  385. package/build/dist/chunks/DFM4T6ZE.js +1 -0
  386. package/build/dist/chunks/{GGUEKSR4.js → DJN3JAWB.js} +1 -1
  387. package/build/dist/chunks/{52DHGSG4.js → DW4V5PUY.js} +1 -1
  388. package/build/dist/chunks/E3RACZUY.js +1 -0
  389. package/build/dist/chunks/{VCLPOU7T.js → E674J2MD.js} +1 -1
  390. package/build/dist/chunks/EE64JSLY.js +1 -0
  391. package/build/dist/chunks/EJ7O75A7.js +1 -0
  392. package/build/dist/chunks/{ZXQMF56D.js → ELSXLZN5.js} +1 -1
  393. package/build/dist/chunks/ER47KGRM.js +1 -0
  394. package/build/dist/chunks/FQ6UZCM6.js +1 -0
  395. package/build/dist/chunks/FWD4L3CJ.js +1 -0
  396. package/build/dist/chunks/GEIFITAQ.js +1 -0
  397. package/build/dist/chunks/{S3HNPTXA.js → GGSAKCND.js} +1 -1
  398. package/build/dist/chunks/GL4NCUMH.js +1 -0
  399. package/build/dist/chunks/GNC6RXLT.js +1 -0
  400. package/build/dist/chunks/{YA5WWDEW.js → GQ5GYUEH.js} +1 -1
  401. package/build/dist/chunks/{TLJPVYRJ.js → GW5IXLKU.js} +1 -1
  402. package/build/dist/chunks/{57HAXNQV.js → GW626GG2.js} +1 -1
  403. package/build/dist/chunks/{CE7D6MUS.js → H2XDMFQQ.js} +1 -1
  404. package/build/dist/chunks/H43RNCX2.js +1 -0
  405. package/build/dist/chunks/HAQPIBYR.js +1 -0
  406. package/build/dist/chunks/HCUHMCBW.js +1 -0
  407. package/build/dist/chunks/HKEMQBFA.js +1 -0
  408. package/build/dist/chunks/{WTSMPDT5.js → HM72DH4V.js} +1 -1
  409. package/build/dist/chunks/HSCQZ66A.js +1 -0
  410. package/build/dist/chunks/{4KQZTPMS.js → I26DMNJG.js} +1 -1
  411. package/build/dist/chunks/{YHPOXAKA.js → IMO3GDA5.js} +1 -1
  412. package/build/dist/chunks/INOZIE55.js +1 -0
  413. package/build/dist/chunks/IOYRL6AY.js +1 -0
  414. package/build/dist/chunks/IX3GZMTM.js +1 -0
  415. package/build/dist/chunks/IY7BXLT4.js +1 -0
  416. package/build/dist/chunks/J2OT4KAH.js +1 -0
  417. package/build/dist/chunks/JKD2B6OX.js +1 -0
  418. package/build/dist/chunks/JUZ5JU6D.js +70 -0
  419. package/build/dist/chunks/{5OEHZJ6X.js → JVLLVNF2.js} +1 -1
  420. package/build/dist/chunks/K3RDPI5J.js +1 -0
  421. package/build/dist/chunks/{WCKMQFGS.js → K4DHHQBI.js} +1 -1
  422. package/build/dist/chunks/KBKK7UNY.js +1 -0
  423. package/build/dist/chunks/KIFSRO5K.js +1 -0
  424. package/build/dist/chunks/KIFZ5ZSK.js +1 -0
  425. package/build/dist/chunks/{4AKIXLXH.js → KPCY5V35.js} +1 -1
  426. package/build/dist/chunks/L4N2RSK2.js +1 -0
  427. package/build/dist/chunks/{2W46IRX6.js → L5BLHY34.js} +1 -1
  428. package/build/dist/chunks/{ZT47KN7A.js → LSXUAHOE.js} +1 -1
  429. package/build/dist/chunks/{NATG6YA6.js → M37654RL.js} +1 -1
  430. package/build/dist/chunks/MJ6WEWMI.js +3 -0
  431. package/build/dist/chunks/{ACN2BFMA.js → MQK6OP7S.js} +1 -1
  432. package/build/dist/chunks/{XV2HQKND.js → MR5L7V6Z.js} +1 -1
  433. package/build/dist/chunks/MRMR4QHA.js +1 -0
  434. package/build/dist/chunks/{TWSTOFN3.js → N4Q6GN65.js} +1 -1
  435. package/build/dist/chunks/{H4S2ZCWK.js → NAZPDRIF.js} +1 -1
  436. package/build/dist/chunks/{FBSUTF3B.js → NDCLTVIU.js} +1 -1
  437. package/build/dist/chunks/NEEZBJBC.js +1 -0
  438. package/build/dist/chunks/{MRWCFTMS.js → NKX3FE34.js} +1 -1
  439. package/build/dist/chunks/{J3GFCBZZ.js → NKZKKCK2.js} +1 -1
  440. package/build/dist/chunks/{73N3TOJL.js → NWNYJ26T.js} +1 -1
  441. package/build/dist/chunks/{LBEMCOND.js → O7HCEPQY.js} +1 -1
  442. package/build/dist/chunks/{F6WBPPBN.js → OJ4WJUPP.js} +1 -1
  443. package/build/dist/chunks/OJPG45AC.js +1 -0
  444. package/build/dist/chunks/{SKQGLGES.js → OKUO3BVM.js} +1 -1
  445. package/build/dist/chunks/OTXSKFUD.js +1 -0
  446. package/build/dist/chunks/{AAGDMH54.js → P3S4BR5G.js} +1 -1
  447. package/build/dist/chunks/P56RZC2M.js +1 -0
  448. package/build/dist/chunks/{EA6IYKIB.js → P5PYFK7L.js} +1 -1
  449. package/build/dist/chunks/{JST5JGAP.js → P7I62KFR.js} +1 -1
  450. package/build/dist/chunks/{5IIR3GIN.js → PK66GCDT.js} +1 -1
  451. package/build/dist/chunks/PSBQWDYI.js +1 -0
  452. package/build/dist/chunks/{WQ6H62DM.js → PV5FDT6O.js} +1 -1
  453. package/build/dist/chunks/{TQL7UDFL.js → PXT5YTWU.js} +1 -1
  454. package/build/dist/chunks/Q42YI3EP.js +1 -0
  455. package/build/dist/chunks/{SQ5BNSXR.js → QA3UHEO3.js} +1 -1
  456. package/build/dist/chunks/QC3HH5UD.js +3 -0
  457. package/build/dist/chunks/{TWCSCRFS.js → QF52OIBS.js} +1 -1
  458. package/build/dist/chunks/{LQUDJCAR.js → QO3KCJMP.js} +1 -1
  459. package/build/dist/chunks/QQECG3WP.js +1 -0
  460. package/build/dist/chunks/QSHCBASA.js +1 -0
  461. package/build/dist/chunks/QU5XKRGK.js +1 -0
  462. package/build/dist/chunks/{TPDOUL4N.js → QZZ4O34L.js} +1 -1
  463. package/build/dist/chunks/RQ4GHJXE.js +1 -0
  464. package/build/dist/chunks/{ALK6NKFP.js → RUC7KH7A.js} +1 -1
  465. package/build/dist/chunks/RUX3RY7Y.js +1 -0
  466. package/build/dist/chunks/{GIV5JMTE.js → RVDUSNWW.js} +1 -1
  467. package/build/dist/chunks/S47VUTHM.js +1 -0
  468. package/build/dist/chunks/{2LM7U4S7.js → S7IFAQPG.js} +1 -1
  469. package/build/dist/chunks/{XQUPZ3GU.js → SIYUNOLI.js} +1 -1
  470. package/build/dist/chunks/{7XLEYOZH.js → SJJR4ZBZ.js} +1 -1
  471. package/build/dist/chunks/SK2VBNAU.js +1 -0
  472. package/build/dist/chunks/SMYWWIE6.js +1 -0
  473. package/build/dist/chunks/SPJCSEKP.js +1 -0
  474. package/build/dist/chunks/{L3ZM77SJ.js → SSHCD6RZ.js} +1 -1
  475. package/build/dist/chunks/{3NDVXEBR.js → T2WHOZXM.js} +1 -1
  476. package/build/dist/chunks/T3AJSQYT.js +1 -0
  477. package/build/dist/chunks/TAEZTP4L.js +1 -0
  478. package/build/dist/chunks/TEJ7W534.js +1 -0
  479. package/build/dist/chunks/TFDPEAVZ.js +1 -0
  480. package/build/dist/chunks/TM2XCRU7.js +1 -0
  481. package/build/dist/chunks/{XQXLFF7Y.js → TMVO2DAK.js} +1 -1
  482. package/build/dist/chunks/{2UU5TBBB.js → TVWMTMEF.js} +1 -1
  483. package/build/dist/chunks/{AFHHRDPJ.js → TX2EOIRS.js} +1 -1
  484. package/build/dist/chunks/{QRDDKA4I.js → U4JGEMKT.js} +1 -1
  485. package/build/dist/chunks/{PARWLWXW.js → U5PMVP56.js} +1 -1
  486. package/build/dist/chunks/U67J4BCH.js +1 -0
  487. package/build/dist/chunks/{SSTROLQM.js → UHTRW2R6.js} +1 -1
  488. package/build/dist/chunks/{XUYHMOHS.js → UHVSINR5.js} +1 -1
  489. package/build/dist/chunks/{NRBIXV7V.js → UMIZMJWW.js} +1 -1
  490. package/build/dist/chunks/{VXLJRRKV.js → UNJJRQIU.js} +1 -1
  491. package/build/dist/chunks/V74F6IDY.js +1 -0
  492. package/build/dist/chunks/VEQBHI6O.js +1 -0
  493. package/build/dist/chunks/VHV6WQ5F.js +1 -0
  494. package/build/dist/chunks/{DRWWPBOQ.js → VJS4DHQQ.js} +1 -1
  495. package/build/dist/chunks/{R7FXNZRM.js → VOMGT5SG.js} +1 -1
  496. package/build/dist/chunks/{QXNPPCOU.js → VY7XRHZQ.js} +1 -1
  497. package/build/dist/chunks/{TCPPYBGQ.js → VYAJXLND.js} +1 -1
  498. package/build/dist/chunks/{WWFOYZT2.js → VYN2NRAP.js} +1 -1
  499. package/build/dist/chunks/{OVK4EEOD.js → VYYSL557.js} +1 -1
  500. package/build/dist/chunks/W2BYU5JQ.js +2 -0
  501. package/build/dist/chunks/W6BS3T7S.js +1 -0
  502. package/build/dist/chunks/WCNHZYQQ.js +1 -0
  503. package/build/dist/chunks/{BX7XQANB.js → WDK6VOG4.js} +1 -1
  504. package/build/dist/chunks/{QYYFRAWY.js → WIRBCS4W.js} +1 -1
  505. package/build/dist/chunks/{3WBDHUV2.js → WLMWWEP7.js} +1 -1
  506. package/build/dist/chunks/{TNSKEHPC.js → WP6RHXGN.js} +1 -1
  507. package/build/dist/chunks/WTXC3XKW.js +1 -0
  508. package/build/dist/chunks/{R7QPJQP6.js → WU7XIAXB.js} +1 -1
  509. package/build/dist/chunks/{OQVZVR2S.js → WV3A3OUU.js} +1 -1
  510. package/build/dist/chunks/{GCWA4Z3W.js → X2KFXCVD.js} +1 -1
  511. package/build/dist/chunks/X3BYCOWS.js +1 -0
  512. package/build/dist/chunks/{L7YBCMZU.js → X3PQMS4N.js} +1 -1
  513. package/build/dist/chunks/{WVXW6VL3.js → XBE3B6Y2.js} +1 -1
  514. package/build/dist/chunks/XLOYBLFI.js +1 -0
  515. package/build/dist/chunks/XR7VK24E.js +1 -0
  516. package/build/dist/chunks/XSD5NL7J.js +1 -0
  517. package/build/dist/chunks/{NU4K3TEZ.js → XSRIJUFU.js} +1 -1
  518. package/build/dist/chunks/{WQQJ7UPJ.js → Y25EXZCO.js} +1 -1
  519. package/build/dist/chunks/{2FSX7MMR.js → YCZPSMZ5.js} +1 -1
  520. package/build/dist/chunks/YDNTY67T.js +1 -0
  521. package/build/dist/chunks/YN56C7PN.js +1 -0
  522. package/build/dist/chunks/YWRDZQI6.js +1 -0
  523. package/build/dist/chunks/{SJPM5ST4.js → YXTSWRV5.js} +1 -1
  524. package/build/dist/chunks/Z43BTOTE.js +1 -0
  525. package/build/dist/chunks/{PWBL4WKB.js → Z4FZVJ5Z.js} +1 -1
  526. package/build/dist/chunks/ZMFRMWHR.js +1 -0
  527. package/build/dist/chunks/{KSZMMNXK.js → ZQAFFWDK.js} +1 -1
  528. package/build/dist/chunks/{LMVB3B6T.js → ZSN4IRI5.js} +1 -1
  529. package/build/dist/chunks/{CQCVFRQ5.js → ZV5HIQXC.js} +1 -1
  530. package/package.json +2 -2
  531. package/build/dist/chunks/2MSQ6JII.js +0 -1
  532. package/build/dist/chunks/3SC5UI35.js +0 -1
  533. package/build/dist/chunks/4GHVIBL5.js +0 -1
  534. package/build/dist/chunks/4X2JOQ2L.js +0 -1
  535. package/build/dist/chunks/5VHH5PW3.js +0 -1
  536. package/build/dist/chunks/5YS5V2LK.js +0 -1
  537. package/build/dist/chunks/6UPPUHCL.js +0 -1
  538. package/build/dist/chunks/7YU6DELJ.js +0 -1
  539. package/build/dist/chunks/AXYOJBX6.js +0 -1
  540. package/build/dist/chunks/CEIPDEXZ.js +0 -1
  541. package/build/dist/chunks/CUNQ5RG5.js +0 -1
  542. package/build/dist/chunks/EG6M6SSO.js +0 -1
  543. package/build/dist/chunks/EGUMOD3A.js +0 -1
  544. package/build/dist/chunks/EXRKBBX2.js +0 -1
  545. package/build/dist/chunks/G3MHDTGT.js +0 -1
  546. package/build/dist/chunks/G6HCV67X.js +0 -1
  547. package/build/dist/chunks/GJY3P6OG.js +0 -1
  548. package/build/dist/chunks/HIMVOTIU.js +0 -1
  549. package/build/dist/chunks/IBXYIN7Q.js +0 -1
  550. package/build/dist/chunks/IUE6RASI.js +0 -1
  551. package/build/dist/chunks/JPOYTTTW.js +0 -1
  552. package/build/dist/chunks/JWCOXLYA.js +0 -1
  553. package/build/dist/chunks/KHJFXJBU.js +0 -1
  554. package/build/dist/chunks/LLM5WDM3.js +0 -1
  555. package/build/dist/chunks/LQGPMOD2.js +0 -1
  556. package/build/dist/chunks/MYBDO5SA.js +0 -1
  557. package/build/dist/chunks/NAYRD43N.js +0 -1
  558. package/build/dist/chunks/NMYGNJIJ.js +0 -1
  559. package/build/dist/chunks/NSOEDRBU.js +0 -3
  560. package/build/dist/chunks/PZHR4ITH.js +0 -1
  561. package/build/dist/chunks/R7SXC74O.js +0 -1
  562. package/build/dist/chunks/RETS2ZEK.js +0 -1
  563. package/build/dist/chunks/SJPYXNOK.js +0 -1
  564. package/build/dist/chunks/SQZRVIVF.js +0 -1
  565. package/build/dist/chunks/SXAIXD56.js +0 -1
  566. package/build/dist/chunks/SXX3VTBP.js +0 -1
  567. package/build/dist/chunks/TMGWXDCZ.js +0 -1
  568. package/build/dist/chunks/TNLHMDWL.js +0 -1
  569. package/build/dist/chunks/UFS2RVEZ.js +0 -1
  570. package/build/dist/chunks/USSOVTD5.js +0 -1
  571. package/build/dist/chunks/UWOFA6GV.js +0 -1
  572. package/build/dist/chunks/V2OOOV6B.js +0 -1
  573. package/build/dist/chunks/XVFLT275.js +0 -1
  574. package/build/dist/chunks/YHB55C5T.js +0 -1
  575. package/build/dist/chunks/YOENHHKI.js +0 -1
  576. package/build/dist/chunks/Z7RL4NGX.js +0 -1
@@ -0,0 +1,114 @@
1
+ export type Placeholders<S extends string> = S extends `${string}{${infer P}}${infer R}` ? P | Placeholders<R> : never;
2
+ export interface Template<S extends string = string> {
3
+ readonly text: S;
4
+ }
5
+ export declare function placeholdersOf(template: Template): string[];
6
+ export declare function fill<S extends string>(template: Template<S>, values: Record<Placeholders<S>, string>): string;
7
+ export declare const LAYERBANK_SITE = "layerbank.finance";
8
+ export declare const PENDLE_SITE = "app.pendle.finance";
9
+ export declare const CARD_HEADER: Template<"You have {amount_usd} in USDG that isn't earning anything. Here are two ways to make it earn. Pick one, or neither.">;
10
+ export declare const CARD_HEADER_AMOUNT: Template<"Looking at {amount_usd} of your USDG. Here are two ways to make it earn. Pick one, or neither.">;
11
+ export declare const CARD_HEADER_AMOUNT_NOT_HELD: Template<"Looking at {amount_usd} of USDG. Here are two ways to make it earn. Pick one, or neither.">;
12
+ export declare const LAYERBANK_RISK_SUMMARY = "LayerBank is a lending app; if its code fails or almost everything is lent out, you could lose money or have to wait.";
13
+ export declare const PENDLE_RISK_SUMMARY = "Pendle is a trading app; thin trading can make leaving early cost you, and its code can fail or be changed by its team.";
14
+ export declare const PENDLE_EARLY_EXIT = "If you leave early you sell at the market price that day, and that can be less than you put in.";
15
+ export declare const PENDLE_FIXED_RATE = "The rate is fixed only if you hold until the end date.";
16
+ export declare const PENDLE_CONTRACT_CHANGE = "Pendle's router can be upgraded by Pendle's team, so its code can change.";
17
+ export declare const OPTION_A: Template<"A. LayerBank: lending, take it out any time\n Pays about {lb_total_rate}% a year today ({lb_base_rate}% from borrowers{bonus_clause}). The rate changes, up or down.\n You can take your money out any time while LayerBank has cash on hand (right now {lb_cash_usd}).\n Risk: LayerBank is a lending app; if its code fails or almost everything is lent out, you could lose money or have to wait.\n Cost: network fees of about {lb_gas_in_usd} to put it in and {lb_gas_out_usd} to take it out.">;
18
+ export declare const BONUS_CLAUSE: Template<", plus a bonus of {lb_bonus_rate}% that ends {bonus_end}">;
19
+ export declare const OPTION_B: Template<"B. Pendle: a fixed rate until {pendle_end_date}\n Pays a fixed {pendle_rate}% a year if you keep it until {pendle_end_date}. You get {pendle_payout_usd} back for every {pendle_unit_usd} you put in.\n If you leave early you sell at the market price that day, and that can be less than you put in.\n Risk: Pendle is a trading app; thin trading can make leaving early cost you, and its code can fail or be changed by its team.\n Cost: about {pendle_cost_in_usd} in fees to start and about {pendle_gas_out_usd} to cash out.">;
20
+ export declare const OPTION_B_NONE: Template<"B. Pendle has no fixed-rate USDG term open right now.">;
21
+ export declare const OPTION_A_CANT_CHECK: Template<"A. LayerBank can't be checked right now, so I won't offer it.">;
22
+ export declare const OPTION_B_CANT_CHECK: Template<"B. Pendle can't be checked right now, so I won't offer it.">;
23
+ export declare const OPTION_A_CLOSED: Template<"A. LayerBank isn't taking new deposits right now, so I won't offer it.">;
24
+ export declare const OPTION_A_NO_ROOM: Template<"A. LayerBank can only take {cap_room_usd} more right now, which is less than {amount_usd}, so I won't offer it.">;
25
+ export declare const CARD_FOOTER_ASK: Template<"Nobody guarantees either one. Which do you want: {choices}?">;
26
+ export declare const CARD_FOOTER_NO_ASK: Template<"Nobody guarantees either one.">;
27
+ export declare const ETH_HINT: Template<"You hold ETH but no USDG. I can swap some ETH to USDG first with Oak's swap tool and show you the price before anything happens.">;
28
+ export declare const NOTHING_TO_EARN: Template<"This wallet holds no USDG and no ETH to put to work, so there is nothing to compare yet.">;
29
+ export declare const ACCESS_NO_PLAN: Template<"Putting money in or taking it out through Oak needs an active Oak plan ({plan_price}). Taking it out on {project_site} always works too, with this same wallet.">;
30
+ export declare const LB_DEPOSIT_SCREEN: Template<"Put {amount_usd} into LayerBank?\n\nWhat you get: about {lb_total_rate}% a year at today's rate. The rate changes.\nWhat happens: {amount_usd} of USDG leaves your wallet and becomes {amount_usd} of \"lRobUSDG\", your receipt for money lent through LayerBank. Your receipt grows as interest arrives.\nThe risk: LayerBank is a lending app. If its code fails, or almost everything is lent out, you could lose money or have to wait to get it back.\nTaking it out: any time LayerBank has cash on hand. Right now that is {lb_cash_usd}. You can also take it out on layerbank.finance with this wallet.\nCost: about {gas_usd} in network fees now and about {gas_out_usd} to take it out.\n\nPut in {amount_usd}? [Yes] [No]">;
31
+ export declare const LB_WITHDRAW_SCREEN: Template<"Take {amount_or_all} out of LayerBank?\n\nYou get back {usdg_out} USDG (your {amount_deposited_clause} plus interest so far{bonus_note}).\n{cash_note}\nCost: about {gas_usd} in network fees.\n\nTake it out? [Yes] [No]">;
32
+ export declare const LB_BONUS_NOTE: Template<". Your bonus is paid separately; ask me to claim it">;
33
+ export declare const LB_CASH_NOTE: Template<"LayerBank only has {lb_cash_usd} on hand right now, so I can take out {max_now} today.">;
34
+ export declare const PENDLE_BUY_STABLE_SCREEN: Template<"Lock {amount_usd} in a fixed rate until {pendle_end_date}?\n\nWhat you get: a fixed {pendle_rate}% a year, if you keep it until {pendle_end_date}. You put in {amount_usd} and get {pt_out} tokens. Each token pays out {payout_per_pt_phrase} on {pendle_end_date}. That is about {gain_usd} more than you put in.\nWhat happens now: {amount_usd} of USDG leaves your wallet and you receive at least {pt_min} \"PT-USDG\" tokens (the price can move a little before this goes through; Oak refuses anything worse than {slippage_pct}%).\nThe risk: if you leave before {pendle_end_date}, you sell at the market price that day, and that can be less than you put in. Pendle is a trading app; its code can fail, and its team can change it.\nCost: about {fees_usd} in trading and network fees now, and about {gas_out_usd} to cash out at the end.\n\nLock {amount_usd} until {pendle_end_date}? [Yes] [No]">;
35
+ export declare const PENDLE_BUY_STOCK_SCREEN: Template<"Lock {amount_units} {stock_symbol} in a fixed rate until {pendle_end_date}?\n\nWhat you get: you put in {amount_units} {stock_symbol} and receive at least {pt_min} tokens. On {pendle_end_date} each token pays out {payout_per_pt_phrase}. That is {gain_units} {stock_symbol} more than you put in, a fixed {pendle_rate}% a year in {stock_symbol}, not in dollars.\nThe catch: the payout is in {stock_symbol}, not dollars. If the stock token is worth less on {pendle_end_date}, you get less in dollars, even though the {stock_symbol} count is fixed.\nThe risk: leaving early sells at the market price that day, which can be less than you put in. This term is short ({days_left} days), so the extra {stock_symbol} is small. Pendle is a trading app; its code can fail, and its team can change it.\nCost: about {fees_usd} in trading and network fees now and about {gas_out_usd} to cash out.\n\nLock it until {pendle_end_date}? [Yes] [No]">;
36
+ export declare const PENDLE_SELL_SCREEN: Template<"Leave early and sell {pt_amount} tokens now?\n\nIf you wait until {pendle_end_date}, these tokens pay {payout_at_end} {unit}.\nIf you sell now, the market pays about {sell_now} {unit}, and Oak accepts no less than {sell_min}. {gap_line}\nSelling early can lose money. The price today may be lower than what you paid.\nCost: about {fees_usd} in trading and network fees.\n\nSell now? [Yes, sell now] [No, keep waiting]">;
37
+ export declare const PENDLE_SELL_GAP_LINE: Template<"That is {gap} less than waiting.">;
38
+ export declare const PENDLE_SELL_NO_GAP_LINE: Template<"The quoted output before fees is at least the payout at the end of the term. Fees, the minimum output and what you paid still affect whether you lose money.">;
39
+ export declare const PENDLE_SELL_DEFAULT_BUTTON = "No, keep waiting";
40
+ export declare const PENDLE_REDEEM_SCREEN: Template<"Cash out {pt_amount} tokens for {usdg_out} USDG?\n\nThe term ended on {pendle_end_date}. Each token pays out {payout_per_pt_phrase} now, with no market price involved.\nCost: about {gas_usd} in network fees.\n\nCash out? [Yes] [No]">;
41
+ export declare const PENDLE_REDEEM_STOCK_SCREEN: Template<"Cash out {pt_amount} tokens for about {unit_out} {stock_symbol}?\n\nThe term ended on {pendle_end_date}. You receive {stock_symbol}, not USDG: about {unit_out} {stock_symbol}, worth about {value_usd} at today's price, which can move. No market price is involved in the payout itself.\nTo end up in USDG, I can swap the {stock_symbol} afterwards with Oak's swap tool and show you that price first.\nCost: about {gas_usd} in network fees.\n\nCash out? [Yes] [No]">;
42
+ export declare const PAYOUT_EXACT: Template<"exactly 1 {unit}">;
43
+ export declare const PAYOUT_APPROX: Template<"about {x} {unit} at today's exchange rate">;
44
+ export declare const STOCK_PAID_IN: Template<"Paid in {stock_symbol}, not dollars.">;
45
+ export declare const STOCK_SHORT_TERM: Template<"ends in {days_left} days, usually too short to be worth the fees">;
46
+ export declare const STOCK_SHORT_TERM_DAYS = 7;
47
+ export declare const TOO_SMALL: Template<"At {amount_usd}, this is too small to be worth it. You would earn about {gross_usd} over {horizon}, and fees would take about {costs_usd}, leaving about {net_usd}. Putting in {suggest_usd} or more would be worth it, and I can still do it if you want.">;
48
+ export declare const TOO_SMALL_NO_SIZE: Template<"At {amount_usd}, this is too small to be worth it. You would earn about {gross_usd} over {horizon}, and fees would take about {costs_usd}, leaving about {net_usd}. At today's rate no amount would make up for the fees, and I can still do it if you want.">;
49
+ export declare const ACCESS_FEE_LINE: Template<"Also: Oak access costs {plan_price} per 30 days, which you pay whether or not you earn. At this size that is more than you would earn in a month.">;
50
+ export declare const FEES_ESTIMATED_HIGH: Template<"Fees estimated high because the live price was unavailable.">;
51
+ export declare const MATURED_NOTICE: Template<"Your fixed term on Pendle ended on {pendle_end_date}. Your {pt_amount} tokens are worth {usdg_out} USDG now.\nWant me to cash out to USDG, or start a new term? One \"yes\" is enough; say \"cash out\" or \"new term\".">;
52
+ export declare const MATURED_STOCK_NOTICE: Template<"Your fixed term on Pendle ended on {pendle_end_date}. Your {pt_amount} tokens pay out about {unit_out} {stock_symbol} now, worth about {value_usd}. Want me to cash out and swap that to USDG, or start a new term? One \"yes\" is enough.">;
53
+ export declare const MATURED_STOCK_NOTICE_NO_AMOUNT: Template<"Your fixed term on Pendle in {stock_symbol} ended on {pendle_end_date}. Your tokens pay out in {stock_symbol}, not USDG; I will show the exact amount before anything is sent. Want me to cash out and swap that to USDG, or start a new term? One \"yes\" is enough.">;
54
+ export declare const NO_NEW_TERM: Template<"There is no new fixed-rate USDG term open right now. I cashed out to USDG; want me to show LayerBank instead?">;
55
+ export declare const LP_BLOCK: Template<"Before you add liquidity: what it is worth, and what can go wrong\n\nWorth: at today's reward rate of about {apr}% a year, {amount_usd} would earn about {gross_usd} until the campaign ends on {end_date}, and about {gas_usd} of that goes to network fees, leaving about {net_usd}. {worth_clause}\nWhat can go wrong:\n - Price exposure: you put in two coins. If one moves a lot against the other, you can end up with less than you started with, even if you earn rewards.\n - Going out of range: if the price leaves the range you chose, you stop earning until it comes back, and you hold mostly the weaker coin.\n - The rewards can end: the campaign ends on {end_date}, or sooner, and the rate shown is today's rate, which changes.\nYour call. [Add liquidity] [Don't]">;
56
+ export declare const LP_NOT_WORTH_CLAUSE: Template<"That is not worth it at this size.">;
57
+ export declare const LP_BLOCK_UNREADABLE: Template<"Before you add liquidity: what it is worth, and what can go wrong\n\nWorth: the reward rate or end date couldn't be read, so I can't tell you what this is worth.\nWhat can go wrong:\n - Price exposure: you put in two coins. If one moves a lot against the other, you can end up with less than you started with, even if you earn rewards.\n - Going out of range: if the price leaves the range you chose, you stop earning until it comes back, and you hold mostly the weaker coin.\n - The rewards can end: a campaign can end at any time, and any rate shown is the rate of that day, which changes.\nYour call. If you say nothing, the answer is Don't. [Don't] [Add liquidity]">;
58
+ export declare const LP_ADD_BUTTON = "Add liquidity";
59
+ export declare const LP_DECLINE_BUTTON = "Don't";
60
+ export declare const SLIPPAGE_CAP_REFUSAL: Template<"Oak won't accept a price move that big. The most it allows is {cap_pct}%.">;
61
+ export declare const THIN_MARKET_REFUSAL: Template<"This is a thin market and your size moves the price too much. Try a smaller amount.">;
62
+ export declare const PRICE_MISMATCH_REFUSAL: Template<"Pendle's price doesn't match what Oak checked on the chain. Nothing was signed.">;
63
+ export declare const LAYERBANK_SETUP_MISMATCH: Template<"LayerBank's setup no longer matches what Oak checked. Nothing was signed.">;
64
+ export declare const PENDLE_SERVICE_DOWN: Template<"Pendle's price service isn't answering, so I can't quote or start a new term; I can still cash out ended terms.">;
65
+ export declare const TEMPLATES: {
66
+ readonly CARD_HEADER: Template<"You have {amount_usd} in USDG that isn't earning anything. Here are two ways to make it earn. Pick one, or neither.">;
67
+ readonly CARD_HEADER_AMOUNT: Template<"Looking at {amount_usd} of your USDG. Here are two ways to make it earn. Pick one, or neither.">;
68
+ readonly CARD_HEADER_AMOUNT_NOT_HELD: Template<"Looking at {amount_usd} of USDG. Here are two ways to make it earn. Pick one, or neither.">;
69
+ readonly OPTION_A: Template<"A. LayerBank: lending, take it out any time\n Pays about {lb_total_rate}% a year today ({lb_base_rate}% from borrowers{bonus_clause}). The rate changes, up or down.\n You can take your money out any time while LayerBank has cash on hand (right now {lb_cash_usd}).\n Risk: LayerBank is a lending app; if its code fails or almost everything is lent out, you could lose money or have to wait.\n Cost: network fees of about {lb_gas_in_usd} to put it in and {lb_gas_out_usd} to take it out.">;
70
+ readonly BONUS_CLAUSE: Template<", plus a bonus of {lb_bonus_rate}% that ends {bonus_end}">;
71
+ readonly OPTION_B: Template<"B. Pendle: a fixed rate until {pendle_end_date}\n Pays a fixed {pendle_rate}% a year if you keep it until {pendle_end_date}. You get {pendle_payout_usd} back for every {pendle_unit_usd} you put in.\n If you leave early you sell at the market price that day, and that can be less than you put in.\n Risk: Pendle is a trading app; thin trading can make leaving early cost you, and its code can fail or be changed by its team.\n Cost: about {pendle_cost_in_usd} in fees to start and about {pendle_gas_out_usd} to cash out.">;
72
+ readonly OPTION_B_NONE: Template<"B. Pendle has no fixed-rate USDG term open right now.">;
73
+ readonly OPTION_A_CANT_CHECK: Template<"A. LayerBank can't be checked right now, so I won't offer it.">;
74
+ readonly OPTION_B_CANT_CHECK: Template<"B. Pendle can't be checked right now, so I won't offer it.">;
75
+ readonly OPTION_A_CLOSED: Template<"A. LayerBank isn't taking new deposits right now, so I won't offer it.">;
76
+ readonly OPTION_A_NO_ROOM: Template<"A. LayerBank can only take {cap_room_usd} more right now, which is less than {amount_usd}, so I won't offer it.">;
77
+ readonly CARD_FOOTER_ASK: Template<"Nobody guarantees either one. Which do you want: {choices}?">;
78
+ readonly CARD_FOOTER_NO_ASK: Template<"Nobody guarantees either one.">;
79
+ readonly ETH_HINT: Template<"You hold ETH but no USDG. I can swap some ETH to USDG first with Oak's swap tool and show you the price before anything happens.">;
80
+ readonly NOTHING_TO_EARN: Template<"This wallet holds no USDG and no ETH to put to work, so there is nothing to compare yet.">;
81
+ readonly ACCESS_NO_PLAN: Template<"Putting money in or taking it out through Oak needs an active Oak plan ({plan_price}). Taking it out on {project_site} always works too, with this same wallet.">;
82
+ readonly LB_DEPOSIT_SCREEN: Template<"Put {amount_usd} into LayerBank?\n\nWhat you get: about {lb_total_rate}% a year at today's rate. The rate changes.\nWhat happens: {amount_usd} of USDG leaves your wallet and becomes {amount_usd} of \"lRobUSDG\", your receipt for money lent through LayerBank. Your receipt grows as interest arrives.\nThe risk: LayerBank is a lending app. If its code fails, or almost everything is lent out, you could lose money or have to wait to get it back.\nTaking it out: any time LayerBank has cash on hand. Right now that is {lb_cash_usd}. You can also take it out on layerbank.finance with this wallet.\nCost: about {gas_usd} in network fees now and about {gas_out_usd} to take it out.\n\nPut in {amount_usd}? [Yes] [No]">;
83
+ readonly LB_WITHDRAW_SCREEN: Template<"Take {amount_or_all} out of LayerBank?\n\nYou get back {usdg_out} USDG (your {amount_deposited_clause} plus interest so far{bonus_note}).\n{cash_note}\nCost: about {gas_usd} in network fees.\n\nTake it out? [Yes] [No]">;
84
+ readonly LB_BONUS_NOTE: Template<". Your bonus is paid separately; ask me to claim it">;
85
+ readonly LB_CASH_NOTE: Template<"LayerBank only has {lb_cash_usd} on hand right now, so I can take out {max_now} today.">;
86
+ readonly PENDLE_BUY_STABLE_SCREEN: Template<"Lock {amount_usd} in a fixed rate until {pendle_end_date}?\n\nWhat you get: a fixed {pendle_rate}% a year, if you keep it until {pendle_end_date}. You put in {amount_usd} and get {pt_out} tokens. Each token pays out {payout_per_pt_phrase} on {pendle_end_date}. That is about {gain_usd} more than you put in.\nWhat happens now: {amount_usd} of USDG leaves your wallet and you receive at least {pt_min} \"PT-USDG\" tokens (the price can move a little before this goes through; Oak refuses anything worse than {slippage_pct}%).\nThe risk: if you leave before {pendle_end_date}, you sell at the market price that day, and that can be less than you put in. Pendle is a trading app; its code can fail, and its team can change it.\nCost: about {fees_usd} in trading and network fees now, and about {gas_out_usd} to cash out at the end.\n\nLock {amount_usd} until {pendle_end_date}? [Yes] [No]">;
87
+ readonly PENDLE_BUY_STOCK_SCREEN: Template<"Lock {amount_units} {stock_symbol} in a fixed rate until {pendle_end_date}?\n\nWhat you get: you put in {amount_units} {stock_symbol} and receive at least {pt_min} tokens. On {pendle_end_date} each token pays out {payout_per_pt_phrase}. That is {gain_units} {stock_symbol} more than you put in, a fixed {pendle_rate}% a year in {stock_symbol}, not in dollars.\nThe catch: the payout is in {stock_symbol}, not dollars. If the stock token is worth less on {pendle_end_date}, you get less in dollars, even though the {stock_symbol} count is fixed.\nThe risk: leaving early sells at the market price that day, which can be less than you put in. This term is short ({days_left} days), so the extra {stock_symbol} is small. Pendle is a trading app; its code can fail, and its team can change it.\nCost: about {fees_usd} in trading and network fees now and about {gas_out_usd} to cash out.\n\nLock it until {pendle_end_date}? [Yes] [No]">;
88
+ readonly PENDLE_SELL_SCREEN: Template<"Leave early and sell {pt_amount} tokens now?\n\nIf you wait until {pendle_end_date}, these tokens pay {payout_at_end} {unit}.\nIf you sell now, the market pays about {sell_now} {unit}, and Oak accepts no less than {sell_min}. {gap_line}\nSelling early can lose money. The price today may be lower than what you paid.\nCost: about {fees_usd} in trading and network fees.\n\nSell now? [Yes, sell now] [No, keep waiting]">;
89
+ readonly PENDLE_SELL_GAP_LINE: Template<"That is {gap} less than waiting.">;
90
+ readonly PENDLE_SELL_NO_GAP_LINE: Template<"The quoted output before fees is at least the payout at the end of the term. Fees, the minimum output and what you paid still affect whether you lose money.">;
91
+ readonly PENDLE_REDEEM_SCREEN: Template<"Cash out {pt_amount} tokens for {usdg_out} USDG?\n\nThe term ended on {pendle_end_date}. Each token pays out {payout_per_pt_phrase} now, with no market price involved.\nCost: about {gas_usd} in network fees.\n\nCash out? [Yes] [No]">;
92
+ readonly PENDLE_REDEEM_STOCK_SCREEN: Template<"Cash out {pt_amount} tokens for about {unit_out} {stock_symbol}?\n\nThe term ended on {pendle_end_date}. You receive {stock_symbol}, not USDG: about {unit_out} {stock_symbol}, worth about {value_usd} at today's price, which can move. No market price is involved in the payout itself.\nTo end up in USDG, I can swap the {stock_symbol} afterwards with Oak's swap tool and show you that price first.\nCost: about {gas_usd} in network fees.\n\nCash out? [Yes] [No]">;
93
+ readonly PAYOUT_EXACT: Template<"exactly 1 {unit}">;
94
+ readonly PAYOUT_APPROX: Template<"about {x} {unit} at today's exchange rate">;
95
+ readonly STOCK_PAID_IN: Template<"Paid in {stock_symbol}, not dollars.">;
96
+ readonly STOCK_SHORT_TERM: Template<"ends in {days_left} days, usually too short to be worth the fees">;
97
+ readonly TOO_SMALL: Template<"At {amount_usd}, this is too small to be worth it. You would earn about {gross_usd} over {horizon}, and fees would take about {costs_usd}, leaving about {net_usd}. Putting in {suggest_usd} or more would be worth it, and I can still do it if you want.">;
98
+ readonly TOO_SMALL_NO_SIZE: Template<"At {amount_usd}, this is too small to be worth it. You would earn about {gross_usd} over {horizon}, and fees would take about {costs_usd}, leaving about {net_usd}. At today's rate no amount would make up for the fees, and I can still do it if you want.">;
99
+ readonly ACCESS_FEE_LINE: Template<"Also: Oak access costs {plan_price} per 30 days, which you pay whether or not you earn. At this size that is more than you would earn in a month.">;
100
+ readonly FEES_ESTIMATED_HIGH: Template<"Fees estimated high because the live price was unavailable.">;
101
+ readonly MATURED_NOTICE: Template<"Your fixed term on Pendle ended on {pendle_end_date}. Your {pt_amount} tokens are worth {usdg_out} USDG now.\nWant me to cash out to USDG, or start a new term? One \"yes\" is enough; say \"cash out\" or \"new term\".">;
102
+ readonly MATURED_STOCK_NOTICE: Template<"Your fixed term on Pendle ended on {pendle_end_date}. Your {pt_amount} tokens pay out about {unit_out} {stock_symbol} now, worth about {value_usd}. Want me to cash out and swap that to USDG, or start a new term? One \"yes\" is enough.">;
103
+ readonly MATURED_STOCK_NOTICE_NO_AMOUNT: Template<"Your fixed term on Pendle in {stock_symbol} ended on {pendle_end_date}. Your tokens pay out in {stock_symbol}, not USDG; I will show the exact amount before anything is sent. Want me to cash out and swap that to USDG, or start a new term? One \"yes\" is enough.">;
104
+ readonly NO_NEW_TERM: Template<"There is no new fixed-rate USDG term open right now. I cashed out to USDG; want me to show LayerBank instead?">;
105
+ readonly LP_BLOCK: Template<"Before you add liquidity: what it is worth, and what can go wrong\n\nWorth: at today's reward rate of about {apr}% a year, {amount_usd} would earn about {gross_usd} until the campaign ends on {end_date}, and about {gas_usd} of that goes to network fees, leaving about {net_usd}. {worth_clause}\nWhat can go wrong:\n - Price exposure: you put in two coins. If one moves a lot against the other, you can end up with less than you started with, even if you earn rewards.\n - Going out of range: if the price leaves the range you chose, you stop earning until it comes back, and you hold mostly the weaker coin.\n - The rewards can end: the campaign ends on {end_date}, or sooner, and the rate shown is today's rate, which changes.\nYour call. [Add liquidity] [Don't]">;
106
+ readonly LP_NOT_WORTH_CLAUSE: Template<"That is not worth it at this size.">;
107
+ readonly LP_BLOCK_UNREADABLE: Template<"Before you add liquidity: what it is worth, and what can go wrong\n\nWorth: the reward rate or end date couldn't be read, so I can't tell you what this is worth.\nWhat can go wrong:\n - Price exposure: you put in two coins. If one moves a lot against the other, you can end up with less than you started with, even if you earn rewards.\n - Going out of range: if the price leaves the range you chose, you stop earning until it comes back, and you hold mostly the weaker coin.\n - The rewards can end: a campaign can end at any time, and any rate shown is the rate of that day, which changes.\nYour call. If you say nothing, the answer is Don't. [Don't] [Add liquidity]">;
108
+ readonly SLIPPAGE_CAP_REFUSAL: Template<"Oak won't accept a price move that big. The most it allows is {cap_pct}%.">;
109
+ readonly THIN_MARKET_REFUSAL: Template<"This is a thin market and your size moves the price too much. Try a smaller amount.">;
110
+ readonly PRICE_MISMATCH_REFUSAL: Template<"Pendle's price doesn't match what Oak checked on the chain. Nothing was signed.">;
111
+ readonly LAYERBANK_SETUP_MISMATCH: Template<"LayerBank's setup no longer matches what Oak checked. Nothing was signed.">;
112
+ readonly PENDLE_SERVICE_DOWN: Template<"Pendle's price service isn't answering, so I can't quote or start a new term; I can still cash out ended terms.">;
113
+ };
114
+ export declare const BANNED_COPY: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
@@ -0,0 +1 @@
1
+ import{$,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,a,aa,b,ba,c,ca,d,da,e,ea,f,fa,g,ga,h,ha,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../../../chunks/JUZ5JU6D.js";import"../../../chunks/63YRSLDK.js";export{S as ACCESS_FEE_LINE,y as ACCESS_NO_PLAN,ha as BANNED_COPY,n as BONUS_CLAUSE,u as CARD_FOOTER_ASK,v as CARD_FOOTER_NO_ASK,e as CARD_HEADER,f as CARD_HEADER_AMOUNT,g as CARD_HEADER_AMOUNT_NOT_HELD,w as ETH_HINT,T as FEES_ESTIMATED_HIGH,h as LAYERBANK_RISK_SUMMARY,ea as LAYERBANK_SETUP_MISMATCH,c as LAYERBANK_SITE,B as LB_BONUS_NOTE,C as LB_CASH_NOTE,z as LB_DEPOSIT_SCREEN,A as LB_WITHDRAW_SCREEN,$ as LP_ADD_BUTTON,Y as LP_BLOCK,_ as LP_BLOCK_UNREADABLE,aa as LP_DECLINE_BUTTON,Z as LP_NOT_WORTH_CLAUSE,U as MATURED_NOTICE,V as MATURED_STOCK_NOTICE,W as MATURED_STOCK_NOTICE_NO_AMOUNT,x as NOTHING_TO_EARN,X as NO_NEW_TERM,m as OPTION_A,q as OPTION_A_CANT_CHECK,s as OPTION_A_CLOSED,t as OPTION_A_NO_ROOM,o as OPTION_B,r as OPTION_B_CANT_CHECK,p as OPTION_B_NONE,M as PAYOUT_APPROX,L as PAYOUT_EXACT,D as PENDLE_BUY_STABLE_SCREEN,E as PENDLE_BUY_STOCK_SCREEN,l as PENDLE_CONTRACT_CHANGE,j as PENDLE_EARLY_EXIT,k as PENDLE_FIXED_RATE,J as PENDLE_REDEEM_SCREEN,K as PENDLE_REDEEM_STOCK_SCREEN,i as PENDLE_RISK_SUMMARY,I as PENDLE_SELL_DEFAULT_BUTTON,G as PENDLE_SELL_GAP_LINE,H as PENDLE_SELL_NO_GAP_LINE,F as PENDLE_SELL_SCREEN,fa as PENDLE_SERVICE_DOWN,d as PENDLE_SITE,da as PRICE_MISMATCH_REFUSAL,ba as SLIPPAGE_CAP_REFUSAL,N as STOCK_PAID_IN,O as STOCK_SHORT_TERM,P as STOCK_SHORT_TERM_DAYS,ga as TEMPLATES,ca as THIN_MARKET_REFUSAL,Q as TOO_SMALL,R as TOO_SMALL_NO_SIZE,b as fill,a as placeholdersOf};
@@ -0,0 +1,47 @@
1
+ export declare const COST_SHARE_LIMIT = 0.25;
2
+ export declare const LAYERBANK_HORIZON_DAYS = 30;
3
+ export declare const PLAN_PERIOD_DAYS = 30;
4
+ export declare const CONSERVATIVE_GAS_USD = 0.5;
5
+ export declare const SUGGEST_CAP_USD = 1000000000;
6
+ export interface GasReading {
7
+ usd: number;
8
+ estimatedHigh: boolean;
9
+ }
10
+ export declare function gasOrBound(reading: number | null | undefined): GasReading;
11
+ export interface SizeInput {
12
+ gross: number;
13
+ costs: number;
14
+ amount: number;
15
+ }
16
+ export interface Verdict {
17
+ tooSmall: boolean;
18
+ grossUsd: number;
19
+ costsUsd: number;
20
+ netUsd: number;
21
+ suggestUsd?: number;
22
+ }
23
+ export declare function tooSmall(input: SizeInput): Verdict;
24
+ export declare function suggestUsd(input: SizeInput): number | undefined;
25
+ export declare function lendingGross(input: {
26
+ amountUsd: number;
27
+ ratePct: number;
28
+ days: number;
29
+ }): number;
30
+ export declare function pendleGross(input: {
31
+ redeemOutBase: bigint;
32
+ amountBase: bigint;
33
+ decimals: number;
34
+ }): number;
35
+ export declare function accessFeeApplies(input: {
36
+ gross30d: number;
37
+ planPriceUsd: number | undefined;
38
+ paidUntil: number;
39
+ horizonEndsAt: number;
40
+ nowSec: number;
41
+ }): boolean;
42
+ export declare function daysBetween(fromSec: number, toSec: number): number;
43
+ export declare function usd(value: number): string;
44
+ export declare function pct(value: number): string;
45
+ export declare function dateLabel(unixSeconds: number): string;
46
+ export declare function daysLabel(days: number): string;
47
+ export declare function unitsLabel(base: bigint, decimals: number, places?: number): string;
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q}from"../../../chunks/KBKK7UNY.js";import"../../../chunks/63YRSLDK.js";export{d as CONSERVATIVE_GAS_USD,a as COST_SHARE_LIMIT,b as LAYERBANK_HORIZON_DAYS,c as PLAN_PERIOD_DAYS,e as SUGGEST_CAP_USD,k as accessFeeApplies,o as dateLabel,l as daysBetween,p as daysLabel,f as gasOrBound,i as lendingGross,n as pct,j as pendleGross,h as suggestUsd,g as tooSmall,q as unitsLabel,m as usd};
@@ -0,0 +1,8 @@
1
+ import type { ModuleContext, ProjectModule } from '../../types.js';
2
+ import { type EarnEnv } from './options.js';
3
+ import type { EarnReaders } from './types.js';
4
+ export { lpWarning, lpWarningParts, type LpWarningInput, type LpWarningParts } from './lp.js';
5
+ export { earnOptions, type EarnEnv, type EarnOption, type EarnOptionsResult } from './options.js';
6
+ export * as earnCopy from './copy.js';
7
+ export type { EarnReaders, LayerbankReading, PendleTerm } from './types.js';
8
+ export declare function createModule(context: ModuleContext, readers?: EarnReaders, env?: Partial<EarnEnv>): ProjectModule;
@@ -0,0 +1 @@
1
+ import{a as d}from"../../../chunks/KIFZ5ZSK.js";import{c as l}from"../../../chunks/S47VUTHM.js";import"../../../chunks/52ELWNXJ.js";import"../../../chunks/MRMR4QHA.js";import"../../../chunks/Q42YI3EP.js";import"../../../chunks/SK2VBNAU.js";import"../../../chunks/QU5XKRGK.js";import"../../../chunks/4HG6FRVH.js";import"../../../chunks/H43RNCX2.js";import{h as s}from"../../../chunks/XR7VK24E.js";import"../../../chunks/SMYWWIE6.js";import{a as f,b as y}from"../../../chunks/CBG5HARQ.js";import{a as o}from"../../../chunks/AKYF5264.js";import"../../../chunks/KBKK7UNY.js";import"../../../chunks/JKD2B6OX.js";import"../../../chunks/TFDPEAVZ.js";import"../../../chunks/2MZXTOZU.js";import{ia as u}from"../../../chunks/JUZ5JU6D.js";import"../../../chunks/57MEFFCU.js";import"../../../chunks/VYYSL557.js";import"../../../chunks/WU7XIAXB.js";import"../../../chunks/6WD4HHID.js";import"../../../chunks/P56RZC2M.js";import"../../../chunks/TM2XCRU7.js";import"../../../chunks/MJ6WEWMI.js";import"../../../chunks/3GOHSYHW.js";import"../../../chunks/L4N2RSK2.js";import"../../../chunks/3NJ5KQ3Q.js";import"../../../chunks/P5PYFK7L.js";import"../../../chunks/ZQAFFWDK.js";import"../../../chunks/WP6RHXGN.js";import"../../../chunks/3MLUCYCB.js";import"../../../chunks/LIUXNOLP.js";import"../../../chunks/RVDUSNWW.js";import"../../../chunks/ZV5HIQXC.js";import"../../../chunks/RUX3RY7Y.js";import"../../../chunks/XBE3B6Y2.js";import"../../../chunks/PV5FDT6O.js";import"../../../chunks/U4JGEMKT.js";import"../../../chunks/P4UQGWCP.js";import{b as m}from"../../../chunks/SPJCSEKP.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/IOYRL6AY.js";import"../../../chunks/VEQBHI6O.js";import"../../../chunks/OTXSKFUD.js";import{b as i}from"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/5HCXZWUH.js";import"../../../chunks/ABPL3ZZI.js";import{a,j as p}from"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";import{erc20Abi as E}from"viem";function b(e){return{nowSec:()=>Math.floor(Date.now()/1e3),usdgBalance:async t=>e.clientFor(a).readContract({address:p,abi:E,functionName:"balanceOf",args:[t]}),ethBalance:async t=>e.clientFor(a).getBalance({address:t})}}var C="Optional USDG decimal base units (6 decimals); defaults to the wallet USDG balance.";function D(e,t={layerbank:s(e),pendleTerms:r=>l(e,r),pendleQuoteCosts:(r,n)=>d(e,r,n)},c={}){return m("earn",[{tools:[{name:"earn_options",inputSchema:{type:"object",properties:{amount:i(C)},additionalProperties:!1},execute:async(r,n)=>o(t,{...b(e),...c},n,typeof r.amount=="string"?{amount:r.amount}:{})}]}])}export{D as createModule,u as earnCopy,o as earnOptions,y as lpWarning,f as lpWarningParts};
@@ -0,0 +1,17 @@
1
+ export interface LpWarningInput {
2
+ apr?: number | null;
3
+ endDate?: number | string | Date | null;
4
+ amountUsd: number;
5
+ gasUsd?: number | null;
6
+ nowSec?: number;
7
+ }
8
+ export interface LpWarningParts {
9
+ text: string;
10
+ readable: boolean;
11
+ notWorth: boolean;
12
+ defaultButton?: string;
13
+ addButton: string;
14
+ declineButton: string;
15
+ }
16
+ export declare function lpWarningParts(input: LpWarningInput): LpWarningParts;
17
+ export declare function lpWarning(input: LpWarningInput): string;
@@ -0,0 +1 @@
1
+ import{a,b}from"../../../chunks/CBG5HARQ.js";import"../../../chunks/KBKK7UNY.js";import"../../../chunks/JUZ5JU6D.js";import"../../../chunks/63YRSLDK.js";export{b as lpWarning,a as lpWarningParts};
@@ -0,0 +1,36 @@
1
+ import type { Address } from '../../types.js';
2
+ import type { EarnReaders } from './types.js';
3
+ export interface EarnEnv {
4
+ nowSec(): number;
5
+ usdgBalance(wallet: Address): Promise<bigint>;
6
+ ethBalance(wallet: Address): Promise<bigint>;
7
+ plan?(wallet: Address): Promise<{
8
+ priceUsd: number;
9
+ paidUntil: number;
10
+ } | undefined>;
11
+ }
12
+ export interface EarnOption {
13
+ id: 'A' | 'B';
14
+ project: 'layerbank' | 'pendle';
15
+ offered: boolean;
16
+ reason?: 'cant_check' | 'closed' | 'no_room' | 'no_term';
17
+ amountUsd?: number;
18
+ ratePct?: number;
19
+ market?: Address;
20
+ endsAt?: number;
21
+ grossUsd?: number;
22
+ costsUsd?: number;
23
+ netUsd?: number;
24
+ tooSmall?: boolean;
25
+ suggestUsd?: number;
26
+ estimatedHigh?: boolean;
27
+ }
28
+ export interface EarnOptionsResult {
29
+ card: string;
30
+ options: EarnOption[];
31
+ notices: string[];
32
+ checks: string[];
33
+ }
34
+ export declare function earnOptions(readers: EarnReaders, env: EarnEnv, wallet: Address, args?: {
35
+ amount?: string;
36
+ }): Promise<EarnOptionsResult>;
@@ -0,0 +1 @@
1
+ import{a}from"../../../chunks/AKYF5264.js";import"../../../chunks/KBKK7UNY.js";import"../../../chunks/JUZ5JU6D.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{a as earnOptions};
@@ -0,0 +1,39 @@
1
+ import type { Address } from '../../types.js';
2
+ export interface LayerbankReading {
3
+ rateBasePct: number;
4
+ bonus?: {
5
+ ratePct: number;
6
+ endsAt: number;
7
+ };
8
+ cashUsdgBase: bigint;
9
+ capRoomBase: bigint;
10
+ open: boolean;
11
+ walletUsdgBase: bigint;
12
+ walletReceiptBase: bigint;
13
+ gasInUsd: number;
14
+ gasOutUsd: number;
15
+ checks: string[];
16
+ }
17
+ export interface PendleTerm {
18
+ market: Address;
19
+ kind: 'stable' | 'stock';
20
+ unitSymbol: string;
21
+ unitDecimals: number;
22
+ endsAt: number;
23
+ ratePct: number;
24
+ liquidityUsd: number;
25
+ ptBalanceBase: bigint;
26
+ matured: boolean;
27
+ gasInUsd: number;
28
+ gasOutUsd: number;
29
+ checks: string[];
30
+ }
31
+ export interface EarnReaders {
32
+ layerbank(wallet: Address): Promise<LayerbankReading>;
33
+ pendleTerms(wallet: Address): Promise<PendleTerm[]>;
34
+ pendleQuoteCosts(market: Address, amountBase: bigint): Promise<{
35
+ feeUsd: number;
36
+ impactPct: number;
37
+ ptOutBase: bigint;
38
+ }>;
39
+ }
File without changes
@@ -1 +1 @@
1
- import{a,b,c,d}from"../../../chunks/X5V2Z2NM.js";export{d as erc1271Abi,a as identityAbi,b as reputationAbi,c as validationAbi};
1
+ import{a,b,c,d}from"../../../chunks/X5V2Z2NM.js";import"../../../chunks/63YRSLDK.js";export{d as erc1271Abi,a as identityAbi,b as reputationAbi,c as validationAbi};
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../../../chunks/TWSTOFN3.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{z as act,m as address,l as agentId,o as bytes32,f as bytes32Schema,n as chainGuard,h as coordinates,r as dataProfile,a as disclosure,e as hashSchema,g as hexSchema,d as idSchema,k as isZero,b as marker,c as markerValue,v as matchingReceipt,x as metadataKeyOf,y as metadataValueOf,s as previewAction,q as referenceURI,i as reputationRegistry,t as requireAuthority,u as requireOwnerOrOperator,p as shortText,w as singleEvent,j as validationRegistry};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../../../chunks/N4Q6GN65.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{z as act,m as address,l as agentId,o as bytes32,f as bytes32Schema,n as chainGuard,h as coordinates,r as dataProfile,a as disclosure,e as hashSchema,g as hexSchema,d as idSchema,k as isZero,b as marker,c as markerValue,v as matchingReceipt,x as metadataKeyOf,y as metadataValueOf,s as previewAction,q as referenceURI,i as reputationRegistry,t as requireAuthority,u as requireOwnerOrOperator,p as shortText,w as singleEvent,j as validationRegistry};
@@ -1 +1 @@
1
- import{a,b}from"../../../chunks/QYYFRAWY.js";import"../../../chunks/TWSTOFN3.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{b as createDomainPart,a as publicAddress};
1
+ import{a,b}from"../../../chunks/WIRBCS4W.js";import"../../../chunks/N4Q6GN65.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{b as createDomainPart,a as publicAddress};
@@ -1 +1 @@
1
- import{a as b,b as c,c as d,d as e,e as f}from"../../../chunks/CEIPDEXZ.js";import"../../../chunks/QYYFRAWY.js";import"../../../chunks/TQL7UDFL.js";import"../../../chunks/PTAWEHKB.js";import"../../../chunks/ALK6NKFP.js";import"../../../chunks/PARWLWXW.js";import"../../../chunks/TWSTOFN3.js";import{a}from"../../../chunks/X5V2Z2NM.js";import"../../../chunks/AXYOJBX6.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{b as CLI_ALIASES,f as createModule,e as createModulePart,a as identityAbi,c as readAgentIdentity,d as selfRegistration};
1
+ import{a as b,b as c,c as d,d as e,e as f}from"../../../chunks/GL4NCUMH.js";import"../../../chunks/WIRBCS4W.js";import"../../../chunks/PXT5YTWU.js";import"../../../chunks/BTPXJAUX.js";import"../../../chunks/RUC7KH7A.js";import"../../../chunks/U5PMVP56.js";import"../../../chunks/N4Q6GN65.js";import{a}from"../../../chunks/X5V2Z2NM.js";import"../../../chunks/SPJCSEKP.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{b as CLI_ALIASES,f as createModule,e as createModulePart,a as identityAbi,c as readAgentIdentity,d as selfRegistration};
@@ -1 +1 @@
1
- import{a,b,c}from"../../../chunks/TQL7UDFL.js";import"../../../chunks/TWSTOFN3.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{a as WALLET_MAX_DELAY,c as createManagementPart,b as walletRequest};
1
+ import{a,b,c}from"../../../chunks/PXT5YTWU.js";import"../../../chunks/N4Q6GN65.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{a as WALLET_MAX_DELAY,c as createManagementPart,b as walletRequest};
@@ -1 +1 @@
1
- import{a,b}from"../../../chunks/PTAWEHKB.js";import"../../../chunks/TWSTOFN3.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{b as createReputationPart,a as decimalText};
1
+ import{a,b}from"../../../chunks/BTPXJAUX.js";import"../../../chunks/N4Q6GN65.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{b as createReputationPart,a as decimalText};
@@ -1 +1 @@
1
- import{a,b}from"../../../chunks/ALK6NKFP.js";import"../../../chunks/TWSTOFN3.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{a as SERVICE_KINDS,b as validateService};
1
+ import{a,b}from"../../../chunks/RUC7KH7A.js";import"../../../chunks/N4Q6GN65.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{a as SERVICE_KINDS,b as validateService};
@@ -1 +1 @@
1
- import{a}from"../../../chunks/PARWLWXW.js";import"../../../chunks/TWSTOFN3.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{a as createValidationPart};
1
+ import{a}from"../../../chunks/U5PMVP56.js";import"../../../chunks/N4Q6GN65.js";import"../../../chunks/X5V2Z2NM.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{a as createValidationPart};
@@ -1 +1 @@
1
- import{a,b}from"../../../chunks/SQZRVIVF.js";import"../../../chunks/YHB55C5T.js";import"../../../chunks/PWBL4WKB.js";import"../../../chunks/VVEUJ36E.js";import"../../../chunks/6UPPUHCL.js";import"../../../chunks/TCPPYBGQ.js";import"../../../chunks/AMICUXS6.js";import"../../../chunks/JPOYTTTW.js";import"../../../chunks/LQGPMOD2.js";import"../../../chunks/NSOEDRBU.js";import"../../../chunks/3EFV4FQF.js";import"../../../chunks/XVFLT275.js";import"../../../chunks/5O5ZE3ZV.js";import"../../../chunks/EA6IYKIB.js";import"../../../chunks/KSZMMNXK.js";import"../../../chunks/TNSKEHPC.js";import"../../../chunks/CY75R4FK.js";import"../../../chunks/LIUXNOLP.js";import"../../../chunks/CQCVFRQ5.js";import"../../../chunks/KHJFXJBU.js";import"../../../chunks/WVXW6VL3.js";import"../../../chunks/GIV5JMTE.js";import"../../../chunks/WQ6H62DM.js";import"../../../chunks/QRDDKA4I.js";import"../../../chunks/P4UQGWCP.js";import"../../../chunks/AXYOJBX6.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/6IM6A5VA.js";import"../../../chunks/EG6M6SSO.js";import"../../../chunks/MYBDO5SA.js";import"../../../chunks/HIMVOTIU.js";import"../../../chunks/UWOFA6GV.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/5HCXZWUH.js";import"../../../chunks/CXLEQCP3.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{b as createModule,a as createModulePart};
1
+ import{a,b}from"../../../chunks/J2OT4KAH.js";import"../../../chunks/Z4FZVJ5Z.js";import"../../../chunks/C7AXJHBT.js";import"../../../chunks/XLOYBLFI.js";import"../../../chunks/K3RDPI5J.js";import"../../../chunks/A3PN3PK3.js";import"../../../chunks/VYAJXLND.js";import"../../../chunks/7WSHW7KW.js";import"../../../chunks/P56RZC2M.js";import"../../../chunks/TM2XCRU7.js";import"../../../chunks/MJ6WEWMI.js";import"../../../chunks/3GOHSYHW.js";import"../../../chunks/L4N2RSK2.js";import"../../../chunks/3NJ5KQ3Q.js";import"../../../chunks/P5PYFK7L.js";import"../../../chunks/ZQAFFWDK.js";import"../../../chunks/WP6RHXGN.js";import"../../../chunks/3MLUCYCB.js";import"../../../chunks/LIUXNOLP.js";import"../../../chunks/RVDUSNWW.js";import"../../../chunks/ZV5HIQXC.js";import"../../../chunks/RUX3RY7Y.js";import"../../../chunks/XBE3B6Y2.js";import"../../../chunks/PV5FDT6O.js";import"../../../chunks/U4JGEMKT.js";import"../../../chunks/P4UQGWCP.js";import"../../../chunks/SPJCSEKP.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/43LI5NKJ.js";import"../../../chunks/IOYRL6AY.js";import"../../../chunks/VEQBHI6O.js";import"../../../chunks/OTXSKFUD.js";import"../../../chunks/66F5ZH34.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/5HCXZWUH.js";import"../../../chunks/ABPL3ZZI.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{b as createModule,a as createModulePart};
@@ -1 +1 @@
1
- import{a}from"../../../chunks/HOEQVPY7.js";export{a as createHeyBackoff};
1
+ import{a}from"../../../chunks/HOEQVPY7.js";import"../../../chunks/63YRSLDK.js";export{a as createHeyBackoff};
@@ -1 +1 @@
1
- import{a as U}from"../../../chunks/7XLEYOZH.js";import{b as I}from"../../../chunks/YQUKU2LS.js";import"../../../chunks/HOEQVPY7.js";import{c as L,e as D}from"../../../chunks/V2OOOV6B.js";import"../../../chunks/MYBDO5SA.js";import"../../../chunks/HIMVOTIU.js";import{b as w,e as u}from"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import{a as R}from"../../../chunks/G6HCV67X.js";import{a as F}from"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";var me=["release","contract","commit","docs","correction","other"],O=20,$=4,x=48,Y=4,Z=3,N=6,K=3e5,M=600,B=512,v=/^[a-z0-9][a-z0-9-]{0,79}$/,V=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/,S=/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u,q=/\.(?:localhost|local|localdomain|internal|intranet|lan|home|corp|private|home\.arpa)$/,H=Object.freeze({FEATURE_RELEASE:"release",PRODUCT_LAUNCH:"release",APP_RELEASE:"release",GITHUB_RELEASE:"release",API_RELEASE:"release",SDK_RELEASE:"release",DEMO_RELEASE:"release",DESIGN_RELEASE:"release",CONTRACT_DEPLOY:"contract",CONTRACT_UPGRADE:"contract",CONTRACT_DEPLOY_FOLLOWUP:"contract",CODE_ACTIVITY:"commit",DOCS_UPDATE:"docs",CORRECTION:"correction",RETRACTION:"correction"}),J=new Set(["listProjects","getProjectTimeline","getPartnerScanCard","listChanges"]),Q=new Set(["pons_launch_info","pons_holders"]);function ee(e){return{async hey(t,n){if(!J.has(t))throw new Error(`Blocked HEY read ${t}`);let o=await e("heyresearch_read",{operation:t,parameters:n});if(!u(o)||o.operation!==t||!u(o.data))throw new Error("Unexpected HEY response");return o.data},async oak(t,n){if(!Q.has(t))throw new Error(`Blocked read ${t}`);return e(t,n)}}}function T(e){return typeof e=="string"&&e.trim().length>0}function A(e){if(typeof e!="string"||!V.test(e))return;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString().slice(0,19)===e.slice(0,19)?t:void 0}function z(e){if(!(typeof e!="string"||e.length>2048||/[\s<>\\]/.test(e)||S.test(e)))try{let t=new URL(e),n=t.hostname.toLowerCase().replace(/\.$/,"");return t.protocol!=="https:"||t.username||t.password||!n||n.startsWith("[")||/^[\d.]+$/.test(n)||!n.includes(".")||n==="localhost"||q.test(n)||!/^[a-z0-9-]+(?:\.[a-z0-9-]+)*$/.test(n)||!/[a-z]/.test(n.slice(n.lastIndexOf(".")+1))?void 0:t}catch{return}}function y(e){throw new F(e)}function te(e){return Array.isArray(e)||y("Provide the follow list as an array."),e.map(t=>((!u(t)||t.chainId!==R)&&y("Only Robinhood Chain mainnet (4663) follows can be checked."),(typeof t.token!="string"||!w.test(t.token))&&y("Each follow needs a full token address."),(typeof t.projectSlug!="string"||!v.test(t.projectSlug))&&y("Each follow needs a valid HEY project slug."),t.lastCheckedAt!==null&&A(t.lastCheckedAt)===void 0&&y("lastCheckedAt must be null or a UTC time such as 2026-11-02T12:00:00.000Z."),t.after!==void 0&&t.after!==null&&!P(t.after)&&y("Each follow cursor must be null or a cursor HEY returned."),t))}function P(e){return typeof e=="string"&&e.length>0&&e.length<=B&&!S.test(e)}function ne(e){return e===void 0?{}:((!u(e)||Object.values(e).some(t=>!P(t)))&&y("Continuation cursors must be the strings a previous page returned."),Object.fromEntries(Object.entries(e).map(([t,n])=>[t.toLowerCase(),n])))}function G(e,t,n){let o=i=>{n.push({code:"item_omitted",detail:i,slug:t.slug})};if(!u(e))return o("A row was not an object.");if(!T(e.id)||e.id.length>240)return o("A row had no usable receipt id.");let r=A(e.at);if(r===void 0)return o(`Receipt ${e.id} has no valid UTC publication time.`);if(r>t.reference+K)return o(`Receipt ${e.id} is dated in the future.`);if(!T(e.title)||e.title.length>M||S.test(e.title))return o(`Receipt ${e.id} has unusable text.`);let c=z(e.source);if(!c)return o(`Receipt ${e.id} has no public HTTPS source.`);let d=typeof e.eventType=="string"?e.eventType:void 0,g=e.withdrawn===!0?"correction":d!==void 0&&Object.hasOwn(H,d)?H[d]:"other";return{at:r,recorded:A(e.recordedAt),key:`${t.slug}|${g==="correction"?"correction:":""}${e.id}`,item:{project_slug:t.slug,project_name:t.name,hey_status:t.status,update_type:g,update_text:e.title,published_at:e.at,source_host:c.hostname,source_url:e.source}}}function X(e){return e.map((t,n)=>({candidate:t,index:n})).sort((t,n)=>n.candidate.at-t.candidate.at||t.index-n.index).map(({candidate:t})=>t.item)}function se(e,t){let n=e.nextCursor;if(!u(e.project)||e.project.slug!==t||!Array.isArray(e.items)||!(n==null||typeof n=="string"&&n.length>0&&n.length<=B))throw new Error("Unexpected timeline");return{items:e.items,next:n??null}}async function oe(e,t,n){let o=e.offset??0;(!Number.isSafeInteger(o)||o<0)&&y("offset must be a whole number from zero.");let r=new Date(n()).toISOString(),c=[],d=[],l=new Set,g=!0,i=o,_,k=0;for(;i!==void 0&&k<Y&&_===void 0;){let p;try{p=await t.hey("listProjects",{has:["token"],sort:"newest",limit:x,offset:i})}catch{return c.push({code:"unavailable",detail:"The HEY project list could not be read."}),{mode:"browse",items:[],oak:{},coverage:c,complete:!1,continuation:{offset:i},checkedThrough:r}}if(!Array.isArray(p.items)||!(p.nextOffset===void 0||Number.isSafeInteger(p.nextOffset)&&p.nextOffset>i))return c.push({code:"bad_pagination",detail:"HEY returned a project list whose paging could not be followed."}),{mode:"browse",items:[],oak:{},coverage:c,complete:!1,continuation:{offset:i},checkedThrough:r};k++;let E=i;for(let[f,s]of p.items.entries()){let a=u(s)&&u(s.token)?s.token:void 0;if(!u(s)||typeof s.slug!="string"||!v.test(s.slug)||!T(s.name)||s.name.length>M||S.test(s.name)||!a||a.chainId!==R||typeof a.contractAddress!="string"||!w.test(a.contractAddress)){c.push({code:"project_skipped",detail:"A listed project has no Robinhood Chain mainnet token HEY can bind to it.",...u(s)&&typeof s.slug=="string"&&v.test(s.slug)?{slug:s.slug}:{}});continue}if(!l.has(s.slug)){if(d.length>=x){_=E+f;break}l.add(s.slug),d.push({slug:s.slug,name:s.name,token:a.contractAddress})}}i=p.nextOffset}let b=[];for(let p=0;p<d.length;p+=N){let E=d.slice(p,p+N),f=await Promise.all(E.map(async s=>{let a=await W(t,{chainId:R,token:s.token,projectSlug:s.slug,lastCheckedAt:null}),C={...s,status:a.status==="tied"?a.line:a.status==="untied"&&a.statusLine?a.statusLine:"HEY Research Lab context unavailable"};try{let m=await t.hey("getProjectTimeline",{slug:C.slug,lens:"build",limit:Z});return{project:C,...se(m,C.slug)}}catch{return{project:C,failed:!0}}}));for(let s of f){if("failed"in s){g=!1,c.push({code:"unavailable",detail:"This project's updates could not be read.",slug:s.project.slug});continue}let a={slug:s.project.slug,name:s.project.name,status:s.project.status,reference:n()};for(let C of s.items){let m=G(C,a,c);m&&!l.has(m.key)&&(l.add(m.key),b.push(m))}}}let h=_??i;return h!==void 0&&(g=!1),{mode:"browse",items:X(b),oak:{},coverage:c,complete:g,continuation:h===void 0?null:{offset:h},checkedThrough:r}}async function W(e,t){let n;try{n=await e.hey("getPartnerScanCard",{chain:R,token:t.token})}catch{return{status:"unavailable"}}let o=n.found===!1&&n.contractAddress===void 0?{...n,contractAddress:t.token}:n,r=I(o,R,t.token);if(!r)return{status:"unavailable"};if(!r.found)return{status:"untied",detail:"HEY has no published project for this token. An empty feed proves nothing.",statusLine:L};let c=u(n.project)?n.project:void 0,d="";try{d=new URL(r.project_link).pathname.split("/")[2]??""}catch{}let l=c?.slug===t.projectSlug&&d===t.projectSlug,g=D(r.status_label,r.status_help);return r.token_verification!=="VERIFIED"||!r.activity_applies_to_token||!l?{status:"untied",detail:"HEY does not tie this token to the followed project, so no builder history is shown for it.",...l?{statusLine:g}:{}}:{status:"tied",line:g,name:T(c?.name)?String(c?.name):t.projectSlug}}function re(e,t,n){if(!u(e.query)||e.query.project!==t||e.query.mode!=="sync"||!Array.isArray(e.items)||typeof e.hasMore!="boolean"||!(P(e.nextCursor)||e.nextCursor===null&&e.hasMore===!1&&e.items.length===0)||e.ignoredParameters!==void 0&&(!Array.isArray(e.ignoredParameters)||e.ignoredParameters.length>0))throw new Error("Unexpected change ledger page");if(e.items.some(o=>u(o)&&(o.op!=="retract"||o.project!==void 0)&&(!u(o.project)||o.project.slug!==t)))throw new Error("Change belongs to another project");return{items:e.items,next:e.nextCursor===null?n:e.nextCursor,more:e.hasMore}}function ie(e,t,n){if(u(e)&&e.op==="retract"&&T(e.id)&&e.id.length<=240&&!S.test(e.id))return n.push({code:"retraction",slug:t.slug,detail:`HEY retracted ${e.id}. Empty fields were not supplied by the tombstone.`}),{at:A(e.recordedAt)??0,recorded:A(e.recordedAt),key:`${t.slug}|${e.id}|${String(e.revision)}|retract`,item:{project_slug:t.slug,project_name:t.name,hey_status:t.status,update_type:"correction",update_text:"",published_at:A(e.recordedAt)===void 0?"":e.recordedAt,source_host:"",source_url:""}};if(!u(e)||e.op!=="upsert"){n.push({code:"item_omitted",slug:t.slug,detail:"A change had no supported ledger operation."});return}let o=Array.isArray(e.evidence)?e.evidence.find(l=>u(l)&&z(l.url)):void 0,r=u(e.facts)?e.facts:{},c=typeof r.eventType=="string"?r.eventType:typeof e.type=="string"&&e.type.startsWith("build.")?e.type.slice(6).toUpperCase():void 0,d=G({id:e.id,at:e.occurredAt??e.detectedAt??e.recordedAt,recordedAt:e.recordedAt,title:e.summary,eventType:c,source:u(o)?o.url:void 0},t,n);return d&&(d.key=`${t.slug}|${String(e.id)}|${String(e.revision)}|upsert`),d}async function ae(e,t,n,o){let r=[],c=[],d={},l={},g=!0,i=e.token.toLowerCase(),_={launch_info:null,addresses:null};for(let[E,f,s]of[["launch_info","pons_launch_info",{token:e.token}],["addresses","pons_holders",{token:e.token,limit:1}]])try{let a=await t.oak(f,s);if(E==="addresses"){let C=U(a,e.token);_.addresses=C?.addresses??null,C||r.push({code:"oak_unavailable",detail:"Address figures were not read for this token.",token:i})}else _.launch_info=a}catch{r.push({code:"oak_unavailable",detail:`${f} could not be read for this token; it is unknown, not empty.`,token:i})}let k=await W(t,e);if(k.status==="unavailable")return g=!1,r.push({code:"unavailable",detail:"HEY's scan for this token could not be read.",slug:e.projectSlug,token:i}),o[i]&&(d[i]=o[i]),{key:i,facts:_,coverage:r,candidates:c,nextCursors:d,after:l,complete:g};if(k.status==="untied")return r.push({code:"tie_not_verified",detail:k.detail,slug:e.projectSlug,token:i,...k.statusLine?{statusLine:k.statusLine,statusNote:"show exactly"}:{}}),{key:i,facts:_,coverage:r,candidates:c,nextCursors:d,after:l,complete:g};let b={slug:e.projectSlug,name:k.name,status:k.line,reference:n},h=o[i]??e.after??"c1.0",p=new Set([h]);for(let E=0;;E++){if(E>=Y){g=!1,d[i]=h;break}let f;try{f=re(await t.hey("listChanges",{project:e.projectSlug,after:h,limit:x}),e.projectSlug,h)}catch{g=!1,r.push({code:"unavailable",detail:"This project's change ledger could not be read.",slug:e.projectSlug,token:i}),d[i]=h;break}if(p.has(f.next)&&(f.more||f.items.length>0)){g=!1,r.push({code:"bad_pagination",detail:"HEY repeated a continuation cursor.",slug:e.projectSlug,token:i}),d[i]=h;break}for(let s of f.items){let a=ie(s,b,r);a&&c.push(a)}if(!f.more){l[i]=f.next;break}p.add(f.next),h=f.next}return{key:i,facts:_,coverage:r,candidates:c,nextCursors:d,after:l,complete:g}}async function ce(e,t,n){let o=te(e.entries),r=A(e.until);r===void 0&&y("until must be a UTC time such as 2026-11-02T12:00:00.000Z.");let c=ne(e.cursors),d=Object.keys(c).length>0,l=[],g={},i=[],_=new Set,k={},b={},h=!0,p=o.filter(a=>!d||Object.hasOwn(c,a.token.toLowerCase())),E=p.slice(0,O),f=p.slice(O);f.length&&(h=!1,l.push({code:"follow_limit",detail:`At most ${O} followed tokens are read at once; ${f.length} remain.`})),o.length||l.push({code:"no_follows",detail:"The follow list is empty. An empty feed proves nothing."});for(let a=0;a<E.length;a+=$){let C=await Promise.all(E.slice(a,a+$).map(m=>ae(m,t,Math.max(r,n()),c)));for(let m of C){g[m.key]=m.facts,l.push(...m.coverage),Object.assign(k,m.nextCursors),Object.assign(b,m.after),m.complete||(h=!1);for(let j of m.candidates)_.has(j.key)||(_.add(j.key),i.push(j))}}let s={};return Object.keys(k).length&&(s.cursors=k),f.length&&(s.remainingTokens=f.map(a=>a.token)),{mode:"updates",items:X(i),oak:g,coverage:l,complete:h,after:b,continuation:Object.keys(s).length?s:null,checkedThrough:e.until}}async function he(e,t,n={}){let o=ee(t);return u(e)&&e.mode==="browse"?oe(e,o,n.now??Date.now):u(e)&&e.mode==="updates"?ce(e,o,n.now??Date.now):y("Choose browse or updates.")}export{me as UPDATE_TYPES,he as readBuilderFeed};
1
+ import{a as U}from"../../../chunks/SJJR4ZBZ.js";import{b as I}from"../../../chunks/AFBEZXNV.js";import{c as L,e as D}from"../../../chunks/46547QT3.js";import"../../../chunks/HOEQVPY7.js";import"../../../chunks/VEQBHI6O.js";import"../../../chunks/OTXSKFUD.js";import{b as w,e as u}from"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import{a as R}from"../../../chunks/FWD4L3CJ.js";import{a as F}from"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";var me=["release","contract","commit","docs","correction","other"],O=20,$=4,x=48,Y=4,Z=3,N=6,K=3e5,M=600,B=512,v=/^[a-z0-9][a-z0-9-]{0,79}$/,V=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/,S=/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u,q=/\.(?:localhost|local|localdomain|internal|intranet|lan|home|corp|private|home\.arpa)$/,H=Object.freeze({FEATURE_RELEASE:"release",PRODUCT_LAUNCH:"release",APP_RELEASE:"release",GITHUB_RELEASE:"release",API_RELEASE:"release",SDK_RELEASE:"release",DEMO_RELEASE:"release",DESIGN_RELEASE:"release",CONTRACT_DEPLOY:"contract",CONTRACT_UPGRADE:"contract",CONTRACT_DEPLOY_FOLLOWUP:"contract",CODE_ACTIVITY:"commit",DOCS_UPDATE:"docs",CORRECTION:"correction",RETRACTION:"correction"}),J=new Set(["listProjects","getProjectTimeline","getPartnerScanCard","listChanges"]),Q=new Set(["pons_launch_info","pons_holders"]);function ee(e){return{async hey(t,n){if(!J.has(t))throw new Error(`Blocked HEY read ${t}`);let o=await e("heyresearch_read",{operation:t,parameters:n});if(!u(o)||o.operation!==t||!u(o.data))throw new Error("Unexpected HEY response");return o.data},async oak(t,n){if(!Q.has(t))throw new Error(`Blocked read ${t}`);return e(t,n)}}}function T(e){return typeof e=="string"&&e.trim().length>0}function A(e){if(typeof e!="string"||!V.test(e))return;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString().slice(0,19)===e.slice(0,19)?t:void 0}function z(e){if(!(typeof e!="string"||e.length>2048||/[\s<>\\]/.test(e)||S.test(e)))try{let t=new URL(e),n=t.hostname.toLowerCase().replace(/\.$/,"");return t.protocol!=="https:"||t.username||t.password||!n||n.startsWith("[")||/^[\d.]+$/.test(n)||!n.includes(".")||n==="localhost"||q.test(n)||!/^[a-z0-9-]+(?:\.[a-z0-9-]+)*$/.test(n)||!/[a-z]/.test(n.slice(n.lastIndexOf(".")+1))?void 0:t}catch{return}}function y(e){throw new F(e)}function te(e){return Array.isArray(e)||y("Provide the follow list as an array."),e.map(t=>((!u(t)||t.chainId!==R)&&y("Only Robinhood Chain mainnet (4663) follows can be checked."),(typeof t.token!="string"||!w.test(t.token))&&y("Each follow needs a full token address."),(typeof t.projectSlug!="string"||!v.test(t.projectSlug))&&y("Each follow needs a valid HEY project slug."),t.lastCheckedAt!==null&&A(t.lastCheckedAt)===void 0&&y("lastCheckedAt must be null or a UTC time such as 2026-11-02T12:00:00.000Z."),t.after!==void 0&&t.after!==null&&!P(t.after)&&y("Each follow cursor must be null or a cursor HEY returned."),t))}function P(e){return typeof e=="string"&&e.length>0&&e.length<=B&&!S.test(e)}function ne(e){return e===void 0?{}:((!u(e)||Object.values(e).some(t=>!P(t)))&&y("Continuation cursors must be the strings a previous page returned."),Object.fromEntries(Object.entries(e).map(([t,n])=>[t.toLowerCase(),n])))}function G(e,t,n){let o=i=>{n.push({code:"item_omitted",detail:i,slug:t.slug})};if(!u(e))return o("A row was not an object.");if(!T(e.id)||e.id.length>240)return o("A row had no usable receipt id.");let r=A(e.at);if(r===void 0)return o(`Receipt ${e.id} has no valid UTC publication time.`);if(r>t.reference+K)return o(`Receipt ${e.id} is dated in the future.`);if(!T(e.title)||e.title.length>M||S.test(e.title))return o(`Receipt ${e.id} has unusable text.`);let c=z(e.source);if(!c)return o(`Receipt ${e.id} has no public HTTPS source.`);let d=typeof e.eventType=="string"?e.eventType:void 0,g=e.withdrawn===!0?"correction":d!==void 0&&Object.hasOwn(H,d)?H[d]:"other";return{at:r,recorded:A(e.recordedAt),key:`${t.slug}|${g==="correction"?"correction:":""}${e.id}`,item:{project_slug:t.slug,project_name:t.name,hey_status:t.status,update_type:g,update_text:e.title,published_at:e.at,source_host:c.hostname,source_url:e.source}}}function X(e){return e.map((t,n)=>({candidate:t,index:n})).sort((t,n)=>n.candidate.at-t.candidate.at||t.index-n.index).map(({candidate:t})=>t.item)}function se(e,t){let n=e.nextCursor;if(!u(e.project)||e.project.slug!==t||!Array.isArray(e.items)||!(n==null||typeof n=="string"&&n.length>0&&n.length<=B))throw new Error("Unexpected timeline");return{items:e.items,next:n??null}}async function oe(e,t,n){let o=e.offset??0;(!Number.isSafeInteger(o)||o<0)&&y("offset must be a whole number from zero.");let r=new Date(n()).toISOString(),c=[],d=[],l=new Set,g=!0,i=o,_,k=0;for(;i!==void 0&&k<Y&&_===void 0;){let p;try{p=await t.hey("listProjects",{has:["token"],sort:"newest",limit:x,offset:i})}catch{return c.push({code:"unavailable",detail:"The HEY project list could not be read."}),{mode:"browse",items:[],oak:{},coverage:c,complete:!1,continuation:{offset:i},checkedThrough:r}}if(!Array.isArray(p.items)||!(p.nextOffset===void 0||Number.isSafeInteger(p.nextOffset)&&p.nextOffset>i))return c.push({code:"bad_pagination",detail:"HEY returned a project list whose paging could not be followed."}),{mode:"browse",items:[],oak:{},coverage:c,complete:!1,continuation:{offset:i},checkedThrough:r};k++;let E=i;for(let[f,s]of p.items.entries()){let a=u(s)&&u(s.token)?s.token:void 0;if(!u(s)||typeof s.slug!="string"||!v.test(s.slug)||!T(s.name)||s.name.length>M||S.test(s.name)||!a||a.chainId!==R||typeof a.contractAddress!="string"||!w.test(a.contractAddress)){c.push({code:"project_skipped",detail:"A listed project has no Robinhood Chain mainnet token HEY can bind to it.",...u(s)&&typeof s.slug=="string"&&v.test(s.slug)?{slug:s.slug}:{}});continue}if(!l.has(s.slug)){if(d.length>=x){_=E+f;break}l.add(s.slug),d.push({slug:s.slug,name:s.name,token:a.contractAddress})}}i=p.nextOffset}let b=[];for(let p=0;p<d.length;p+=N){let E=d.slice(p,p+N),f=await Promise.all(E.map(async s=>{let a=await W(t,{chainId:R,token:s.token,projectSlug:s.slug,lastCheckedAt:null}),C={...s,status:a.status==="tied"?a.line:a.status==="untied"&&a.statusLine?a.statusLine:"HEY Research Lab context unavailable"};try{let m=await t.hey("getProjectTimeline",{slug:C.slug,lens:"build",limit:Z});return{project:C,...se(m,C.slug)}}catch{return{project:C,failed:!0}}}));for(let s of f){if("failed"in s){g=!1,c.push({code:"unavailable",detail:"This project's updates could not be read.",slug:s.project.slug});continue}let a={slug:s.project.slug,name:s.project.name,status:s.project.status,reference:n()};for(let C of s.items){let m=G(C,a,c);m&&!l.has(m.key)&&(l.add(m.key),b.push(m))}}}let h=_??i;return h!==void 0&&(g=!1),{mode:"browse",items:X(b),oak:{},coverage:c,complete:g,continuation:h===void 0?null:{offset:h},checkedThrough:r}}async function W(e,t){let n;try{n=await e.hey("getPartnerScanCard",{chain:R,token:t.token})}catch{return{status:"unavailable"}}let o=n.found===!1&&n.contractAddress===void 0?{...n,contractAddress:t.token}:n,r=I(o,R,t.token);if(!r)return{status:"unavailable"};if(!r.found)return{status:"untied",detail:"HEY has no published project for this token. An empty feed proves nothing.",statusLine:L};let c=u(n.project)?n.project:void 0,d="";try{d=new URL(r.project_link).pathname.split("/")[2]??""}catch{}let l=c?.slug===t.projectSlug&&d===t.projectSlug,g=D(r.status_label,r.status_help);return r.token_verification!=="VERIFIED"||!r.activity_applies_to_token||!l?{status:"untied",detail:"HEY does not tie this token to the followed project, so no builder history is shown for it.",...l?{statusLine:g}:{}}:{status:"tied",line:g,name:T(c?.name)?String(c?.name):t.projectSlug}}function re(e,t,n){if(!u(e.query)||e.query.project!==t||e.query.mode!=="sync"||!Array.isArray(e.items)||typeof e.hasMore!="boolean"||!(P(e.nextCursor)||e.nextCursor===null&&e.hasMore===!1&&e.items.length===0)||e.ignoredParameters!==void 0&&(!Array.isArray(e.ignoredParameters)||e.ignoredParameters.length>0))throw new Error("Unexpected change ledger page");if(e.items.some(o=>u(o)&&(o.op!=="retract"||o.project!==void 0)&&(!u(o.project)||o.project.slug!==t)))throw new Error("Change belongs to another project");return{items:e.items,next:e.nextCursor===null?n:e.nextCursor,more:e.hasMore}}function ie(e,t,n){if(u(e)&&e.op==="retract"&&T(e.id)&&e.id.length<=240&&!S.test(e.id))return n.push({code:"retraction",slug:t.slug,detail:`HEY retracted ${e.id}. Empty fields were not supplied by the tombstone.`}),{at:A(e.recordedAt)??0,recorded:A(e.recordedAt),key:`${t.slug}|${e.id}|${String(e.revision)}|retract`,item:{project_slug:t.slug,project_name:t.name,hey_status:t.status,update_type:"correction",update_text:"",published_at:A(e.recordedAt)===void 0?"":e.recordedAt,source_host:"",source_url:""}};if(!u(e)||e.op!=="upsert"){n.push({code:"item_omitted",slug:t.slug,detail:"A change had no supported ledger operation."});return}let o=Array.isArray(e.evidence)?e.evidence.find(l=>u(l)&&z(l.url)):void 0,r=u(e.facts)?e.facts:{},c=typeof r.eventType=="string"?r.eventType:typeof e.type=="string"&&e.type.startsWith("build.")?e.type.slice(6).toUpperCase():void 0,d=G({id:e.id,at:e.occurredAt??e.detectedAt??e.recordedAt,recordedAt:e.recordedAt,title:e.summary,eventType:c,source:u(o)?o.url:void 0},t,n);return d&&(d.key=`${t.slug}|${String(e.id)}|${String(e.revision)}|upsert`),d}async function ae(e,t,n,o){let r=[],c=[],d={},l={},g=!0,i=e.token.toLowerCase(),_={launch_info:null,addresses:null};for(let[E,f,s]of[["launch_info","pons_launch_info",{token:e.token}],["addresses","pons_holders",{token:e.token,limit:1}]])try{let a=await t.oak(f,s);if(E==="addresses"){let C=U(a,e.token);_.addresses=C?.addresses??null,C||r.push({code:"oak_unavailable",detail:"Address figures were not read for this token.",token:i})}else _.launch_info=a}catch{r.push({code:"oak_unavailable",detail:`${f} could not be read for this token; it is unknown, not empty.`,token:i})}let k=await W(t,e);if(k.status==="unavailable")return g=!1,r.push({code:"unavailable",detail:"HEY's scan for this token could not be read.",slug:e.projectSlug,token:i}),o[i]&&(d[i]=o[i]),{key:i,facts:_,coverage:r,candidates:c,nextCursors:d,after:l,complete:g};if(k.status==="untied")return r.push({code:"tie_not_verified",detail:k.detail,slug:e.projectSlug,token:i,...k.statusLine?{statusLine:k.statusLine,statusNote:"show exactly"}:{}}),{key:i,facts:_,coverage:r,candidates:c,nextCursors:d,after:l,complete:g};let b={slug:e.projectSlug,name:k.name,status:k.line,reference:n},h=o[i]??e.after??"c1.0",p=new Set([h]);for(let E=0;;E++){if(E>=Y){g=!1,d[i]=h;break}let f;try{f=re(await t.hey("listChanges",{project:e.projectSlug,after:h,limit:x}),e.projectSlug,h)}catch{g=!1,r.push({code:"unavailable",detail:"This project's change ledger could not be read.",slug:e.projectSlug,token:i}),d[i]=h;break}if(p.has(f.next)&&(f.more||f.items.length>0)){g=!1,r.push({code:"bad_pagination",detail:"HEY repeated a continuation cursor.",slug:e.projectSlug,token:i}),d[i]=h;break}for(let s of f.items){let a=ie(s,b,r);a&&c.push(a)}if(!f.more){l[i]=f.next;break}p.add(f.next),h=f.next}return{key:i,facts:_,coverage:r,candidates:c,nextCursors:d,after:l,complete:g}}async function ce(e,t,n){let o=te(e.entries),r=A(e.until);r===void 0&&y("until must be a UTC time such as 2026-11-02T12:00:00.000Z.");let c=ne(e.cursors),d=Object.keys(c).length>0,l=[],g={},i=[],_=new Set,k={},b={},h=!0,p=o.filter(a=>!d||Object.hasOwn(c,a.token.toLowerCase())),E=p.slice(0,O),f=p.slice(O);f.length&&(h=!1,l.push({code:"follow_limit",detail:`At most ${O} followed tokens are read at once; ${f.length} remain.`})),o.length||l.push({code:"no_follows",detail:"The follow list is empty. An empty feed proves nothing."});for(let a=0;a<E.length;a+=$){let C=await Promise.all(E.slice(a,a+$).map(m=>ae(m,t,Math.max(r,n()),c)));for(let m of C){g[m.key]=m.facts,l.push(...m.coverage),Object.assign(k,m.nextCursors),Object.assign(b,m.after),m.complete||(h=!1);for(let j of m.candidates)_.has(j.key)||(_.add(j.key),i.push(j))}}let s={};return Object.keys(k).length&&(s.cursors=k),f.length&&(s.remainingTokens=f.map(a=>a.token)),{mode:"updates",items:X(i),oak:g,coverage:l,complete:h,after:b,continuation:Object.keys(s).length?s:null,checkedThrough:e.until}}async function he(e,t,n={}){let o=ee(t);return u(e)&&e.mode==="browse"?oe(e,o,n.now??Date.now):u(e)&&e.mode==="updates"?ce(e,o,n.now??Date.now):y("Choose browse or updates.")}export{me as UPDATE_TYPES,he as readBuilderFeed};
@@ -1 +1 @@
1
- import{a}from"../../../chunks/TWR7BF72.js";export{a as assessFreshness};
1
+ import{a}from"../../../chunks/TWR7BF72.js";import"../../../chunks/63YRSLDK.js";export{a as assessFreshness};
@@ -1 +1 @@
1
- import{b as N}from"../../../chunks/WWFOYZT2.js";import{a as $}from"../../../chunks/TWR7BF72.js";import"../../../chunks/XQXLFF7Y.js";import{a as L}from"../../../chunks/YQUKU2LS.js";import{a as O}from"../../../chunks/HOEQVPY7.js";import{b as R}from"../../../chunks/V2OOOV6B.js";import{b as Y}from"../../../chunks/AXYOJBX6.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/6IM6A5VA.js";import{a as q}from"../../../chunks/MYBDO5SA.js";import"../../../chunks/HIMVOTIU.js";import"../../../chunks/UWOFA6GV.js";import{b,e as c,g as T}from"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import{a as m}from"../../../chunks/G6HCV67X.js";import{a as u,d as M}from"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";var I="https://heyresearch.xyz",U=6e4,F=120,D=/^[a-z0-9][a-z0-9-]{0,79}$/,K=`${R} HEY Research Lab records public activity. These records are not investment advice, a buy or sell signal, or a safety verdict. Null means not measured.`,z=`${R} Keyed research, not advice. Preserve per-item found/error states and input order. The server key is not returned. Private responses are not cached.`,G=`${R} Stateless receipt validation. HEY stores nothing and does not endorse the conclusion. Oak does not cache this receipt.`,B=new WeakMap;function h(e){return typeof e=="string"&&e.trim().length>0}function E(e){return h(e)&&Number.isFinite(Date.parse(e))}function A(e){return e===null||typeof e=="number"&&Number.isSafeInteger(e)&&e>=0}function H(e){if(!h(e))return!1;try{let r=new URL(e);return r.origin===I&&!r.username&&!r.password}catch{return!1}}function k(){throw new u("HEY returned an unexpected response. Please try again.")}function C(e,r){if((e.schema!=="hey.agent-intelligence-response"||e.schemaVersion!=="1"||e.capability!==r||e.status!=="ok"||!c(e.chain)||e.chain.chainId!==m||!c(e.data)||!c(e.links)||!H(e.links.page)||!c(e.citation)||!h(e.citation.text)||!E(e.citation.asOf)||!E(e.asOf))&&k(),r==="research_project"){(!c(e.subject)||!c(e.subject.project)||!h(e.subject.project.slug)||!c(e.data.builderState)||!h(e.data.builderState.activityStatus)||typeof e.data.builderState.activityMeasured!="boolean"||!A(e.data.builderState.meaningfulEvents30d))&&k();let t=e.subject.project.token;t!=null&&(!c(t)||t.chainId!==m||typeof t.address!="string"||!b.test(t.address))&&k()}else r==="chain_brief"&&(!c(e.data.window)||!E(e.data.window.from)||!E(e.data.window.to)||!c(e.data.shipped)||!A(e.data.shipped.ships)||!A(e.data.shipped.projects))&&k()}function J(e,r){(e.chain_id!==m||typeof e.contract_address!="string"||e.contract_address.toLowerCase()!==r||!H(e.project_link)||!h(e.hey_status_label)||!h(e.token_verification)||typeof e.activity_applies_to_token!="boolean"||typeof e.activity_measured!="boolean"||!A(e.meaningful_ships_30d)||!E(e.as_of)||!h(e.disclaimer)||e.token_verification==="MISMATCH"&&e.activity_applies_to_token!==!1)&&k()}function V(e){(e.chainId!==m||!Array.isArray(e.days)||e.days.length===0||!e.days.every(r=>c(r)&&typeof r.day=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(r.day)&&A(r.ships)&&A(r.transactions)&&(r.chainObservedAt===null||E(r.chainObservedAt))))&&k()}function W(e,r){let t=n=>{throw new u(`HEY scan_cards returned an unexpected ${n}. Please try again.`)};(!Array.isArray(e.items)||e.items.length!==r.length)&&t("items"),e.requested!==r.length&&t("requested count"),(typeof e.found_count!="number"||!Number.isSafeInteger(e.found_count)||e.found_count<0)&&t("found_count"),h(e.disclaimer)||t("disclaimer");for(let[n,s]of e.items.entries()){(!c(s)||s.input!==r[n])&&t(`items[${n}].input`);let i=s;typeof i.found!="boolean"&&t(`items[${n}].found`),i.chainId!==m&&t(`items[${n}].chainId`),(typeof i.contractAddress!="string"||!T(i.contractAddress,r[n]))&&t(`items[${n}].contractAddress`),h(i.disclaimer)||t(`items[${n}].disclaimer`),i.found&&(!c(i.project)||!c(i.activity)||!H(i.project_link)||!h(i.status)||!h(i.status_label)||!h(i.status_help)||!h(i.research_level)||typeof i.verified_builder!="boolean"||typeof i.activity_measured!="boolean"||!["VERIFIED","UNVERIFIED","MISMATCH"].includes(String(i.token_verification))||typeof i.activity_applies_to_token!="boolean"||i.token_verification==="MISMATCH"&&i.activity_applies_to_token!==!1||!["measured","no_source","not_researched"].includes(String(i.coverage)))&&t(`items[${n}] scan card`)}}var j=class extends u{constructor(t,n,s){super(s);this.status=t;this.code=n}status;code};function P(e,r,t=""){let n=c(r)?r.error:void 0,s=c(n)?n.code:n;if(e===400&&s==="ambiguous"){let p=(c(n)&&Array.isArray(n.candidates)?n.candidates:[]).flatMap(d=>c(d)&&typeof d.slug=="string"&&D.test(d.slug)?[d.slug]:[]);return new j(e,s,`The HEY query is ambiguous. Choose a project slug${p.length?`: ${p.join(", ")}`:" or use a contract address"}.`)}if(e===404&&(s==="not_found"||s==="not_published")){if(t.startsWith("/api/evidence/"))return new j(e,s,"The cited HEY evidence receipt is unavailable. Check the exact typed id; missing evidence is not a finding.");let i=c(r)&&H(r.scan_url)?` See ${r.scan_url}.`:"";return new j(e,s,`HEY has not published a matching project. This describes its index, not the token.${i}`)}return new j(e,s,e>=400&&e<500&&e!==429?L(e,t).message:`HEY returned HTTP ${e}. Please try again.`)}async function Q(e){let r=e.body?.getReader();if(!r)return"";let t=[],n=0;try{for(;;){let{done:p,value:d}=await r.read();if(p)break;if(n+=d.byteLength,n>2e6)throw await r.cancel(),new u("HEY response exceeds the two-megabyte read limit. Narrow the query.");t.push(d)}}finally{r.releaseLock()}let s=new Uint8Array(n),i=0;for(let p of t)s.set(p,i),i+=p.byteLength;return new TextDecoder().decode(s)}function X(e){let r=B.get(e.http);r||(r={cache:new Map,pending:new Map,requests:[],backoff:O()},B.set(e.http,r));let t=r;return async(n,s,i="json",p,d=!1,w=1)=>{let l=d?e.heyApiKey:void 0;if(d&&!l)throw new u("HEY bulk reads require an operator-configured server API key. Never provide a key in tool arguments.");if(l&&(typeof l!="string"||l.length>4096||[...l].some(o=>o.charCodeAt(0)<33||o.charCodeAt(0)>126)))throw new u("The server HEY API key configuration is invalid. Ask the Oak operator to correct it.");let a=p===void 0&&!d;if(t.backoff.blocked())throw new u(t.backoff.limited()?"HEY received too many requests. Please try again later.":"HEY Research Lab is temporarily unavailable. Please try again later.");let f=Date.now();for(let[o,_]of t.cache)_.expires<=f&&t.cache.delete(o);let y=a?t.cache.get(n):void 0;if(y)return s(y.body),structuredClone(y.body);let S=a?t.pending.get(n):void 0;if(S){let o=await S;return s(o),structuredClone(o)}if(t.requests=t.requests.filter(o=>o>f-U),t.requests.length+w>F)throw new u("HEY received too many requests. Please try again later.");for(let o=0;o<w;o++)t.requests.push(f);let g=(async()=>{try{let o=await e.http(`${I}${n}`,{method:p===void 0?"GET":"POST",credentials:"omit",redirect:"error",headers:{accept:i==="csv"?"text/csv":"application/json","x-hey-integration":"oak/1.0.0","user-agent":"oak/1.0.0",...p===void 0?{}:{"content-type":"application/json"},...l?{authorization:`Bearer ${l}`}:{}},...p===void 0?{}:{body:JSON.stringify(p)},signal:AbortSignal.timeout(1e4)}).catch(v=>{if(v instanceof q)return v.response;throw t.backoff.defer(null),v});if(o.status===429)throw t.backoff.defer(o.headers.get("retry-after"),!0),await o.body?.cancel(),new u("HEY received too many requests. Please try again later.");if(o.status>=500)throw t.backoff.defer(o.headers.get("retry-after")),await o.body?.cancel(),P(o.status,null,n);let _;try{let v=await Q(o);_=i==="csv"&&o.ok?{format:"csv",value:v}:JSON.parse(v)}catch(v){throw v instanceof u?v:o.ok?new u("HEY returned malformed JSON. Please try again."):P(o.status,null,n)}if(d&&[401,403].includes(o.status))throw new u("HEY refused keyed access. Ask the Oak operator to check the server key and allowance.");if(!o.ok)throw P(o.status,_,n);return c(_)||k(),s(_),a&&t.cache.set(n,{body:_,expires:Date.now()+U}),_}catch(o){throw o instanceof u?o:new u(M(o))}})();a&&t.pending.set(n,g);try{return structuredClone(await g)}finally{a&&t.pending.delete(n)}}}function x(e,r){if(!c(e)||Object.keys(e).some(t=>t!==r))throw new u(`Provide only ${r}; HEY reads are fixed to Robinhood Chain 4663.`)}var Z=e=>{let r=X(e);return{tools:[{name:"heyresearch_research_project",inputSchema:{type:"object",additionalProperties:!1,required:["project"],properties:{project:{type:"string",minLength:1,maxLength:200,description:"A project slug, project name, ticker search, or token contract address on chain 4663."}}},async execute(t){if(x(t,"project"),!h(t.project)||t.project.trim().length>200)throw new u("Provide a project slug, name, ticker, or token contract address.");let n=t.project.trim();if(/^0x/i.test(n)&&!b.test(n))throw new u("Provide a full token contract address on Robinhood Chain 4663.");let s=b.test(n)?"address":D.test(n)?"project":"q",i=s==="address"?n.toLowerCase():n,p=g=>r(`/api/agent/research_project?${g}=${encodeURIComponent(i)}`,o=>C(o,"research_project")),d;try{d=await p(s)}catch(g){if(s!=="project"||!(g instanceof j)||g.status!==404||g.code!=="not_found")throw g;d=await p("q")}let w=d.subject.project,l=c(w.token)?w.token.address:void 0,a=s==="address"?i:l?.toLowerCase(),f=a?await r(`/api/v1/builder?chain=${m}&token=${a}&integration=oak/1.0.0`,g=>J(g,a)):null,y=f?.activity_applies_to_token===!1;s==="address"&&l&&l.toLowerCase()!==a&&!y&&k();let S=d.links;return{chainId:m,research:d,builder:f,freshnessAssessment:$(d),attribution:{page:S.page,citation:d.citation,...f&&!y?{project_link:f.project_link}:{}},warnings:y?["This activity belongs to the project, not this token. The project names a different contract; do not link this token to the project."]:[],notAdvice:!0,disclaimer:K}}},{name:"heyresearch_chain_activity",inputSchema:{type:"object",additionalProperties:!1,properties:{days:{type:"integer",minimum:1,maximum:30,default:7,description:"UTC days of chain activity alongside the seven-day builder brief."}}},async execute(t){x(t,"days");let n=t.days===void 0?7:t.days;if(typeof n!="number"||!Number.isInteger(n)||n<1||n>30)throw new u("Provide a whole number of days from 1 to 30.");let s=await r("/api/agent/chain_brief",p=>C(p,"chain_brief")),i=await r(`/api/chain?days=${n}`,V);return{chainId:m,brief:s,activity:i,freshnessAssessment:$({brief:s,activity:i}),attribution:{page:s.links.page,citation:s.citation,activity:`${I}/api/chain?days=${n}`},notAdvice:!0,disclaimer:K}}},N(r,C),{name:"heyresearch_bulk",inputSchema:{type:"object",additionalProperties:!1,required:["operation","items"],properties:{operation:{type:"string",enum:["snapshots","tokens","scan_cards"],description:"Keyed GET reads. Requires an Oak operator-configured server key; one upstream allowance unit per input. Results are not cached."},items:{type:"array",minItems:1,maxItems:30,items:{type:"string"},description:"Up to 10 project slugs for snapshots; up to 30 token addresses for tokens or scan_cards. Repeated inputs and their order are preserved."}}},async execute(t){if(!c(t)||Object.keys(t).some(a=>!["operation","items"].includes(a)))throw new u("Provide only the bulk operation and items; configure credentials on the Oak server.");let n=t.operation;if(!["snapshots","tokens","scan_cards"].includes(String(n))||!Array.isArray(t.items)||!t.items.length||t.items.length>(n==="snapshots"?10:30)||t.items.some(a=>typeof a!="string"||!(n==="snapshots"?D:b).test(a)))throw new u("Provide up to 10 valid project slugs or up to 30 full token addresses for the chosen bulk operation.");let s=t.items,i=new URLSearchParams(n==="snapshots"?{slugs:s.join(",")}:n==="tokens"?{addresses:s.join(",")}:{chain:String(m),tokens:s.join(",")}),p=`${n==="snapshots"?"/api/snapshots":n==="tokens"?`/api/token/${m}`:"/api/v1/scan"}?${i}`,d=await r(p,a=>{if(n==="scan_cards")return W(a,s);(!Array.isArray(a.items)||a.items.length!==s.length||a.requested!==s.length||typeof a.found!="number"||!Number.isSafeInteger(a.found)||a.found<0||typeof a.disclaimer!="string"||a.items.some((f,y)=>!c(f)||f.input!==s[y]||typeof f.found!="boolean"||c(f.data)&&f.data.chainId!==void 0&&f.data.chainId!==m))&&k()},"json",void 0,!0,s.length),w=d.items.filter(a=>a.found===!0).length,l=n==="scan_cards"?d.found_count:d.found;return{consistency:{reportedFound:l,countedFound:w,consistent:l===w},warnings:l===w?[]:[`HEY reports ${n==="scan_cards"?"found_count":"found"}=${l}, but ${w} returned items have found=true. Provider data is preserved; check the per-item states.`],chainId:m,operation:n,data:d,attribution:{source:`${I}${p}`,provider:"HEY Research Lab"},notAdvice:!0,untrusted:!0,disclaimer:z}}},{name:"heyresearch_validate_receipt",inputSchema:{type:"object",additionalProperties:!1,required:["receipt"],properties:{receipt:{type:"object",description:"AgentResearchReceipt v1. Sent to HEY for stateless validation; no reasoning trace, wallet credential or API key. Maximum 64 KiB."}}},async execute(t){if(x(t,"receipt"),!c(t.receipt))throw new u("Provide an AgentResearchReceipt object.");let n=JSON.stringify(t.receipt);if(new TextEncoder().encode(n).length>65536)throw new u("The research receipt exceeds 64 KiB.");if(/"(?:private_key|secret_key|wallet_key|mnemonic|seed|seed_phrase|recovery_phrase)"\s*:/i.test(n))throw new u("Do not include wallet credentials in a research receipt.");let s=await r("/api/receipts/validate",i=>{(!Object.keys(i).length||i.error)&&k()},"json",t.receipt);return{chainId:m,data:s,attribution:{source:`${I}/api/receipts/validate`,provider:"HEY Research Lab"},notAdvice:!0,disclaimer:G}}}]}},ue=e=>Y("heyresearch",[Z(e)]);export{z as HEY_KEYED_DISCLAIMER,G as HEY_RECEIPT_DISCLAIMER,K as HEY_RECORDS_DISCLAIMER,ue as createModule,Z as createModulePart};
1
+ import{b as N}from"../../../chunks/VYN2NRAP.js";import{a as $}from"../../../chunks/TWR7BF72.js";import"../../../chunks/TMVO2DAK.js";import{a as L}from"../../../chunks/AFBEZXNV.js";import{b as R}from"../../../chunks/46547QT3.js";import{a as O}from"../../../chunks/HOEQVPY7.js";import{b as Y}from"../../../chunks/SPJCSEKP.js";import"../../../chunks/Z25UKUJF.js";import"../../../chunks/43LI5NKJ.js";import{a as q}from"../../../chunks/VEQBHI6O.js";import"../../../chunks/OTXSKFUD.js";import"../../../chunks/66F5ZH34.js";import{b,e as c,g as T}from"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import{a as m}from"../../../chunks/FWD4L3CJ.js";import{a as u,e as M}from"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";var I="https://heyresearch.xyz",U=6e4,F=120,D=/^[a-z0-9][a-z0-9-]{0,79}$/,K=`${R} HEY Research Lab records public activity. These records are not investment advice, a buy or sell signal, or a safety verdict. Null means not measured.`,z=`${R} Keyed research, not advice. Preserve per-item found/error states and input order. The server key is not returned. Private responses are not cached.`,G=`${R} Stateless receipt validation. HEY stores nothing and does not endorse the conclusion. Oak does not cache this receipt.`,B=new WeakMap;function h(e){return typeof e=="string"&&e.trim().length>0}function E(e){return h(e)&&Number.isFinite(Date.parse(e))}function A(e){return e===null||typeof e=="number"&&Number.isSafeInteger(e)&&e>=0}function H(e){if(!h(e))return!1;try{let r=new URL(e);return r.origin===I&&!r.username&&!r.password}catch{return!1}}function k(){throw new u("HEY returned an unexpected response. Please try again.")}function C(e,r){if((e.schema!=="hey.agent-intelligence-response"||e.schemaVersion!=="1"||e.capability!==r||e.status!=="ok"||!c(e.chain)||e.chain.chainId!==m||!c(e.data)||!c(e.links)||!H(e.links.page)||!c(e.citation)||!h(e.citation.text)||!E(e.citation.asOf)||!E(e.asOf))&&k(),r==="research_project"){(!c(e.subject)||!c(e.subject.project)||!h(e.subject.project.slug)||!c(e.data.builderState)||!h(e.data.builderState.activityStatus)||typeof e.data.builderState.activityMeasured!="boolean"||!A(e.data.builderState.meaningfulEvents30d))&&k();let t=e.subject.project.token;t!=null&&(!c(t)||t.chainId!==m||typeof t.address!="string"||!b.test(t.address))&&k()}else r==="chain_brief"&&(!c(e.data.window)||!E(e.data.window.from)||!E(e.data.window.to)||!c(e.data.shipped)||!A(e.data.shipped.ships)||!A(e.data.shipped.projects))&&k()}function J(e,r){(e.chain_id!==m||typeof e.contract_address!="string"||e.contract_address.toLowerCase()!==r||!H(e.project_link)||!h(e.hey_status_label)||!h(e.token_verification)||typeof e.activity_applies_to_token!="boolean"||typeof e.activity_measured!="boolean"||!A(e.meaningful_ships_30d)||!E(e.as_of)||!h(e.disclaimer)||e.token_verification==="MISMATCH"&&e.activity_applies_to_token!==!1)&&k()}function V(e){(e.chainId!==m||!Array.isArray(e.days)||e.days.length===0||!e.days.every(r=>c(r)&&typeof r.day=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(r.day)&&A(r.ships)&&A(r.transactions)&&(r.chainObservedAt===null||E(r.chainObservedAt))))&&k()}function W(e,r){let t=n=>{throw new u(`HEY scan_cards returned an unexpected ${n}. Please try again.`)};(!Array.isArray(e.items)||e.items.length!==r.length)&&t("items"),e.requested!==r.length&&t("requested count"),(typeof e.found_count!="number"||!Number.isSafeInteger(e.found_count)||e.found_count<0)&&t("found_count"),h(e.disclaimer)||t("disclaimer");for(let[n,s]of e.items.entries()){(!c(s)||s.input!==r[n])&&t(`items[${n}].input`);let i=s;typeof i.found!="boolean"&&t(`items[${n}].found`),i.chainId!==m&&t(`items[${n}].chainId`),(typeof i.contractAddress!="string"||!T(i.contractAddress,r[n]))&&t(`items[${n}].contractAddress`),h(i.disclaimer)||t(`items[${n}].disclaimer`),i.found&&(!c(i.project)||!c(i.activity)||!H(i.project_link)||!h(i.status)||!h(i.status_label)||!h(i.status_help)||!h(i.research_level)||typeof i.verified_builder!="boolean"||typeof i.activity_measured!="boolean"||!["VERIFIED","UNVERIFIED","MISMATCH"].includes(String(i.token_verification))||typeof i.activity_applies_to_token!="boolean"||i.token_verification==="MISMATCH"&&i.activity_applies_to_token!==!1||!["measured","no_source","not_researched"].includes(String(i.coverage)))&&t(`items[${n}] scan card`)}}var j=class extends u{constructor(t,n,s){super(s);this.status=t;this.code=n}status;code};function P(e,r,t=""){let n=c(r)?r.error:void 0,s=c(n)?n.code:n;if(e===400&&s==="ambiguous"){let p=(c(n)&&Array.isArray(n.candidates)?n.candidates:[]).flatMap(d=>c(d)&&typeof d.slug=="string"&&D.test(d.slug)?[d.slug]:[]);return new j(e,s,`The HEY query is ambiguous. Choose a project slug${p.length?`: ${p.join(", ")}`:" or use a contract address"}.`)}if(e===404&&(s==="not_found"||s==="not_published")){if(t.startsWith("/api/evidence/"))return new j(e,s,"The cited HEY evidence receipt is unavailable. Check the exact typed id; missing evidence is not a finding.");let i=c(r)&&H(r.scan_url)?` See ${r.scan_url}.`:"";return new j(e,s,`HEY has not published a matching project. This describes its index, not the token.${i}`)}return new j(e,s,e>=400&&e<500&&e!==429?L(e,t).message:`HEY returned HTTP ${e}. Please try again.`)}async function Q(e){let r=e.body?.getReader();if(!r)return"";let t=[],n=0;try{for(;;){let{done:p,value:d}=await r.read();if(p)break;if(n+=d.byteLength,n>2e6)throw await r.cancel(),new u("HEY response exceeds the two-megabyte read limit. Narrow the query.");t.push(d)}}finally{r.releaseLock()}let s=new Uint8Array(n),i=0;for(let p of t)s.set(p,i),i+=p.byteLength;return new TextDecoder().decode(s)}function X(e){let r=B.get(e.http);r||(r={cache:new Map,pending:new Map,requests:[],backoff:O()},B.set(e.http,r));let t=r;return async(n,s,i="json",p,d=!1,w=1)=>{let l=d?e.heyApiKey:void 0;if(d&&!l)throw new u("HEY bulk reads require an operator-configured server API key. Never provide a key in tool arguments.");if(l&&(typeof l!="string"||l.length>4096||[...l].some(o=>o.charCodeAt(0)<33||o.charCodeAt(0)>126)))throw new u("The server HEY API key configuration is invalid. Ask the Oak operator to correct it.");let a=p===void 0&&!d;if(t.backoff.blocked())throw new u(t.backoff.limited()?"HEY received too many requests. Please try again later.":"HEY Research Lab is temporarily unavailable. Please try again later.");let f=Date.now();for(let[o,_]of t.cache)_.expires<=f&&t.cache.delete(o);let y=a?t.cache.get(n):void 0;if(y)return s(y.body),structuredClone(y.body);let S=a?t.pending.get(n):void 0;if(S){let o=await S;return s(o),structuredClone(o)}if(t.requests=t.requests.filter(o=>o>f-U),t.requests.length+w>F)throw new u("HEY received too many requests. Please try again later.");for(let o=0;o<w;o++)t.requests.push(f);let g=(async()=>{try{let o=await e.http(`${I}${n}`,{method:p===void 0?"GET":"POST",credentials:"omit",redirect:"error",headers:{accept:i==="csv"?"text/csv":"application/json","x-hey-integration":"oak/1.0.0","user-agent":"oak/1.0.0",...p===void 0?{}:{"content-type":"application/json"},...l?{authorization:`Bearer ${l}`}:{}},...p===void 0?{}:{body:JSON.stringify(p)},signal:AbortSignal.timeout(1e4)}).catch(v=>{if(v instanceof q)return v.response;throw t.backoff.defer(null),v});if(o.status===429)throw t.backoff.defer(o.headers.get("retry-after"),!0),await o.body?.cancel(),new u("HEY received too many requests. Please try again later.");if(o.status>=500)throw t.backoff.defer(o.headers.get("retry-after")),await o.body?.cancel(),P(o.status,null,n);let _;try{let v=await Q(o);_=i==="csv"&&o.ok?{format:"csv",value:v}:JSON.parse(v)}catch(v){throw v instanceof u?v:o.ok?new u("HEY returned malformed JSON. Please try again."):P(o.status,null,n)}if(d&&[401,403].includes(o.status))throw new u("HEY refused keyed access. Ask the Oak operator to check the server key and allowance.");if(!o.ok)throw P(o.status,_,n);return c(_)||k(),s(_),a&&t.cache.set(n,{body:_,expires:Date.now()+U}),_}catch(o){throw o instanceof u?o:new u(M(o))}})();a&&t.pending.set(n,g);try{return structuredClone(await g)}finally{a&&t.pending.delete(n)}}}function x(e,r){if(!c(e)||Object.keys(e).some(t=>t!==r))throw new u(`Provide only ${r}; HEY reads are fixed to Robinhood Chain 4663.`)}var Z=e=>{let r=X(e);return{tools:[{name:"heyresearch_research_project",inputSchema:{type:"object",additionalProperties:!1,required:["project"],properties:{project:{type:"string",minLength:1,maxLength:200,description:"A project slug, project name, ticker search, or token contract address on chain 4663."}}},async execute(t){if(x(t,"project"),!h(t.project)||t.project.trim().length>200)throw new u("Provide a project slug, name, ticker, or token contract address.");let n=t.project.trim();if(/^0x/i.test(n)&&!b.test(n))throw new u("Provide a full token contract address on Robinhood Chain 4663.");let s=b.test(n)?"address":D.test(n)?"project":"q",i=s==="address"?n.toLowerCase():n,p=g=>r(`/api/agent/research_project?${g}=${encodeURIComponent(i)}`,o=>C(o,"research_project")),d;try{d=await p(s)}catch(g){if(s!=="project"||!(g instanceof j)||g.status!==404||g.code!=="not_found")throw g;d=await p("q")}let w=d.subject.project,l=c(w.token)?w.token.address:void 0,a=s==="address"?i:l?.toLowerCase(),f=a?await r(`/api/v1/builder?chain=${m}&token=${a}&integration=oak/1.0.0`,g=>J(g,a)):null,y=f?.activity_applies_to_token===!1;s==="address"&&l&&l.toLowerCase()!==a&&!y&&k();let S=d.links;return{chainId:m,research:d,builder:f,freshnessAssessment:$(d),attribution:{page:S.page,citation:d.citation,...f&&!y?{project_link:f.project_link}:{}},warnings:y?["This activity belongs to the project, not this token. The project names a different contract; do not link this token to the project."]:[],notAdvice:!0,disclaimer:K}}},{name:"heyresearch_chain_activity",inputSchema:{type:"object",additionalProperties:!1,properties:{days:{type:"integer",minimum:1,maximum:30,default:7,description:"UTC days of chain activity alongside the seven-day builder brief."}}},async execute(t){x(t,"days");let n=t.days===void 0?7:t.days;if(typeof n!="number"||!Number.isInteger(n)||n<1||n>30)throw new u("Provide a whole number of days from 1 to 30.");let s=await r("/api/agent/chain_brief",p=>C(p,"chain_brief")),i=await r(`/api/chain?days=${n}`,V);return{chainId:m,brief:s,activity:i,freshnessAssessment:$({brief:s,activity:i}),attribution:{page:s.links.page,citation:s.citation,activity:`${I}/api/chain?days=${n}`},notAdvice:!0,disclaimer:K}}},N(r,C),{name:"heyresearch_bulk",inputSchema:{type:"object",additionalProperties:!1,required:["operation","items"],properties:{operation:{type:"string",enum:["snapshots","tokens","scan_cards"],description:"Keyed GET reads. Requires an Oak operator-configured server key; one upstream allowance unit per input. Results are not cached."},items:{type:"array",minItems:1,maxItems:30,items:{type:"string"},description:"Up to 10 project slugs for snapshots; up to 30 token addresses for tokens or scan_cards. Repeated inputs and their order are preserved."}}},async execute(t){if(!c(t)||Object.keys(t).some(a=>!["operation","items"].includes(a)))throw new u("Provide only the bulk operation and items; configure credentials on the Oak server.");let n=t.operation;if(!["snapshots","tokens","scan_cards"].includes(String(n))||!Array.isArray(t.items)||!t.items.length||t.items.length>(n==="snapshots"?10:30)||t.items.some(a=>typeof a!="string"||!(n==="snapshots"?D:b).test(a)))throw new u("Provide up to 10 valid project slugs or up to 30 full token addresses for the chosen bulk operation.");let s=t.items,i=new URLSearchParams(n==="snapshots"?{slugs:s.join(",")}:n==="tokens"?{addresses:s.join(",")}:{chain:String(m),tokens:s.join(",")}),p=`${n==="snapshots"?"/api/snapshots":n==="tokens"?`/api/token/${m}`:"/api/v1/scan"}?${i}`,d=await r(p,a=>{if(n==="scan_cards")return W(a,s);(!Array.isArray(a.items)||a.items.length!==s.length||a.requested!==s.length||typeof a.found!="number"||!Number.isSafeInteger(a.found)||a.found<0||typeof a.disclaimer!="string"||a.items.some((f,y)=>!c(f)||f.input!==s[y]||typeof f.found!="boolean"||c(f.data)&&f.data.chainId!==void 0&&f.data.chainId!==m))&&k()},"json",void 0,!0,s.length),w=d.items.filter(a=>a.found===!0).length,l=n==="scan_cards"?d.found_count:d.found;return{consistency:{reportedFound:l,countedFound:w,consistent:l===w},warnings:l===w?[]:[`HEY reports ${n==="scan_cards"?"found_count":"found"}=${l}, but ${w} returned items have found=true. Provider data is preserved; check the per-item states.`],chainId:m,operation:n,data:d,attribution:{source:`${I}${p}`,provider:"HEY Research Lab"},notAdvice:!0,untrusted:!0,disclaimer:z}}},{name:"heyresearch_validate_receipt",inputSchema:{type:"object",additionalProperties:!1,required:["receipt"],properties:{receipt:{type:"object",description:"AgentResearchReceipt v1. Sent to HEY for stateless validation; no reasoning trace, wallet credential or API key. Maximum 64 KiB."}}},async execute(t){if(x(t,"receipt"),!c(t.receipt))throw new u("Provide an AgentResearchReceipt object.");let n=JSON.stringify(t.receipt);if(new TextEncoder().encode(n).length>65536)throw new u("The research receipt exceeds 64 KiB.");if(/"(?:private_key|secret_key|wallet_key|mnemonic|seed|seed_phrase|recovery_phrase)"\s*:/i.test(n))throw new u("Do not include wallet credentials in a research receipt.");let s=await r("/api/receipts/validate",i=>{(!Object.keys(i).length||i.error)&&k()},"json",t.receipt);return{chainId:m,data:s,attribution:{source:`${I}/api/receipts/validate`,provider:"HEY Research Lab"},notAdvice:!0,disclaimer:G}}}]}},ue=e=>Y("heyresearch",[Z(e)]);export{z as HEY_KEYED_DISCLAIMER,G as HEY_RECEIPT_DISCLAIMER,K as HEY_RECORDS_DISCLAIMER,ue as createModule,Z as createModulePart};
@@ -1 +1 @@
1
- import{b as a,c as b,d as c,e as d}from"../../../chunks/XQXLFF7Y.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{a as HEY_EXCLUSIVE_DISCLAIMER,b as PROOF_READ_OPERATIONS,c as validateProofParameters,d as validateProofRead};
1
+ import{b as a,c as b,d as c,e as d}from"../../../chunks/TMVO2DAK.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{a as HEY_EXCLUSIVE_DISCLAIMER,b as PROOF_READ_OPERATIONS,c as validateProofParameters,d as validateProofRead};
@@ -1 +1 @@
1
- import{a,b}from"../../../chunks/WWFOYZT2.js";import"../../../chunks/TWR7BF72.js";import"../../../chunks/XQXLFF7Y.js";import"../../../chunks/YQUKU2LS.js";import"../../../chunks/HOEQVPY7.js";import"../../../chunks/V2OOOV6B.js";import"../../../chunks/MYBDO5SA.js";import"../../../chunks/HIMVOTIU.js";import"../../../chunks/73N3TOJL.js";import"../../../chunks/RETS2ZEK.js";import"../../../chunks/G6HCV67X.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{a as HEY_PUBLIC_READ_DISCLAIMER,b as publicReadTool};
1
+ import{a,b}from"../../../chunks/VYN2NRAP.js";import"../../../chunks/TWR7BF72.js";import"../../../chunks/TMVO2DAK.js";import"../../../chunks/AFBEZXNV.js";import"../../../chunks/46547QT3.js";import"../../../chunks/HOEQVPY7.js";import"../../../chunks/VEQBHI6O.js";import"../../../chunks/OTXSKFUD.js";import"../../../chunks/NWNYJ26T.js";import"../../../chunks/IX3GZMTM.js";import"../../../chunks/FWD4L3CJ.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{a as HEY_PUBLIC_READ_DISCLAIMER,b as publicReadTool};
@@ -1 +1 @@
1
- import{a,b,c}from"../../../chunks/YQUKU2LS.js";import"../../../chunks/HOEQVPY7.js";import"../../../chunks/V2OOOV6B.js";import"../../../chunks/MYBDO5SA.js";import"../../../chunks/HIMVOTIU.js";import"../../../chunks/5YS5V2LK.js";import"../../../chunks/JXOEJPJ4.js";export{c as createHeyScanner,a as heyRequestError,b as parseHeyScanCard};
1
+ import{a,b,c}from"../../../chunks/AFBEZXNV.js";import"../../../chunks/46547QT3.js";import"../../../chunks/HOEQVPY7.js";import"../../../chunks/VEQBHI6O.js";import"../../../chunks/OTXSKFUD.js";import"../../../chunks/XSD5NL7J.js";import"../../../chunks/JXOEJPJ4.js";import"../../../chunks/63YRSLDK.js";export{c as createHeyScanner,a as heyRequestError,b as parseHeyScanCard};