@oakagentkit/core 0.2.7 → 0.3.0
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.
- package/build/dist/api/addresses.d.ts +9 -0
- package/build/dist/api/addresses.js +1 -1
- package/build/dist/api/chain.d.ts +4 -0
- package/build/dist/api/chain.js +1 -1
- package/build/dist/api/history.js +1 -1
- package/build/dist/api/identity-link.js +1 -1
- package/build/dist/api/metadata.js +1 -1
- package/build/dist/api/modules/beefy/boosts.js +1 -1
- package/build/dist/api/modules/beefy/clm.js +1 -1
- package/build/dist/api/modules/beefy/guard.js +1 -1
- package/build/dist/api/modules/beefy/index.js +1 -1
- package/build/dist/api/modules/beefy/liquidity.js +1 -1
- package/build/dist/api/modules/beefy/management.js +1 -1
- package/build/dist/api/modules/beefy/vaults.js +1 -1
- package/build/dist/api/modules/borro/abi.d.ts +54 -0
- package/build/dist/api/modules/borro/abi.js +1 -1
- package/build/dist/api/modules/borro/actions.d.ts +14 -1
- package/build/dist/api/modules/borro/actions.js +1 -1
- package/build/dist/api/modules/borro/checks.js +1 -1
- package/build/dist/api/modules/borro/copy.d.ts +10 -2
- package/build/dist/api/modules/borro/copy.js +1 -1
- package/build/dist/api/modules/borro/index.js +1 -1
- package/build/dist/api/modules/borro/liquidity.js +1 -1
- package/build/dist/api/modules/borro/pins.d.ts +30 -14
- package/build/dist/api/modules/borro/pins.js +1 -1
- package/build/dist/api/modules/borro/positions.js +1 -1
- package/build/dist/api/modules/borro/reader.js +1 -1
- package/build/dist/api/modules/borro/types.d.ts +1 -0
- package/build/dist/api/modules/chop/guard.js +1 -1
- package/build/dist/api/modules/chop/index.js +1 -1
- package/build/dist/api/modules/clanker/extensions.js +1 -1
- package/build/dist/api/modules/clanker/index.js +1 -1
- package/build/dist/api/modules/clanker/manage.js +1 -1
- package/build/dist/api/modules/clanker/pool-config.js +1 -1
- package/build/dist/api/modules/clanker/protocol.js +1 -1
- package/build/dist/api/modules/clanker/state.js +1 -1
- package/build/dist/api/modules/earn/copy.d.ts +6 -6
- package/build/dist/api/modules/earn/copy.js +1 -1
- package/build/dist/api/modules/earn/cost.d.ts +1 -1
- package/build/dist/api/modules/earn/cost.js +1 -1
- package/build/dist/api/modules/earn/index.js +1 -1
- package/build/dist/api/modules/earn/lp.js +1 -1
- package/build/dist/api/modules/earn/options.js +1 -1
- package/build/dist/api/modules/erc8004/common.js +1 -1
- package/build/dist/api/modules/erc8004/domain.js +1 -1
- package/build/dist/api/modules/erc8004/index.js +1 -1
- package/build/dist/api/modules/erc8004/management.js +1 -1
- package/build/dist/api/modules/erc8004/reputation.js +1 -1
- package/build/dist/api/modules/erc8004/services.js +1 -1
- package/build/dist/api/modules/erc8004/thesis.d.ts +61 -0
- package/build/dist/api/modules/erc8004/thesis.js +1 -0
- package/build/dist/api/modules/erc8004/validation.js +1 -1
- package/build/dist/api/modules/gloam/index.js +1 -1
- package/build/dist/api/modules/grove/index.js +1 -1
- package/build/dist/api/modules/heyresearch/builder-feed.js +1 -1
- package/build/dist/api/modules/heyresearch/index.js +1 -1
- package/build/dist/api/modules/heyresearch/public-reads.js +1 -1
- package/build/dist/api/modules/heyresearch/token-facts.js +1 -1
- package/build/dist/api/modules/hoodag/chain-reads.js +1 -1
- package/build/dist/api/modules/hoodag/index.d.ts +12 -1
- package/build/dist/api/modules/hoodag/index.js +1 -1
- package/build/dist/api/modules/hoodag/management.js +1 -1
- package/build/dist/api/modules/hoodag/public-reads.js +1 -1
- package/build/dist/api/modules/hoodag/reconstruct.d.ts +14 -0
- package/build/dist/api/modules/hoodag/reconstruct.js +1 -1
- package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
- package/build/dist/api/modules/hoodlock/buyback.js +1 -1
- package/build/dist/api/modules/hoodlock/commerce.js +1 -1
- package/build/dist/api/modules/hoodlock/fee.js +1 -1
- package/build/dist/api/modules/hoodlock/guard.js +1 -1
- package/build/dist/api/modules/hoodlock/index.js +1 -1
- package/build/dist/api/modules/hoodlock/lifecycle.js +1 -1
- package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
- package/build/dist/api/modules/hoodlock/public.js +1 -1
- package/build/dist/api/modules/hookr/actions.js +1 -1
- package/build/dist/api/modules/hookr/addons.js +1 -1
- package/build/dist/api/modules/hookr/agent-gate.js +1 -1
- package/build/dist/api/modules/hookr/contracts.js +1 -1
- package/build/dist/api/modules/hookr/create-cancel.js +1 -1
- package/build/dist/api/modules/hookr/discovery.js +1 -1
- package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
- package/build/dist/api/modules/hookr/index.js +1 -1
- package/build/dist/api/modules/hookr/launch-options.js +1 -1
- package/build/dist/api/modules/hookr/launch-receipt.js +1 -1
- package/build/dist/api/modules/hookr/launch.js +1 -1
- package/build/dist/api/modules/hookr/liquidity.js +1 -1
- package/build/dist/api/modules/hookr/lp-positions.js +1 -1
- package/build/dist/api/modules/hookr/lp-reads.js +1 -1
- package/build/dist/api/modules/hookr/lp-receipt.js +1 -1
- package/build/dist/api/modules/hookr/lp-state.js +1 -1
- package/build/dist/api/modules/hookr/public-reads.js +1 -1
- package/build/dist/api/modules/hookr/read-utils.js +1 -1
- package/build/dist/api/modules/hookr/relay.js +1 -1
- package/build/dist/api/modules/hookr/revenue.js +1 -1
- package/build/dist/api/modules/kyberswap/index.d.ts +2 -1
- package/build/dist/api/modules/kyberswap/index.js +1 -1
- package/build/dist/api/modules/kyberswap/source-pools.js +1 -1
- package/build/dist/api/modules/layerbank/abi.js +1 -1
- package/build/dist/api/modules/layerbank/actions.js +1 -1
- package/build/dist/api/modules/layerbank/checks.js +1 -1
- package/build/dist/api/modules/layerbank/index.js +1 -1
- package/build/dist/api/modules/layerbank/merkl.js +1 -1
- package/build/dist/api/modules/layerbank/reader.js +1 -1
- package/build/dist/api/modules/layerbank/reserve.js +1 -1
- package/build/dist/api/modules/lighter/index.js +1 -1
- package/build/dist/api/modules/longbow/administration.js +1 -1
- package/build/dist/api/modules/longbow/analytics.js +1 -1
- package/build/dist/api/modules/longbow/fixed.js +1 -1
- package/build/dist/api/modules/longbow/index.js +1 -1
- package/build/dist/api/modules/longbow/nft.js +1 -1
- package/build/dist/api/modules/longbow/rebates.js +1 -1
- package/build/dist/api/modules/longbow/staking.js +1 -1
- package/build/dist/api/modules/meridian/index.js +1 -1
- package/build/dist/api/modules/meridian/markets.js +1 -1
- package/build/dist/api/modules/meridian/predict-read.js +1 -1
- package/build/dist/api/modules/meridian/rfq.js +1 -1
- package/build/dist/api/modules/merkl/discovery.js +1 -1
- package/build/dist/api/modules/merkl/index.js +1 -1
- package/build/dist/api/modules/merkl/manage.js +1 -1
- package/build/dist/api/modules/merkl/protocol.js +1 -1
- package/build/dist/api/modules/morpho/allocator.js +1 -1
- package/build/dist/api/modules/morpho/bundles.js +1 -1
- package/build/dist/api/modules/morpho/in-kind.js +1 -1
- package/build/dist/api/modules/morpho/index.js +1 -1
- package/build/dist/api/modules/morpho/local-guard.js +1 -1
- package/build/dist/api/modules/morpho/midnight.js +1 -1
- package/build/dist/api/modules/morpho/protocol.js +1 -1
- package/build/dist/api/modules/morpho/vault-management.js +1 -1
- package/build/dist/api/modules/morpho/vault-tools.js +1 -1
- package/build/dist/api/modules/morpho/vault-v2.js +1 -1
- package/build/dist/api/modules/netnet/card-plan.js +1 -1
- package/build/dist/api/modules/netnet/card-policy.d.ts +1 -0
- package/build/dist/api/modules/netnet/card-policy.js +1 -1
- package/build/dist/api/modules/netnet/card-read.js +1 -1
- package/build/dist/api/modules/netnet/card-recovery.js +1 -1
- package/build/dist/api/modules/netnet/desk-action.js +1 -1
- package/build/dist/api/modules/netnet/desk-read.js +1 -1
- package/build/dist/api/modules/netnet/financial.js +1 -1
- package/build/dist/api/modules/netnet/index.js +1 -1
- package/build/dist/api/modules/netnet/staking.js +1 -1
- package/build/dist/api/modules/orbio/index.d.ts +6 -0
- package/build/dist/api/modules/orbio/index.js +1 -1
- package/build/dist/api/modules/orbio/positions.js +1 -1
- package/build/dist/api/modules/pendle/costs.js +1 -1
- package/build/dist/api/modules/pendle/index.js +1 -1
- package/build/dist/api/modules/pendle/markets.js +1 -1
- package/build/dist/api/modules/pendle/positions.js +1 -1
- package/build/dist/api/modules/pendle/pricecheck.js +1 -1
- package/build/dist/api/modules/pendle/reader.js +1 -1
- package/build/dist/api/modules/pendle/redeem.js +1 -1
- package/build/dist/api/modules/pendle/trade.js +1 -1
- package/build/dist/api/modules/pendle/validate.js +1 -1
- package/build/dist/api/modules/pendle/verify.js +1 -1
- package/build/dist/api/modules/pons/claim.js +1 -1
- package/build/dist/api/modules/pons/index.js +1 -1
- package/build/dist/api/modules/pons/launch-status.js +1 -1
- package/build/dist/api/modules/pons/prices.js +1 -1
- package/build/dist/api/modules/pons/reads.js +1 -1
- package/build/dist/api/modules/pons/swap-terms.js +1 -1
- package/build/dist/api/modules/pons/trade.js +1 -1
- package/build/dist/api/modules/poolstrade/index.js +1 -1
- package/build/dist/api/modules/priors/coverage.js +1 -1
- package/build/dist/api/modules/priors/discovery.js +1 -1
- package/build/dist/api/modules/priors/features.js +1 -1
- package/build/dist/api/modules/priors/holdings.js +1 -1
- package/build/dist/api/modules/priors/index.js +1 -1
- package/build/dist/api/modules/priors/integration.js +1 -1
- package/build/dist/api/modules/priors/market.js +1 -1
- package/build/dist/api/modules/priors/pt.js +1 -1
- package/build/dist/api/modules/priors/savings-exit.js +1 -1
- package/build/dist/api/modules/priors/starter-line.js +1 -1
- package/build/dist/api/modules/priors/stock-swap.js +1 -1
- package/build/dist/api/modules/raeto/index.js +1 -1
- package/build/dist/api/modules/relay/api.js +1 -1
- package/build/dist/api/modules/relay/bootstrap.js +1 -1
- package/build/dist/api/modules/relay/discovery.js +1 -1
- package/build/dist/api/modules/relay/inbound.js +1 -1
- package/build/dist/api/modules/relay/index.js +1 -1
- package/build/dist/api/modules/relay/order.js +1 -1
- package/build/dist/api/modules/relay/outbound-status.js +1 -1
- package/build/dist/api/modules/relay/readiness.js +1 -1
- package/build/dist/api/modules/relay/reads.js +1 -1
- package/build/dist/api/modules/relay/vaults.js +1 -1
- package/build/dist/api/modules/spark/actions.js +1 -1
- package/build/dist/api/modules/spark/details.js +1 -1
- package/build/dist/api/modules/spark/index.js +1 -1
- package/build/dist/api/modules/spark/management.js +1 -1
- package/build/dist/api/modules/steakhouse/analytics.js +1 -1
- package/build/dist/api/modules/steakhouse/erc4626.js +1 -1
- package/build/dist/api/modules/steakhouse/index.js +1 -1
- package/build/dist/api/modules/steakhouse/local-guard.js +1 -1
- package/build/dist/api/modules/steakhouse/management.js +1 -1
- package/build/dist/api/modules/steakhouse/v2-exit.js +1 -1
- package/build/dist/api/modules/tickerspring/basket-routes.js +1 -1
- package/build/dist/api/modules/tickerspring/contract-reads.js +1 -1
- package/build/dist/api/modules/tickerspring/discovery.js +1 -1
- package/build/dist/api/modules/tickerspring/exit-preview.js +1 -1
- package/build/dist/api/modules/tickerspring/guards.js +1 -1
- package/build/dist/api/modules/tickerspring/index.js +1 -1
- package/build/dist/api/modules/tickerspring/journeys.js +1 -1
- package/build/dist/api/modules/tickerspring/ladder.js +1 -1
- package/build/dist/api/modules/tickerspring/maker.js +1 -1
- package/build/dist/api/modules/tickerspring/order-accounting.js +1 -1
- package/build/dist/api/modules/tickerspring/research.js +1 -1
- package/build/dist/api/modules/tickerspring/strategies.js +1 -1
- package/build/dist/api/modules/uniswap/auction-create.js +1 -1
- package/build/dist/api/modules/uniswap/auction.js +1 -1
- package/build/dist/api/modules/uniswap/batch.js +1 -1
- package/build/dist/api/modules/uniswap/common.js +1 -1
- package/build/dist/api/modules/uniswap/fees.js +1 -1
- package/build/dist/api/modules/uniswap/index.js +1 -1
- package/build/dist/api/modules/uniswap/local-guard.js +1 -1
- package/build/dist/api/modules/uniswap/oracle.js +1 -1
- package/build/dist/api/modules/uniswap/pool-math.js +1 -1
- package/build/dist/api/modules/uniswap/pools.js +1 -1
- package/build/dist/api/modules/uniswap/position.js +1 -1
- package/build/dist/api/modules/uniswap/protocol.js +1 -1
- package/build/dist/api/modules/uniswap/quote-guard.js +1 -1
- package/build/dist/api/modules/uniswap/token-jar.js +1 -1
- package/build/dist/api/modules/uniswap/trade-batch.js +1 -1
- package/build/dist/api/modules/uniswap/trade.js +1 -1
- package/build/dist/api/modules/uniswap/v2.js +1 -1
- package/build/dist/api/modules/uniswap/v3.js +1 -1
- package/build/dist/api/modules/uniswap/v4.js +1 -1
- package/build/dist/api/modules/uniswap/wrap.js +1 -1
- package/build/dist/api/modules/upoch/copy.d.ts +5 -0
- package/build/dist/api/modules/upoch/copy.js +1 -0
- package/build/dist/api/modules/upoch/index.d.ts +8 -0
- package/build/dist/api/modules/upoch/index.js +1 -0
- package/build/dist/api/modules/upoch/pins.d.ts +8 -0
- package/build/dist/api/modules/upoch/pins.js +1 -0
- package/build/dist/api/modules/upoch/reads.d.ts +509 -0
- package/build/dist/api/modules/upoch/reads.js +1 -0
- package/build/dist/api/modules/velora/claims.js +1 -1
- package/build/dist/api/modules/velora/delta-reads.js +1 -1
- package/build/dist/api/modules/velora/index.js +1 -1
- package/build/dist/api/modules/wormhole/index.js +1 -1
- package/build/dist/api/modules/wormhole/x402-client.d.ts +17 -1
- package/build/dist/api/modules/wormhole/x402-client.js +1 -1
- package/build/dist/api/positions.js +1 -1
- package/build/dist/api/pricenote.js +1 -1
- package/build/dist/api/prices.js +1 -1
- package/build/dist/api/pricing.js +1 -1
- package/build/dist/api/rpc.js +1 -1
- package/build/dist/api/secret-fields.d.ts +2 -0
- package/build/dist/api/secret-fields.js +1 -1
- package/build/dist/api/send.js +1 -1
- package/build/dist/api/signing-registry.js +1 -1
- package/build/dist/api/signing.js +1 -1
- package/build/dist/api/simulate.js +1 -1
- package/build/dist/api/swap.js +1 -1
- package/build/dist/api/tokens.js +1 -1
- package/build/dist/api/tool-policy.d.ts +1 -0
- package/build/dist/api/tool-policy.js +1 -1
- package/build/dist/api/usd-estimate.js +1 -1
- package/build/dist/chunks/23HNDJ76.js +2 -0
- package/build/dist/chunks/{JS53DQVT.js → 24Q3FNGX.js} +1 -1
- package/build/dist/chunks/{N245WC5R.js → 25C4DTVA.js} +1 -1
- package/build/dist/chunks/{PV4AK32X.js → 2HN3U6OG.js} +1 -1
- package/build/dist/chunks/{GQYV4TFO.js → 2OVJ2BTJ.js} +1 -1
- package/build/dist/chunks/{DYYEA5HB.js → 2QGLPY2D.js} +1 -1
- package/build/dist/chunks/{ZFU65MB4.js → 2WRXH6BL.js} +1 -1
- package/build/dist/chunks/{EZZM2GQT.js → 2ZBSE2LD.js} +1 -1
- package/build/dist/chunks/{HIX5N25Z.js → 2ZQ7X223.js} +1 -1
- package/build/dist/chunks/{V37L4DU4.js → 3A2IKFTV.js} +1 -1
- package/build/dist/chunks/{FWIFTPSE.js → 3PU2SD3U.js} +1 -1
- package/build/dist/chunks/{SBY4RJ7I.js → 3ZH5SOC2.js} +1 -1
- package/build/dist/chunks/4NBXBKOX.js +2 -0
- package/build/dist/chunks/{FOKEFXGP.js → 4PLLS6CT.js} +1 -1
- package/build/dist/chunks/{KREBNL2D.js → 4R3G3H42.js} +1 -1
- package/build/dist/chunks/{XHYFISVV.js → 4Z3IGMU6.js} +1 -1
- package/build/dist/chunks/{CSDN4MYP.js → 5GQJVKVY.js} +1 -1
- package/build/dist/chunks/{JOKL5L6X.js → 5R576SDB.js} +1 -1
- package/build/dist/chunks/{UUID2E22.js → 5W74Z4WZ.js} +1 -1
- package/build/dist/chunks/{EH5G4O3U.js → 65356YKW.js} +1 -1
- package/build/dist/chunks/{QFSBDPLN.js → 65OITTDL.js} +1 -1
- package/build/dist/chunks/{DSTMEY5F.js → 6F527FLN.js} +1 -1
- package/build/dist/chunks/{CO4GCF4L.js → 6MDYKE2O.js} +1 -1
- package/build/dist/chunks/{IEG6GLFR.js → 6OCLWSMZ.js} +1 -1
- package/build/dist/chunks/75SULXNT.js +1 -0
- package/build/dist/chunks/{WU7XIAXB.js → 7EACRKFV.js} +1 -1
- package/build/dist/chunks/{AMTRDPVO.js → 7U62MMUQ.js} +1 -1
- package/build/dist/chunks/{DW4V5PUY.js → 7VH6JQ2H.js} +1 -1
- package/build/dist/chunks/{XVJ7ILKK.js → A2V4NFVA.js} +1 -1
- package/build/dist/chunks/A3BJSQ23.js +1 -0
- package/build/dist/chunks/{YSMWCKIX.js → ADIPEGNN.js} +1 -1
- package/build/dist/chunks/ANIF3JMV.js +4 -0
- package/build/dist/chunks/{RLI4JDOL.js → ATEVAJ5Y.js} +1 -1
- package/build/dist/chunks/{F3VDVTMS.js → B2HSLY5F.js} +1 -1
- package/build/dist/chunks/{N4XNNXOJ.js → B7BNDW35.js} +1 -1
- package/build/dist/chunks/{GLF7WEY2.js → C6VJAL5B.js} +1 -1
- package/build/dist/chunks/{5PI57UC2.js → C76D54YG.js} +1 -1
- package/build/dist/chunks/{GRSXWQWD.js → CD2JQ32C.js} +1 -1
- package/build/dist/chunks/{4GNUXN4K.js → CI5ENLYA.js} +1 -1
- package/build/dist/chunks/{F4UQEPJT.js → CZQ2CGYV.js} +1 -1
- package/build/dist/chunks/{APHNOGNS.js → D2IYA4LP.js} +1 -1
- package/build/dist/chunks/{4RQAOOO2.js → D7QXZM3S.js} +1 -1
- package/build/dist/chunks/{TDZTC5WR.js → DBOGRUPS.js} +1 -1
- package/build/dist/chunks/{Y77EVVT4.js → DGDMRATN.js} +1 -1
- package/build/dist/chunks/{3DNJTJ2X.js → DMB64UIN.js} +1 -1
- package/build/dist/chunks/{TM7Z5SA4.js → DMDOSHV7.js} +1 -1
- package/build/dist/chunks/{WHVZ372B.js → DRLBTB4E.js} +1 -1
- package/build/dist/chunks/{FZ6IJZZM.js → E76Z2TT4.js} +1 -1
- package/build/dist/chunks/{C75MT5SD.js → EHK7CDTU.js} +1 -1
- package/build/dist/chunks/{KKPMOAVI.js → ELHRXA5U.js} +1 -1
- package/build/dist/chunks/{XCKTE4ON.js → F7MGYRPU.js} +1 -1
- package/build/dist/chunks/{MRMR4QHA.js → FAH7FKUT.js} +1 -1
- package/build/dist/chunks/{M7ZXDLKM.js → FGEGJOAA.js} +1 -1
- package/build/dist/chunks/{N6GIC7HJ.js → FN6GNTPR.js} +1 -1
- package/build/dist/chunks/{ZF2VPDRQ.js → FTMA24EC.js} +1 -1
- package/build/dist/chunks/FXOFR432.js +1 -0
- package/build/dist/chunks/{VHV6WQ5F.js → G2AA73ZE.js} +1 -1
- package/build/dist/chunks/{JWR5XVP2.js → GBIBRYOV.js} +1 -1
- package/build/dist/chunks/{FNGIJKMZ.js → GDOHHXNH.js} +1 -1
- package/build/dist/chunks/{LR4XTZ37.js → GP6YO24Z.js} +1 -1
- package/build/dist/chunks/{2OKYXT25.js → GQITAJVF.js} +1 -1
- package/build/dist/chunks/H3E7UD2X.js +1 -0
- package/build/dist/chunks/HFVXNKA5.js +1 -0
- package/build/dist/chunks/HHYE42JG.js +21 -0
- package/build/dist/chunks/{UOCRYXAB.js → HRAHGYNK.js} +1 -1
- package/build/dist/chunks/{U363GQTF.js → HS5HWBMU.js} +1 -1
- package/build/dist/chunks/{ARI72OYT.js → HVFMIURK.js} +1 -1
- package/build/dist/chunks/IBL6TL2Q.js +1 -0
- package/build/dist/chunks/{HCBX4NFM.js → IT2JLILU.js} +1 -1
- package/build/dist/chunks/{REWXG6X6.js → JDSSYT6R.js} +1 -1
- package/build/dist/chunks/{XRDXFHIK.js → JFWJBZ7M.js} +1 -1
- package/build/dist/chunks/{523ZIR3J.js → JI5DXDMY.js} +1 -1
- package/build/dist/chunks/{7QKYDNF6.js → JPPQDELB.js} +1 -1
- package/build/dist/chunks/{ZP36DSOD.js → K4P5VYDP.js} +1 -1
- package/build/dist/chunks/{32RXFUOH.js → KBU3PYP7.js} +1 -1
- package/build/dist/chunks/{BB765L75.js → KH4QFN72.js} +1 -1
- package/build/dist/chunks/{YTLH4M4Y.js → KMSAUFYV.js} +1 -1
- package/build/dist/chunks/{6UVGQYZ3.js → KOTGFD2V.js} +1 -1
- package/build/dist/chunks/{4JTTA3BX.js → KZA5GYZR.js} +1 -1
- package/build/dist/chunks/{WUT7TZYM.js → LCH6F5HT.js} +1 -1
- package/build/dist/chunks/{ARLGF5MU.js → LDJI2JAL.js} +1 -1
- package/build/dist/chunks/LEV5SNNC.js +3 -0
- package/build/dist/chunks/{SPRVVJXI.js → LFSJDFMY.js} +1 -1
- package/build/dist/chunks/{J73ATSEQ.js → LJJYYUEG.js} +1 -1
- package/build/dist/chunks/{CAWTAR5V.js → LKX5WDOQ.js} +1 -1
- package/build/dist/chunks/M7BUKZW2.js +1 -0
- package/build/dist/chunks/{C5ZZAYXD.js → MI5HZDMH.js} +1 -1
- package/build/dist/chunks/{YWZQJJYY.js → MMCM3GSM.js} +1 -1
- package/build/dist/chunks/MQ5F2VOK.js +1 -0
- package/build/dist/chunks/{TE6D3OIX.js → MSMHS456.js} +1 -1
- package/build/dist/chunks/{JKD2B6OX.js → MSRCJ2BS.js} +1 -1
- package/build/dist/chunks/{YMV5TL5C.js → N64JJN37.js} +1 -1
- package/build/dist/chunks/{JKRBGAX2.js → NAO7VWZF.js} +1 -1
- package/build/dist/chunks/ND32LJWI.js +1 -0
- package/build/dist/chunks/{RT7IU6TI.js → NMJVQX5M.js} +1 -1
- package/build/dist/chunks/{67BWOVET.js → NMQBOBWJ.js} +1 -1
- package/build/dist/chunks/NQ4MTIU3.js +1 -0
- package/build/dist/chunks/{XWKK75TO.js → NWPAQER2.js} +1 -1
- package/build/dist/chunks/O2J5I4VA.js +1 -0
- package/build/dist/chunks/{2SUHQWND.js → O4S6XAYV.js} +1 -1
- package/build/dist/chunks/{TAEZTP4L.js → O5QTITN6.js} +1 -1
- package/build/dist/chunks/{NA424YAL.js → OB7BFDOV.js} +1 -1
- package/build/dist/chunks/{GW5IXLKU.js → OI3N4EW4.js} +1 -1
- package/build/dist/chunks/{FL5SSHUL.js → OIQTZOBN.js} +1 -1
- package/build/dist/chunks/{XPEDQBLI.js → OODSXDIH.js} +1 -1
- package/build/dist/chunks/OOPMZIG7.js +1 -0
- package/build/dist/chunks/{GG24LO2R.js → OQFNUDMQ.js} +1 -1
- package/build/dist/chunks/{Q2ACLVWR.js → ORG6LVKJ.js} +1 -1
- package/build/dist/chunks/{XYPGLG6A.js → OSMOBKRQ.js} +1 -1
- package/build/dist/chunks/{EGZREEG2.js → OTLUQWLF.js} +1 -1
- package/build/dist/chunks/{OYJFXEDU.js → OTYB6BHK.js} +1 -1
- package/build/dist/chunks/{OZ5MDUD2.js → OVM4QIET.js} +1 -1
- package/build/dist/chunks/{OYPAVXGQ.js → OYDKAIS2.js} +1 -1
- package/build/dist/chunks/P6OB2AFW.js +1 -0
- package/build/dist/chunks/{UQEEF5W5.js → PDPTJMTJ.js} +1 -1
- package/build/dist/chunks/PEHXHQVA.js +1 -0
- package/build/dist/chunks/PMFR47H3.js +1 -0
- package/build/dist/chunks/{HHO5ISMM.js → PQXYTOV5.js} +1 -1
- package/build/dist/chunks/{HKVQ646Q.js → PSGRZWES.js} +1 -1
- package/build/dist/chunks/Q7L3BX6U.js +1 -0
- package/build/dist/chunks/{753HZZTY.js → QBYV7NXH.js} +1 -1
- package/build/dist/chunks/{2LWBN35N.js → QIB6OMQV.js} +1 -1
- package/build/dist/chunks/{TPEKCXVE.js → QLAOBULN.js} +1 -1
- package/build/dist/chunks/{DNNFKDZR.js → QLFPAN6S.js} +1 -1
- package/build/dist/chunks/QMEGAKLI.js +1 -0
- package/build/dist/chunks/{TK55VASJ.js → QMNUB2GM.js} +1 -1
- package/build/dist/chunks/{YUHNPUNK.js → R73R4KN3.js} +1 -1
- package/build/dist/chunks/{VR344DAZ.js → RN3WUJIO.js} +1 -1
- package/build/dist/chunks/{5HIHUYA4.js → RNCMXKKS.js} +1 -1
- package/build/dist/chunks/{ZOMFHTB2.js → ROQQ62LP.js} +1 -1
- package/build/dist/chunks/{D742AYEV.js → RUTSEGGD.js} +1 -1
- package/build/dist/chunks/{TFDPEAVZ.js → S4JUFCT4.js} +1 -1
- package/build/dist/chunks/{KDGSYNOP.js → S4UJDZGN.js} +1 -1
- package/build/dist/chunks/{AI3VAPA3.js → SMSXZ3FN.js} +1 -1
- package/build/dist/chunks/{JLRHM2DQ.js → SUNTJ6IU.js} +1 -1
- package/build/dist/chunks/{2FHELZ7Y.js → TGFQQCRY.js} +1 -1
- package/build/dist/chunks/{4JRXEN7C.js → THL4TMQW.js} +2 -2
- package/build/dist/chunks/TI727O2H.js +1 -0
- package/build/dist/chunks/{RLMVA575.js → TMRAF2L2.js} +1 -1
- package/build/dist/chunks/{PV5FDT6O.js → TXGZ6NWN.js} +1 -1
- package/build/dist/chunks/U243AWCH.js +1 -0
- package/build/dist/chunks/U762746N.js +1 -0
- package/build/dist/chunks/{GDRQ2ANN.js → U7UPLF4F.js} +1 -1
- package/build/dist/chunks/{4Q2ZBZXM.js → UPKVD7WG.js} +1 -1
- package/build/dist/chunks/{ZQAFFWDK.js → URBEK2VV.js} +1 -1
- package/build/dist/chunks/{VTPT5544.js → USEF3QKG.js} +1 -1
- package/build/dist/chunks/{U2YCQWZK.js → UVAR6BHU.js} +1 -1
- package/build/dist/chunks/{7VC53B5X.js → V5YSJKRH.js} +13 -13
- package/build/dist/chunks/{7D73A6KS.js → VB36EHIR.js} +1 -1
- package/build/dist/chunks/VMZYFO6I.js +1 -0
- package/build/dist/chunks/{UEDGYZOC.js → VVAM3EAK.js} +1 -1
- package/build/dist/chunks/VVJO6OYK.js +1 -0
- package/build/dist/chunks/{JESMX2UC.js → VXCGMALF.js} +1 -1
- package/build/dist/chunks/{ZKZUS3QU.js → VZVW5J7J.js} +1 -1
- package/build/dist/chunks/{NUFZUKYS.js → W32UECOL.js} +1 -1
- package/build/dist/chunks/{O3JWCJIF.js → W4RYRLL5.js} +1 -1
- package/build/dist/chunks/{2MZXTOZU.js → WAKZWSHB.js} +1 -1
- package/build/dist/chunks/{BAIY32AV.js → WBNFRPAT.js} +1 -1
- package/build/dist/chunks/{HM72DH4V.js → WRUTW6CG.js} +1 -1
- package/build/dist/chunks/{VYYSL557.js → WSILNJS2.js} +1 -1
- package/build/dist/chunks/{L646YWDP.js → X24YTJST.js} +1 -1
- package/build/dist/chunks/{4FPV4CRC.js → X5AL3DUK.js} +1 -1
- package/build/dist/chunks/{SOTYQGPT.js → XBNZ7GTY.js} +1 -1
- package/build/dist/chunks/{BZ34ZR65.js → XEBMS5KU.js} +1 -1
- package/build/dist/chunks/{FOD34G2H.js → XL3W7DAQ.js} +1 -1
- package/build/dist/chunks/{GSFHM5L3.js → XPWGPZ2C.js} +1 -1
- package/build/dist/chunks/{2E4I7CJ7.js → XRDLMTBJ.js} +1 -1
- package/build/dist/chunks/{SKEKXEUU.js → XV3YJ4P6.js} +1 -1
- package/build/dist/chunks/XW3VGWXK.js +1 -0
- package/build/dist/chunks/{6WD4HHID.js → Y2QADJOB.js} +1 -1
- package/build/dist/chunks/Y64GFBTA.js +1 -0
- package/build/dist/chunks/{FJLJ7ZQ5.js → YARZE7SJ.js} +1 -1
- package/build/dist/chunks/{OARVU3RC.js → YBLJ75U5.js} +1 -1
- package/build/dist/chunks/YRSAZTTC.js +7 -0
- package/build/dist/chunks/{3VBIRLU3.js → YXXK6EPI.js} +1 -1
- package/build/dist/chunks/Z3IBPCY4.js +2 -0
- package/build/dist/chunks/{H5DY7CNB.js → Z7FGEWO2.js} +1 -1
- package/build/dist/chunks/{INOYMBWE.js → ZNPVBNC5.js} +1 -1
- package/build/dist/chunks/{EVBHQQQG.js → ZTKT3ZQK.js} +1 -1
- package/build/dist/chunks/{4BVP652W.js → ZZ6FZGHF.js} +1 -1
- package/package.json +1 -1
- package/build/dist/chunks/3K2N5VFH.js +0 -1
- package/build/dist/chunks/3ZABD6ZF.js +0 -2
- package/build/dist/chunks/44MB6SA6.js +0 -1
- package/build/dist/chunks/4D4ZRZUW.js +0 -1
- package/build/dist/chunks/4OVIMYNH.js +0 -2
- package/build/dist/chunks/6NUNCD5J.js +0 -1
- package/build/dist/chunks/6PZGDVHV.js +0 -1
- package/build/dist/chunks/7MBVTNLU.js +0 -1
- package/build/dist/chunks/7VNO46LV.js +0 -1
- package/build/dist/chunks/DPE7SPW7.js +0 -1
- package/build/dist/chunks/E3RACZUY.js +0 -1
- package/build/dist/chunks/EI6GGPDS.js +0 -20
- package/build/dist/chunks/FV4WZOTD.js +0 -1
- package/build/dist/chunks/FWD4L3CJ.js +0 -1
- package/build/dist/chunks/JBTOZ6IH.js +0 -1
- package/build/dist/chunks/MVD3KWPP.js +0 -1
- package/build/dist/chunks/P6OMKZMR.js +0 -3
- package/build/dist/chunks/PXVREXCS.js +0 -1
- package/build/dist/chunks/QJNLLI6N.js +0 -1
- package/build/dist/chunks/RPB46QAC.js +0 -1
- package/build/dist/chunks/TID4C2KC.js +0 -1
- package/build/dist/chunks/UWBKAWX3.js +0 -7
- package/build/dist/chunks/WHTRPRRD.js +0 -1
- package/build/dist/chunks/WLMWWEP7.js +0 -2
- package/build/dist/chunks/XQ24RSEI.js +0 -1
- package/build/dist/chunks/YDNTY67T.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as I,b as S,d as g,f as c,g as $,h as p,i as T,k as v,l as R,m as P}from"./
|
|
1
|
+
import{a as I,b as S,d as g,f as c,g as $,h as p,i as T,k as v,l as R,m as P}from"./TXGZ6NWN.js";import{c as f,g as y}from"./NWNYJ26T.js";import{b as h}from"./TI727O2H.js";import{a as d}from"./XSD5NL7J.js";import{a as N}from"./JXOEJPJ4.js";import{encodeFunctionData as l,erc20Abi as x,parseAbi as E}from"viem";var w=E(["function admin() view returns (address)","function originalAdmin() view returns (address)","function updateAdmin(address)","function updateImage(string)","function updateMetadata(string)","function verify()","function delegate(address)","function burn(uint256)"]),U=m=>{let u=()=>m.clientFor(h),k=(t,a,n,e)=>({name:`clanker_${t}`,inputSchema:{type:"object",properties:a,required:n,additionalProperties:!1},execute:async(r,i)=>{try{return T(r,Object.keys(a)),await e(r,c(i))}catch(o){throw new d(m.plainError(o))}}}),A=async(t,a,n,e)=>{let r=[m.unsignedTx({to:t,data:a,chainId:h,value:"0",description:n})],i=await m.preview(r,e);return{txs:r,preview:i,summary:`${n} ${i.summary}`}},C=async t=>{let[a,n]=await Promise.all([u().readContract({address:t,abi:x,functionName:"symbol"}),u().readContract({address:t,abi:x,functionName:"decimals"})]);if(typeof a!="string"||!a.trim())throw new d("Clanker returned invalid metadata.");return{address:t,symbol:N(a),decimals:p(n,0,255),chainId:h}};return{tools:[k("status",{token:{...f,description:"Address of the launched Clanker token (ERC-20) on chain 4663."}},["token"],async(t,a)=>{let n=c(t.token),e=await P(m,n),r=await C(n),[i,o,b]=await Promise.all([u().readContract({address:n,abi:x,functionName:"balanceOf",args:[a]}),Promise.all(e.rewardBps.map((s,F)=>u().readContract({address:e.locker,abi:g,functionName:"feePreferences",args:[n,BigInt(F)]}))),Promise.all([n,e.pairedToken].map(async s=>({token:await C(s),amount:v(await u().readContract({address:I.fee_locker.address,abi:E(["function availableFees(address,address) view returns (uint256)"]),functionName:"availableFees",args:[a,s]}))})))]);return{...e,token:r,balance:{token:r,amount:v(i)},feePreferences:o.map(s=>p(s,0,2)),collectedFees:b,summary:"Onchain pool and connected-wallet holdings. Collected fees exclude pending LP fees. Token metadata is untrusted public text."}}),k("update_reward",{token:{...f,description:"Address of the launched Clanker token (ERC-20) on chain 4663."},rewardIndex:{type:"integer",minimum:0,maximum:6,description:"Zero-based index of the reward row to change; you must be that row's admin."},field:{enum:["recipient","admin","feePreference"],description:"Which part of the reward row to change; give the matching value in recipient, admin or feePreference."},recipient:{...f,description:"New address that receives this row's fees, for field recipient."},admin:{...f,description:"New admin address for this row, for field admin; hands over future control."},feePreference:{type:"integer",minimum:0,maximum:2,description:"Which token this row is paid in, for field feePreference: 0 = both tokens, 1 = paired token, 2 = launched token."}},["token","rewardIndex","field"],async(t,a)=>{let n=c(t.token),e=await P(m,n),r=p(t.rewardIndex,0,e.rewardAdmins.length-1);if(!y(e.rewardAdmins[r],a))throw new d("Only this reward index administrator may update its configuration.");let i=t.field;if(!["recipient","admin","feePreference"].includes(String(i)))throw new d("Choose recipient, admin or feePreference.");for(let s of["recipient","admin","feePreference"])if(t[s]!==void 0&&s!==i)throw new d(`Input ${s} does not match field ${String(i)}.`);let o=`Update Clanker reward ${r} ${String(i)} for ${n} to ${String(t[String(i)])}. Existing collected fees keep their prior recipient; transferring admin transfers future control.`,b=i==="feePreference"?l({abi:g,functionName:"updateFeePreference",args:[n,BigInt(r),p(t.feePreference,0,2)]}):l({abi:g,functionName:i==="admin"?"updateRewardAdmin":"updateRewardRecipient",args:[n,BigInt(r),c(t[String(i)])]});return A(e.locker,b,o,a)}),k("update_token",{token:{...f,description:"Address of the launched Clanker token (ERC-20) on chain 4663."},field:{enum:["image","metadata","admin","verify","delegate","burn"],description:"Update to make: set image or metadata text, change admin, mark verified, delegate voting power, or burn tokens (irreversible)."},text:{type:"string",description:"New image URL or metadata text, for field image or metadata. Public."},recipient:{...f,description:"New admin address for field admin, or the delegate address for field delegate."},amount:{...S,description:'Amount of the token to burn, in base units (Clanker tokens have 18 decimals). Example: "1000000000000000000" = 1 token. For field burn.'}},["token","field"],async(t,a)=>{let n=c(t.token);await R(m,n);let e=t.field;if(!["image","metadata","admin","verify","delegate","burn"].includes(String(e)))throw new d("Choose a supported token update.");let r=e==="image"||e==="metadata"?"text":e==="admin"||e==="delegate"?"recipient":e==="burn"?"amount":void 0;for(let o of["text","recipient","amount"])if(t[o]!==void 0&&o!==r)throw new d(`Input ${o} does not match this token update.`);if(["image","metadata","admin","verify"].includes(String(e))){let o=await u().readContract({address:n,abi:w,functionName:e==="verify"?"originalAdmin":"admin"});if(!y(c(o),a))throw new d("The connected wallet is not the required token administrator.")}let i;if(e==="image"||e==="metadata"){if(typeof t.text!="string")throw new d("Provide public metadata text.");i=l({abi:w,functionName:e==="image"?"updateImage":"updateMetadata",args:[t.text]})}else if(e==="admin"||e==="delegate")i=l({abi:w,functionName:e==="admin"?"updateAdmin":"delegate",args:[c(t.recipient,e==="delegate")]});else if(e==="verify")i=l({abi:w,functionName:"verify"});else{let o=$(t.amount);if(!o)throw new d("Provide a positive burn amount.");i=l({abi:w,functionName:"burn",args:[o]})}return A(n,i,`Clanker token ${n}: ${String(e)} ${String(t.text??t.recipient??t.amount??"")}. Burns are irreversible; verification records original-admin approval, not an Oak safety review.`,a)})]}};export{U as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as s,j as h,k as p,m as E,n as C,p as T,r as O,v as w,y as L}from"./QJNLLI6N.js";import{b as P,c as I,e as k,g as S}from"./NWNYJ26T.js";import{a as $}from"./FWD4L3CJ.js";import{a as d}from"./XSD5NL7J.js";import{a as D}from"./JXOEJPJ4.js";import{getAddress as R}from"viem";var u={type:"integer",minimum:1},l={type:"string",minLength:1,maxLength:512},_={type:"string",pattern:"^0x[0-9a-fA-F]{64}$"},g={type:"integer",minimum:1,maximum:100},v={limit:{...g,description:"Maximum number of results."},cursor:{...l,description:"Continuation cursor from a previous page."}},M={relay_chain_health:"Read Relay service health. chainId is required.",relay_requests:"Page this wallet\u2019s requests. Requires server OAK_RELAY_API_KEY; the wallet filter is automatic. Optional id, chain and status filters narrow results.",relay_balance_events:"Page this wallet\u2019s balance events. Requires server OAK_RELAY_API_KEY with access to this resource.",relay_exchange_rates:"Read reference rates without a freshness guarantee. Relay may be unavailable; use relay_token_price for an individual token."};function q(n,r){if(r.type==="string"){if(typeof n!="string"||n.length<Number(r.minLength??0)||n.length>Number(r.maxLength??1024)||typeof r.pattern=="string"&&!new RegExp(r.pattern).test(n))throw new d("Provide a valid Relay search, address or cursor.")}else if(r.type==="integer"){if(typeof n!="number"||!Number.isSafeInteger(n)||n<Number(r.minimum??0)||n>Number(r.maximum??Number.MAX_SAFE_INTEGER))throw new d("Provide an integer within the Relay parameter bounds.")}else{if(r.type==="boolean"&&typeof n!="boolean")throw new d("Provide a boolean Relay filter.");if(r.type==="array"){if(!Array.isArray(n)||n.length>100)throw new d("Provide at most 100 Relay search values.");for(let i of n)q(i,s(r.items))}}if(Array.isArray(r.enum)&&!r.enum.includes(n))throw new d("Choose a supported Relay filter.")}function y(n){return new URLSearchParams(Object.entries(n).map(([r,i])=>[r==="cursor"?"continuation":r,String(i)])).toString()}function x(n){if(n!=null)return q(n,l),n}function m(n){return typeof n=="string"?P.test(n)?R(n.toLowerCase()):/^(?:0x[0-9a-fA-F]{64}|-?\d+(?:\.\d+)?)$/.test(n)?n:D(n):Array.isArray(n)?n.map(m):k(n)?Object.fromEntries(Object.entries(n).filter(([r])=>!/api.?key|signature|authorization|secret/i.test(r)).map(([r,i])=>[r,m(i)])):n}function A(n){return h(n).map(r=>{let i=s(r),e=i.decimals;if(typeof e!="number"||!Number.isInteger(e)||e<0||e>255||typeof i.address!="string")throw new d("Relay returned invalid currency metadata.");let t=i.vmType===void 0||i.vmType==="evm";return{chainId:E(i.chainId),address:t?R(p(i.address)):D(i.address),symbol:w(i.symbol)??"unknown",decimals:e,vmType:w(i.vmType),verified:k(i.metadata)&&i.metadata.verified===!0}})}var B=["relay_vault_status","relay_currencies","relay_token_price","relay_currency_classifications","relay_liquidity","relay_swap_sources","relay_requests","relay_app_fee_balance","relay_app_fee_claims","relay_balance_events","relay_deposit_address","relay_recovery_balances","relay_withdrawal_status","relay_chain_health","relay_token_details","relay_token_chart","relay_trending","relay_exchange_rates","relay_protocol_execution"],X=n=>{let r=L(n);function i(e,t,a,o){return{name:e,inputSchema:{type:"object",...M[e]?{description:M[e]}:{},additionalProperties:!1,properties:t,required:a},execute:async(c,b)=>{for(let f of a)if(c[f]===void 0)throw new d(`Provide ${f} for ${e}.`);for(let[f,j]of Object.entries(c)){if(!Object.hasOwn(t,f))throw new d(`Unsupported ${e} parameter ${f}.`);q(j,t[f])}return o(c,p(b))}}}return{tools:[i("relay_chain_health",{chainId:{...u,description:"Chain ID."}},["chainId"],async e=>{let t=s(await r(`/chains/health?${y(e)}`));if(typeof t.healthy!="boolean")throw new d("Relay returned invalid chain health.");return{healthy:t.healthy,chainId:e.chainId}}),i("relay_token_details",{chainId:{...u,description:"Chain ID."},address:{...I,description:"Token address filter."}},["chainId","address"],async e=>{let t=s(await r(`/chains/${e.chainId}/currencies/${p(e.address)}`));if(t.chainId!==e.chainId||p(t.address)!==p(e.address))throw new d("Relay returned another token.");return{token:A([t])[0],data:m(t)}}),i("relay_token_chart",{chainId:{...u,description:"Chain ID."},address:{...I,description:"Token address filter."},timeframe:{type:"string",enum:["5M","1H","4H","24H","7D","30D","MAX"],description:"Chart period: 5M = 5 minutes, 1H = 1 hour, 4H = 4 hours, 24H = 1 day, 7D = 7 days, 30D = 30 days, MAX = all history."}},["chainId","address"],async e=>{let t=s(await r(`/chains/${e.chainId}/currencies/${p(e.address)}/chart?${y(e.timeframe===void 0?{}:{timeframe:e.timeframe})}`));return{chainId:e.chainId,address:R(p(e.address)),data:m(t),summary:"Relay historical market data. Chart prices and volumes are not token base-unit balances."}}),i("relay_trending",{chainId:{...u,description:"Chain ID."},limit:{...g,maximum:20,description:"Maximum number of results, from 1 to 20."},sortBy:{type:"string",enum:["relay24hBuyTxCount","relay24hBuyUsdVolume","coingecko6hTrending"],description:"Sort by 24-hour buy count, 24-hour USD volume, or six-hour CoinGecko trending."}},[],async e=>({currencies:A(await r(`/currencies/trending?${y(e)}`))})),i("relay_exchange_rates",{},[],async()=>({rates:m(s(await r("/prices/rates"))),summary:"Relay reference rates; timestamps are not supplied. These are prices, not token base-unit amounts."})),i("relay_protocol_execution",{id:{..._,description:"Protocol execution idempotency key as a 0x-prefixed 32-byte hex string."}},["id"],async e=>{let t=s(await r(`/protocol/executions/${e.id}`)),a=s(t.execution);if(!S(T(a.idempotencyKey),String(e.id)))throw new d("Relay returned another protocol execution.");return{data:m(t),summary:"Oracle execution status only; this does not prove a destination bridge fill."}}),i("relay_currencies",{chainIds:{type:"array",items:u,description:"Chain IDs to search."},term:{...l,maxLength:256,description:"Token search term."},address:{...l,description:"Token address filter."},currencyId:{...l,description:"Relay currency ID filter."},symbol:{...l,description:"Token symbol filter."},groupID:{...l,description:"Relay currency group ID filter."},tokens:{type:"array",items:l,description:"Token identifiers to filter."},verified:{type:"boolean",description:"Filter by Relay verification status."},defaultList:{type:"boolean",description:"Filter by Relay default-list status."},includeAllChains:{type:"boolean",description:"Include currencies on all chains."},useExternalSearch:{type:"boolean",description:"Include external search results."},depositAddressOnly:{type:"boolean",description:"Include only deposit-address currencies."},limit:{...g,description:"Maximum number of results."}},[],async e=>({currencies:A(await r("/currencies/v2",{chainIds:[$],...e})),summary:"Relay currency search. Provider verification is not an Oak token endorsement; obtain a quote to check route availability."})),i("relay_token_price",{chainId:{...u,description:"Chain ID."},address:{...I,description:"Token address filter."}},["chainId","address"],async e=>{let t=s(await r(`/currencies/token/price/v2?${y(e)}`));if(typeof t.price!="string"||!/^\d+(?:\.\d+)?$/.test(t.price))throw new d("Relay returned an invalid USD price.");return{chainId:e.chainId,address:R(p(e.address)),priceUsd:t.price,summary:"Relay USD price; freshness is not supplied by this endpoint."}}),i("relay_currency_classifications",{},[],async()=>{let e=s(await r("/currencies/classifications"));return{major:h(e.major).map(t=>w(t)??"unknown"),stable:h(e.stable).map(t=>w(t)??"unknown")}}),i("relay_liquidity",{chainId:{...u,description:"Chain ID."}},["chainId"],async e=>{let t=s(await r(`/chains/liquidity?${y(e)}`));return{liquidity:h(t.liquidity).map(a=>{let o=s(a);if(o.chainId!==e.chainId)throw new d("Relay liquidity chain does not match the request.");return{...A([o])[0],amount:C(o.balance)}}),summary:"Relay solver balances are indicative capacity, not a reserved route or user funds."}}),i("relay_swap_sources",{chainId:{...u,description:"Chain ID."}},[],async e=>({sources:h(s(await r(`/swap-sources?${y(e)}`)).sources).map(t=>w(t,"name")??"unknown")})),i("relay_requests",{...v,originChainId:{...u,description:"Origin chain ID filter."},destinationChainId:{...u,description:"Destination chain ID filter."},chainId:{...u,description:"Chain ID."},id:{..._,description:"Relay request ID as a 0x-prefixed 32-byte hex string."},orderId:{..._,description:"Relay order ID as a 0x-prefixed 32-byte hex string."},depositTxHash:{..._,description:"Deposit transaction hash as a 0x-prefixed 32-byte hex string."},fillTxHash:{..._,description:"Fill transaction hash as a 0x-prefixed 32-byte hex string."},refundTxHash:{..._,description:"Refund transaction hash as a 0x-prefixed 32-byte hex string."},status:{type:"string",enum:["success","failure","refund","pending","depositing"],description:"Filter by success, failure, refund, pending or depositing status."},includeChildRequests:{type:"boolean",description:"Include child requests."}},[],async(e,t)=>{let a=s(await r(`/requests/v3?${y({...e,user:t,includePendingRequests:!0})}`)),o=h(a.requests).map(s);for(let c of o){let b=k(c.depositAddress)?c.depositAddress.depositor:void 0;if(![c.user,c.sender,b].some(f=>typeof f=="string"&&f.toLowerCase()===t))throw new d("Relay returned a request for another wallet.");T(c.id)}return{requests:m(o),nextCursor:x(a.continuation),summary:"One page of this wallet\u2019s Relay requests, including pending requests. Pass nextCursor as cursor to resume; provider success is not destination receipt verification."}}),i("relay_app_fee_balance",{},[],async(e,t)=>{let a=s(await r(`/app-fees/${t}/balances`));return{balances:h(a.balances).map(o=>{let c=O(o);return{...c,token:{...c.token,address:R(c.token.address),symbol:w(c.token.symbol)??"unknown"}}}),summary:"Off-chain Relay app fee credits for this wallet. Claiming requires separate local signature integration."}}),i("relay_app_fee_claims",v,[],async(e,t)=>{let a=s(await r(`/app-fees/${t}/claims?${y(e)}`)),o=h(a.claims).map(s);for(let c of o)if(p(c.wallet)!==t)throw new d("Relay returned a fee claim for another wallet.");return{claims:m(o),nextCursor:x(a.continuation)}}),i("relay_balance_events",{...v,limit:{...g,maximum:50,description:"Maximum number of results, from 1 to 50."},requestId:{..._,description:"Relay request ID as a 0x-prefixed 32-byte hex string."},chainId:{...u,description:"Chain ID."},currency:{...I,description:"Token address filter."},startTimestamp:{type:"integer",minimum:0,description:"Start time in Unix seconds."},endTimestamp:{type:"integer",minimum:0,description:"End time in Unix seconds."},type:{...l,description:"Balance event type filter."}},[],async(e,t)=>{let a=s(await r(`/balance/${t}/events?${y(e)}`));if(p(a.wallet)!==t)throw new d("Relay returned balance events for another wallet.");let o=h(a.events).map(s);for(let c of o)if(p(c.wallet)!==t)throw new d("Relay returned a balance event for another wallet.");return{events:m(o),nextCursor:x(a.continuation)}}),i("relay_deposit_address",{address:{...l,description:"Deposit address to look up; supply this or depositAddressId."},depositAddressId:{...l,description:"Relay deposit address ID; supply this or address."},pageSize:{...g,maximum:50,description:"Maximum number of results, from 1 to 50."},pageToken:{...l,description:"Page token from a previous response."}},[],async e=>{if(e.address===void 0==(e.depositAddressId===void 0))throw new d("Provide exactly one deposit address or depositAddressId.");let t=s(await r(`/deposit-addresses/v2?${y(e)}`)),a=s(t.data),o=s(a.depositAddress);if(e.address!==void 0&&o.address!==e.address||e.depositAddressId!==void 0&&o.id!==e.depositAddressId)throw new d("Relay returned another deposit address.");return{data:m(a),nextPageToken:x(a.nextPageToken),summary:"Deposit address monitoring only. Reading an address does not create, change, fund or recover it."}}),i("relay_recovery_balances",{...v,limit:{...g,maximum:50,description:"Maximum number of results, from 1 to 50."},ownerChainId:{...u,description:"Recovery owner chain ID."}},["ownerChainId"],async(e,t)=>{let a=s(await r(`/withdrawals/balances?${y({...e,recoveryAddress:t})}`)),o=h(a.balances).map(c=>{let b=s(c);return C(b.amount),b});return{balances:m(o),nextCursor:x(a.continuation),summary:"Credited recovery balances only. Empty balances do not prove that an unattested deposit has no recoverable funds. Withdrawal signing remains a separate action."}}),i("relay_withdrawal_status",{id:{...l,description:"Relay withdrawal job ID."}},["id"],async e=>{let t=s(await r(`/withdrawals/status?${y(e)}`));if(typeof t.status!="string")throw new d("Relay returned an invalid withdrawal status.");return{status:w(t.status)??"unknown",data:m(t),summary:"Relay withdrawal job status; verify any reported transaction on its chain before treating funds as received."}})]}};export{B as a,X as b};
|
|
1
|
+
import{i as s,j as h,k as p,m as E,n as C,p as T,r as O,v as w,y as L}from"./Y64GFBTA.js";import{b as P,c as I,e as k,g as S}from"./NWNYJ26T.js";import{b as $}from"./TI727O2H.js";import{a as d}from"./XSD5NL7J.js";import{a as D}from"./JXOEJPJ4.js";import{getAddress as R}from"viem";var u={type:"integer",minimum:1},l={type:"string",minLength:1,maxLength:512},_={type:"string",pattern:"^0x[0-9a-fA-F]{64}$"},g={type:"integer",minimum:1,maximum:100},v={limit:{...g,description:"Maximum number of results."},cursor:{...l,description:"Continuation cursor from a previous page."}},M={relay_chain_health:"Read Relay service health. chainId is required.",relay_requests:"Page this wallet\u2019s requests. Requires server OAK_RELAY_API_KEY; the wallet filter is automatic. Optional id, chain and status filters narrow results.",relay_balance_events:"Page this wallet\u2019s balance events. Requires server OAK_RELAY_API_KEY with access to this resource.",relay_exchange_rates:"Read reference rates without a freshness guarantee. Relay may be unavailable; use relay_token_price for an individual token."};function q(n,r){if(r.type==="string"){if(typeof n!="string"||n.length<Number(r.minLength??0)||n.length>Number(r.maxLength??1024)||typeof r.pattern=="string"&&!new RegExp(r.pattern).test(n))throw new d("Provide a valid Relay search, address or cursor.")}else if(r.type==="integer"){if(typeof n!="number"||!Number.isSafeInteger(n)||n<Number(r.minimum??0)||n>Number(r.maximum??Number.MAX_SAFE_INTEGER))throw new d("Provide an integer within the Relay parameter bounds.")}else{if(r.type==="boolean"&&typeof n!="boolean")throw new d("Provide a boolean Relay filter.");if(r.type==="array"){if(!Array.isArray(n)||n.length>100)throw new d("Provide at most 100 Relay search values.");for(let i of n)q(i,s(r.items))}}if(Array.isArray(r.enum)&&!r.enum.includes(n))throw new d("Choose a supported Relay filter.")}function y(n){return new URLSearchParams(Object.entries(n).map(([r,i])=>[r==="cursor"?"continuation":r,String(i)])).toString()}function x(n){if(n!=null)return q(n,l),n}function m(n){return typeof n=="string"?P.test(n)?R(n.toLowerCase()):/^(?:0x[0-9a-fA-F]{64}|-?\d+(?:\.\d+)?)$/.test(n)?n:D(n):Array.isArray(n)?n.map(m):k(n)?Object.fromEntries(Object.entries(n).filter(([r])=>!/api.?key|signature|authorization|secret/i.test(r)).map(([r,i])=>[r,m(i)])):n}function A(n){return h(n).map(r=>{let i=s(r),e=i.decimals;if(typeof e!="number"||!Number.isInteger(e)||e<0||e>255||typeof i.address!="string")throw new d("Relay returned invalid currency metadata.");let t=i.vmType===void 0||i.vmType==="evm";return{chainId:E(i.chainId),address:t?R(p(i.address)):D(i.address),symbol:w(i.symbol)??"unknown",decimals:e,vmType:w(i.vmType),verified:k(i.metadata)&&i.metadata.verified===!0}})}var B=["relay_vault_status","relay_currencies","relay_token_price","relay_currency_classifications","relay_liquidity","relay_swap_sources","relay_requests","relay_app_fee_balance","relay_app_fee_claims","relay_balance_events","relay_deposit_address","relay_recovery_balances","relay_withdrawal_status","relay_chain_health","relay_token_details","relay_token_chart","relay_trending","relay_exchange_rates","relay_protocol_execution"],X=n=>{let r=L(n);function i(e,t,a,o){return{name:e,inputSchema:{type:"object",...M[e]?{description:M[e]}:{},additionalProperties:!1,properties:t,required:a},execute:async(c,b)=>{for(let f of a)if(c[f]===void 0)throw new d(`Provide ${f} for ${e}.`);for(let[f,j]of Object.entries(c)){if(!Object.hasOwn(t,f))throw new d(`Unsupported ${e} parameter ${f}.`);q(j,t[f])}return o(c,p(b))}}}return{tools:[i("relay_chain_health",{chainId:{...u,description:"Chain ID."}},["chainId"],async e=>{let t=s(await r(`/chains/health?${y(e)}`));if(typeof t.healthy!="boolean")throw new d("Relay returned invalid chain health.");return{healthy:t.healthy,chainId:e.chainId}}),i("relay_token_details",{chainId:{...u,description:"Chain ID."},address:{...I,description:"Token address filter."}},["chainId","address"],async e=>{let t=s(await r(`/chains/${e.chainId}/currencies/${p(e.address)}`));if(t.chainId!==e.chainId||p(t.address)!==p(e.address))throw new d("Relay returned another token.");return{token:A([t])[0],data:m(t)}}),i("relay_token_chart",{chainId:{...u,description:"Chain ID."},address:{...I,description:"Token address filter."},timeframe:{type:"string",enum:["5M","1H","4H","24H","7D","30D","MAX"],description:"Chart period: 5M = 5 minutes, 1H = 1 hour, 4H = 4 hours, 24H = 1 day, 7D = 7 days, 30D = 30 days, MAX = all history."}},["chainId","address"],async e=>{let t=s(await r(`/chains/${e.chainId}/currencies/${p(e.address)}/chart?${y(e.timeframe===void 0?{}:{timeframe:e.timeframe})}`));return{chainId:e.chainId,address:R(p(e.address)),data:m(t),summary:"Relay historical market data. Chart prices and volumes are not token base-unit balances."}}),i("relay_trending",{chainId:{...u,description:"Chain ID."},limit:{...g,maximum:20,description:"Maximum number of results, from 1 to 20."},sortBy:{type:"string",enum:["relay24hBuyTxCount","relay24hBuyUsdVolume","coingecko6hTrending"],description:"Sort by 24-hour buy count, 24-hour USD volume, or six-hour CoinGecko trending."}},[],async e=>({currencies:A(await r(`/currencies/trending?${y(e)}`))})),i("relay_exchange_rates",{},[],async()=>({rates:m(s(await r("/prices/rates"))),summary:"Relay reference rates; timestamps are not supplied. These are prices, not token base-unit amounts."})),i("relay_protocol_execution",{id:{..._,description:"Protocol execution idempotency key as a 0x-prefixed 32-byte hex string."}},["id"],async e=>{let t=s(await r(`/protocol/executions/${e.id}`)),a=s(t.execution);if(!S(T(a.idempotencyKey),String(e.id)))throw new d("Relay returned another protocol execution.");return{data:m(t),summary:"Oracle execution status only; this does not prove a destination bridge fill."}}),i("relay_currencies",{chainIds:{type:"array",items:u,description:"Chain IDs to search."},term:{...l,maxLength:256,description:"Token search term."},address:{...l,description:"Token address filter."},currencyId:{...l,description:"Relay currency ID filter."},symbol:{...l,description:"Token symbol filter."},groupID:{...l,description:"Relay currency group ID filter."},tokens:{type:"array",items:l,description:"Token identifiers to filter."},verified:{type:"boolean",description:"Filter by Relay verification status."},defaultList:{type:"boolean",description:"Filter by Relay default-list status."},includeAllChains:{type:"boolean",description:"Include currencies on all chains."},useExternalSearch:{type:"boolean",description:"Include external search results."},depositAddressOnly:{type:"boolean",description:"Include only deposit-address currencies."},limit:{...g,description:"Maximum number of results."}},[],async e=>({currencies:A(await r("/currencies/v2",{chainIds:[$],...e})),summary:"Relay currency search. Provider verification is not an Oak token endorsement; obtain a quote to check route availability."})),i("relay_token_price",{chainId:{...u,description:"Chain ID."},address:{...I,description:"Token address filter."}},["chainId","address"],async e=>{let t=s(await r(`/currencies/token/price/v2?${y(e)}`));if(typeof t.price!="string"||!/^\d+(?:\.\d+)?$/.test(t.price))throw new d("Relay returned an invalid USD price.");return{chainId:e.chainId,address:R(p(e.address)),priceUsd:t.price,summary:"Relay USD price; freshness is not supplied by this endpoint."}}),i("relay_currency_classifications",{},[],async()=>{let e=s(await r("/currencies/classifications"));return{major:h(e.major).map(t=>w(t)??"unknown"),stable:h(e.stable).map(t=>w(t)??"unknown")}}),i("relay_liquidity",{chainId:{...u,description:"Chain ID."}},["chainId"],async e=>{let t=s(await r(`/chains/liquidity?${y(e)}`));return{liquidity:h(t.liquidity).map(a=>{let o=s(a);if(o.chainId!==e.chainId)throw new d("Relay liquidity chain does not match the request.");return{...A([o])[0],amount:C(o.balance)}}),summary:"Relay solver balances are indicative capacity, not a reserved route or user funds."}}),i("relay_swap_sources",{chainId:{...u,description:"Chain ID."}},[],async e=>({sources:h(s(await r(`/swap-sources?${y(e)}`)).sources).map(t=>w(t,"name")??"unknown")})),i("relay_requests",{...v,originChainId:{...u,description:"Origin chain ID filter."},destinationChainId:{...u,description:"Destination chain ID filter."},chainId:{...u,description:"Chain ID."},id:{..._,description:"Relay request ID as a 0x-prefixed 32-byte hex string."},orderId:{..._,description:"Relay order ID as a 0x-prefixed 32-byte hex string."},depositTxHash:{..._,description:"Deposit transaction hash as a 0x-prefixed 32-byte hex string."},fillTxHash:{..._,description:"Fill transaction hash as a 0x-prefixed 32-byte hex string."},refundTxHash:{..._,description:"Refund transaction hash as a 0x-prefixed 32-byte hex string."},status:{type:"string",enum:["success","failure","refund","pending","depositing"],description:"Filter by success, failure, refund, pending or depositing status."},includeChildRequests:{type:"boolean",description:"Include child requests."}},[],async(e,t)=>{let a=s(await r(`/requests/v3?${y({...e,user:t,includePendingRequests:!0})}`)),o=h(a.requests).map(s);for(let c of o){let b=k(c.depositAddress)?c.depositAddress.depositor:void 0;if(![c.user,c.sender,b].some(f=>typeof f=="string"&&f.toLowerCase()===t))throw new d("Relay returned a request for another wallet.");T(c.id)}return{requests:m(o),nextCursor:x(a.continuation),summary:"One page of this wallet\u2019s Relay requests, including pending requests. Pass nextCursor as cursor to resume; provider success is not destination receipt verification."}}),i("relay_app_fee_balance",{},[],async(e,t)=>{let a=s(await r(`/app-fees/${t}/balances`));return{balances:h(a.balances).map(o=>{let c=O(o);return{...c,token:{...c.token,address:R(c.token.address),symbol:w(c.token.symbol)??"unknown"}}}),summary:"Off-chain Relay app fee credits for this wallet. Claiming requires separate local signature integration."}}),i("relay_app_fee_claims",v,[],async(e,t)=>{let a=s(await r(`/app-fees/${t}/claims?${y(e)}`)),o=h(a.claims).map(s);for(let c of o)if(p(c.wallet)!==t)throw new d("Relay returned a fee claim for another wallet.");return{claims:m(o),nextCursor:x(a.continuation)}}),i("relay_balance_events",{...v,limit:{...g,maximum:50,description:"Maximum number of results, from 1 to 50."},requestId:{..._,description:"Relay request ID as a 0x-prefixed 32-byte hex string."},chainId:{...u,description:"Chain ID."},currency:{...I,description:"Token address filter."},startTimestamp:{type:"integer",minimum:0,description:"Start time in Unix seconds."},endTimestamp:{type:"integer",minimum:0,description:"End time in Unix seconds."},type:{...l,description:"Balance event type filter."}},[],async(e,t)=>{let a=s(await r(`/balance/${t}/events?${y(e)}`));if(p(a.wallet)!==t)throw new d("Relay returned balance events for another wallet.");let o=h(a.events).map(s);for(let c of o)if(p(c.wallet)!==t)throw new d("Relay returned a balance event for another wallet.");return{events:m(o),nextCursor:x(a.continuation)}}),i("relay_deposit_address",{address:{...l,description:"Deposit address to look up; supply this or depositAddressId."},depositAddressId:{...l,description:"Relay deposit address ID; supply this or address."},pageSize:{...g,maximum:50,description:"Maximum number of results, from 1 to 50."},pageToken:{...l,description:"Page token from a previous response."}},[],async e=>{if(e.address===void 0==(e.depositAddressId===void 0))throw new d("Provide exactly one deposit address or depositAddressId.");let t=s(await r(`/deposit-addresses/v2?${y(e)}`)),a=s(t.data),o=s(a.depositAddress);if(e.address!==void 0&&o.address!==e.address||e.depositAddressId!==void 0&&o.id!==e.depositAddressId)throw new d("Relay returned another deposit address.");return{data:m(a),nextPageToken:x(a.nextPageToken),summary:"Deposit address monitoring only. Reading an address does not create, change, fund or recover it."}}),i("relay_recovery_balances",{...v,limit:{...g,maximum:50,description:"Maximum number of results, from 1 to 50."},ownerChainId:{...u,description:"Recovery owner chain ID."}},["ownerChainId"],async(e,t)=>{let a=s(await r(`/withdrawals/balances?${y({...e,recoveryAddress:t})}`)),o=h(a.balances).map(c=>{let b=s(c);return C(b.amount),b});return{balances:m(o),nextCursor:x(a.continuation),summary:"Credited recovery balances only. Empty balances do not prove that an unattested deposit has no recoverable funds. Withdrawal signing remains a separate action."}}),i("relay_withdrawal_status",{id:{...l,description:"Relay withdrawal job ID."}},["id"],async e=>{let t=s(await r(`/withdrawals/status?${y(e)}`));if(typeof t.status!="string")throw new d("Relay returned an invalid withdrawal status.");return{status:w(t.status)??"unknown",data:m(t),summary:"Relay withdrawal job status; verify any reported transaction on its chain before treating funds as received."}})]}};export{B as a,X as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as F,c as y,d as b,f as h,g as N}from"./SK2VBNAU.js";import{g as p}from"./NWNYJ26T.js";import{
|
|
1
|
+
import{a as F,c as y,d as b,f as h,g as N}from"./SK2VBNAU.js";import{g as p}from"./NWNYJ26T.js";import{b as M,j as O,k as _}from"./TI727O2H.js";import{a as A}from"./XSD5NL7J.js";import{getAddress as U,isAddress as W}from"viem";var j=O[M].pendle.marketFactory.address,q=O[M].pendle.router.address,J=600,Q=/^[A-Za-z0-9][A-Za-z0-9._-]{0,31}$/,X=/^(usd.*|dai|w?eth|oak)$/i,ee=t=>X.test(t.replace(/[._-]/g,"")),te=/^PT-(.+)-\d{1,2}[A-Za-z]{3}\d{4}$/,s=t=>{throw new A(`${t} Oak won't use this market.`)},r=()=>s("Oak couldn't read this Pendle market from the chain.");function S(t){return typeof t!="number"||!Number.isInteger(t)||t<0||t>36?s("A token in this market reports unusual decimals."):t}function $(t){return!Array.isArray(t)||t.some(e=>typeof e!="string"||!W(e,{strict:!1}))?r():[...new Set(t.map(e=>U(e)))]}async function B(t,e,c={}){let g=c.now??Math.floor(Date.now()/1e3),[u,o,a,f,l,E,D,P,x,I,v]=await N(t,[{address:j,abi:F,functionName:"isValidMarket",args:[e.market]},{address:e.market,abi:y,functionName:"readTokens"},{address:e.market,abi:y,functionName:"expiry"},{address:e.market,abi:y,functionName:"isExpired"},{address:e.market,abi:y,functionName:"readState",args:[q]},{address:e.sy,abi:b,functionName:"getTokensIn"},{address:e.sy,abi:b,functionName:"getTokensOut"},{address:e.sy,abi:b,functionName:"decimals"},{address:e.sy,abi:b,functionName:"exchangeRate"},{address:e.pt,abi:h,functionName:"decimals"},{address:e.pt,abi:h,functionName:"symbol"}]);if(!u.ok)return r();if(u.value!==!0)return s("This isn't a market the Pendle factory created.");if(!o.ok||!Array.isArray(o.value)||o.value.length!==3)return r();let[z,Y,Z]=o.value;if(!p(z,e.sy)||!p(Y,e.pt)||!p(Z,e.yt))return s("The market's tokens don't match what Pendle's service listed.");if(!a.ok||typeof a.value!="bigint"||!f.ok||typeof f.value!="boolean")return r();if(a.value!==BigInt(e.expiry))return s("The market's end date doesn't match what Pendle's service listed.");let T=f.value;if(T!==g>=e.expiry&&Math.abs(g-e.expiry)>J)return s("The chain and Oak's clock disagree about whether this market has ended.");if(!l.ok||typeof l.value?.lastLnImpliedRate!="bigint"||!P.ok||!I.ok||!x.ok||typeof x.value!="bigint"||!v.ok||typeof v.value!="string"||!E.ok||!D.ok)return r();let i=$(E.value),V=$(D.value);if(i.length===0||V.length===0)return s("This market lists no token to put in or take out.");let H=S(P.value),G=S(I.value),R=i.find(n=>p(n,_)),L=await N(t,i.flatMap(n=>[{address:n,abi:h,functionName:"symbol"},{address:n,abi:h,functionName:"decimals"}])),w=new Map(i.map((n,k)=>[n,{symbol:L[k*2],decimals:L[k*2+1]}])),m;if(R)m=R;else if(i.length===1)m=i[0];else{let n=te.exec(v.value)?.[1],k=i.filter(K=>{let C=w.get(K).symbol;return C.ok&&C.value===n});k.length===1&&(m=k[0])}if(!m)return s("Oak can't tell which token this market takes as input.");let d=w.get(m);return!d.symbol.ok||typeof d.symbol.value!="string"||!d.decimals.ok?r():!Q.test(d.symbol.value)||!R&&ee(d.symbol.value)?s("The market's token name looks unusual."):{verified:{market:e.market,sy:e.sy,pt:e.pt,yt:e.yt,expiry:e.expiry,expired:T,kind:R?"stable":"stock",inputToken:m,inputSymbol:d.symbol.value,inputDecimals:S(d.decimals.value),ptDecimals:G,syDecimals:H,tokensIn:i,tokensOut:V},ptSymbol:v.value,lnImpliedRate:l.value.lastLnImpliedRate,syExchangeRate:x.value}}async function oe(t,e,c={}){return(await B(t,e,c)).verified}async function de(t,e,c={}){let g=await Promise.allSettled(e.map(a=>B(t,a,c))),u=[],o=[];return g.forEach((a,f)=>{let l=e[f];a.status==="fulfilled"?u.push({row:l,facts:a.value}):o.push(`${l.market}: ${a.reason instanceof A?a.reason.message:"Oak couldn't check this market."}`)}),{ok:u,dropped:o}}export{B as a,oe as b,de as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as n,f as a,i as s,j as l,k as u}from"./
|
|
1
|
+
import{d as n,f as a,i as s,j as l,k as u}from"./X24YTJST.js";import{c as e}from"./QLFPAN6S.js";var m="In-kind exits are a separate unsupported flow.";function b(t,i){return n(t,i,e)}function V(t,i,o,r,x,p){return a(t,i,o,r,x,p,e)}function A(t,i,o){return s(t,i,o,e,m)}function P(t){return l(t,e.symbol)}function S(t,i,o,r){u(t,i,o,r,e)}export{b as a,V as b,A as c,P as d,S as e};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as ne,b as re,d as ae,e as se,f as ce,g as de}from"./XPEDQBLI.js";import{B as J}from"./BAIY32AV.js";import{c as te,d as ie}from"./XYPGLG6A.js";import{a as m,e as T,f as q,h as _,i as R,j as n,k as oe,l as E,m as x,n as C,o as P,p as A,q as I,r as B,t as N}from"./2E4I7CJ7.js";import{f as Y,g as Z,i as ee}from"./MQK6OP7S.js";import{a as X}from"./H5DY7CNB.js";import{a as s}from"./XSD5NL7J.js";import{encodeFunctionData as fe,zeroAddress as S}from"viem";var le=["hookr_lp_add","hookr_lp_remove","hookr_lp_collect"],he=t=>le.includes(t),F=t=>({type:"object",additionalProperties:!1,properties:t,required:Object.keys(t)}),j=ce.oneOf[0],ue={hookr_lp_add:{...F({target:{...F({position:j}),description:"Where to add liquidity: the existing Hookr family position."},liquidity:{...m,description:"Liquidity to add, in v4 liquidity base units (not a token amount); positive, and the position total stays below 2^127."},amount0Max:{...m,description:`Maximum of the pool's currency0 to deposit, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},amount1Max:{...m,description:`Maximum of the pool's currency1 to deposit, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}})},hookr_lp_remove:F({position:j,liquidity:{...m,description:"Liquidity to remove, in v4 liquidity base units (not a token amount); positive and at most the position remaining liquidity."},amount0Min:{...m,description:`Minimum of the pool's currency0 to receive, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},amount1Min:{...m,description:`Minimum of the pool's currency1 to receive, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}}),hookr_lp_collect:F({position:j,deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}})};function ye(t,r){if(!he(t))throw new s("Choose a supported Hookr family LP action.");let d=ue[t],i=T(r,Object.keys(d.properties),d.required),e=t==="hookr_lp_add",l=t==="hookr_lp_collect",o=de(e?T(i.target,["position"],["position"]).position:i.position),a=l?0n:q(i.liquidity,127);if(!l&&!a)throw new s("Hookr add/remove liquidity must be an exact positive integer; use collect for fees only.");let v=l?0n:q(i[e?"amount0Max":"amount0Min"],e?128:256),k=l?0n:q(i[e?"amount1Max":"amount1Min"],e?128:256);return{position:o,adding:e,collecting:l,liquidity:a,bound0:v,bound1:k,deadline:q(i.deadline,64)}}async function ke(t,r,d){let{block:i,poolId:e,position:l,pc:o,core:a,role:v}=r,k=(p,L=[])=>A(t,a,P(v),p,L,i.number),[$,H,U,O]=await Promise.all([k("config",[e]),A(t,B,P("registry"),"admission",[I,a],i.number),k("configSchemaHash"),k("recaptureConfig",[e])]),h=x($),u=x(H),f=x(u.caps),g=x(o.caps);if(u.implementation!==a||u.codeHash!==Y(a).codeHash||u.schemaHash!==_(U)||n(u.kind,8)!==0n||!n(u.gasLimit,32)||n(f.maxLpFeePips,24)>600000n||n(f.maxQuoteTakePips,24)>=1000000n||n(f.maxSubjectTakeBps,16)>1000n)throw new s("Hookr core admission or fee caps are unavailable or outside the reviewed limits.");let y=n(g.maxLpFeePips,24),b=n(g.maxQuoteTakePips,24),c=n(g.maxSubjectTakeBps,16),w=n(h.burnBps,16),pe=n(h.lpBps,16),D=n(h.protocolShareBps,16);if(y>600000n||y>n(f.maxLpFeePips,24)||n(o.baseLpFeePips,24)>y||n(h.maxFeePips,24)>y||b>n(f.maxQuoteTakePips,24)||c>n(f.maxSubjectTakeBps,16)||w+pe>1000n||D<2000n||D>5000n)throw new s("Hookr pool fee settings exceed the reviewed entry caps. Exit tools remain available.");let M=R(o.advisory),z={gated:!1};if(M!==S){if(M!==N||o.advisoryFailOpen!==!1||n(o.advisoryPhases,8)!==1n)throw new s("Hookr entry requires the reviewed fail-closed agent gate configuration.");await Z(t,i.number,[N]);let p=await te(t,i.number,d),L=await ie(t,i.number,e,l.launcher,M);if(!p.healthyIdentityOnly||!p.walletAgent||!("liquidityEntryAllowed"in L)||!L.liquidityEntryAllowed)throw new s("Hookr family entry needs a healthy gate and a current on-chain agent identity. Collect/remove do not need Hookr gate eligibility.");let me=x(L.terms),W=q(me.tierPips,24);if(W>50000n||n(o.baseLpFeePips,24)+W>y||n(o.advisoryGasLimit,32)<400000n||n(o.advisoryGasLimit,32)>2000000n)throw new s("Hookr gate surcharge or gas exceeds the pool caps.");z=L}let V=x(E(O,3)[0]);oe(V.on);let G=null,K=BigInt(_(await t.getStorageAt({address:I,slot:re(e),blockNumber:i.number})));if(BigInt(l.launcher)!==(K&(1n<<160n)-1n))throw new s("Hookr frozen Root record differs from the family Launcher.");let Q=(K>>200n&255n)!==0n;if(Q){let p=E(await A(t,B,P("registry"),"activeLaneOf",[I],i.number),4);if(R(p[0]),_(p[1]),n(p[2],32),n(p[3],16)>10000n)throw new s("Hookr recapture switch is malformed.");G=C({activeSwapSwitch:p,swapExecutorUsedByLpAction:!1,liquidityCallbackFloor:300000n+300000n/63n+5000n,floorSource:"Pinned HookrLane._flush; sender estimates the complete transaction, including EIP-150 overhead."})}return C({config:h,poolCaps:g,gateStatus:z,reportedRecaptureConfig:V,laneLiquidity:Q,lane:G})}async function ge(t,r,d,i){let e=ye(t,d);if(r.network==="testnet")throw new s("Hookr family LP actions require Robinhood Chain 4663.");let l=r.clientFor(4663),o=await ae(l,i,e.position);if(e.deadline<=o.block.timestamp||e.deadline>o.block.timestamp+300n)throw new s("Set a fresh Hookr LP deadline within the next 300 seconds of chain time.");if(!e.adding&&e.liquidity>o.liquidity)throw new s("Remove no more than the exact remaining Hookr family liquidity.");if(e.adding&&e.liquidity+o.liquidity>=1n<<127n)throw new s("Hookr resulting liquidity must fit int128 max.");let a=J({liquidity:e.liquidity,tickLower:o.tickLower,tickUpper:o.tickUpper,sqrtPriceX96:o.sqrtPriceX96,roundUp:e.adding});if(e.adding&&(!a.amount0&&!a.amount1||a.amount0>=1n<<127n||a.amount1>=1n<<127n||a.amount0>e.bound0||a.amount1>e.bound1))throw new s("Hookr rounded-up principal debts must fit the exact finite funding caps.");let v=t==="hookr_lp_remove"?await se(l,o):null;if(v?.currentlyLocked)throw new s("Hookr principal is locked on the parent-block clock. Collect fees now or wait until all principal locks expire.");let k=e.adding?await ke(l,o,i):null,$=null,H=null;try{$=(await Promise.all([o.key.currency0,o.key.currency1].map(c=>A(l,o.core,P("rulesV1"),"poolAccrued",[o.poolId,c],o.block.number)))).map((c,w)=>({token:o.tokens[w],amount:n(c).toString()}))}catch{H="Core credit forecast unavailable; receipt verification must identify any core payment separately. No zero is inferred."}let U=e.adding?"Add":e.collecting?"Collect LP fees with zero principal removed from":"Remove",O=`${o.key.currency0} / ${o.key.currency1}`,h=`${U} Hookr family ${e.position.familyId}, member ${e.position.member}, Launcher ${e.position.launcher}. ${e.adding||!e.collecting?`Exact liquidity ${e.liquidity}; existing ticks ${o.tickLower} to ${o.tickUpper}.`:""} Recipient ${i}. Currencies ${O} (base units; decimals ${o.tokens[0].decimals}/${o.tokens[1].decimals}). ${e.adding?`Deposit caps ${e.bound0}/${e.bound1}; current rounded-up principal debts ${a.amount0}/${a.amount1}. Exact finite approvals are reset first and revoked after the add; unused funding returns to ${i} in the add transaction.`:`Principal minimums ${e.bound0}/${e.bound1}; current principal forecast ${a.amount0}/${a.amount1}. Fees cannot satisfy a principal minimum.`} Uncollected LP fee forecast ${o.fees[0]}/${o.fees[1]}, paid separately from principal. Any family accrual moved into the wallet\u2019s core claim ledger is reported separately after mining; this credit is not a wallet token receipt; pool pending recapture is not earned position fees. ${H??"Core credit forecast is separate in terms."} Deadline ${e.deadline}.`,u=[],f=[],g=[];if(e.adding)for(let[b,c]of[o.key.currency0,o.key.currency1].entries()){let w=b===0?e.bound0:e.bound1;w&&(g.push({token:c===S?X:c,amount:w,...c===S?{to:e.position.launcher}:{}}),c!==S&&(u.push(r.approval(c,e.position.launcher,"0",4663),r.approval(c,e.position.launcher,w.toString(),4663)),f.push(r.approval(c,e.position.launcher,"0",4663))))}let y=u.length;return u.push(r.unsignedTx({to:e.position.launcher,chainId:4663,value:e.adding&&o.key.currency0===S?e.bound0.toString():"0",description:h,data:fe({abi:ne(e.position),functionName:e.adding?"addLiquidity":"withdraw",args:e.adding?[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,e.deadline]:[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,i,e.deadline]})}),...f),await ee(l,o.block),{txs:u,inputs:g,summary:h,state:o,request:e,actionIndex:y,terms:C({request:d,blockNumber:o.block.number,blockHash:o.block.hash,poolId:o.poolId,poolKey:o.key,owner:i,recipient:i,range:{tickLower:o.tickLower,tickUpper:o.tickUpper},liquidityBefore:o.liquidity,liquidityDelta:e.adding?e.liquidity:-e.liquidity,principal:a,principalBounds:[e.bound0,e.bound1],uncollectedLpFees:o.fees.map((b,c)=>({token:o.tokens[c],amount:b})),coreCredits:$,coreCreditsReason:H,locks:v,entry:k,exactApprovals:u.filter((b,c)=>c!==y),refunds:e.adding?[e.bound0-a.amount0,e.bound1-a.amount1]:null,gasEstimate:null,gasEstimateReason:"Local sender estimates the ordered calls and confirms the maximum network fee."})}}function be(t){if(!Array.isArray(t)||!t.length||t.length>7)throw new s("Hookr LP requires only its exact finite approvals, one family action and cleanup.");for(let r of t)T(r,["to","data","value","chainId","description"],["to","data","value","chainId","description"])}function $e(t,r){if(be(t),t.length!==r.length||t.some((d,i)=>d.to!==r[i].to||d.data!==r[i].data||d.value!==r[i].value||d.chainId!==4663))throw new s("Hookr LP differs from the locally reconstructed exact family action, recipient, bounds, approvals or cleanup.")}function Te(t){return le.map(r=>({name:r,inputSchema:ue[r],execute:async(d,i)=>{let e=await ge(r,t,d,i);return{txs:e.txs,preview:await t.preview(e.txs,i),terms:e.terms,summary:e.summary}}}))}export{le as a,he as b,ue as c,ye as d,ge as e,be as f,$e as g,Te as h};
|
|
1
|
+
import{a as ne,b as re,d as ae,e as se,f as ce,g as de}from"./OODSXDIH.js";import{B as J}from"./WBNFRPAT.js";import{c as te,d as ie}from"./OSMOBKRQ.js";import{a as m,e as T,f as q,h as _,i as R,j as n,k as oe,l as E,m as x,n as C,o as P,p as A,q as I,r as B,t as N}from"./XRDLMTBJ.js";import{f as Y,g as Z,i as ee}from"./MQK6OP7S.js";import{a as X}from"./Z7FGEWO2.js";import{a as s}from"./XSD5NL7J.js";import{encodeFunctionData as fe,zeroAddress as S}from"viem";var le=["hookr_lp_add","hookr_lp_remove","hookr_lp_collect"],he=t=>le.includes(t),F=t=>({type:"object",additionalProperties:!1,properties:t,required:Object.keys(t)}),j=ce.oneOf[0],ue={hookr_lp_add:{...F({target:{...F({position:j}),description:"Where to add liquidity: the existing Hookr family position."},liquidity:{...m,description:"Liquidity to add, in v4 liquidity base units (not a token amount); positive, and the position total stays below 2^127."},amount0Max:{...m,description:`Maximum of the pool's currency0 to deposit, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},amount1Max:{...m,description:`Maximum of the pool's currency1 to deposit, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}})},hookr_lp_remove:F({position:j,liquidity:{...m,description:"Liquidity to remove, in v4 liquidity base units (not a token amount); positive and at most the position remaining liquidity."},amount0Min:{...m,description:`Minimum of the pool's currency0 to receive, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},amount1Min:{...m,description:`Minimum of the pool's currency1 to receive, in base units of that token (18 decimals: "1000000000000000000" = 1 token).`},deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}}),hookr_lp_collect:F({position:j,deadline:{...m,description:"Latest time this action may execute, as Unix seconds; must be within the next 300 seconds of chain time."}})};function ye(t,r){if(!he(t))throw new s("Choose a supported Hookr family LP action.");let d=ue[t],i=T(r,Object.keys(d.properties),d.required),e=t==="hookr_lp_add",l=t==="hookr_lp_collect",o=de(e?T(i.target,["position"],["position"]).position:i.position),a=l?0n:q(i.liquidity,127);if(!l&&!a)throw new s("Hookr add/remove liquidity must be an exact positive integer; use collect for fees only.");let v=l?0n:q(i[e?"amount0Max":"amount0Min"],e?128:256),k=l?0n:q(i[e?"amount1Max":"amount1Min"],e?128:256);return{position:o,adding:e,collecting:l,liquidity:a,bound0:v,bound1:k,deadline:q(i.deadline,64)}}async function ke(t,r,d){let{block:i,poolId:e,position:l,pc:o,core:a,role:v}=r,k=(p,L=[])=>A(t,a,P(v),p,L,i.number),[$,H,U,O]=await Promise.all([k("config",[e]),A(t,B,P("registry"),"admission",[I,a],i.number),k("configSchemaHash"),k("recaptureConfig",[e])]),h=x($),u=x(H),f=x(u.caps),g=x(o.caps);if(u.implementation!==a||u.codeHash!==Y(a).codeHash||u.schemaHash!==_(U)||n(u.kind,8)!==0n||!n(u.gasLimit,32)||n(f.maxLpFeePips,24)>600000n||n(f.maxQuoteTakePips,24)>=1000000n||n(f.maxSubjectTakeBps,16)>1000n)throw new s("Hookr core admission or fee caps are unavailable or outside the reviewed limits.");let y=n(g.maxLpFeePips,24),b=n(g.maxQuoteTakePips,24),c=n(g.maxSubjectTakeBps,16),w=n(h.burnBps,16),pe=n(h.lpBps,16),D=n(h.protocolShareBps,16);if(y>600000n||y>n(f.maxLpFeePips,24)||n(o.baseLpFeePips,24)>y||n(h.maxFeePips,24)>y||b>n(f.maxQuoteTakePips,24)||c>n(f.maxSubjectTakeBps,16)||w+pe>1000n||D<2000n||D>5000n)throw new s("Hookr pool fee settings exceed the reviewed entry caps. Exit tools remain available.");let M=R(o.advisory),z={gated:!1};if(M!==S){if(M!==N||o.advisoryFailOpen!==!1||n(o.advisoryPhases,8)!==1n)throw new s("Hookr entry requires the reviewed fail-closed agent gate configuration.");await Z(t,i.number,[N]);let p=await te(t,i.number,d),L=await ie(t,i.number,e,l.launcher,M);if(!p.healthyIdentityOnly||!p.walletAgent||!("liquidityEntryAllowed"in L)||!L.liquidityEntryAllowed)throw new s("Hookr family entry needs a healthy gate and a current on-chain agent identity. Collect/remove do not need Hookr gate eligibility.");let me=x(L.terms),W=q(me.tierPips,24);if(W>50000n||n(o.baseLpFeePips,24)+W>y||n(o.advisoryGasLimit,32)<400000n||n(o.advisoryGasLimit,32)>2000000n)throw new s("Hookr gate surcharge or gas exceeds the pool caps.");z=L}let V=x(E(O,3)[0]);oe(V.on);let G=null,K=BigInt(_(await t.getStorageAt({address:I,slot:re(e),blockNumber:i.number})));if(BigInt(l.launcher)!==(K&(1n<<160n)-1n))throw new s("Hookr frozen Root record differs from the family Launcher.");let Q=(K>>200n&255n)!==0n;if(Q){let p=E(await A(t,B,P("registry"),"activeLaneOf",[I],i.number),4);if(R(p[0]),_(p[1]),n(p[2],32),n(p[3],16)>10000n)throw new s("Hookr recapture switch is malformed.");G=C({activeSwapSwitch:p,swapExecutorUsedByLpAction:!1,liquidityCallbackFloor:300000n+300000n/63n+5000n,floorSource:"Pinned HookrLane._flush; sender estimates the complete transaction, including EIP-150 overhead."})}return C({config:h,poolCaps:g,gateStatus:z,reportedRecaptureConfig:V,laneLiquidity:Q,lane:G})}async function ge(t,r,d,i){let e=ye(t,d);if(r.network==="testnet")throw new s("Hookr family LP actions require Robinhood Chain 4663.");let l=r.clientFor(4663),o=await ae(l,i,e.position);if(e.deadline<=o.block.timestamp||e.deadline>o.block.timestamp+300n)throw new s("Set a fresh Hookr LP deadline within the next 300 seconds of chain time.");if(!e.adding&&e.liquidity>o.liquidity)throw new s("Remove no more than the exact remaining Hookr family liquidity.");if(e.adding&&e.liquidity+o.liquidity>=1n<<127n)throw new s("Hookr resulting liquidity must fit int128 max.");let a=J({liquidity:e.liquidity,tickLower:o.tickLower,tickUpper:o.tickUpper,sqrtPriceX96:o.sqrtPriceX96,roundUp:e.adding});if(e.adding&&(!a.amount0&&!a.amount1||a.amount0>=1n<<127n||a.amount1>=1n<<127n||a.amount0>e.bound0||a.amount1>e.bound1))throw new s("Hookr rounded-up principal debts must fit the exact finite funding caps.");let v=t==="hookr_lp_remove"?await se(l,o):null;if(v?.currentlyLocked)throw new s("Hookr principal is locked on the parent-block clock. Collect fees now or wait until all principal locks expire.");let k=e.adding?await ke(l,o,i):null,$=null,H=null;try{$=(await Promise.all([o.key.currency0,o.key.currency1].map(c=>A(l,o.core,P("rulesV1"),"poolAccrued",[o.poolId,c],o.block.number)))).map((c,w)=>({token:o.tokens[w],amount:n(c).toString()}))}catch{H="Core credit forecast unavailable; receipt verification must identify any core payment separately. No zero is inferred."}let U=e.adding?"Add":e.collecting?"Collect LP fees with zero principal removed from":"Remove",O=`${o.key.currency0} / ${o.key.currency1}`,h=`${U} Hookr family ${e.position.familyId}, member ${e.position.member}, Launcher ${e.position.launcher}. ${e.adding||!e.collecting?`Exact liquidity ${e.liquidity}; existing ticks ${o.tickLower} to ${o.tickUpper}.`:""} Recipient ${i}. Currencies ${O} (base units; decimals ${o.tokens[0].decimals}/${o.tokens[1].decimals}). ${e.adding?`Deposit caps ${e.bound0}/${e.bound1}; current rounded-up principal debts ${a.amount0}/${a.amount1}. Exact finite approvals are reset first and revoked after the add; unused funding returns to ${i} in the add transaction.`:`Principal minimums ${e.bound0}/${e.bound1}; current principal forecast ${a.amount0}/${a.amount1}. Fees cannot satisfy a principal minimum.`} Uncollected LP fee forecast ${o.fees[0]}/${o.fees[1]}, paid separately from principal. Any family accrual moved into the wallet\u2019s core claim ledger is reported separately after mining; this credit is not a wallet token receipt; pool pending recapture is not earned position fees. ${H??"Core credit forecast is separate in terms."} Deadline ${e.deadline}.`,u=[],f=[],g=[];if(e.adding)for(let[b,c]of[o.key.currency0,o.key.currency1].entries()){let w=b===0?e.bound0:e.bound1;w&&(g.push({token:c===S?X:c,amount:w,...c===S?{to:e.position.launcher}:{}}),c!==S&&(u.push(r.approval(c,e.position.launcher,"0",4663),r.approval(c,e.position.launcher,w.toString(),4663)),f.push(r.approval(c,e.position.launcher,"0",4663))))}let y=u.length;return u.push(r.unsignedTx({to:e.position.launcher,chainId:4663,value:e.adding&&o.key.currency0===S?e.bound0.toString():"0",description:h,data:fe({abi:ne(e.position),functionName:e.adding?"addLiquidity":"withdraw",args:e.adding?[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,e.deadline]:[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,i,e.deadline]})}),...f),await ee(l,o.block),{txs:u,inputs:g,summary:h,state:o,request:e,actionIndex:y,terms:C({request:d,blockNumber:o.block.number,blockHash:o.block.hash,poolId:o.poolId,poolKey:o.key,owner:i,recipient:i,range:{tickLower:o.tickLower,tickUpper:o.tickUpper},liquidityBefore:o.liquidity,liquidityDelta:e.adding?e.liquidity:-e.liquidity,principal:a,principalBounds:[e.bound0,e.bound1],uncollectedLpFees:o.fees.map((b,c)=>({token:o.tokens[c],amount:b})),coreCredits:$,coreCreditsReason:H,locks:v,entry:k,exactApprovals:u.filter((b,c)=>c!==y),refunds:e.adding?[e.bound0-a.amount0,e.bound1-a.amount1]:null,gasEstimate:null,gasEstimateReason:"Local sender estimates the ordered calls and confirms the maximum network fee."})}}function be(t){if(!Array.isArray(t)||!t.length||t.length>7)throw new s("Hookr LP requires only its exact finite approvals, one family action and cleanup.");for(let r of t)T(r,["to","data","value","chainId","description"],["to","data","value","chainId","description"])}function $e(t,r){if(be(t),t.length!==r.length||t.some((d,i)=>d.to!==r[i].to||d.data!==r[i].data||d.value!==r[i].value||d.chainId!==4663))throw new s("Hookr LP differs from the locally reconstructed exact family action, recipient, bounds, approvals or cleanup.")}function Te(t){return le.map(r=>({name:r,inputSchema:ue[r],execute:async(d,i)=>{let e=await ge(r,t,d,i);return{txs:e.txs,preview:await t.preview(e.txs,i),terms:e.terms,summary:e.summary}}}))}export{le as a,he as b,ue as c,ye as d,ge as e,be as f,$e as g,Te as h};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{c as U}from"./OSMOBKRQ.js";import{b as R,c as I,d as j,e as C,g as D,h as V,j as t,k as w,l as E,m as B,o as n,p as o,q as d,r as p,s as y,v as H}from"./XRDLMTBJ.js";import{b as a,f as F,g as L,h as O,i as q}from"./MQK6OP7S.js";import{a as S}from"./WWNAGOCD.js";import{a as s}from"./XSD5NL7J.js";import{getAddress as i}from"viem";async function re(r,m,x,u=[]){let e=await O(r,x);await L(r,e.number,[a.launcherV1,d,a.rulesV1,a.agentGateV1]);let l=i(a.launcherV1),[h,_,z,N,Q,K,G,W,$,J,X,A,b]=await Promise.all([U(r,e.number,m,u),o(r,l,j,"launchFee",[],e.number),o(r,p,n("registry"),"rootOpenFor",[d,m],e.number),o(r,p,n("registry"),"newMarketsPaused",[],e.number),o(r,p,n("registry"),"isLauncher",[l],e.number),o(r,d,n("rootV1"),"poolManager",[],e.number),o(r,l,n("launcherV1"),"poolManager",[],e.number),o(r,l,n("launcherV1"),"registry",[],e.number),o(r,i(a.rulesV1),n("rulesV1"),"trustedRoot",[],e.number),o(r,i(a.rulesV1),n("rulesV1"),"poolManager",[],e.number),o(r,p,n("registry"),"admission",[d,i(a.rulesV1)],e.number),o(r,i(a.rulesV1),n("rulesV1"),"configSchemaHash",[],e.number),o(r,p,n("registry"),"quoteAssets",[],e.number)]);if(K!==y||G!==y||W!==p||$!==d||J!==y)throw new s("Hookr launch dependency wiring differs from the reviewed deployment.");V(A);let c=B(X),g=B(c.caps);if(c.implementation!==i(a.rulesV1)||t(c.kind,8)!==0n||c.codeHash!==F(a.rulesV1).codeHash||c.schemaHash!==A||t(c.gasLimit,32)===0n||t(g.maxLpFeePips,24)>600000n||t(g.maxQuoteTakePips,24)>=1000000n||t(g.maxSubjectTakeBps,16)>1000n)throw new s("Hookr core admission, schema or caps differ from the supported launch profile.");if(!Array.isArray(b)||b.length>32)throw new s("Hookr qualified quote list is incomplete or exceeds the bounded read.");let T=[];for(let f=0;f<b.length;f+=2)T.push(...await Promise.all(b.slice(f,f+2).map(ee=>H(r,i(String(ee)),e.number))));let Y=await H(r,i("0x0000000000000000000000000000000000000000"),e.number),k=E(_,5),Z={token:Y,amount:t(k[0]).toString(),currency:"ETH",decimals:18,treasury:i(String(k[1])),pendingAmount:t(k[2]).toString(),pendingTreasury:i(String(k[3])),readyAt:t(k[4]).toString()},M=w(z),P=w(N),v=w(Q);return await q(r,e),{chainId:4663,blockNumber:e.number.toString(),blockHash:e.hash,timestamp:e.timestamp.toString(),version:"hookr-launcher-v1",launcher:l,root:d,core:i(a.rulesV1),poolManager:y,permissionMask:"0x2acc",launchFee:Z,qualifiedQuotes:T,coreAdmission:{schemaHash:A,gasLimit:t(c.gasLimit,32).toString(),caps:{maxLpFeePips:t(g.maxLpFeePips,24).toString(),maxQuoteTakePips:t(g.maxQuoteTakePips,24).toString(),maxSubjectTakeBps:t(g.maxSubjectTakeBps,16).toString()}},gate:h,rootOpenForWallet:M,newMarketsPaused:P,launcherAdmitted:v,launchAvailable:M&&!P&&v&&h.healthyIdentityOnly&&h.walletAgent,scoreLaunchAvailable:M&&!P&&v&&h.healthyForScores&&h.walletAgent,supportedSettings:{route:"launchAdvised",members:"1",tokenKinds:["new"],reservedTokenKinds:["existing"],tickSpacing:String(S.tickSpacing),baseLpFeePips:String(S.baseLpFeePips),deadlineSecondsMax:S.deadlineSeconds.toString(),guardEndBlock:"0",burnBps:"0",royaltyBps:"0",integrator:null,nameMaxUtf8Bytes:"48",symbolMaxUtf8Bytes:"12",supplyMaxBaseUnits:((1n<<108n)-1n).toString(),liquidityMax:((1n<<127n)-1n).toString(),fee:"8388608",tickSpacingMin:"1",tickSpacingMax:"32767",tickMin:"-887272",tickMax:"887272",requiresTickAlignment:!0,gateRequired:!0,gatePhases:"1",gateFailOpen:!1,arbitraryAdvisories:!1,devBuy:!1,locks:!1,ownedRoot:!1,lpRewardsBpsMax:"1000",lpRewardsPlusBurnBpsMax:"1000",totalLpFeePipsMax:"600000",protocolShareBpsMin:"2000",protocolShareBpsMax:"5000",existingTokenFunding:"requires a separately qualified token route"},readStatus:"complete",warnings:["Read-only admission snapshot. hookr_launch supports one new-token agents-only pool with the fixed profile; add/collect/remove require separate tools.","Oak identity linking alone does not establish on-chain Hookr gate eligibility.",h.reviewerSetsNotice]}}function le(r){return[{name:"hookr_launch_options",inputSchema:{type:"object",additionalProperties:!1,properties:{...I,reviewerSetIds:{type:"array",maxItems:8,uniqueItems:!0,items:R,description:"Existing registered reviewer set IDs to inspect; no alias or arbitrary reviewer address."}}},execute:async(m,x)=>{if(C(m,["blockNumber","reviewerSetIds"]),r.network==="testnet")throw new s("Hookr launch reads are configured only on mainnet, chain 4663.");let u=m.reviewerSetIds??[];if(!Array.isArray(u)||u.length>8||new Set(u).size!==u.length)throw new s("Provide at most eight distinct reviewer set IDs.");let e=u.map(V);if(new Set(e).size!==e.length)throw new s("Provide distinct reviewer set IDs.");try{return await re(r.clientFor(4663),x,D(m),e)}catch(l){throw l instanceof s?l:new s("Hookr launch settings are unavailable at the named block. Retry the complete read; no zero fee or healthy gate is implied.")}}}]}export{re as a,le as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o="The Upoch Score measures recovery policy and checkpoint activity from on-chain facts; it does not rate trading performance or safety.",e={agent:"Read a Upoch workflow, roles, checkpoints, recovery history, and its on-chain Upoch Score on Robinhood Chain. Upoch is a project Oak reads from. The score measures recovery policy and checkpoint activity, not trading performance or safety.",explorer:"List a bounded set of Upoch workflows ranked by on-chain Upoch Score on Robinhood Chain. Upoch is a project Oak reads from. The score measures recovery policy and checkpoint activity, not trading performance or safety."};export{o as a,e as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{parseAbi as
|
|
1
|
+
import{parseAbi as s}from"viem";var r=s(["function asset() view returns (address)","function decimals() view returns (uint8)","function totalAssets() view returns (uint256)","function previewDeposit(uint256 assets) view returns (uint256 shares)","function previewWithdraw(uint256 assets) view returns (uint256 shares)","function previewRedeem(uint256 shares) view returns (uint256 assets)","function convertToAssets(uint256 shares) view returns (uint256 assets)","function balanceOf(address account) view returns (uint256)","function approve(address spender,uint256 amount) returns (bool)","function deposit(uint256 assets,address receiver) returns (uint256 shares)","function withdraw(uint256 assets,address receiver,address owner) returns (uint256 shares)","function redeem(uint256 shares,address receiver,address owner) returns (uint256 assets)"]),t=s(["function vaults(address vault) view returns (bool)","function builders(bytes32 code) view returns (address)","function deposit(address vault,uint256 assets,bytes32 code,uint256 minShares) returns (uint256 shares)","error TooFewShares(uint256 shares,uint256 minShares)"]);export{r as a,t as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as b,h as v,l as I,n as k,r as S}from"./
|
|
1
|
+
import{d as b,h as v,l as I,n as k,r as S}from"./3A2IKFTV.js";import{a as T}from"./X5V2Z2NM.js";import{e as c,g as y}from"./NWNYJ26T.js";import{a as i}from"./XSD5NL7J.js";import{a as l}from"./JXOEJPJ4.js";import{lookup as C}from"node:dns/promises";import{isIP as p}from"node:net";var N="/.well-known/agent-registration.json",P=262144;function R(n){let r=/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i.exec(n);if(r)return R(r[1]);if(p(n)===4){let[e,t]=n.split(".").map(Number);return!(e===0||e===10||e===127||e>=224||e===100&&t>=64&&t<=127||e===169&&t===254||e===172&&t>=16&&t<=31||e===192&&t===168||e===192&&t===0||e===198&&(t===18||t===19))}if(p(n)===6){let e=n.toLowerCase();return!(e==="::"||e==="::1"||/^f[cd]/.test(e)||/^fe[89ab]/.test(e)||e.startsWith("ff")||e.startsWith("2001:db8")||e.startsWith("64:ff9b"))}return!1}async function E(n){let r;try{r=new URL(n)}catch{throw new i("Not a valid URL.")}if(r.protocol!=="https:"||r.username||r.password||r.port||p(r.hostname.replace(/^\[|\]$/g,""))!==0||!r.hostname.includes(".")||/\.(?:local|internal|localhost|lan)$/i.test(r.hostname))throw new i("Only public HTTPS hostnames on the default port are checked.");let e=await C(r.hostname,{all:!0});if(!e.length||!e.every(t=>R(t.address)))throw new i("That hostname does not resolve to a public address.");return r.hostname}async function L(n,r){let e=await n.http(r,{method:"GET",headers:{accept:"application/json"},redirect:"error",signal:AbortSignal.timeout(8e3)});if(!e.ok)throw new i(`The server answered HTTP ${e.status}.`);if(Number(e.headers.get("content-length")??0)>P)throw new i("The file is larger than 256 KiB.");let a=await e.text();if(a.length>P)throw new i("The file is larger than 256 KiB.");try{return JSON.parse(a)}catch{throw new i("The file is not JSON.")}}function O(n,r,e){return Array.isArray(n)&&n.some(t=>c(t)&&typeof t.agentRegistry=="string"&&y(t.agentRegistry,r)&&(typeof t.agentId=="number"||typeof t.agentId=="string")&&String(t.agentId)===e.toString())}var J=n=>({tools:[{name:"erc8004_verify_domain",inputSchema:{type:"object",additionalProperties:!1,required:["agentId"],description:"Read-only, optional ERC-8004 endpoint-domain verification: for each HTTPS service endpoint in the agent's on-chain profile, fetch https://{domain}/.well-known/agent-registration.json and check it lists this registry and agent ID. Only public HTTPS names are fetched; the profile itself is read only from a data: URI.",properties:{agentId:b,endpoint:{type:"string",description:"Check only this HTTPS endpoint (must be one of the profile's services)."}}},async execute(e){try{k(n,e.chainId);let t=I(e.agentId),{chainId:a,registry:H,registryId:u}=v(n),h=await n.clientFor(a).readContract({address:H,abi:T,functionName:"tokenURI",args:[t]});if(typeof h!="string")throw new i("The registry returned an invalid URI.");let f=S(h);if(!f)return{agentId:t.toString(),verified:null,reason:"The agent profile is not a base64 data: URI, so Oak will not fetch it from an agent-controlled location. Pass the endpoint host check yourself, or update the profile to a data: URI.",uri:l(h)};let g=(Array.isArray(f.services)?f.services.filter(c):[]).map(o=>String(o.endpoint??"")).filter(o=>/^https:\/\//i.test(o)),m=e.endpoint===void 0?g:g.filter(o=>o===e.endpoint);if(e.endpoint!==void 0&&!m.length)throw new i("That endpoint is not an HTTPS service in the agent's profile.");let U=[...new Set(m.map(o=>{try{return new URL(o).hostname}catch{return""}}).filter(Boolean))].slice(0,10),s=[];for(let o of U)try{await E(`https://${o}/`);let d=await L(n,`https://${o}${N}`),A=c(d)?d.registrations:void 0,w=O(A,u,t);s.push({domain:l(o),verified:w,reason:w?"The well-known file lists this registry and agent ID.":"The well-known file does not list this registry and agent ID."})}catch(d){s.push({domain:l(o),verified:!1,reason:n.plainError(d)})}return{agentId:t.toString(),registry:u,domains:s,checked:s.length,note:s.length?"Verified means that domain publishes a file naming this agent; it proves domain control by the agent, not that the endpoint is safe.":"The profile lists no HTTPS service endpoints to verify."}}catch(t){throw new i(n.plainError(t))}}}]});export{R as a,J as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as o,d as y,e as m}from"./
|
|
1
|
+
import{a as o,d as y,e as m}from"./VXCGMALF.js";import{a as l}from"./66F5ZH34.js";import{b as c}from"./TI727O2H.js";import{a as d}from"./XSD5NL7J.js";import{concatHex as x,encodeAbiParameters as P,encodeFunctionData as w,getAddress as u,keccak256 as f,parseAbi as k,stringToHex as I}from"viem";var g=k(["function ownerOf(uint256) view returns (address)","function tokenURI(uint256) view returns (string)","function setMetadata(uint256,string,bytes)","function approve(address,uint256)"]),v=k(["function listingOf(uint256) view returns ((address seller,uint256 price,uint64 expiry,uint256 nonce,bytes32 uriHash,uint256 loansRepaid))","function recordHash(uint256) view returns (bytes32)"]),C=(t,r)=>f(x(BigInt(t)<BigInt(r)?[t,r]:[r,t]));function _(t){if(!Array.isArray(t)||t.length<1||t.length>1e4)throw new d("Provide 1 to 10000 identity IDs.");let r=[...new Set(t.map(e=>m(e,"agentIds").toString()))].sort((e,a)=>BigInt(e)<BigInt(a)?-1:1),i=[r.map(e=>f(f(P([{type:"uint256"}],[BigInt(e)]))))];for(;i.at(-1).length>1;){let e=i.at(-1),a=[];for(let s=0;s<e.length;s+=2)a.push(e[s+1]?C(e[s],e[s+1]):e[s]);i.push(a)}return{root:i.at(-1)[0],ids:r,proofs:r.map((e,a)=>{let s=[],p=a;for(let b of i.slice(0,-1)){let h=b[p^1];h&&s.push(h),p=Math.floor(p/2)}return{agentId:e,proof:s}})}}function S(t){return{tools:[{name:"priors_market_origin",inputSchema:{type:"object",properties:{agentIds:{type:"array",minItems:1,maxItems:1e4,items:l(),description:"Exact ERC-8004 agent ID list (decimal strings, 1 to 10000) to commit in a bid_any Merkle root."}},required:["agentIds"],additionalProperties:!1},async execute(r){return{chainId:c,..._(r.agentIds),caveat:"Locally commits exactly these IDs. This does not verify third-party origin, quality, current owner or a seller claim."}}},{name:"priors_market_pins",inputSchema:{type:"object",properties:{agentId:l('ERC-8004 agent ID whose listing pins to read, as a decimal string. Example: "437".')},required:["agentId"],additionalProperties:!1},async execute(r){if(t.network==="testnet")throw new d("Priors market requires mainnet chain 4663.");let n=m(r.agentId,"agentId"),i=t.clientFor(c),e=await i.getBlockNumber({cacheTime:0}),[a,s,p]=await Promise.all([i.readContract({address:o.market,abi:v,functionName:"listingOf",args:[n],blockNumber:e}),i.readContract({address:o.market,abi:v,functionName:"recordHash",args:[n],blockNumber:e}),i.readContract({address:o.registry,abi:g,functionName:"tokenURI",args:[n],blockNumber:e})]);return{chainId:c,blockNumber:e.toString(),listing:y(a),recordHash:s,currentUriHash:f(I(p)),caveat:"Pins bind identity file and credit state, not included code, servers or keys. Listing and current URI hashes may differ; preview refuses an altered listing."}}},{name:"priors_market_clear_bid_budget",inputSchema:{type:"object",properties:{},additionalProperties:!1},async execute(r,n){if(t.network==="testnet")throw new d("Priors market requires mainnet chain 4663.");let i=[t.approval(o.usdg,o.bidSpender,"0",c)],e=await t.preview(i,u(n));return{txs:i,summary:`Clear all this wallet future bid spending allowance to ${o.bidSpender}. Existing bids cannot fill from it until approved again. ${e.summary}`}}},{name:"priors_market_revoke_nft",inputSchema:{type:"object",properties:{agentId:l('ERC-8004 agent ID whose single-NFT market approval to clear, as a decimal string. Example: "437".')},required:["agentId"],additionalProperties:!1},async execute(r,n){let i=m(r.agentId,"agentId");if(t.network==="testnet")throw new d("Priors market requires mainnet chain 4663.");if(u(await t.clientFor(c).readContract({address:o.registry,abi:g,functionName:"ownerOf",args:[i]}))!==u(n))throw new d("Only current NFT owner may revoke this per-token approval.");let e=[t.unsignedTx({to:o.registry,data:w({abi:g,functionName:"approve",args:["0x0000000000000000000000000000000000000000",i]}),value:"0",chainId:c,description:`Revoke exact ERC-8004 NFT ${i} market approval.`})],a=await t.preview(e,n);return{txs:e,summary:`Clear this identity per-token transfer approval. Also cancel its listing before granting any new market approval. ${a.summary}`}}},{name:"priors_x_link",inputSchema:{type:"object",properties:{agentId:l('ERC-8004 agent ID this wallet owns, as a decimal string. Example: "437".'),postUrl:{type:"string",maxLength:160,description:"Canonical https://x.com/<handle>/status/<id> owner proof post URL, or empty to unlink. Owner creates the public post themselves."}},required:["agentId","postUrl"],additionalProperties:!1},async execute(r,n){if(t.network==="testnet")throw new d("Priors X metadata is mainnet only.");let i=m(r.agentId,"agentId");if(u(await t.clientFor(c).readContract({address:o.registry,abi:g,functionName:"ownerOf",args:[i]}))!==u(n))throw new d("Only the identity owner can link or clear X metadata.");if(typeof r.postUrl!="string"||r.postUrl!==""&&!/^https:\/\/x\.com\/[A-Za-z0-9_]{1,15}\/status\/[0-9]{1,30}$/.test(r.postUrl))throw new d("Provide a canonical X status URL or empty string to unlink.");let e=[t.unsignedTx({to:o.registry,data:w({abi:g,functionName:"setMetadata",args:[i,"x",I(r.postUrl)]}),value:"0",chainId:c,description:"Set/clear the owner identity X proof-post metadata."})],a=await t.preview(e,n);return{txs:e,summary:`Publish ${r.postUrl?"the specified X post URL":"empty X metadata"} on public ERC-8004 identity ${i}. Priors independently verifies the post; metadata alone does not prove the X account or affect credit terms. ${a.summary}`}}}]}}export{_ as a,S as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as B}from"./
|
|
1
|
+
import{a as B}from"./25C4DTVA.js";import{c as V}from"./NWPAQER2.js";import{c as x}from"./R73R4KN3.js";import{c as P}from"./QIB6OMQV.js";import{b as M}from"./D2IYA4LP.js";import{k as F}from"./YXXK6EPI.js";import{a as _}from"./A3PN3PK3.js";import{b as O,o as R}from"./LKX5WDOQ.js";import{b as I}from"./SPJCSEKP.js";import{a as S}from"./43LI5NKJ.js";import{a as H}from"./66F5ZH34.js";import{g as A,m as N,n as W}from"./NWNYJ26T.js";import{b as m,j as G}from"./TI727O2H.js";import{a as u}from"./XSD5NL7J.js";import{encodeFunctionData as L,getAddress as b,parseAbi as z}from"viem";var c=z(["function asset() view returns (address)","function decimals() view returns (uint8)","function totalAssets() view returns (uint256)","function performanceFee() view returns (uint256)","function managementFee() view returns (uint256)","function balanceOf(address) view returns (uint256)","function previewDeposit(uint256 assets) view returns (uint256)","function previewRedeem(uint256 shares) view returns (uint256)","function deposit(uint256 assets,address receiver) returns (uint256 shares)","function redeem(uint256 shares,address receiver,address owner) returns (uint256 assets)"]),Q=z(["function deposit() payable"]),p=G[m],T=[{key:"core",name:"Longbow Core USDG",vault:p.vaults.longbowCore.address,asset:p.tokens.USDG.address,symbol:"USDG",decimals:6},{key:"frontier",name:"Longbow Frontier USDG",vault:p.vaults.longbowFrontier.address,asset:p.tokens.USDG.address,symbol:"USDG",decimals:6},{key:"eth",name:"Longbow ETH",vault:p.vaults.longbowEth.address,asset:p.tokens.WETH.address,symbol:"WETH",decimals:18}],D=[{key:"v1-usdg",name:"Longbow USDG Core V1 (legacy)",vault:b("0x8cb8AA35228c96C1C4E956E69AbAEBCc2aA7Dcfe"),asset:p.tokens.USDG.address,symbol:"USDG",decimals:6},{key:"v1-weth",name:"Longbow WETH Core V1 (legacy)",vault:b("0x93777a9b917be3c8259c84456222f43a01dd6492"),asset:p.tokens.WETH.address,symbol:"WETH",decimals:18}];function j(s,i){return W(s,`${i} must be positive and within the uint256 range.`,{notString:`${i} must be a positive integer string in base units.`,positive:!0})}function h(s){return N(s,"Longbow returned an invalid integer response.")}function q(s,i=!1){if(typeof s!="string")throw new u("Provide the address of a current Longbow vault.");let w=D.find(y=>A(y.vault,s));if(w&&!i)throw new u("Longbow V1 vaults are withdraw-only; deposit into a current V2 vault from longbow_list instead.");let g=w??T.find(y=>A(y.vault,s));if(!g)throw new u("Provide the address of a current Longbow vault, or a Longbow V1 vault to withdraw from. Other vaults are not supported.");return g}function C(s,i){if(Object.keys(s).some(w=>!i.includes(w)))throw new u("Unsupported Longbow input. Use the fields in the tool schema.")}var X=s=>{async function i(e){try{return await e()}catch(t){throw new u(s.plainError(t))}}async function w(){let e=s.clientFor(m);if(await e.getChainId()!==m)throw new u("Longbow requires a client on chain 4663.");return e}async function g(e,t){let[o,r,a,n]=await Promise.all([e.readContract({address:t.vault,abi:c,functionName:"asset"}),e.readContract({address:t.vault,abi:c,functionName:"decimals"}),e.readContract({address:t.asset,abi:c,functionName:"decimals"}),_(e,t.vault)]);if(typeof o!="string"||!A(o,t.asset))throw new u("Longbow vault asset does not match the recorded deployment.");if(r!==18||a!==t.decimals)throw new u("Longbow token decimals do not match the recorded deployment.");return{vault:t.vault,key:t.key,name:t.name,asset:{address:b(t.asset),symbol:t.symbol,decimals:a,chainId:m},share:{address:t.vault,symbol:n,decimals:r,chainId:m}}}async function y(e,t,o,r){let a=R(o.amount,O);if(BigInt(a)===0n)throw new u("The expected output is too small for a nonzero simulation minimum.");let n=await s.preview(e,t);if(n.changes.filter(l=>l.token.chainId===o.token.chainId&&A(l.token.address,o.token.address)&&l.token.decimals===o.token.decimals).reduce((l,v)=>l+BigInt(v.amount),0n)<BigInt(a))throw new u("Longbow simulated output is below the expected minimum.");let d=n.changes.map(({token:l,amount:v})=>{let U=v.startsWith("-");return`${U?"-":"+"}${s.formatAmount(U?v.slice(1):v,l.decimals)} ${l.symbol} (${l.address}, chain ${l.chainId})`}).join("; ");return{txs:e,preview:n,expectedOutput:o,minimumOutput:{token:o.token,amount:a},minimumEnforcedOnchain:!1,summary:`${r} ${d}. Simulation only; no on-chain minimum is enforced by these ERC-4626 calls. ${n.summary}`}}async function Y(e){C(e,[]);let t=await w();return Promise.all(T.map(async o=>{let[r,a,n,f]=await Promise.all([g(t,o),t.readContract({address:o.vault,abi:c,functionName:"totalAssets"}),t.readContract({address:o.vault,abi:c,functionName:"performanceFee"}),t.readContract({address:o.vault,abi:c,functionName:"managementFee"})]);return{...r,totalAssets:{token:r.asset,amount:h(a).toString()},fees:{performanceFeeE18:h(n).toString(),managementFeeE18:h(f).toString()},caveat:"Morpho V2 max views can be zero even when writes succeed. Simulate the requested action; listing does not prove availability."}}))}async function K(e,t){C(e,["vault","amount","wrapEth"]),S(t);let o=q(e.vault),r=j(e.amount,"Deposit amount");if(e.wrapEth!==void 0&&typeof e.wrapEth!="boolean")throw new u("wrapEth must be a boolean.");if(e.wrapEth&&!A(o.asset,p.tokens.WETH.address))throw new u("Only a WETH vault accepts explicit ETH wrapping.");let a=await w(),n=await g(a,o),f=h(await a.readContract({address:n.vault,abi:c,functionName:"previewDeposit",args:[r]})),d=[];return e.wrapEth&&d.push(s.unsignedTx({to:n.asset.address,data:L({abi:Q,functionName:"deposit"}),value:r.toString(),chainId:m,description:`Wrap ${s.formatAmount(r.toString(),18)} ETH into WETH for ${n.name}.`})),d.push(s.approval(n.asset.address,n.vault,r.toString(),m)),d.push(s.unsignedTx({to:n.vault,data:L({abi:c,functionName:"deposit",args:[r,b(t)]}),value:"0",chainId:m,description:`Deposit ${s.formatAmount(r.toString(),n.asset.decimals)} ${n.asset.symbol} into ${n.name}.`})),y(d,t,{token:n.share,amount:f.toString()},`Deposit into ${n.name}.`)}async function J(e,t){C(e,["vault","shares"]),S(t);let o=q(e.vault,!0),r=e.shares==="all"?void 0:j(e.shares,"Redeem shares"),a=await w(),n=await g(a,o),f=h(await a.readContract({address:n.vault,abi:c,functionName:"balanceOf",args:[t]})),d=r??f;if(d===0n||d>f)throw new u("The wallet has insufficient Longbow shares for this redemption.");let l=h(await a.readContract({address:n.vault,abi:c,functionName:"previewRedeem",args:[d]})),v=[s.unsignedTx({to:n.vault,data:L({abi:c,functionName:"redeem",args:[d,b(t),b(t)]}),value:"0",chainId:m,description:`Redeem ${s.formatAmount(d.toString(),n.share.decimals)} shares from ${n.name} into ${n.asset.symbol}.`})];return y(v,t,{token:n.asset,amount:l.toString()},`Redeem from ${n.name}.`)}let E={type:"string",enum:T.map(e=>e.vault),description:"Current vault address on chain 4663."},$=H('Positive amount of the vault asset in base units, never a human-unit decimal (USDG has 6 decimals, WETH 18). Example: "1000000" = 1 USDG.'),k=(e,t,o,r)=>({name:e,inputSchema:{type:"object",description:e==="longbow_deposit"?"Deposit the selected vault\u2019s USDG (6 decimals) or WETH (18 decimals) in base units for shares. Exit with longbow_withdraw; check positions after confirmation.":e==="longbow_withdraw"?"Redeem shares in 18-decimal base units, or shares all for a full exit. Returns USDG or WETH according to the selected vault.":"List current Longbow vault assets and shares; exit existing shares with longbow_withdraw.",properties:t,required:o,additionalProperties:!1},execute:(a,n)=>i(()=>r(a,n))});return{tools:[k("longbow_list",{},[],Y),k("longbow_deposit",{vault:E,amount:$,wrapEth:{type:"boolean",default:!1,description:"Explicitly wrap this amount of native ETH before depositing into the WETH vault."}},["vault","amount"],K),k("longbow_withdraw",{vault:{...E,enum:[...E.enum,...D.map(e=>e.vault)],description:"Current vault address, or a Longbow V1 vault (withdraw-only) on chain 4663."},shares:{anyOf:[$,{const:"all"}],description:"Share base units (18 decimals), or all for the fresh wallet share balance. Returns the underlying asset, including WETH."}},["vault","shares"],J)],positions:e=>i(async()=>{S(e);let t=await w();return(await Promise.all([...T,...D].map(async r=>{let a=await g(t,r),n=h(await t.readContract({address:a.vault,abi:c,functionName:"balanceOf",args:[e]}));if(n===0n)return[];let f=h(await t.readContract({address:a.vault,abi:c,functionName:"previewRedeem",args:[n]}));return[{module:"longbow",id:`${m}:${a.vault.toLowerCase()}`,chainId:m,assets:[{token:a.asset,amount:f.toString()}],description:`${a.name}: ${s.formatAmount(n.toString(),a.share.decimals)} shares (${a.share.address}, ${a.share.decimals} decimals). Underlying is a preview, not a guaranteed redemption.`}]}))).flat()})}};function he(s){return I("longbow",[X(s),P(s),F(s),x(s),M(s),V(s),{tools:B(s,"longbow",T.map(i=>({vault:i.vault,asset:{address:b(i.asset),symbol:i.symbol,decimals:i.decimals,chainId:m}})))}])}export{D as a,X as b,he as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as i,d as T,e as O,f as C}from"./OUROA7XR.js";import{b as A}from"./43LI5NKJ.js";import{
|
|
1
|
+
import{c as i,d as T,e as O,f as C}from"./OUROA7XR.js";import{b as A}from"./43LI5NKJ.js";import{b as F,j as R}from"./TI727O2H.js";import{a as y}from"./XSD5NL7J.js";import{decodeFunctionData as U,encodeFunctionData as N,parseAbi as Q,zeroAddress as S}from"viem";var v=R[4663].pendle.router.address,I=Q(["struct SwapData { uint8 swapType; address extRouter; bytes extCalldata; bool needScale; }","struct TokenInput { address tokenIn; uint256 netTokenIn; address tokenMintSy; address pendleSwap; SwapData swapData; }","struct TokenOutput { address tokenOut; uint256 minTokenOut; address tokenRedeemSy; address pendleSwap; SwapData swapData; }","struct ApproxParams { uint256 guessMin; uint256 guessMax; uint256 guessOffchain; uint256 maxIteration; uint256 eps; }","struct Order { uint256 salt; uint256 expiry; uint256 nonce; uint8 orderType; address token; address YT; address maker; address receiver; uint256 makingAmount; uint256 lnImpliedRate; uint256 failSafeRate; bytes permit; }","struct FillOrderParams { Order order; bytes signature; uint256 makingAmount; }","struct LimitOrderData { address limitRouter; uint256 epsSkipMarket; FillOrderParams[] normalFills; FillOrderParams[] flashFills; bytes optData; }","function swapExactTokenForPt(address receiver,address market,uint256 minPtOut,ApproxParams approx,TokenInput input,LimitOrderData limit) payable returns(uint256,uint256,uint256)","function swapExactPtForToken(address receiver,address market,uint256 netPtIn,TokenOutput output,LimitOrderData limit) returns(uint256,uint256,uint256)","function redeemPyToToken(address receiver,address YT,uint256 netPyIn,TokenOutput output) returns(uint256,uint256)"]);function e(n,t){if(!n)throw new y(`Pendle quote refused: ${t}. Nothing was signed.`)}function a(n,t){return typeof n=="string"&&n.toLowerCase()===t.toLowerCase()}function Y(n,t){return e(Number.isInteger(t)&&t>=0&&t<=1e4,"invalid slippage limit"),n*BigInt(1e4-t)/10000n}function M(n){e(a(n.pendleSwap,S),"unexpected swap contract"),e(n.swapData.swapType===0,"unexpected swap type"),e(a(n.swapData.extRouter,S),"unexpected external router"),e(n.swapData.extCalldata==="0x","unexpected external calldata"),e(n.swapData.needScale===!1,"unexpected swap scaling")}function V(n){e(a(n.limitRouter,S),"limit orders are not supported"),e(n.normalFills.length===0,"unexpected normal limit fills"),e(n.flashFills.length===0,"unexpected flash limit fills"),e(n.optData==="0x","unexpected limit order data"),e(n.epsSkipMarket===0n,"unexpected limit order tolerance")}function E(n,t,d){let g=C(n),s=i(g.tx);e(a(s.to,v),"wrong router"),e(s.value===void 0||s.value==="0","unexpected or malformed ETH value"),e(t.amount>0n&&t.amount<1n<<256n,"invalid requested amount");let P=g.outputs;e(P.length===1,"expected exactly one output token");let h=i(P[0]);e(a(O(h.token),d==="buy"?t.market.pt:t.market.inputToken),"wrong quoted output token");let w=T(h.amount);e(w>0n,"empty quoted output");let q=Y(w,t.slippageBps),D=i(n).requiredApprovals;e(D.length===1,"expected exactly one approval");let p=i(D[0]);e(a(O(p.token),d==="buy"?t.market.inputToken:t.market.pt),"wrong approval token"),e(T(p.amount)===t.amount,"wrong approval amount"),e(p.spender===void 0||a(p.spender,v),"wrong approval spender");let l=i(g.data),m=i(l.fee);e(typeof l.priceImpact=="number"&&Number.isFinite(l.priceImpact),"unreadable price impact"),e(typeof m.usd=="number"&&Number.isFinite(m.usd)&&m.usd>=0,"unreadable trading fee");let o;try{o=$(s.data)}catch{throw new y("Pendle quote refused: unknown or malformed router call. Nothing was signed.")}let c,k;if(d==="buy"){e(o.functionName==="swapExactTokenForPt","wrong buy selector");let[f,x,b,r,u,L]=o.args;e(a(f,t.wallet),"wrong receiver"),e(a(x,t.market.market),"wrong market"),e(a(u.tokenIn,t.market.inputToken),"wrong input token"),e(a(u.tokenMintSy,t.market.inputToken),"wrong SY mint token"),e(u.netTokenIn===t.amount,"wrong input amount"),M(u),V(L),e(r.guessMin<=r.guessOffchain,"invalid lower approximation guess"),e(r.guessOffchain<=r.guessMax,"invalid upper approximation guess"),e(r.maxIteration<=256n,"too many approximation iterations"),c=b,k=N({abi:I,functionName:o.functionName,args:o.args})}else{e(o.functionName==="swapExactPtForToken","wrong sell selector");let[f,x,b,r,u]=o.args;e(a(f,t.wallet),"wrong receiver"),e(a(x,t.market.market),"wrong market"),e(b===t.amount,"wrong PT input amount"),e(a(r.tokenOut,t.market.inputToken),"wrong output token"),e(a(r.tokenRedeemSy,t.market.inputToken),"wrong SY redeem token"),M(r),V(u),c=r.minTokenOut,k=N({abi:I,functionName:o.functionName,args:o.args})}return e(c>=q,"minimum output is below Oak\u2019s slippage floor"),e(k.toLowerCase()===s.data.toLowerCase(),"calldata does not match Oak\u2019s encoding"),{tx:A({to:v,data:k,value:"0",chainId:F,description:d==="buy"?"Buy Pendle PT with the exact input amount.":"Sell Pendle PT to the market input token."}),amountOut:w,minOut:c,feeUsd:m.usd,priceImpact:l.priceImpact}}function $(n){return U({abi:I,data:n})}function G(n,t){return E(n,t,"buy")}function J(n,t){return E(n,t,"sell")}export{v as a,I as b,e as c,a as d,Y as e,G as f,J as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var g=.25,f=30,p=30,S=.5,x=1e9;function U(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?{usd:e,estimatedHigh:!1}:{usd:.5,estimatedHigh:!0}}function D(e){let{gross:t,costs:n}=e,r=t-n,s=t<=n||n*4>t,o=s?d(e):void 0;return{tooSmall:s,grossUsd:t,costsUsd:n,netUsd:r,...o===void 0?{}:{suggestUsd:o}}}function d(e){let{gross:t,costs:n,amount:r}=e;if(![t,n,r].every(Number.isFinite)||!(t>0)||!(r>0)||!(n>=0))return;let s=t/r,o=i=>{let m=s*i;return n<=m*(1+1e-9)&&n*4<=m*(1+1e-9)},a=Math.ceil(n*4/s-1e-9);if(!Number.isFinite(a)||a>1e9)return;let u=Math.max(1,a);for(let i=0;i<4&&!o(u);i+=1)u+=1;if(o(u)){for(let i=0;i<4&&u>1&&o(u-1);i+=1)u-=1;return u}}function c(e){return e.amountUsd*e.ratePct/100*(e.days/365)}function A(e){let{amountUsd:t,baseRatePct:n,bonusRatePct:r,days:s}=e,o=Math.min(s,Math.max(0,Number.isFinite(e.bonusDays)?e.bonusDays:0));if(o>=s)return c({amountUsd:t,ratePct:n+r,days:s});let a=c({amountUsd:t,ratePct:n,days:s});return o===0?a:a+c({amountUsd:t,ratePct:r,days:o})}function y(e){let t=e.redeemOutBase-e.amountBase,n=t<0n,r=n?-t:t,s=10n**BigInt(e.decimals),o=Number(r/s)+Number(r%s)/Number(s);return n?-o:o}function h(e){return"none"}function _(e,t){return Math.max(0,(t-e)/86400)}function $(e){let t=e<0?"-":"",n=Math.abs(e);if(n===0)return"$0.00";if(n<.001&&(n=.001),n>=.9995)return`${t}$${n.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}`;let r=n.toFixed(3);return`${t}$${r.endsWith("0")?n.toFixed(2):r}`}function N(e){return e.toFixed(2)}var b=["January","February","March","April","May","June","July","August","September","October","November","December"];function M(e){let t=new Date(e*1e3);return`${b[t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`}var l=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function O(e){let t=new Date(e*1e3);return`${l[t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`}function P(e){let t=Math.max(1,Math.round(e));return t===1?"1 day":`${t} days`}function R(e,t,n=4){let r=e<0n,s=r?-e:e,o=10n**BigInt(t),a=s/o,u=(s%o).toString().padStart(t,"0").slice(0,n).replace(/0+$/,"");return`${r?"-":""}${a.toString()}${u?`.${u}`:""}`}export{g as a,f as b,p as c,S as d,x as e,U as f,D as g,d as h,c as i,A as j,y as k,h as l,_ as m,$ as n,N as o,M as p,O as q,P as r,R as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as u}from"./TRCP7X5P.js";import{t as o,u as y}from"./TI727O2H.js";import{a as r}from"./XSD5NL7J.js";import{getAddress as g,hashTypedData as l,isAddress as f,zeroAddress as k}from"viem";var w="Actions are paused until this wallet has an Oak identity (a one-time public on-chain profile). Registering costs a small ETH network fee and needs the person's OK. Run oak setup register, or oak setup link <agentId> for an existing ID. Reads still work.";function d(e,n,t){if(typeof e!="string"||!/^(0|[1-9][0-9]*)$/.test(e)||e.length>78)throw new r(`Identity link ${t} must be a canonical decimal integer string.`);let i=BigInt(e);if(i>=1n<<BigInt(n))throw new r(`Identity link ${t} exceeds uint${n}.`);return i}function c(e,n){if(typeof e!="string"||!f(e,{strict:!1})||g(e)===k)throw new r(`Identity link ${n} must be a nonzero address.`);return g(e)}function m(e,n="mainnet"){d(e,256,"agentId");let{chainId:t,identityRegistry:i}=o[y(n)];return{chainId:t,registry:i,agentId:e}}function h(e){if(e===o.mainnet.chainId)return"mainnet";if(e===o.testnet.chainId)return"testnet";throw new r("Wrong identity network. Select mainnet or testnet and run oak setup again.")}function S(e,n="mainnet"){if(!e||typeof e!="object"||Array.isArray(e))throw new r(w);let t=e,i=m(t.agentId,n);if(Object.keys(t).some(s=>!["chainId","registry","agentId","linkId"].includes(s))||t.chainId!==i.chainId||t.registry!==i.registry||t.linkId!==void 0&&(typeof t.linkId!="string"||!/^0x[0-9a-f]{64}$/.test(t.linkId)))throw new r(`Wrong identity network or registry. Select chain ${i.chainId} and run oak setup again.`);return{...i,...t.linkId!==void 0?{linkId:t.linkId}:{}}}function p(e){let n=h(e.chainId),{chainId:t,registry:i}=m(e.agentId,n);if(c(e.registry,"registry")!==i)throw new r(`Identity link must use the pinned registry on chain ${t}.`);if(typeof e.audience!="string"||!e.audience.trim())throw new r("Identity link audience must be a nonempty string.");if(typeof e.challenge!="string"||!/^0x[0-9a-fA-F]{64}$/.test(e.challenge))throw new r("Identity link challenge must be a 32-byte hex string.");let s=d(e.issuedAt,64,"issuedAt"),a=d(e.expiresAt,64,"expiresAt");if(s>=a)throw new r("Identity link expiry must be after its issue time.");return{domain:{name:"Oak Identity Link",version:"1",chainId:t,verifyingContract:i},primaryType:"OakIdentityLink",types:{OakIdentityLink:[{name:"agentId",type:"uint256"},{name:"agentWallet",type:"address"},{name:"registry",type:"address"},{name:"chainId",type:"uint256"},{name:"audience",type:"string"},{name:"challenge",type:"bytes32"},{name:"issuedAt",type:"uint64"},{name:"expiresAt",type:"uint64"}]},message:{agentId:d(e.agentId,256,"agentId"),agentWallet:c(e.agentWallet,"agentWallet"),registry:i,chainId:BigInt(t),audience:e.audience,challenge:e.challenge,issuedAt:s,expiresAt:a}}}async function L(e,n){try{let t=p(e.link),i=p(n.expected),s=l(t);if(s!==l(i))return!1;let a=d(n.now,64,"now");if(a<t.message.issuedAt||a>=t.message.expiresAt)return!1;let I=c(n.currentOwner,"currentOwner");return typeof n.blockNumber!="bigint"||n.blockNumber<0n?!1:u({digest:s,signature:e.signature,owner:I,client:n.client,blockNumber:n.blockNumber,policy:"identity-link-legacy"})}catch{return!1}}export{w as a,m as b,h as c,S as d,p as e,L as f};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import{a as w,b as r}from"./V5YSJKRH.js";function o(e){return{text:e}}var h="borro.markets",R=o("Borro: lend your {symbol} to borrowers through Borro's vault."),k=o("Borro is an official Oak partner. Borro's own team runs its product and contracts; Oak didn't build them and doesn't run them."),E=o("Borro keeps {fee_pct}% of the interest as its fee."),x=o("Borro keeps part of the interest as its fee, and I couldn't read how much."),A=o("Reward: about {borro_rate}% a year today, which changes. {fee_clause} {comparison_clause}"),O=o("Reward: lending {symbol} pays about {borro_rate}% a year today, which changes. {fee_clause}"),S=o("Reward: lending {symbol} pays about {borro_rate}% a year today, which is close to nothing and changes. {fee_clause}"),_=o("I couldn't confirm Borro's rate in the last few minutes, so I can't tell you what this pays today. borro_list shows it when Borro's page is current."),T=o(`Reward: ${_.text} {fee_clause}`),g=o("The catch: you are lending {symbol}, a stock token, not dollars. If its price falls, what you get back is worth less in dollars, even though the {symbol} count is what you lent. The company that issues the token can also pause or restrict it."),N=o("LayerBank on Robinhood Chain pays about {lb_rate}% a year on USDG today, so LayerBank pays more."),B=o("LayerBank on Robinhood Chain pays about {lb_rate}% a year on USDG today, so Borro pays more."),C=o("LayerBank on Robinhood Chain pays about {lb_rate}% a year on USDG today, so they pay about the same."),v=o("I couldn't read {the_other} rate, so I can't compare them right now."),I=o("Borro is {age_phrase} old and has had no outside security check"),D=o("Borro's age couldn't be read, and it has had no outside security check"),L=o("A {threshold}-of-{owners} group wallet"),U=o("A wallet Oak could not inspect"),P=o("{age_clause}; its own page says only internal reviews were done. {controller_clause} controls the vault and can change where the money is lent. If Borro's code fails, or the people who control it make a harmful change, you could lose money."),F=o("Risk: {risk_clause}"),$=o(`Taking it out: you can take your money out when the vault has cash on hand. Right now about {ready} {symbol} of the {total} {symbol} lent in is ready; the rest is out with borrowers and can take time to come back. You can also take it out on ${h} with this wallet.`),K=o("Taking it out: you can take your money out when the vault has cash on hand. Right now all {total} {symbol} lent in is ready."),M=o(`Taking it out: you can take your money out when the vault has cash on hand. I couldn't read how much is ready to take out right now; money that is out with borrowers can take time to come back. You can also take it out on ${h} with this wallet.`),W=o("Cost: about {gas_in_usd} in network fees to put it in and about {gas_out_usd} to take it out."),Y=o("Cost: I couldn't read the network fees right now."),G=o("Cost: I couldn't price the network fees in dollars right now. The most you can pay, in ETH, is on the line below."),q=o("Rates shown leave out any $BORRO incentive."),H=o(`Lend {amount} {symbol} to Borro?
|
|
2
|
+
|
|
3
|
+
Borro is an official Oak partner. Borro's own team runs its product and contracts; Oak didn't build them and doesn't run them.
|
|
4
|
+
What you get: {reward_clause} {stock_catch_clause}
|
|
5
|
+
What happens: {amount} {symbol} leaves your wallet and becomes about {shares} "{vault_symbol}" tokens, your receipt for money lent through Borro. {floor_clause}
|
|
6
|
+
{route_clause}
|
|
7
|
+
The risk: {risk_clause}
|
|
8
|
+
Taking it out: {taking_out_clause}
|
|
9
|
+
{cost_line}
|
|
10
|
+
|
|
11
|
+
Lend {amount} {symbol}? [Yes] [No]`),V=o("Borro keeps 10% of the interest as its fee. On deposits using Oak's code, Borro pays Oak all of that fee for the first 12 months, then half. Borro pays monthly in USDG."),bt=o("You receive at least {minShares} vault shares, or the deposit will not go through."),j=o("Oak's referral is not available for this vault, so this deposit goes straight to the vault without Oak's referral code."),z=o("Oak's preview checks that you would get at least {min_shares}, but Borro's contract doesn't enforce a minimum, so the final amount can differ slightly."),Z=o("about {borro_rate}% a year at today's rate, which changes."),Q=o(`when the vault has cash on hand. Right now about {ready} {symbol} is ready of the {total} {symbol} lent in. Also possible on ${h} with this wallet.`),J=o(`when the vault has cash on hand. I couldn't read how much is ready right now. Also possible on ${h} with this wallet.`),X=o("Cost: about {gas_in_usd} in network fees now and about {gas_out_usd} to take it out."),tt=o(`Take {amount_or_all} {symbol} out of Borro?
|
|
12
|
+
|
|
13
|
+
You get back about {out} {symbol} for {shares} "{vault_symbol}" tokens (what you lent plus interest so far). Oak's preview checks the amount, but the contract doesn't enforce a minimum, so it can differ slightly.
|
|
14
|
+
{liquidity_note}
|
|
15
|
+
{drift_notice}
|
|
16
|
+
{cost_line}
|
|
17
|
+
|
|
18
|
+
Take it out? [Yes] [No]`),et=o("Borro's vault only has about {ready} {symbol} ready right now, so I can take out {max_now} {symbol} today. Say so if you want that smaller amount."),ot=o("Cost: about {gas_out_usd} in network fees."),nt=o("Borro's setup has changed since Oak checked it; the exit below was checked against the live contract."),rt=o("I could not verify {vault_label} on chain, so Oak won't offer it. Nothing was signed."),st=o("Borro's setup no longer matches what Oak checked. Nothing was signed."),at=o("Borro only has {ready} {symbol} ready to take out right now, and you asked for {requested} {symbol}. I can take out {max_now} {symbol} now, or you can wait for more to come back."),it=o("Borro only has {ready} {symbol} ready to take out right now, and you asked for {requested} {symbol}. None can be taken out today, so you can wait for more to come back."),lt=o("This wallet has nothing lent on Borro for {symbol}."),ut=o("Borro's vault wouldn't take this deposit right now (it may be full or paused). Nothing was signed."),ct=o("New on Borro: the {symbol} vault. Oak checked it on the chain just now and it passes Oak's checks."),dt=o(`If you also borrowed, shorted or used credit on ${h}, Oak's view doesn't include that.`),Tt={CARD_INTRO:R,INDEPENDENCE:k,FEE_CLAUSE:E,FEE_CLAUSE_UNREADABLE:x,REWARD_USDG:A,REWARD_STOCK:O,REWARD_STOCK_LOW:S,RATE_UNREADABLE:_,REWARD_UNREADABLE:T,STOCK_CATCH:g,COMPARE_LAYERBANK_HIGHER:N,COMPARE_BORRO_HIGHER:B,COMPARE_SAME:C,COMPARE_UNREADABLE:v,AGE_CLAUSE:I,AGE_CLAUSE_UNKNOWN:D,CONTROLLER_SAFE:L,CONTROLLER_UNKNOWN:U,RISK_CLAUSE:P,RISK_LINE:F,TAKING_OUT:$,TAKING_OUT_ALL_READY:K,TAKING_OUT_UNREADABLE:M,CARD_COST:W,CARD_COST_UNREADABLE:Y,COST_UNREADABLE:G,NOTES_INCENTIVE:q,BORRO_SHARE:V,BORRO_FALLBACK:j,BORRO_DIRECT_FLOOR:z,DEPOSIT_SCREEN:H,SCREEN_REWARD:Z,SCREEN_TAKING_OUT:Q,SCREEN_TAKING_OUT_UNREADABLE:J,DEPOSIT_COST:X,WITHDRAW_SCREEN:tt,LIQUIDITY_NOTE:et,WITHDRAW_COST:ot,DRIFT_NOTICE:nt,UNVERIFIED_REFUSAL:rt,SETUP_MISMATCH:st,TOO_LITTLE_READY:at,NOTHING_READY:it,NO_SHARES:lt,DEPOSIT_WOULD_REVERT:ut,NEW_VAULT_NOTICE:ct,POSITIONS_NOTE:dt},Nt=[/\bours?\b/i,/\bOak (?:owns?|runs?|operates?|built) Borro\b/i,/\bbuilt by\b/i,/\bOak's Borro\b/i,/\bour (?:vault|project)/i,/\bSafe\b/,/\bRobinhood\b(?! Chain)/,/\bfork\b/i,/\bpractice copy\b/i,/\banvil\b/i,/evm_increaseTime/i,/\bunlisted\b/i,/\bpinned\b/i];function y(e){return e.toFixed(2).replace(/\.?0+$/,"")}function l(e){return typeof e=="number"&&Number.isFinite(e)}var p=/^[A-Za-z0-9.$_-]{1,16}$/,_t=/^0x[0-9a-fA-F]{40}$/;function u(e){if(!p.test(e))throw new Error("Borro copy refused an asset symbol that is not a plain token symbol.");return e}function yt(e){return p.test(e)?e:"Borro vault shares"}function c(e,t){let n=t,s=[];for(let a of e.text.split(`
|
|
19
|
+
`)){let i=/^\{([a-z][a-z0-9_]*)\}$/.exec(a);i&&n[i[1]]===""||s.push(r(o(a),n).trimEnd())}return s.join(`
|
|
20
|
+
`)}var gt=86400,b=/^(\d+)(?:\.(\d+))?$/,pt=4;function d(e){let t=b.exec(e);if(!t)return e;let n=(t[2]??"").slice(0,pt).replace(/0+$/,"");return n?`${t[1]}.${n}`:t[1]}function ft(e,t){let n=b.exec(e),s=b.exec(t);if(!n||!s)return!1;let a=Math.max(n[2]?.length??0,s[2]?.length??0),i=m=>BigInt(m[1]+(m[2]??"").padEnd(a,"0"));return i(n)>=i(s)}function wt(e,t){if(!l(e)||!Number.isFinite(t)||e<=0)return;let n=(t-e)/gt;if(!(n<0)){if(n<1)return"under a day";if(n<14){let s=Math.floor(n);return s===1?"1 day":`${s} days`}return n<45?"about a month":`about ${Math.max(2,Math.round(n/30))} months`}}var Rt=.05;function kt(e,t){let n=l(e),s=l(t);if(!n||!s)return r(v,{the_other:!n&&!s?"either":n?"LayerBank's":"Borro's"});let a=y(t),i=e-t;return Math.abs(i)<Rt?r(C,{lb_rate:a}):r(i>0?B:N,{lb_rate:a})}function ht(e){let t=wt(e.deployedAtSeconds,e.nowSeconds),n=t===void 0?r(D,{}):r(I,{age_phrase:t}),a=Number.isInteger(e.threshold)&&Number.isInteger(e.owners)&&e.threshold>0&&e.owners>0&&e.threshold<=e.owners?r(L,{threshold:String(e.threshold),owners:String(e.owners)}):r(U,{});return r(P,{age_clause:n,controller_clause:a})}function Et(e){return l(e)?r(E,{fee_pct:y(e)}):r(x,{})}function f(e,t,n=G){let s={gas_in_usd:t.in,gas_out_usd:t.out};return w(e).some(i=>!s[i])?r(n,{}):r(e,s)}function xt(e){let t={...e,symbol:u(e.symbol)},n=l(t.borroRatePct),s=Et(t.feePct),a;n?t.kind==="usdg"?a=c(A,{borro_rate:y(t.borroRatePct),fee_clause:s,comparison_clause:kt(t.borroRatePct,t.layerbankRatePct)}):a=c(t.borroRatePct<1?S:O,{symbol:t.symbol,borro_rate:y(t.borroRatePct),fee_clause:s}):a=c(T,{fee_clause:s});let i;return t.readyAmount===void 0||t.totalAmount===void 0?i=r(M,{}):ft(t.readyAmount,t.totalAmount)?i=r(K,{total:d(t.totalAmount),symbol:t.symbol}):i=r($,{ready:d(t.readyAmount),total:d(t.totalAmount),symbol:t.symbol}),{intro:r(R,{symbol:t.symbol}),independence:r(k,{}),reward:a,...t.kind==="stock"?{catch:r(g,{symbol:t.symbol})}:{},risk:r(F,{risk_clause:ht(t)}),takingOut:i,cost:f(W,{in:t.gasInUsd,out:t.gasOutUsd},Y),notes:r(q,{})}}function Bt(e){let t=xt(e),{intro:n,independence:s,reward:a,risk:i,takingOut:m,cost:mt}=t;return[n,"",s,a,...t.catch?[t.catch]:[],i,m,mt].join(`
|
|
21
|
+
`)}function Ct(e){let t={...e,symbol:u(e.symbol),vaultSymbol:yt(e.vaultSymbol)},n=l(t.borroRatePct),s=t.readyAmount!==void 0&&t.totalAmount!==void 0;return c(H,{amount:t.amount,symbol:t.symbol,reward_clause:n?r(Z,{borro_rate:y(t.borroRatePct)}):r(_,{}),stock_catch_clause:t.kind==="stock"?r(g,{symbol:t.symbol}):"",shares:t.shares,vault_symbol:t.vaultSymbol,floor_clause:t.viaBuilder?bt.text.replace("{minShares}",t.sharesMin):r(z,{min_shares:t.sharesMin}),route_clause:r(t.viaBuilder?V:j,{}),risk_clause:ht(t),taking_out_clause:s?r(Q,{ready:d(t.readyAmount),total:d(t.totalAmount),symbol:t.symbol}):r(J,{}),cost_line:f(X,{in:t.gasInUsd,out:t.gasOutUsd})})}function vt(e){let t={...e,symbol:u(e.symbol),vaultSymbol:yt(e.vaultSymbol)};return c(tt,{amount_or_all:t.isAll?`all ${t.amount}`:t.amount,symbol:t.symbol,out:t.out,shares:t.shares,vault_symbol:t.vaultSymbol,liquidity_note:t.liquidity?r(et,{ready:t.liquidity.ready,symbol:t.symbol,max_now:t.liquidity.maxNow}):"",drift_notice:t.drift?r(nt,{}):"",cost_line:f(ot,{out:t.gasOutUsd})})}function It(e){return r(ct,{symbol:u(e)})}function Dt(){return r(dt,{})}function At(e){return e===void 0||/^[0.,\s]*$/.test(e)}function Lt(e,t){switch(e){case"unverified":{let n=t.vaultLabel,s=n&&_t.test(n)?`the vault at ${n}`:n&&p.test(n)?`the ${n} vault`:"this vault";return r(rt,{vault_label:s})}case"setup-mismatch":return r(st,{});case"too-little-ready":{let n=t,s=u(n.symbol);return At(n.maxNow)?r(it,{ready:n.ready,requested:n.requested,symbol:s}):r(at,{ready:n.ready,requested:n.requested,max_now:n.maxNow,symbol:s})}case"no-shares":return r(lt,{symbol:u(t.symbol)});case"deposit-would-revert":return r(ut,{});default:throw new Error(`Unknown Borro refusal kind: ${String(e)}`)}}export{h as a,R as b,k as c,E as d,x as e,A as f,O as g,S as h,_ as i,T as j,g as k,N as l,B as m,C as n,v as o,I as p,D as q,L as r,U as s,P as t,F as u,$ as v,K as w,M as x,W as y,Y as z,G as A,q as B,H as C,V as D,bt as E,j as F,z as G,Z as H,Q as I,J,X as K,tt as L,et as M,ot as N,nt as O,rt as P,st as Q,at as R,it as S,lt as T,ut as U,ct as V,dt as W,Tt as X,Nt as Y,y as Z,d as _,wt as $,Rt as aa,kt as ba,ht as ca,xt as da,Bt as ea,Ct as fa,vt as ga,It as ha,Dt as ia,Lt as ja};
|