@oakagentkit/core 0.1.1 → 0.1.9
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 +0 -1219
- package/build/dist/api/addresses.js +1 -1
- package/build/dist/api/amounts.d.ts +0 -1
- package/build/dist/api/amounts.js +1 -1
- package/build/dist/api/args.d.ts +19 -0
- package/build/dist/api/args.js +1 -0
- package/build/dist/api/canonical.d.ts +0 -1
- package/build/dist/api/canonical.js +1 -1
- package/build/dist/api/chain.d.ts +2 -0
- package/build/dist/api/chain.js +1 -1
- package/build/dist/api/errors.js +1 -1
- package/build/dist/api/gas.js +1 -1
- package/build/dist/api/grandfather.js +1 -1
- package/build/dist/api/guards.d.ts +23 -0
- package/build/dist/api/guards.js +1 -0
- package/build/dist/api/history.js +1 -1
- package/build/dist/api/http.js +1 -1
- package/build/dist/api/identity-link.js +1 -1
- package/build/dist/api/launch.d.ts +1 -0
- package/build/dist/api/launch.js +1 -1
- package/build/dist/api/merkle.js +1 -1
- package/build/dist/api/metadata.js +1 -1
- package/build/dist/api/module.js +1 -1
- package/build/dist/api/modules/beefy/boosts.d.ts +132 -0
- package/build/dist/api/modules/beefy/boosts.js +1 -0
- package/build/dist/api/modules/beefy/clm.d.ts +282 -0
- package/build/dist/api/modules/beefy/clm.js +1 -0
- package/build/dist/api/modules/beefy/guard.d.ts +5 -0
- package/build/dist/api/modules/beefy/guard.js +1 -0
- package/build/dist/api/modules/beefy/index.js +1 -1
- package/build/dist/api/modules/beefy/liquidity.d.ts +237 -0
- package/build/dist/api/modules/beefy/liquidity.js +1 -0
- package/build/dist/api/modules/beefy/management.d.ts +100 -0
- package/build/dist/api/modules/beefy/management.js +1 -0
- package/build/dist/api/modules/beefy/vaults.d.ts +14 -0
- package/build/dist/api/modules/beefy/vaults.js +1 -0
- package/build/dist/api/modules/clanker/extensions.d.ts +62 -0
- package/build/dist/api/modules/clanker/extensions.js +1 -0
- package/build/dist/api/modules/clanker/index.js +1 -1
- package/build/dist/api/modules/clanker/manage.d.ts +2 -0
- package/build/dist/api/modules/clanker/manage.js +1 -0
- package/build/dist/api/modules/clanker/pool-config.d.ts +96 -0
- package/build/dist/api/modules/clanker/pool-config.js +1 -0
- package/build/dist/api/modules/clanker/protocol.d.ts +2 -0
- package/build/dist/api/modules/clanker/protocol.js +1 -0
- package/build/dist/api/modules/clanker/state.d.ts +246 -0
- package/build/dist/api/modules/clanker/state.js +1 -0
- package/build/dist/api/modules/erc8004/abi.d.ts +808 -0
- package/build/dist/api/modules/erc8004/abi.js +1 -0
- package/build/dist/api/modules/erc8004/common.d.ts +69 -0
- package/build/dist/api/modules/erc8004/common.js +1 -0
- package/build/dist/api/modules/erc8004/domain.d.ts +3 -0
- package/build/dist/api/modules/erc8004/domain.js +1 -0
- package/build/dist/api/modules/erc8004/index.d.ts +3 -171
- package/build/dist/api/modules/erc8004/index.js +1 -1
- package/build/dist/api/modules/erc8004/management.d.ts +4 -0
- package/build/dist/api/modules/erc8004/management.js +1 -0
- package/build/dist/api/modules/erc8004/reputation.d.ts +3 -0
- package/build/dist/api/modules/erc8004/reputation.js +1 -0
- package/build/dist/api/modules/erc8004/services.d.ts +2 -0
- package/build/dist/api/modules/erc8004/services.js +1 -0
- package/build/dist/api/modules/erc8004/validation.d.ts +2 -0
- package/build/dist/api/modules/erc8004/validation.js +1 -0
- package/build/dist/api/modules/grove/index.js +1 -1
- package/build/dist/api/modules/heyresearch/freshness.d.ts +12 -0
- package/build/dist/api/modules/heyresearch/freshness.js +1 -0
- package/build/dist/api/modules/heyresearch/index.js +1 -1
- package/build/dist/api/modules/heyresearch/public-reads.d.ts +5 -0
- package/build/dist/api/modules/heyresearch/public-reads.js +1 -0
- package/build/dist/api/modules/hoodag/chain-reads.d.ts +33 -0
- package/build/dist/api/modules/hoodag/chain-reads.js +1 -0
- package/build/dist/api/modules/hoodag/index.d.ts +9 -1
- package/build/dist/api/modules/hoodag/index.js +1 -1
- package/build/dist/api/modules/hoodag/management.d.ts +2 -0
- package/build/dist/api/modules/hoodag/management.js +1 -0
- package/build/dist/api/modules/hoodag/public-reads.d.ts +2 -0
- package/build/dist/api/modules/hoodag/public-reads.js +1 -0
- package/build/dist/api/modules/hoodag/reconstruct.d.ts +14 -0
- package/build/dist/api/modules/hoodag/reconstruct.js +1 -0
- package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
- package/build/dist/api/modules/hoodlock/buyback.d.ts +28 -0
- package/build/dist/api/modules/hoodlock/buyback.js +1 -0
- package/build/dist/api/modules/hoodlock/commerce.d.ts +24 -0
- package/build/dist/api/modules/hoodlock/commerce.js +1 -0
- package/build/dist/api/modules/hoodlock/fee.d.ts +15 -0
- package/build/dist/api/modules/hoodlock/fee.js +1 -0
- package/build/dist/api/modules/hoodlock/guard.d.ts +5 -0
- package/build/dist/api/modules/hoodlock/guard.js +1 -0
- package/build/dist/api/modules/hoodlock/index.d.ts +4 -0
- package/build/dist/api/modules/hoodlock/index.js +1 -1
- package/build/dist/api/modules/hoodlock/lifecycle.d.ts +285 -0
- package/build/dist/api/modules/hoodlock/lifecycle.js +1 -0
- package/build/dist/api/modules/hoodlock/locks-burn.d.ts +3 -3
- package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
- package/build/dist/api/modules/hoodlock/public.d.ts +3 -0
- package/build/dist/api/modules/hoodlock/public.js +1 -0
- package/build/dist/api/modules/hookr/actions.d.ts +4 -0
- package/build/dist/api/modules/hookr/actions.js +1 -0
- package/build/dist/api/modules/hookr/addons.d.ts +4 -0
- package/build/dist/api/modules/hookr/addons.js +1 -0
- package/build/dist/api/modules/hookr/contracts.d.ts +30 -0
- package/build/dist/api/modules/hookr/contracts.js +1 -0
- package/build/dist/api/modules/hookr/create-cancel.d.ts +10 -73
- package/build/dist/api/modules/hookr/create-cancel.js +1 -1
- package/build/dist/api/modules/hookr/discovery.d.ts +3 -0
- package/build/dist/api/modules/hookr/discovery.js +1 -0
- package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
- package/build/dist/api/modules/hookr/index.d.ts +0 -3
- package/build/dist/api/modules/hookr/index.js +1 -1
- package/build/dist/api/modules/hookr/public-reads.d.ts +4 -0
- package/build/dist/api/modules/hookr/public-reads.js +1 -0
- package/build/dist/api/modules/hookr/relay.d.ts +304 -0
- package/build/dist/api/modules/hookr/relay.js +1 -0
- package/build/dist/api/modules/hookr/revenue.d.ts +5 -0
- package/build/dist/api/modules/hookr/revenue.js +1 -0
- package/build/dist/api/modules/kyberswap/index.d.ts +18 -2
- package/build/dist/api/modules/kyberswap/index.js +1 -1
- package/build/dist/api/modules/kyberswap/source-pools.d.ts +9 -0
- package/build/dist/api/modules/kyberswap/source-pools.js +1 -0
- package/build/dist/api/modules/lighter/index.js +1 -1
- package/build/dist/api/modules/longbow/administration.d.ts +119 -0
- package/build/dist/api/modules/longbow/administration.js +1 -0
- package/build/dist/api/modules/longbow/analytics.d.ts +272 -0
- package/build/dist/api/modules/longbow/analytics.js +1 -0
- package/build/dist/api/modules/longbow/fixed.d.ts +126 -0
- package/build/dist/api/modules/longbow/fixed.js +1 -0
- package/build/dist/api/modules/longbow/index.d.ts +20 -2
- package/build/dist/api/modules/longbow/index.js +1 -1
- package/build/dist/api/modules/longbow/nft.d.ts +236 -0
- package/build/dist/api/modules/longbow/nft.js +1 -0
- package/build/dist/api/modules/longbow/rebates.d.ts +152 -0
- package/build/dist/api/modules/longbow/rebates.js +1 -0
- package/build/dist/api/modules/longbow/staking.d.ts +4 -0
- package/build/dist/api/modules/longbow/staking.js +1 -0
- 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/perps-batch.d.ts +4 -0
- package/build/dist/api/modules/meridian/perps-batch.js +1 -0
- package/build/dist/api/modules/meridian/perps-common.d.ts +56 -0
- package/build/dist/api/modules/meridian/perps-common.js +1 -0
- package/build/dist/api/modules/meridian/perps-guards.d.ts +3 -0
- package/build/dist/api/modules/meridian/perps-guards.js +1 -0
- package/build/dist/api/modules/meridian/perps-intents.d.ts +18 -0
- package/build/dist/api/modules/meridian/perps-intents.js +1 -0
- package/build/dist/api/modules/meridian/perps-stream.d.ts +3 -0
- package/build/dist/api/modules/meridian/perps-stream.js +1 -0
- package/build/dist/api/modules/meridian/perps.d.ts +3 -0
- package/build/dist/api/modules/meridian/perps.js +1 -0
- package/build/dist/api/modules/meridian/predict-read.d.ts +2 -0
- package/build/dist/api/modules/meridian/predict-read.js +1 -0
- package/build/dist/api/modules/meridian/rfq.d.ts +29 -0
- package/build/dist/api/modules/meridian/rfq.js +1 -1
- package/build/dist/api/modules/merkl/discovery.d.ts +2 -0
- package/build/dist/api/modules/merkl/discovery.js +1 -0
- package/build/dist/api/modules/merkl/index.d.ts +10 -1
- package/build/dist/api/modules/merkl/index.js +1 -1
- package/build/dist/api/modules/merkl/manage.d.ts +2 -0
- package/build/dist/api/modules/merkl/manage.js +1 -0
- package/build/dist/api/modules/merkl/protocol.d.ts +2 -0
- package/build/dist/api/modules/merkl/protocol.js +1 -0
- package/build/dist/api/modules/morpho/allocator.d.ts +308 -0
- package/build/dist/api/modules/morpho/allocator.js +1 -0
- package/build/dist/api/modules/morpho/bundles-abi.d.ts +705 -0
- package/build/dist/api/modules/morpho/bundles-abi.js +1 -0
- package/build/dist/api/modules/morpho/bundles.d.ts +3 -0
- package/build/dist/api/modules/morpho/bundles.js +1 -0
- package/build/dist/api/modules/morpho/in-kind.d.ts +85 -0
- package/build/dist/api/modules/morpho/in-kind.js +1 -0
- package/build/dist/api/modules/morpho/index.d.ts +11 -3
- package/build/dist/api/modules/morpho/index.js +1 -12
- package/build/dist/api/modules/morpho/local-guard.d.ts +26 -0
- package/build/dist/api/modules/morpho/local-guard.js +1 -0
- package/build/dist/api/modules/morpho/midnight-abi.d.ts +1690 -0
- package/build/dist/api/modules/morpho/midnight-abi.js +1 -0
- package/build/dist/api/modules/morpho/midnight.d.ts +179 -0
- package/build/dist/api/modules/morpho/midnight.js +1 -0
- package/build/dist/api/modules/morpho/protocol.d.ts +290 -0
- package/build/dist/api/modules/morpho/protocol.js +1 -0
- package/build/dist/api/modules/morpho/surface.d.ts +4 -0
- package/build/dist/api/modules/morpho/surface.js +1 -0
- package/build/dist/api/modules/morpho/vault-management.d.ts +10 -0
- package/build/dist/api/modules/morpho/vault-management.js +1 -0
- package/build/dist/api/modules/morpho/vault-tools.d.ts +6 -0
- package/build/dist/api/modules/morpho/vault-tools.js +1 -0
- package/build/dist/api/modules/morpho/vault-v2.d.ts +190 -0
- package/build/dist/api/modules/morpho/vault-v2.js +1 -0
- package/build/dist/api/modules/netnet/blackjack-hashes.d.ts +89 -0
- package/build/dist/api/modules/netnet/blackjack-hashes.js +1 -0
- package/build/dist/api/modules/netnet/card-abi.d.ts +3758 -0
- package/build/dist/api/modules/netnet/card-abi.js +1 -0
- package/build/dist/api/modules/netnet/card-plan.d.ts +43 -0
- package/build/dist/api/modules/netnet/card-plan.js +1 -0
- package/build/dist/api/modules/netnet/card-policy.d.ts +10 -0
- package/build/dist/api/modules/netnet/card-policy.js +1 -0
- package/build/dist/api/modules/netnet/card-read.d.ts +2 -0
- package/build/dist/api/modules/netnet/card-read.js +1 -0
- package/build/dist/api/modules/netnet/card-recovery.d.ts +2 -0
- package/build/dist/api/modules/netnet/card-recovery.js +1 -0
- package/build/dist/api/modules/netnet/desk-action-abi.d.ts +2 -0
- package/build/dist/api/modules/netnet/desk-action-abi.js +1 -0
- package/build/dist/api/modules/netnet/desk-action.d.ts +3 -0
- package/build/dist/api/modules/netnet/desk-action.js +1 -0
- package/build/dist/api/modules/netnet/desk-read.d.ts +5 -0
- package/build/dist/api/modules/netnet/desk-read.js +1 -0
- package/build/dist/api/modules/netnet/desk-registry.d.ts +5 -0
- package/build/dist/api/modules/netnet/desk-registry.js +1 -0
- package/build/dist/api/modules/netnet/financial-abi.d.ts +1764 -0
- package/build/dist/api/modules/netnet/financial-abi.js +1 -0
- package/build/dist/api/modules/netnet/financial.d.ts +13 -0
- package/build/dist/api/modules/netnet/financial.js +1 -0
- package/build/dist/api/modules/netnet/index.d.ts +1 -0
- package/build/dist/api/modules/netnet/index.js +1 -1
- package/build/dist/api/modules/netnet/staking.d.ts +8 -0
- package/build/dist/api/modules/netnet/staking.js +1 -0
- package/build/dist/api/modules/orbio/gateway.d.ts +24 -0
- package/build/dist/api/modules/orbio/gateway.js +1 -0
- package/build/dist/api/modules/orbio/index.d.ts +3 -1
- package/build/dist/api/modules/orbio/index.js +1 -1
- package/build/dist/api/modules/orbio/pins.d.ts +457 -0
- package/build/dist/api/modules/orbio/pins.js +1 -0
- package/build/dist/api/modules/pons/claim.d.ts +33 -1
- package/build/dist/api/modules/pons/claim.js +1 -1
- package/build/dist/api/modules/pons/holder-directory.d.ts +35 -0
- package/build/dist/api/modules/pons/holder-directory.js +1 -0
- package/build/dist/api/modules/pons/index.js +1 -1
- package/build/dist/api/modules/pons/launch-status.d.ts +151 -5
- 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.d.ts +3 -0
- package/build/dist/api/modules/pons/reads.js +1 -0
- package/build/dist/api/modules/pons/swap-terms.d.ts +77 -0
- package/build/dist/api/modules/pons/swap-terms.js +1 -0
- package/build/dist/api/modules/pons/trade.d.ts +15 -2
- 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.d.ts +23 -0
- package/build/dist/api/modules/priors/coverage.js +1 -0
- package/build/dist/api/modules/priors/discovery.d.ts +4 -0
- package/build/dist/api/modules/priors/discovery.js +1 -0
- package/build/dist/api/modules/priors/features.d.ts +62 -0
- package/build/dist/api/modules/priors/features.js +1 -0
- package/build/dist/api/modules/priors/index.d.ts +9 -2
- package/build/dist/api/modules/priors/index.js +1 -1
- package/build/dist/api/modules/priors/integration.d.ts +6 -0
- package/build/dist/api/modules/priors/integration.js +1 -0
- package/build/dist/api/modules/priors/market.d.ts +10 -0
- package/build/dist/api/modules/priors/market.js +1 -0
- package/build/dist/api/modules/priors/pt.d.ts +421 -0
- package/build/dist/api/modules/priors/pt.js +1 -0
- package/build/dist/api/modules/priors/savings-exit.d.ts +85 -0
- package/build/dist/api/modules/priors/savings-exit.js +1 -0
- package/build/dist/api/modules/priors/starter-line.d.ts +495 -0
- package/build/dist/api/modules/priors/starter-line.js +1 -0
- package/build/dist/api/modules/priors/stock-swap.d.ts +101 -0
- package/build/dist/api/modules/priors/stock-swap.js +1 -0
- package/build/dist/api/modules/relay/api.d.ts +52 -0
- package/build/dist/api/modules/relay/api.js +1 -0
- package/build/dist/api/modules/relay/bootstrap.d.ts +2 -0
- package/build/dist/api/modules/relay/bootstrap.js +1 -0
- package/build/dist/api/modules/relay/discovery.d.ts +2 -0
- package/build/dist/api/modules/relay/discovery.js +1 -0
- package/build/dist/api/modules/relay/inbound.js +1 -1
- package/build/dist/api/modules/relay/index.d.ts +2 -0
- package/build/dist/api/modules/relay/index.js +1 -1
- package/build/dist/api/modules/relay/order.d.ts +2 -0
- package/build/dist/api/modules/relay/order.js +1 -0
- package/build/dist/api/modules/relay/outbound-status.js +1 -1
- package/build/dist/api/modules/relay/readiness.d.ts +5 -0
- package/build/dist/api/modules/relay/readiness.js +1 -0
- package/build/dist/api/modules/relay/reads.d.ts +3 -0
- package/build/dist/api/modules/relay/reads.js +1 -0
- package/build/dist/api/modules/relay/vaults.d.ts +24 -0
- package/build/dist/api/modules/relay/vaults.js +1 -0
- package/build/dist/api/modules/spark/actions.d.ts +2 -0
- package/build/dist/api/modules/spark/actions.js +1 -0
- package/build/dist/api/modules/spark/details.d.ts +3 -0
- package/build/dist/api/modules/spark/details.js +1 -0
- package/build/dist/api/modules/spark/index.js +1 -1
- package/build/dist/api/modules/spark/management.d.ts +7 -0
- package/build/dist/api/modules/spark/management.js +1 -0
- package/build/dist/api/modules/steakhouse/analytics.d.ts +2 -0
- package/build/dist/api/modules/steakhouse/analytics.js +1 -0
- package/build/dist/api/modules/steakhouse/erc4626.d.ts +2 -0
- package/build/dist/api/modules/steakhouse/erc4626.js +1 -0
- package/build/dist/api/modules/steakhouse/index.js +1 -1
- package/build/dist/api/modules/steakhouse/local-guard.d.ts +7 -0
- package/build/dist/api/modules/steakhouse/local-guard.js +1 -0
- package/build/dist/api/modules/steakhouse/management.d.ts +3 -0
- package/build/dist/api/modules/steakhouse/management.js +1 -0
- package/build/dist/api/modules/steakhouse/v2-exit.d.ts +19 -0
- package/build/dist/api/modules/steakhouse/v2-exit.js +1 -0
- package/build/dist/api/modules/tickerspring/basket-routes.d.ts +2 -0
- package/build/dist/api/modules/tickerspring/basket-routes.js +1 -0
- package/build/dist/api/modules/tickerspring/contract-reads.d.ts +2 -0
- package/build/dist/api/modules/tickerspring/contract-reads.js +1 -0
- package/build/dist/api/modules/tickerspring/discovery.d.ts +27 -0
- package/build/dist/api/modules/tickerspring/discovery.js +1 -0
- package/build/dist/api/modules/tickerspring/exit-preview.d.ts +14 -0
- package/build/dist/api/modules/tickerspring/exit-preview.js +1 -0
- package/build/dist/api/modules/tickerspring/guards.d.ts +7 -0
- package/build/dist/api/modules/tickerspring/guards.js +1 -0
- package/build/dist/api/modules/tickerspring/index.d.ts +80 -1
- package/build/dist/api/modules/tickerspring/index.js +1 -1
- package/build/dist/api/modules/tickerspring/journeys.d.ts +31 -0
- package/build/dist/api/modules/tickerspring/journeys.js +1 -0
- package/build/dist/api/modules/tickerspring/ladder.d.ts +8 -0
- package/build/dist/api/modules/tickerspring/ladder.js +1 -0
- package/build/dist/api/modules/tickerspring/maker.d.ts +8 -0
- package/build/dist/api/modules/tickerspring/maker.js +1 -0
- package/build/dist/api/modules/tickerspring/order-accounting.d.ts +4 -0
- package/build/dist/api/modules/tickerspring/order-accounting.js +1 -0
- package/build/dist/api/modules/tickerspring/research.d.ts +2 -0
- package/build/dist/api/modules/tickerspring/research.js +1 -0
- package/build/dist/api/modules/tickerspring/strategies.d.ts +17 -0
- package/build/dist/api/modules/tickerspring/strategies.js +1 -0
- package/build/dist/api/modules/uniswap/auction-create.d.ts +112 -0
- package/build/dist/api/modules/uniswap/auction-create.js +1 -0
- package/build/dist/api/modules/uniswap/auction.d.ts +212 -0
- package/build/dist/api/modules/uniswap/auction.js +1 -0
- package/build/dist/api/modules/uniswap/batch.d.ts +22 -0
- package/build/dist/api/modules/uniswap/batch.js +1 -0
- package/build/dist/api/modules/uniswap/common.d.ts +12 -0
- package/build/dist/api/modules/uniswap/common.js +1 -0
- package/build/dist/api/modules/uniswap/fees.d.ts +54 -0
- package/build/dist/api/modules/uniswap/fees.js +1 -0
- package/build/dist/api/modules/uniswap/index.d.ts +2 -1
- package/build/dist/api/modules/uniswap/index.js +1 -1
- package/build/dist/api/modules/uniswap/local-guard.d.ts +16 -0
- package/build/dist/api/modules/uniswap/local-guard.js +1 -0
- package/build/dist/api/modules/uniswap/oracle.d.ts +2 -0
- package/build/dist/api/modules/uniswap/oracle.js +1 -0
- package/build/dist/api/modules/uniswap/pool-math.d.ts +13 -0
- package/build/dist/api/modules/uniswap/pool-math.js +1 -0
- package/build/dist/api/modules/uniswap/pools.d.ts +30 -0
- package/build/dist/api/modules/uniswap/pools.js +1 -0
- package/build/dist/api/modules/uniswap/position.d.ts +69 -0
- package/build/dist/api/modules/uniswap/position.js +1 -0
- package/build/dist/api/modules/uniswap/protocol.d.ts +154 -0
- package/build/dist/api/modules/uniswap/protocol.js +1 -0
- package/build/dist/api/modules/uniswap/token-jar.d.ts +52 -0
- package/build/dist/api/modules/uniswap/token-jar.js +1 -0
- package/build/dist/api/modules/uniswap/trade-batch.d.ts +2 -0
- package/build/dist/api/modules/uniswap/trade-batch.js +1 -0
- package/build/dist/api/modules/uniswap/trade.d.ts +406 -0
- package/build/dist/api/modules/uniswap/trade.js +1 -0
- package/build/dist/api/modules/uniswap/v2.d.ts +180 -0
- package/build/dist/api/modules/uniswap/v2.js +1 -0
- package/build/dist/api/modules/uniswap/v3.d.ts +23 -2
- package/build/dist/api/modules/uniswap/v3.js +1 -1
- package/build/dist/api/modules/uniswap/v4.d.ts +17 -28
- package/build/dist/api/modules/uniswap/v4.js +1 -1
- package/build/dist/api/modules/uniswap/wrap.d.ts +17 -0
- package/build/dist/api/modules/uniswap/wrap.js +1 -0
- package/build/dist/api/modules/velora/claims.d.ts +86 -0
- package/build/dist/api/modules/velora/claims.js +1 -0
- package/build/dist/api/modules/velora/delta-reads.d.ts +2 -0
- package/build/dist/api/modules/velora/delta-reads.js +1 -0
- package/build/dist/api/modules/velora/index.js +1 -1
- package/build/dist/api/owner-signature.d.ts +29 -0
- package/build/dist/api/owner-signature.js +1 -0
- package/build/dist/api/positions.js +1 -1
- package/build/dist/api/pricenote.d.ts +0 -1
- package/build/dist/api/pricenote.js +1 -1
- package/build/dist/api/prices.js +1 -1
- package/build/dist/api/pricing.d.ts +6 -15
- package/build/dist/api/pricing.js +1 -1
- package/build/dist/api/routes.js +1 -1
- package/build/dist/api/rpc.d.ts +23 -0
- package/build/dist/api/rpc.js +1 -0
- package/build/dist/api/secret-fields.js +1 -1
- package/build/dist/api/send.d.ts +45 -0
- package/build/dist/api/send.js +1 -0
- package/build/dist/api/signing-registry.d.ts +19 -0
- package/build/dist/api/signing-registry.js +1 -0
- package/build/dist/api/signing.d.ts +162 -0
- package/build/dist/api/signing.js +1 -0
- package/build/dist/api/simulate.js +1 -1
- package/build/dist/api/swap.d.ts +62 -27
- package/build/dist/api/swap.js +1 -1
- package/build/dist/api/tokens.d.ts +5 -0
- package/build/dist/api/tokens.js +1 -1
- package/build/dist/api/tool-policy.d.ts +7 -0
- package/build/dist/api/tool-policy.js +1 -1
- package/build/dist/api/tx.js +1 -1
- package/build/dist/api/types.d.ts +12 -0
- package/build/dist/api/untrusted.js +1 -1
- package/build/dist/api/vendor-limits.js +1 -1
- package/build/dist/chunks/2EDXKJ3B.js +1 -0
- package/build/dist/chunks/2EGFALNH.js +1 -0
- package/build/dist/chunks/2LM5C7FQ.js +1 -0
- package/build/dist/chunks/2NA6JLEC.js +1 -0
- package/build/dist/chunks/2O6A6WEX.js +1 -0
- package/build/dist/chunks/37QNUNED.js +1 -0
- package/build/dist/chunks/3CCBUYUM.js +1 -0
- package/build/dist/chunks/3RFSGU2Y.js +1 -0
- package/build/dist/chunks/{XTUXR43N.js → 3Z3U4YPA.js} +1 -1
- package/build/dist/chunks/4CDR7F4I.js +1 -0
- package/build/dist/chunks/4X6JEMSF.js +1 -0
- package/build/dist/chunks/53N7PNJH.js +1 -0
- package/build/dist/chunks/5EHQM6DM.js +1 -0
- package/build/dist/chunks/5H3MQWH7.js +18 -0
- package/build/dist/chunks/5XFXH2JT.js +1 -0
- package/build/dist/chunks/5YS5V2LK.js +1 -0
- package/build/dist/chunks/65QFM4JU.js +1 -0
- package/build/dist/chunks/67TJOOBI.js +1 -0
- package/build/dist/chunks/6HV5BR7P.js +1 -0
- package/build/dist/chunks/{VBWJOG3N.js → 6IM6A5VA.js} +1 -1
- package/build/dist/chunks/6JCEJ66K.js +1 -0
- package/build/dist/chunks/6NR7SVRO.js +1 -0
- package/build/dist/chunks/6SB3FB3P.js +1 -0
- package/build/dist/chunks/6SCCW74G.js +1 -0
- package/build/dist/chunks/73N3TOJL.js +1 -0
- package/build/dist/chunks/74BPMUAG.js +1 -0
- package/build/dist/chunks/7B5UH2VS.js +1 -0
- package/build/dist/chunks/7LDAJ6BM.js +1 -0
- package/build/dist/chunks/7MR37STI.js +1 -0
- package/build/dist/chunks/7US6PD56.js +1 -0
- package/build/dist/chunks/7YU6DELJ.js +1 -0
- package/build/dist/chunks/AFHHRDPJ.js +1 -0
- package/build/dist/chunks/AIWZGIZ6.js +1 -0
- package/build/dist/chunks/AXYOJBX6.js +1 -0
- package/build/dist/chunks/AYM5L6L7.js +1 -0
- package/build/dist/chunks/B72Q2EQ2.js +1 -0
- package/build/dist/chunks/B7V7AA5A.js +1 -0
- package/build/dist/chunks/BBQVTEYB.js +1 -0
- package/build/dist/chunks/BQLLTY4L.js +1 -0
- package/build/dist/chunks/BYXBS45D.js +1 -0
- package/build/dist/chunks/C2FEXLMA.js +1 -0
- package/build/dist/chunks/C3TJLARP.js +1 -0
- package/build/dist/chunks/C3ZZSGSP.js +1 -0
- package/build/dist/chunks/C5LR6F4B.js +1 -0
- package/build/dist/chunks/CAYBSVA6.js +1 -0
- package/build/dist/chunks/CBA776XQ.js +1 -0
- package/build/dist/chunks/CCEWSOBT.js +1 -0
- package/build/dist/chunks/CEQNXF6A.js +1 -0
- package/build/dist/chunks/CS55ERS3.js +1 -0
- package/build/dist/chunks/CXMC3T6B.js +1 -0
- package/build/dist/chunks/{PQHU5A3U.js → D3OWLDVB.js} +1 -1
- package/build/dist/chunks/DHXVYHT4.js +1 -0
- package/build/dist/chunks/E2IVNGLC.js +1 -0
- package/build/dist/chunks/E2Q5IA67.js +1 -0
- package/build/dist/chunks/{RYOVSHKO.js → E7ASOYQI.js} +1 -1
- package/build/dist/chunks/EAEQOS7Y.js +1 -0
- package/build/dist/chunks/EC5W3UZD.js +1 -0
- package/build/dist/chunks/{XAB4OIE3.js → EG6M6SSO.js} +1 -1
- package/build/dist/chunks/EHVPRQHS.js +1 -0
- package/build/dist/chunks/EKGHKEKV.js +1 -0
- package/build/dist/chunks/EVANKNJV.js +1 -0
- package/build/dist/chunks/F2YH72GF.js +1 -0
- package/build/dist/chunks/F3TJCOVV.js +1 -0
- package/build/dist/chunks/F6WBPPBN.js +1 -0
- package/build/dist/chunks/FL3EF72E.js +1 -0
- package/build/dist/chunks/FLXID6I3.js +1 -0
- package/build/dist/chunks/FYTF2QMS.js +1 -0
- package/build/dist/chunks/G7UKNO2I.js +1 -0
- package/build/dist/chunks/GZ5TW3WB.js +1 -0
- package/build/dist/chunks/H4S2ZCWK.js +1 -0
- package/build/dist/chunks/H6ED3RHF.js +1 -0
- package/build/dist/chunks/HACP2Q6D.js +3 -0
- package/build/dist/chunks/HF2AGJZC.js +1 -0
- package/build/dist/chunks/HFQS5344.js +1 -0
- package/build/dist/chunks/{74X7PXPR.js → HIMVOTIU.js} +1 -1
- package/build/dist/chunks/HL2MLC3O.js +1 -0
- package/build/dist/chunks/HNMOB76J.js +1 -0
- package/build/dist/chunks/HQVC6X3T.js +1 -0
- package/build/dist/chunks/HYIEQG4X.js +1 -0
- package/build/dist/chunks/HZUWK5B2.js +1 -0
- package/build/dist/chunks/IHGVCPVA.js +2 -0
- package/build/dist/chunks/IKP3Z3RX.js +1 -0
- package/build/dist/chunks/ITIIHCZK.js +1 -0
- package/build/dist/chunks/IWALIX7Q.js +1 -0
- package/build/dist/chunks/JOMK32QW.js +1 -0
- package/build/dist/chunks/JRO6WTK4.js +1 -0
- package/build/dist/chunks/JRVTSGAT.js +1 -0
- package/build/dist/chunks/JRZLKIYB.js +1 -0
- package/build/dist/chunks/JVTVOK6P.js +1 -0
- package/build/dist/chunks/{XN4WDN3O.js → JXOEJPJ4.js} +1 -1
- package/build/dist/chunks/K2LWX3PZ.js +1 -0
- package/build/dist/chunks/KEPQXFHU.js +1 -0
- package/build/dist/chunks/L24EOVLT.js +1 -0
- package/build/dist/chunks/L2MTPRU7.js +1 -0
- package/build/dist/chunks/LBEMCOND.js +1 -0
- package/build/dist/chunks/LFKSXD3S.js +1 -0
- package/build/dist/chunks/MRWCFTMS.js +1 -0
- package/build/dist/chunks/MWWYIFXJ.js +1 -0
- package/build/dist/chunks/MYBDO5SA.js +1 -0
- package/build/dist/chunks/N77ANGBT.js +1 -0
- package/build/dist/chunks/NCQFWPAW.js +1 -0
- package/build/dist/chunks/NHCRJC5X.js +1 -0
- package/build/dist/chunks/NNZ4SZZ4.js +1 -0
- package/build/dist/chunks/NUWL6TJM.js +1 -0
- package/build/dist/chunks/O47JXRXN.js +1 -0
- package/build/dist/chunks/{MEZH7RPA.js → OG5HRQU4.js} +1 -1
- package/build/dist/chunks/OJLMF5AR.js +1 -0
- package/build/dist/chunks/OJMYESQU.js +1 -0
- package/build/dist/chunks/OJP7Y4AM.js +1 -0
- package/build/dist/chunks/OK3TQFXZ.js +1 -0
- package/build/dist/chunks/OW7GOYKA.js +1 -0
- package/build/dist/chunks/P4UQGWCP.js +1 -0
- package/build/dist/chunks/P6ELT4ZV.js +1 -0
- package/build/dist/chunks/PHXWBC4O.js +1 -0
- package/build/dist/chunks/Q2VMH2LB.js +1 -0
- package/build/dist/chunks/QH3AL3UN.js +1 -0
- package/build/dist/chunks/QHHZDXRG.js +1 -0
- package/build/dist/chunks/QNPEKNWM.js +1 -0
- package/build/dist/chunks/QOY4AANB.js +1 -0
- package/build/dist/chunks/QRUC7EFE.js +1 -0
- package/build/dist/chunks/QYKXWBZC.js +1 -0
- package/build/dist/chunks/REGJY5RC.js +1 -0
- package/build/dist/chunks/RETS2ZEK.js +1 -0
- package/build/dist/chunks/RFJCG4NA.js +1 -0
- package/build/dist/chunks/RNEMTLQG.js +1 -0
- package/build/dist/chunks/RRSODRGT.js +1 -0
- package/build/dist/chunks/SEW7UP5U.js +1 -0
- package/build/dist/chunks/SLSPWXR6.js +1 -0
- package/build/dist/chunks/SPRVVJXI.js +1 -0
- package/build/dist/chunks/SQ5BNSXR.js +1 -0
- package/build/dist/chunks/SQH7A4O3.js +1 -0
- package/build/dist/chunks/SS7U3CMZ.js +1 -0
- package/build/dist/chunks/SXX52Y27.js +1 -0
- package/build/dist/chunks/SYZ55RCX.js +1 -0
- package/build/dist/chunks/T6MTTMLQ.js +1 -0
- package/build/dist/chunks/TAI63P6E.js +1 -0
- package/build/dist/chunks/TCS3ICNE.js +2 -0
- package/build/dist/chunks/TRCP7X5P.js +1 -0
- package/build/dist/chunks/TWR7BF72.js +1 -0
- package/build/dist/chunks/UEYFMXV3.js +1 -0
- package/build/dist/chunks/UWOFA6GV.js +1 -0
- package/build/dist/chunks/UXG67LH3.js +1 -0
- package/build/dist/chunks/V6SDKPZS.js +1 -0
- package/build/dist/chunks/VCWDJQDE.js +1 -0
- package/build/dist/chunks/{6YQ2RX5I.js → VXLJRRKV.js} +1 -1
- package/build/dist/chunks/W6G2QGYF.js +1 -0
- package/build/dist/chunks/WCKMQFGS.js +1117 -0
- package/build/dist/chunks/WHT45EFX.js +1 -0
- package/build/dist/chunks/WIDTTGSH.js +1 -0
- package/build/dist/chunks/WQZLYX64.js +1 -0
- package/build/dist/chunks/X5V2Z2NM.js +1 -0
- package/build/dist/chunks/{Z53DADZ4.js → XCFA73P2.js} +1 -1
- package/build/dist/chunks/XPFVT2EA.js +1 -0
- package/build/dist/chunks/XV6F3RET.js +1 -0
- package/build/dist/chunks/XW7RH7YY.js +1 -0
- package/build/dist/chunks/YHPOXAKA.js +1 -0
- package/build/dist/chunks/YONRUWN7.js +1 -0
- package/build/dist/chunks/YR3QJVJQ.js +1 -0
- package/build/dist/chunks/Z4LJ2GTX.js +1 -0
- package/build/dist/chunks/ZL3KVABO.js +1 -0
- package/build/dist/chunks/ZPM2MFXZ.js +1 -0
- package/build/dist/chunks/ZPNGV34U.js +1 -0
- package/build/dist/chunks/ZQI7B2Z7.js +1 -0
- package/build/dist/chunks/ZT67OMLW.js +1 -0
- package/package.json +13 -9
- package/build/dist/chunks/5B3UVWMV.js +0 -1
- package/build/dist/chunks/5BP72XOA.js +0 -1
- package/build/dist/chunks/5SH3C7XP.js +0 -1
- package/build/dist/chunks/7I6TXFXR.js +0 -1
- package/build/dist/chunks/A5O3SRHY.js +0 -1
- package/build/dist/chunks/B2LA6VVF.js +0 -3
- package/build/dist/chunks/CWQ5WXZQ.js +0 -1
- package/build/dist/chunks/F3TOOLFQ.js +0 -1
- package/build/dist/chunks/GOIVHR4B.js +0 -1
- package/build/dist/chunks/M643PYHO.js +0 -1
- package/build/dist/chunks/NDHEJGWR.js +0 -1
- package/build/dist/chunks/NNJLMS7F.js +0 -1
- package/build/dist/chunks/R5CBH2CR.js +0 -1
- package/build/dist/chunks/SUQ6PIAV.js +0 -1
- package/build/dist/chunks/SXBGOGYQ.js +0 -1
- package/build/dist/chunks/T4IYMYZD.js +0 -1
- package/build/dist/chunks/TFYLOWFO.js +0 -1
- package/build/dist/chunks/TU3KHOZK.js +0 -1
- package/build/dist/chunks/UB5U6SI2.js +0 -1
- package/build/dist/chunks/UIJWIFGV.js +0 -1
- package/build/dist/chunks/WFE3NXBF.js +0 -2
- package/build/dist/chunks/XEN45QST.js +0 -1
- package/build/dist/chunks/XKZOMGC3.js +0 -1
- package/build/dist/chunks/Y2SGXWFM.js +0 -1
- package/build/dist/chunks/Z3FZWNAJ.js +0 -1
- package/build/dist/chunks/ZJUNO5N7.js +0 -1
- package/build/dist/chunks/ZZLHDHOT.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as G}from"./E7ASOYQI.js";import{b as j,c as V,d as W}from"./HZUWK5B2.js";import{d as ae,e as L}from"./EAEQOS7Y.js";import{a as N}from"./XCFA73P2.js";import{a as v}from"./6IM6A5VA.js";import{a as R,b as ie,c as se,d as U}from"./RETS2ZEK.js";import{a as S,i as x}from"./XPFVT2EA.js";import{a as o}from"./5YS5V2LK.js";import{decodeEventLog as He,encodeAbiParameters as fe,encodeFunctionData as ye,erc20Abi as Q,getAddress as l,isAddress as $,keccak256 as $e,parseAbi as Ee,parseAbiParameters as pe,toEventSelector as we}from"viem";var A=l(x[4663].hookr.HookrLimitOrders.address),_e=l(x[4663].hookr.HookrRoot.address),ve=l(x[4663].hookr.HookrRouter.address),kt=l(x[4663].hookr.HookrRegistry.address),Ne=l(x[4663].hookr.HookrForwarder.address),Be=l(x[4663].hookr.PoolManager.address),Ot=l(x[4663].hookr.HOOKR_Token.address),Fe=l("0x000000000000000000000000000000000000dEaD"),Me=8388608,ze=200,de=60n,qe=604800n,ce=31536000n,It=10,At=100,ht="500000000000000",St="10000000000000000",ue=4096n,Y=32n,Xe=1e4,Ke=(1n<<127n)-1n,me=(1n<<128n)-1n,Ue=(1n<<160n)-1n,je=(1n<<40n)-1n,Ve=16777215,We=8388607,le=1n<<192n,J=0,F=1,Ge=2,Ye=3,Qe=we("OrderCreated(uint256,address,bytes32,bool,uint128,uint128,uint128,uint40,address)"),Ct=we("OrderCancelled(uint256,address,address,uint256,uint256)"),D=Ee(["function bountyBounds((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, bool zeroForOne, uint128 amountIn, uint128 minAmountOut) view returns (uint128 minBounty, uint128 defaultBounty, uint128 maxBounty)","function createOrder(((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, bool zeroForOne, uint128 amountIn, uint128 minAmountOut, uint160 sqrtPriceLimitX96, address recipient, uint40 expiry, uint128 bounty) params) payable returns (uint256 orderId)","function cancel(uint256 orderId, address to)","function getOrder(uint256 orderId) view returns (((address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, address owner, uint40 createdAt, uint40 expiry, bool zeroForOne, uint8 status, address recipient, uint128 amountIn, uint128 minAmountOut, uint128 bounty, uint160 sqrtPriceLimitX96))","function quoteFill(uint256 orderId) view returns (bool fillable, uint256 amountOut)","function lastOrderId() view returns (uint256)","function liabilities(address currency) view returns (uint256)","function router() view returns (address)","function registry() view returns (address)","function poolManager() view returns (address)","function forwarder() view returns (address)","event OrderCreated(uint256 indexed orderId, address indexed owner, bytes32 indexed poolId, bool zeroForOne, uint128 amountIn, uint128 minAmountOut, uint128 bounty, uint40 expiry, address recipient)","event OrderCancelled(uint256 indexed orderId, address indexed owner, address indexed to, uint256 amountIn, uint256 bounty)"]);function B(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ge(e){let t=e.toLowerCase();return t===L.toLowerCase()||t===N.toLowerCase()||t===ae.toLowerCase()}function H(e,t){if(typeof e!="string"||!e.trim())throw new o(`Provide a valid contract address for ${t}. Identify tokens by chain and address, never by symbol.`);let n=e.trim();if(!$(n,{strict:!1}))throw new o(`Invalid token address "${n}" for ${t}. Identify tokens by chain and address, never by symbol.`);return ge(n)?L:l(n)}function be(e){let t=e===void 0?S:Number(e);if(!Number.isSafeInteger(t)||t!==S)throw new o(`Hookr limit orders are only supported on Robinhood Chain (${S}).`);return S}function Ze(e){switch(e){case J:return"None";case F:return"Open";case Ge:return"Filled";case Ye:return"Cancelled";default:return"Unknown"}}function Je(e,t,n=se){if(typeof e!="string"||!/^-?\d+$/.test(e.trim()))throw new o("Signed amount must be an integer string in base units.");let r=e.trim();if(r.startsWith("-")){let i=r.slice(1),u=n(i,t);return u==="0"?"0":`-${u}`}return n(r,t)}function xt(e,t,n="floor"){return ie(e,t,n)}function ke(e){return $e(fe(pe("address, address, uint24, int24, address"),[l(e.currency0),l(e.currency1),e.fee,e.tickSpacing,l(e.hooks)]))}function Oe(e,t){let n=e.toLowerCase();if(new Set([L.toLowerCase(),Fe.toLowerCase(),A.toLowerCase(),ve.toLowerCase(),Ne.toLowerCase(),Be.toLowerCase(),t.toLowerCase()]).has(n))throw new o(`Recipient ${e} is a reserved address and cannot receive Hookr limit order funds.`)}async function Z(e,t,n,r){if(ge(e))return{address:N,symbol:j.symbol,decimals:j.decimals,chainId:t};let i=l(e),u=i.toLowerCase();if(B(r)){let s=typeof r.decimals=="number"&&Number.isInteger(r.decimals)&&r.decimals>=0&&r.decimals<=255?r.decimals:void 0,a=typeof r.symbol=="string"&&r.symbol.trim()?r.symbol.trim():void 0;if(s!==void 0&&a!==void 0)return{address:i,symbol:a,decimals:s,chainId:t}}if(u===V.address.toLowerCase())return{...V,chainId:t};if(u===W.address.toLowerCase())return{...W,chainId:t};try{let[s,a]=await Promise.all([n.readContract({address:i,abi:Q,functionName:"symbol"}),n.readContract({address:i,abi:Q,functionName:"decimals"})]);if(typeof s!="string"||!s.trim()||typeof a!="number"||!Number.isInteger(a)||a<0||a>255)throw new o(`Invalid token metadata for ${i}.`);return{address:i,symbol:s.trim(),decimals:a,chainId:t}}catch{throw new o(`Could not read valid token metadata for ${i}. Refusing to guess token decimals.`)}}function et(e){let t=B(e.key)?e.key:B(e.poolKey)?e.poolKey:void 0,n=t?.fee??e.fee??Me,r=(typeof n=="string"&&/^\d+$/.test(n),Number(n));if(!Number.isInteger(r)||r<0||r>Ve)throw new o("Pool fee must be a valid uint24 integer (default 8388608 for Hookr dynamic fee pools).");let i=t?.tickSpacing??e.tickSpacing??ze,u=(typeof i=="string"&&/^-?\d+$/.test(i),Number(i));if(!Number.isInteger(u)||u<=0||u>We)throw new o("Pool tickSpacing must be a positive int24 integer.");let s=t?.hooks??e.hooks??_e;if(typeof s!="string"||!$(s,{strict:!1}))throw new o("Provide a valid Hookr root contract address for hooks.");let a=l(s);if(t?.currency0!==void 0&&t?.currency1!==void 0||e.currency0!==void 0&&e.currency1!==void 0){let m=H(t?.currency0??e.currency0,"currency0"),I=H(t?.currency1??e.currency1,"currency1");if(m.toLowerCase()===I.toLowerCase())throw new o("Pool currency0 and currency1 must be distinct token addresses.");if(BigInt(m)>=BigInt(I))throw new o("Pool currency0 must sort strictly before currency1 by address.");let k;if(typeof e.zeroForOne=="boolean")k=e.zeroForOne;else if(e.tokenIn!==void 0||e.from!==void 0){let C=H(e.tokenIn??e.from,"tokenIn");if(C.toLowerCase()===m.toLowerCase())k=!0;else if(C.toLowerCase()===I.toLowerCase())k=!1;else throw new o("tokenIn does not match currency0 or currency1 of the pool key.")}else throw new o("Provide zeroForOne (boolean) or tokenIn when specifying a pool key.");return{key:{currency0:m,currency1:I,fee:r,tickSpacing:u,hooks:a},zeroForOne:k}}let w=e.tokenIn??e.from,f=e.tokenOut??e.to;if(w===void 0||f===void 0)throw new o("Provide either key ({ currency0, currency1, fee, tickSpacing, hooks }) with zeroForOne or tokenIn and tokenOut addresses.");let g=H(w,"tokenIn"),b=H(f,"tokenOut");if(g.toLowerCase()===b.toLowerCase())throw new o("Input and output tokens must have distinct addresses.");let y=BigInt(g)<BigInt(b),p=y?g:b,d=y?b:g;if(typeof e.zeroForOne=="boolean"&&e.zeroForOne!==y)throw new o("zeroForOne conflicts with the canonical sorting of tokenIn and tokenOut.");return{key:{currency0:p,currency1:d,fee:r,tickSpacing:u,hooks:a},zeroForOne:y}}function tt(e,t,n){let r=G(t),i=r*r;if(n){let s=U(e.toString(),i.toString(),le.toString(),"ceil");return BigInt(s)}let u=U(e.toString(),le.toString(),i.toString(),"ceil");return BigInt(u)}function T(e,t){if(typeof e=="bigint"){if(e<0n)throw new o(`${t} must be a non-negative integer.`);return e}if(typeof e=="number"){if(!Number.isSafeInteger(e)||e<0)throw new o(`${t} must be a non-negative safe integer.`);return BigInt(e)}if(typeof e=="string")return R(e.trim());throw new o(`Provide ${t} as a decimal base-unit string.`)}async function nt(e,t){if(t!==void 0)return T(t,"now");if(typeof e.getBlock=="function"){let n=await e.getBlock().catch(()=>{throw new o("Could not read the chain timestamp for Hookr order expiry.")});return BigInt(n.timestamp)}throw new o("Could not read the chain timestamp for Hookr order expiry.")}function Ie(e,t){return!e.changes||e.changes.length===0?"no net ERC-20 transfer deltas":e.changes.map(n=>`${Je(n.amount,n.token.decimals,t.formatAmount)} ${n.token.symbol}`).join(", ")}function ot(e,t,n,r){if(!e||!Array.isArray(e.logs))throw new o("Provide a transaction receipt with a logs array.");for(let i of e.logs){if(!i||typeof i.address!="string"||!$(i.address,{strict:!1})||!Array.isArray(i.topics)||typeof i.data!="string"||i.topics.some(u=>typeof u!="string"||!/^0x[0-9a-fA-F]{64}$/.test(u)))throw new o(`Malformed Hookr ${t} receipt log.`);if(i.address.toLowerCase()===A.toLowerCase()&&i.topics[0]?.toLowerCase()===n.toLowerCase()){if(i.topics.length!==4||!/^0x0{24}/i.test(i.topics[2])||t==="OrderCancelled"&&!/^0x0{24}/i.test(i.topics[3])||!/^0x[0-9a-fA-F]*$/.test(i.data)||i.data.length!==2+r*64)throw new o(`Malformed Hookr ${t} receipt log.`);return{topics:i.topics,data:i.data}}}throw new o(`Could not find Hookr ${t} event in transaction receipt logs.`)}function Ae(e){if(e.receipt!==void 0){if(!B(e.receipt)||!Array.isArray(e.receipt.logs))throw new o("Provide a transaction receipt with a logs array.");return it({logs:e.receipt.logs})}if(e.logs!==void 0){if(!Array.isArray(e.logs))throw new o("Provide receipt logs as an array.");return rt(e.logs)}}function he(e){let t=ot(e,"OrderCreated",Qe,6);try{let n=He({abi:D,eventName:"OrderCreated",...t,strict:!0});if(fe(pe("bool, uint128, uint128, uint128, uint40, address"),[n.args.zeroForOne,n.args.amountIn,n.args.minAmountOut,n.args.bounty,n.args.expiry,n.args.recipient]).toLowerCase()!==t.data.toLowerCase())throw new o("Noncanonical Hookr OrderCreated event data.");return{orderId:n.args.orderId.toString(),owner:l(n.args.owner),poolId:n.args.poolId,zeroForOne:n.args.zeroForOne,amountIn:n.args.amountIn.toString(),minAmountOut:n.args.minAmountOut.toString(),bounty:n.args.bounty.toString(),expiry:n.args.expiry.toString(),recipient:l(n.args.recipient)}}catch{throw new o("Malformed Hookr OrderCreated receipt log.")}}function rt(e){return he({logs:e}).orderId}function it(e){return he(e).orderId}function Se(e){if(Array.isArray(e)){let[n,r,i,u,s,a,c,w,f,g,b]=e;return{key:Array.isArray(n)?{currency0:n[0],currency1:n[1],fee:Number(n[2]),tickSpacing:Number(n[3]),hooks:n[4]}:n,owner:r,createdAt:i,expiry:u,zeroForOne:s,status:a,recipient:c,amountIn:BigInt(w),minAmountOut:BigInt(f),bounty:BigInt(g),sqrtPriceLimitX96:BigInt(b)}}let t=e;return{key:{currency0:t.key.currency0,currency1:t.key.currency1,fee:Number(t.key.fee),tickSpacing:Number(t.key.tickSpacing),hooks:t.key.hooks},owner:t.owner,createdAt:t.createdAt,expiry:t.expiry,zeroForOne:!!t.zeroForOne,status:Number(t.status),recipient:t.recipient,amountIn:BigInt(t.amountIn),minAmountOut:BigInt(t.minAmountOut),bounty:BigInt(t.bounty),sqrtPriceLimitX96:BigInt(t.sqrtPriceLimitX96)}}async function Ce(e,t,n){let r=T(t,"orderId");if(r<=0n)throw new o("Order ID must be a positive integer.");let i=e.clientFor(S),u=n?.order??await i.readContract({address:A,abi:D,functionName:"getOrder",args:[r]}).catch(()=>{throw new o(`Could not read Hookr order #${r}. Order coverage is incomplete.`)}),s=Se(u),a=Number(s.status);if(s.owner.toLowerCase()===L.toLowerCase()||a===J)throw new o(`Hookr order #${r} does not exist.`);let c={currency0:l(s.key.currency0),currency1:l(s.key.currency1),fee:Number(s.key.fee),tickSpacing:Number(s.key.tickSpacing),hooks:l(s.key.hooks)},w=s.zeroForOne?c.currency0:c.currency1,f=s.zeroForOne?c.currency1:c.currency0,g=m=>{let I=m.toLowerCase(),k=n?.tokens.get(I);if(k)return k;let C=Z(m,S,i);return n?.tokens.set(I,C),C},[b,y]=await Promise.all([g(w),g(f)]),p=!1,d=0n;if(a===F)try{let m=await i.readContract({address:A,abi:D,functionName:"quoteFill",args:[r]});if(typeof m[0]!="boolean"||typeof m[1]!="bigint"||m[1]<0n)throw new o(`Invalid quote for Hookr order #${r}.`);p=m[0],d=m[1]}catch{throw new o(`Could not quote Hookr order #${r}. Fillability and output amount are unknown.`)}return{orderId:r.toString(),poolId:ke(c),key:c,owner:l(s.owner),recipient:l(s.recipient),createdAt:BigInt(s.createdAt).toString(),expiry:BigInt(s.expiry).toString(),zeroForOne:s.zeroForOne,status:a,statusLabel:Ze(a),amountIn:s.amountIn.toString(),minAmountOut:s.minAmountOut.toString(),bounty:s.bounty.toString(),sqrtPriceLimitX96:s.sqrtPriceLimitX96.toString(),tokenIn:b,tokenOut:y,fillable:p,quotedAmountOut:d.toString()}}function st(e){return{name:"hookr_create",inputSchema:{type:"object",properties:{key:{type:"object",properties:{currency0:{type:"string"},currency1:{type:"string"},fee:{type:"number"},tickSpacing:{type:"number"},hooks:{type:"string"}}},tokenIn:{type:"string",description:"Input token address on chain 4663."},tokenOut:{type:"string",description:"Output token address on chain 4663."},zeroForOne:{type:"boolean",description:"True when selling currency0 for currency1."},amountIn:{type:"string",description:"Input amount in base units (uint128)."},minAmountOut:{type:"string",description:"Minimum net output amount in base units (uint128)."},tick:{type:"number",description:"Optional limit tick in [-887272, 887272]."},expiry:{type:"string",description:"Order expiry unix timestamp in seconds (uint40)."},deadline:{type:"string",description:"Alias for expiry unix timestamp in seconds."},bounty:{type:"string",description:"Keeper bounty in native ETH wei (uint128)."},recipient:{type:"string",description:"Order output recipient address (must be the signing wallet)."},sqrtPriceLimitX96:{type:"string",description:"Optional sqrtPriceLimitX96 (defaults to 0)."},chainId:{type:"number",description:"Must be 4663 (Robinhood Chain)."}},required:["amountIn"]},async execute(t,n){v(n);let r=l(n),i=be(t.chainId),u=e.clientFor(i),s=Ae(t),{key:a,zeroForOne:c}=et(t),w=c?a.currency0:a.currency1,f=c?a.currency1:a.currency0,[g,b]=await Promise.all([Z(w,i,u,t.tokenInMeta),Z(f,i,u,t.tokenOutMeta)]),y=t.recipient??r;if(typeof y!="string"||!$(y,{strict:!1}))throw new o("Provide a valid recipient address for the Hookr limit order.");let p=l(y);if(Oe(p,a.hooks),p!==r)throw new o("Hookr recipient must be the signing wallet.");if(typeof t.amountIn!="string")throw new o("Provide amountIn as an integer string in base units.");let d=R(t.amountIn);if(d<=0n||d>Ke)throw new o("amountIn must be between 1 and int128.max base units.");if(t.tick!==void 0){let P=Number(t.tick);G(P)}let m;if(t.minAmountOut!==void 0){if(typeof t.minAmountOut!="string")throw new o("Provide minAmountOut as an integer string in base units.");m=R(t.minAmountOut)}else if(t.tick!==void 0)m=tt(d,Number(t.tick),c);else throw new o("Provide minAmountOut in base units (or tick to derive minAmountOut).");if(m<=0n||m>me)throw new o("minAmountOut must be between 1 and uint128.max base units.");let I=t.sqrtPriceLimitX96!==void 0?T(t.sqrtPriceLimitX96,"sqrtPriceLimitX96"):0n;if(I>Ue)throw new o("sqrtPriceLimitX96 exceeds uint160 bounds.");let k=await nt(u,t.now),C=t.expiry??t.deadline,O;if(C!==void 0)O=T(C,"expiry");else if(t.lifetime!==void 0||t.ttlSeconds!==void 0){let P=T(t.lifetime??t.ttlSeconds,"lifetime");O=k+P}else O=k+qe;if(O<k+de)throw new o(`Order expiry (${O}) is expired or below the minimum lifetime of ${de} seconds from block timestamp ${k}.`);if(O>k+ce||O>je)throw new o(`Order expiry (${O}) exceeds the maximum lifetime of ${ce} seconds (365 days).`);let M=await u.readContract({address:A,abi:D,functionName:"bountyBounds",args:[a,c,d,m]}).catch(()=>{throw new o("Could not read Hookr bounty bounds.")}),E=BigInt(M[0]),z=BigInt(M[1]),q=BigInt(M[2]);if(t.bounty!==void 0&&typeof t.bounty!="string")throw new o("Provide bounty as an integer string in base units.");let h=t.bounty!==void 0?R(t.bounty):z,X=E>0n?E:z;if(h<E||X>0n&&h<X)throw new o(`Order keeper bounty (${h} wei) is underbounty: must be at least ${X} wei (default keeper bounty floor).`);if(h>q||h>me)throw new o(`Order keeper bounty (${h} wei) exceeds the maximum allowed bounty of ${q} wei.`);let ee=w.toLowerCase()===L.toLowerCase(),_=[];if(!ee){let P;try{let K=await u.readContract({address:w,abi:Q,functionName:"allowance",args:[r,A]});if(typeof K!="bigint"||K<0n)throw new o("Invalid token allowance.");P=K}catch{throw new o(`Could not read token allowance for ${w}. No approval was prepared.`)}P<d&&_.push(e.approval(w,A,d.toString(),i))}let De=ee?d+h:h,Le=ye({abi:D,functionName:"createOrder",args:[{key:a,zeroForOne:c,amountIn:d,minAmountOut:m,sqrtPriceLimitX96:I,recipient:p,expiry:Number(O),bounty:h}]}),te=e.formatAmount(d.toString(),g.decimals),ne=e.formatAmount(m.toString(),b.decimals),oe=e.formatAmount(h.toString(),18),Pe=e.unsignedTx({to:A,data:Le,value:De.toString(),chainId:i,description:`Create Hookr limit order on ${A}: sell ${te} ${g.symbol} (${g.address}) for at least ${ne} ${b.symbol} (${b.address}) with ${oe} ETH keeper bounty (fee=${a.fee}, tickSpacing=${a.tickSpacing}, expiry=${O}).`});_.push(Pe);let re=await e.preview(_,r),Te=Ie(re,e),Re=ke(a);return{txs:_,summary:`Hookr limit order prepared: sell ${te} ${g.symbol} for at least ${ne} ${b.symbol} (bounty ${oe} ETH, expiry ${O}; preview deltas: ${Te}).`,preview:re,poolId:Re,key:a,zeroForOne:c,amountIn:d.toString(),minAmountOut:m.toString(),bounty:h.toString(),bountyBounds:{minBounty:E.toString(),defaultBounty:z.toString(),maxBounty:q.toString()},expiry:O.toString(),recipient:p,sqrtPriceLimitX96:I.toString(),tokenIn:g,tokenOut:b,...s!==void 0?{orderId:s}:{}}}}}function at(e){return{name:"hookr_cancel",inputSchema:{type:"object",properties:{orderId:{type:"string",description:"Hookr order ID to cancel (uint256 decimal string)."},to:{type:"string",description:"Recipient address for the refunded principal and bounty (must be the signing wallet)."},chainId:{type:"number",description:"Must be 4663 (Robinhood Chain)."}},required:["orderId"]},async execute(t,n){v(n);let r=l(n),i=be(t.chainId),u=Ae(t),s=t.orderId??t.id??u;if(s===void 0)throw new o("Provide orderId to cancel a Hookr limit order.");let a=T(s,"orderId");if(a<=0n)throw new o("orderId must be a positive integer.");let c=await Ce(e,a);if(c.owner.toLowerCase()!==r.toLowerCase())throw new o(`Unauthorized cancellation: only the order owner (${c.owner}) can cancel Hookr order #${a} (caller is ${r}).`);if(c.status!==F)throw new o(`Hookr order #${a} is not open (current status: ${c.statusLabel}).`);let w=t.to??r;if(typeof w!="string"||!$(w,{strict:!1}))throw new o("Provide a valid refund recipient address for cancel.");let f=l(w);if(Oe(f,c.key.hooks),f!==r)throw new o("Hookr refund recipient must be the signing wallet.");let g=ye({abi:D,functionName:"cancel",args:[a,f]}),b=e.formatAmount(c.amountIn,c.tokenIn.decimals),y=e.formatAmount(c.bounty,18),p=e.unsignedTx({to:A,data:g,value:"0",chainId:i,description:`Cancel Hookr limit order #${a} on ${A} and refund ${b} ${c.tokenIn.symbol} plus ${y} ETH bounty to ${f}.`}),d=await e.preview([p],r),m=Ie(d,e);return{txs:[p],summary:`Cancel Hookr limit order #${a}: refund ${b} ${c.tokenIn.symbol} and ${y} ETH bounty to ${f} (preview deltas: ${m}).`,preview:d,orderId:a.toString(),to:f,refundedAmountIn:c.amountIn,refundedBounty:c.bounty,tokenIn:c.tokenIn,tokenOut:c.tokenOut}}}}function dt(e){let t=performance.now()+Xe;return new Proxy(e,{get(n,r,i){return r!=="readContract"?Reflect.get(n,r,i):async(...u)=>{let s=t-performance.now(),a=()=>new o("Hookr scan deadline exceeded. Order coverage is incomplete; retry later.");if(s<=0)throw a();let c;try{return await Promise.race([n.readContract(...u),new Promise((w,f)=>{c=setTimeout(()=>f(a()),s)})])}finally{c!==void 0&&clearTimeout(c)}}}})}function ct(e){return async t=>{v(t);let n=l(t),r=dt(e.clientFor(S)),i={...e,clientFor:()=>r},u=await r.readContract({address:A,abi:D,functionName:"lastOrderId"}).catch(()=>{throw new o("Could not read the last Hookr order ID. Order coverage is incomplete.")});if(typeof u!="bigint"||u<0n)throw new o("Could not read a valid last Hookr order ID. Order coverage is incomplete.");let s=u,a=s>ue?s-ue+1n:1n;if(s<=0n)return[];let c=[],w=new Map;for(let f=a;f<=s;f+=Y){let g=Array.from({length:Number(s-f+1n<Y?s-f+1n:Y)},(y,p)=>f+BigInt(p)),b=await Promise.all(g.map(async y=>{let p=await r.readContract({address:A,abi:D,functionName:"getOrder",args:[y]}).catch(()=>{throw new o(`Could not read Hookr order #${y}. Order coverage is incomplete.`)}),d=Se(p);if(d.owner.toLowerCase()===L||Number(d.status)===J)throw new o(`Hookr order #${y} does not exist. Order coverage is incomplete.`);return{id:y,order:d}}));for(let{id:y,order:p}of b){if(p.owner.toLowerCase()!==n.toLowerCase()||Number(p.status)!==F)continue;let d=await Ce(i,y,{order:p,tokens:w}),m=[{token:d.tokenIn,amount:d.amountIn}];BigInt(d.bounty)>0n&&m.push({token:{address:N,symbol:"ETH",decimals:18,chainId:S},amount:d.bounty});let I=e.formatAmount(d.amountIn,d.tokenIn.decimals),k=e.formatAmount(d.minAmountOut,d.tokenOut.decimals),C=e.formatAmount(d.bounty,18),O=e.formatAmount(d.quotedAmountOut,d.tokenOut.decimals);c.push({module:"hookr",id:d.orderId,chainId:S,assets:m,description:`Hookr open limit order #${d.orderId}: sell ${I} ${d.tokenIn.symbol} (${d.tokenIn.address}) for at least ${k} ${d.tokenOut.symbol} (${d.tokenOut.address}), bounty ${C} ETH, expiry ${d.expiry}, fillable=${d.fillable} (quoted output ${O} ${d.tokenOut.symbol}).`})}}return a>1n&&c.push({module:"hookr",id:"coverage",chainId:S,assets:[],description:`Hookr order coverage is incomplete: scanned IDs ${a}-${s}. Older orders require an explicit order ID.`}),c}}var xe=e=>{let t=[st(e),at(e)],n=ct(e);return{tools:t,positions:n}},Dt=xe,Lt=xe;export{A as a,_e as b,ve as c,kt as d,Ne as e,Be as f,Ot as g,Fe as h,Me as i,ze as j,de as k,qe as l,ce as m,It as n,At as o,ht as p,St as q,ue as r,Xe as s,J as t,F as u,Ge as v,Ye as w,Qe as x,Ct as y,D as z,Je as A,xt as B,ke as C,ot as D,he as E,rt as F,it as G,Se as H,Ce as I,st as J,at as K,dt as L,ct as M,xe as N,Dt as O,Lt as P};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as pe,c as me}from"./2NA6JLEC.js";import{a as ue}from"./AXYOJBX6.js";import{a as be}from"./6IM6A5VA.js";import{c as le}from"./MYBDO5SA.js";import{a as O}from"./UWOFA6GV.js";import{c as Y,d as oe,g as I,i as fe,m as re,n as se}from"./73N3TOJL.js";import{a as S,i as de,j as ie}from"./XPFVT2EA.js";import{a as o}from"./5YS5V2LK.js";import{decodeFunctionData as J,encodeFunctionData as T,erc20Abi as te,getAddress as he,keccak256 as Ce,parseAbi as P}from"viem";var q={chainId:4663,observedAt:"2026-10-31",block:"102927065",routeBlock:"102928782",sources:["https://rpc.mainnet.chain.robinhood.com","https://raw.githubusercontent.com/beefyfinance/cowcentrated-subgraph/main/abis/beefy/clm/ClmManager.json","https://raw.githubusercontent.com/beefyfinance/beefy-v2/main/src/features/data/apis/beefy/beefy-clm-pool.ts"],markets:{v3:{router:"0xCaf681a66D020601342297493863E78C959E5cb2",quoter:"0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7",factory:"0x1f7d7550B1b028f7571E69A784071F0205FD2EfA"},cl:{router:"0xC062b870E813fcA720f1e002c234369Ab3aB9415",quoter:"0x03983AB2C057a2eac211ff01738a1e49ff325B49",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3"}},vaults:[{id:"up33-cow-robinhood-cashcat-weth-vault",vault:"0x25012D654bF9107B6E0Af0248656fEf0b718dBd3",manager:"0x137731B8B2D7Cd24aB4A4A9061f2D7b4Fd1aBFEE",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x020bfC650A365f8BB26819deAAbF3E21291018b4","0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"],strategy:"0xd7F3bCDAfCFf0018953BB6944Db2683Ff2e42b07",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0x4E8649Be40aE67EBbcff99C291B92eE03015917b",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:200,bridge:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{id:"up33-cow-robinhood-usdg-net-vault",vault:"0x25B418FcFe8543c25AD9d78246839E5Cf3a3b50D",manager:"0x5A725556514222d0cc81501A9294a3135b7C41C4",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","0xCA9c78Dd337A67F6e0077F65F5E9218719d30eDf"],strategy:"0x89207bED2935C64d6cb105E9C85E0E2ED99DD8f2",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0x99e70A5b06215e5D2F3BeC773b4f59c008fc1673",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:200,bridge:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"},{id:"up33-cow-robinhood-weth-stonkbroker-vault",vault:"0x544c7Ef9265dc08d93B5394116E68aE7D9e60730",manager:"0x5794bB61E83397049c40D87BbF3d44AF583A27Ce",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73","0xe934e36A439C94017B64a3FecE66AF12099aBF50"],strategy:"0x54Bd0805f549708144C811c14DdEeC0714CA5e0c",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0xB11ba9a4d345434c25d625C076f23Ad14abC6B3c",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:200,bridge:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{id:"up33-cow-robinhood-weth-up-vault",vault:"0x56EA4b4AFAFbb87CFD8Fd8a0266a2F86561677b8",manager:"0x36759534741E28Eb052238738963D684bFe719E4",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73","0x57C0E45cB534413D1C20A4240955d6bB250BB4F1"],strategy:"0x8337c691C3afA52ccE418178e52ed472F034Cb8b",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0x23D641FeCcD207E8794c593e8240444A0674C4Ba",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:200,bridge:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{id:"up33-cow-robinhood-weth-frong-vault",vault:"0x75588e48f7b4Ed9365d78C6cD509f3C7B804Ca47",manager:"0x9818f01EDCcc3d8EB86B859931C3B877cf44A108",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73","0x6245e67affA44a23077f0Ea7f981a8DC743a0c47"],strategy:"0xdB739d906CD5101b65E089a284ec13a3ab21F603",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0x9334BbCBE77C0883d704f71Db35CCF636639334c",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:200,bridge:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{id:"up33-cow-robinhood-usdg-intc-vault",vault:"0x8353c496114CF66D10545fdc2B4e6dFBafd37e3b",manager:"0x599ac767099bB6f01712867BfA1Fc1Aa27DEFD37",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","0xc72b96e0E48ecd4DC75E1e45396e26300BC39681"],strategy:"0xbaEE86C9D7dE9dc192f17dFA62833B601Dc64D23",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0x6290Be6e6913708866E6f17eaf3F4FCC7d3fdF67",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:60,bridge:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"},{id:"up33-cow-robinhood-weth-tendies-vault",vault:"0x97DCDc29a3B3e2F556564279f7D09eE40eB74E45",manager:"0x9619bFB1f2D97E2B23F23310205e4c2089c1A45d",managerImpl:"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C",wants:["0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73","0x45242320DBB855EeA8Fd36804C6487E10E97FCF9"],strategy:"0x9a02CaA8a2e63659f8A419a29a3B48baD86d3c7a",beacon:"0xfD7EE9D17BD6941bF8e612281ec23E857134BB92",implementation:"0xF5331Dc29A1FDe4b22d7F168661584B057228683",pool:"0xD53a623c17A5853838FA140cE5706eA008565dA8",factory:"0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3",tickSpacing:200,bridge:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"}],routes:[{from:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",to:"0x020bfC650A365f8BB26819deAAbF3E21291018b4",kind:"cl",path:"0x0bd7d308f8e1639fab988df18a8011f41eacad730000c8020bfc650a365f8bb26819deaabf3e21291018b4",pools:["0x4E8649Be40aE67EBbcff99C291B92eE03015917b"]},{from:"0x020bfC650A365f8BB26819deAAbF3E21291018b4",to:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",kind:"cl",path:"0x020bfc650a365f8bb26819deaabf3e21291018b40000c80bd7d308f8e1639fab988df18a8011f41eacad73",pools:["0x4E8649Be40aE67EBbcff99C291B92eE03015917b"]},{from:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",to:"0xCA9c78Dd337A67F6e0077F65F5E9218719d30eDf",kind:"cl",path:"0x5fc5360d0400a0fd4f2af552add042d716f1d1680000c8ca9c78dd337a67f6e0077f65f5e9218719d30edf",pools:["0x99e70A5b06215e5D2F3BeC773b4f59c008fc1673"]},{from:"0xCA9c78Dd337A67F6e0077F65F5E9218719d30eDf",to:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",kind:"cl",path:"0xca9c78dd337a67f6e0077f65f5e9218719d30edf0000c85fc5360d0400a0fd4f2af552add042d716f1d168",pools:["0x99e70A5b06215e5D2F3BeC773b4f59c008fc1673"]},{from:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",to:"0xe934e36A439C94017B64a3FecE66AF12099aBF50",kind:"cl",path:"0x0bd7d308f8e1639fab988df18a8011f41eacad730000c8e934e36a439c94017b64a3fece66af12099abf50",pools:["0xB11ba9a4d345434c25d625C076f23Ad14abC6B3c"]},{from:"0xe934e36A439C94017B64a3FecE66AF12099aBF50",to:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",kind:"cl",path:"0xe934e36a439c94017b64a3fece66af12099abf500000c80bd7d308f8e1639fab988df18a8011f41eacad73",pools:["0xB11ba9a4d345434c25d625C076f23Ad14abC6B3c"]},{from:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",to:"0x57C0E45cB534413D1C20A4240955d6bB250BB4F1",kind:"cl",path:"0x0bd7d308f8e1639fab988df18a8011f41eacad730000c857c0e45cb534413d1c20a4240955d6bb250bb4f1",pools:["0x23D641FeCcD207E8794c593e8240444A0674C4Ba"]},{from:"0x57C0E45cB534413D1C20A4240955d6bB250BB4F1",to:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",kind:"cl",path:"0x57c0e45cb534413d1c20a4240955d6bb250bb4f10000c80bd7d308f8e1639fab988df18a8011f41eacad73",pools:["0x23D641FeCcD207E8794c593e8240444A0674C4Ba"]},{from:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",to:"0x6245e67affA44a23077f0Ea7f981a8DC743a0c47",kind:"cl",path:"0x0bd7d308f8e1639fab988df18a8011f41eacad730000c86245e67affa44a23077f0ea7f981a8dc743a0c47",pools:["0x9334BbCBE77C0883d704f71Db35CCF636639334c"]},{from:"0x6245e67affA44a23077f0Ea7f981a8DC743a0c47",to:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",kind:"cl",path:"0x6245e67affa44a23077f0ea7f981a8dc743a0c470000c80bd7d308f8e1639fab988df18a8011f41eacad73",pools:["0x9334BbCBE77C0883d704f71Db35CCF636639334c"]},{from:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",to:"0xc72b96e0E48ecd4DC75E1e45396e26300BC39681",kind:"cl",path:"0x5fc5360d0400a0fd4f2af552add042d716f1d16800003cc72b96e0e48ecd4dc75e1e45396e26300bc39681",pools:["0x6290Be6e6913708866E6f17eaf3F4FCC7d3fdF67"]},{from:"0xc72b96e0E48ecd4DC75E1e45396e26300BC39681",to:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",kind:"cl",path:"0xc72b96e0e48ecd4dc75e1e45396e26300bc3968100003c5fc5360d0400a0fd4f2af552add042d716f1d168",pools:["0x6290Be6e6913708866E6f17eaf3F4FCC7d3fdF67"]},{from:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",to:"0x45242320DBB855EeA8Fd36804C6487E10E97FCF9",kind:"cl",path:"0x0bd7d308f8e1639fab988df18a8011f41eacad730000c845242320dbb855eea8fd36804c6487e10e97fcf9",pools:["0xD53a623c17A5853838FA140cE5706eA008565dA8"]},{from:"0x45242320DBB855EeA8Fd36804C6487E10E97FCF9",to:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",kind:"cl",path:"0x45242320dbb855eea8fd36804c6487e10e97fcf90000c80bd7d308f8e1639fab988df18a8011f41eacad73",pools:["0xD53a623c17A5853838FA140cE5706eA008565dA8"]},{from:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",to:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",kind:"v3",path:"0x5fc5360d0400a0fd4f2af552add042d716f1d1680000640bd7d308f8e1639fab988df18a8011f41eacad73",pools:["0x52e65B17fB6E5BA00Ed806f37Afcd2DaA50271Ca"]},{from:"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",to:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",kind:"v3",path:"0x0bd7d308f8e1639fab988df18a8011f41eacad730000645fc5360d0400a0fd4f2af552add042d716f1d168",pools:["0x52e65B17fB6E5BA00Ed806f37Afcd2DaA50271Ca"]}],codeHashes:{"0x137731B8B2D7Cd24aB4A4A9061f2D7b4Fd1aBFEE":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C":"0x6f2a1713cbceba31cc630dddda1ef99cd35086c96005f3c9ea015f9a8e53e613","0xd7F3bCDAfCFf0018953BB6944Db2683Ff2e42b07":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0xfD7EE9D17BD6941bF8e612281ec23E857134BB92":"0x9cc155dd143657bba37e6a51fa28e78158e3f47454acdcebedc0512e3803d0fc","0xF5331Dc29A1FDe4b22d7F168661584B057228683":"0x9f1e0f8e488165740c5ab91a3da1bea1a75eeef607ea37b32296ad465971344c","0x4E8649Be40aE67EBbcff99C291B92eE03015917b":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0x1ac9dB4a2608ba45D6127B1737949b51Bb54B7F3":"0x4350c8fcdf90361969542249d76c25d6afbd31f10bebf0134bfe21beba1e8f4c","0x5A725556514222d0cc81501A9294a3135b7C41C4":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0x89207bED2935C64d6cb105E9C85E0E2ED99DD8f2":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0x99e70A5b06215e5D2F3BeC773b4f59c008fc1673":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0x5794bB61E83397049c40D87BbF3d44AF583A27Ce":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0x54Bd0805f549708144C811c14DdEeC0714CA5e0c":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0xB11ba9a4d345434c25d625C076f23Ad14abC6B3c":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0x36759534741E28Eb052238738963D684bFe719E4":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0x8337c691C3afA52ccE418178e52ed472F034Cb8b":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0x23D641FeCcD207E8794c593e8240444A0674C4Ba":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0x9818f01EDCcc3d8EB86B859931C3B877cf44A108":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0xdB739d906CD5101b65E089a284ec13a3ab21F603":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0x9334BbCBE77C0883d704f71Db35CCF636639334c":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0x599ac767099bB6f01712867BfA1Fc1Aa27DEFD37":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0xbaEE86C9D7dE9dc192f17dFA62833B601Dc64D23":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0x6290Be6e6913708866E6f17eaf3F4FCC7d3fdF67":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0x9619bFB1f2D97E2B23F23310205e4c2089c1A45d":"0xa5fcbfc6347a83acdfbc561e9c0a59b1bbb321da361c3463b73b5c173a68291b","0x9a02CaA8a2e63659f8A419a29a3B48baD86d3c7a":"0x48fed026ddb394d366df6328a1bb802687a479cd28e30ee41d38b8567fb90202","0xD53a623c17A5853838FA140cE5706eA008565dA8":"0xda57657ec68ddfb0987ba1352a44cefe40433e55585f3e4555b8ced4bbeb540d","0xCaf681a66D020601342297493863E78C959E5cb2":"0x6f36c378e272c6324c48f045182bcb54bd8ad654cf9ebd42e8893d52c4cb25dc","0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7":"0x3db0868d945e9304c9bc6a8b2181948109ea617647142f3c4083e14393496a28","0x1f7d7550B1b028f7571E69A784071F0205FD2EfA":"0xec72b1abd1f2faee020cfea9c646bd8994f9fb389054f6e574f103a895091739","0xC062b870E813fcA720f1e002c234369Ab3aB9415":"0x11ea7d3599ef56eda32c0ce7ca26e9aae71bec13bfcbd3ad0e83826c1a2defe4","0x03983AB2C057a2eac211ff01738a1e49ff325B49":"0x1ed81396c831d69a6c59384019850c21ac672d24ae83b4b26304a7384e1e4096","0x52e65B17fB6E5BA00Ed806f37Afcd2DaA50271Ca":"0x3298b5dd4e6f115074c526a55ad05a36fd73a0034ac22ec6cbaab32cc9c1e8d2","0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73":"0x5706be52f64875fee65a2cec0d80e47a23d8793cbe85d214b48445e2d05f5353","0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3":"0xa2cf7f366f3d8d11e611acecf7916a27308ba041bf1e161bddbd4ecbb9402b6a"},delegates:{"0x137731B8B2D7Cd24aB4A4A9061f2D7b4Fd1aBFEE":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0x4E8649Be40aE67EBbcff99C291B92eE03015917b":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3","0x5A725556514222d0cc81501A9294a3135b7C41C4":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0x99e70A5b06215e5D2F3BeC773b4f59c008fc1673":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3","0x5794bB61E83397049c40D87BbF3d44AF583A27Ce":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0xB11ba9a4d345434c25d625C076f23Ad14abC6B3c":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3","0x36759534741E28Eb052238738963D684bFe719E4":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0x23D641FeCcD207E8794c593e8240444A0674C4Ba":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3","0x9818f01EDCcc3d8EB86B859931C3B877cf44A108":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0x9334BbCBE77C0883d704f71Db35CCF636639334c":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3","0x599ac767099bB6f01712867BfA1Fc1Aa27DEFD37":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0x6290Be6e6913708866E6f17eaf3F4FCC7d3fdF67":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3","0x9619bFB1f2D97E2B23F23310205e4c2089c1A45d":"0xfD4017Ad7c1092aaFEbC82621B4DeE59f178D74C","0xD53a623c17A5853838FA140cE5706eA008565dA8":"0x11725976BF1F38c4aB78d1F480bc5883d70D9dc3"}};var De=q.vaults,we=["beefy_clm_swap","beefy_clm_deposit","beefy_clm_withdraw"],Z=P(["function wants() view returns(address,address)","function strategy() view returns(address)","function want() view returns(address)","function implementation() view returns(address)","function pool() view returns(address)","function vault() view returns(address)","function price() view returns(uint256)","function paused() view returns(bool)","function isCalm() view returns(bool)","function actionableAt() view returns(uint256)","function token0() view returns(address)","function token1() view returns(address)","function factory() view returns(address)","function tickSpacing() view returns(int24)","function balances() view returns(uint256,uint256)","function previewDeposit(uint256,uint256) view returns(uint256 shares,uint256 amount0,uint256 amount1,uint256 fee0,uint256 fee1)","function previewWithdraw(uint256) view returns(uint256,uint256)","function deposit(uint256 amount0,uint256 amount1,uint256 minShares)","function withdraw(uint256 shares,uint256 minAmount0,uint256 minAmount1)"]),ce=P(["function exactInput((bytes path,address recipient,uint256 deadline,uint256 amountIn,uint256 amountOutMinimum)) payable returns(uint256)"]),W=P(["function exactInput((bytes path,address recipient,uint256 amountIn,uint256 amountOutMinimum)) payable returns(uint256)","function multicall(uint256 deadline,bytes[] data) payable returns(bytes[])"]),Fe=P(["function quoteExactInput(bytes path,uint256 amountIn) returns(uint256,uint160[],uint32[],uint256)"]),ge={cl:P(["function getPool(address,address,int24) view returns(address)"]),v3:P(["function getPool(address,address,uint24) view returns(address)"])},ye=P(["function deposit() payable"]),z={vault:Y,chainId:{const:S},slippageBps:{type:"integer",minimum:0,maximum:500}},Be=10n**36n,K=he(de[S].uniswap.WETH.address),ve="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",ke=Object.fromEntries(Object.entries(q.codeHashes).map(([d,s])=>[d.toLowerCase(),s])),Ae=Object.fromEntries(Object.entries(q.delegates).map(([d,s])=>[d.toLowerCase(),s]));function f(d){return fe(d,"Provide a token or vault address.",oe)}function F(d){return re(d,"Invalid Beefy CLM integer.")}function G(d,s=!1){return se(d,"Provide a positive amount that fits uint256.",{notString:"Provide a decimal base-unit integer string.",positive:!s})}function Q(d){let s=d??50;if(typeof s!="number"||!Number.isInteger(s)||s<0||s>500)throw new o("Use integer slippageBps from 0 to 500.");return BigInt(s)}function X(d,s){let m=d*(10000n-s)/10000n;if(m<=0n)throw new o("This CLM amount is too small for a positive output minimum.");return m}function ne(d,s){if(!Array.isArray(d)||d.length!==s)throw new o("Invalid Beefy CLM quote.");return d.map(F)}function Se(d){let s=f(d),m=De.find(b=>I(b.vault,s));if(!m)throw new o("This vault has no qualified Beefy CLM route. Use beefy_withdraw to return existing vault shares to their want; redeem that want through the project app if Oak has no qualified redemption route.");return m}function Me(d,s,m,b,h){if(d<=0n||m<=0n||b<0n||h<0n)throw new o("The CLM price or budget is invalid.");let x=s?d*m/Be:d;if(x===0n)throw new o("The CLM budget is too small at the current pool price.");let e=b*m/Be,t=h>e?h-e:e-h,a=x<t?x:t,r=(x-a)/2n,c=d*(h>e?a+r:r)/x;return[c,d-c]}var xe=d=>{async function s(e){try{return await e()}catch(t){throw new o(d.plainError(t))}}function m(e,t){if(e.chainId!==void 0&&e.chainId!==S)throw new o("Beefy CLM requires chain 4663.");for(let a of Object.keys(e))if(!["vault","chainId",...t].includes(a))throw new o(`Unsupported Beefy CLM input: ${a}.`);return Se(e.vault)}async function b(e,t){be(t);let a=d.clientFor(S);if(await a.getChainId()!==S)throw new o("The Beefy CLM endpoint must report chain 4663.");let r=F(await a.getBlockNumber()),c=await a.getBlock({blockNumber:r}),n=(B,p,A=[])=>a.readContract({address:f(B),abi:Z,functionName:p,args:A,blockNumber:r}),i=new Set;async function l(B){let p=B.toLowerCase();if(i.has(p))return;let A=ke[p];if(!A)throw new o("Unqualified Beefy CLM dependency; no transaction was built.");let D=await a.getCode({address:f(B),blockNumber:r});if(!D||Ce(D)!==A)throw new o("A Beefy CLM contract or delegated implementation no longer matches its pinned code.");i.add(p),Ae[p]&&await l(Ae[p])}await me(a,f(e.vault),r);for(let B of[e.manager,e.strategy,e.beacon,e.implementation,e.pool,e.factory])await l(B);let[g,u,y,E,C,k,w,M,R,ee]=await Promise.all([n(e.vault,"want"),n(e.manager,"wants"),n(e.manager,"strategy"),n(e.beacon,"implementation"),n(e.strategy,"pool"),n(e.strategy,"vault"),n(e.pool,"token0"),n(e.pool,"token1"),n(e.pool,"factory"),n(e.pool,"tickSpacing")]);if(f(g)!==e.manager||!Array.isArray(u)||u.length!==2||u.some((B,p)=>f(B)!==e.wants[p])||f(y)!==e.strategy||f(E)!==e.implementation||f(C)!==e.pool||f(k)!==e.manager||f(w)!==e.wants[0]||f(M)!==e.wants[1]||f(R)!==e.factory||ee!==e.tickSpacing)throw new o("The Beefy CLM want, tokens, strategy, beacon or pool differs from its qualified deployment.");let V=async B=>F(await a.readContract({address:f(B),abi:te,functionName:"balanceOf",args:[t],blockNumber:r}));async function ae(B){let p=f(B),[A,D]=await Promise.all([a.readContract({address:p,abi:te,functionName:"symbol",blockNumber:r}),a.readContract({address:p,abi:te,functionName:"decimals",blockNumber:r})]);if(typeof A!="string"||!A.trim()||!Number.isInteger(D)||D<0||D>255)throw new o("Invalid CLM token metadata.");return{address:p,symbol:A,decimals:D,chainId:S}}async function U(){let p=(await le(d.http,"https://api.beefy.finance/vaults",{},v=>Array.isArray(v)&&v.every($=>$!==null&&typeof $=="object"))).filter(v=>v.chain==="robinhood"&&typeof v.earnContractAddress=="string"&&I(v.earnContractAddress,e.vault)),A=p[0],D=pe(f(e.vault));if(p.length!==1||!A||A.id!==D.id||A.type!=="standard"||f(A.tokenAddress)!==e.manager||A.tokenDecimals!==18)throw new o("The Beefy API and qualified CLM vault disagree.");if(A.status!=="active")throw new o(`Beefy marks this vault ${String(A.status)}; deposits are unavailable. Exit with beefy_withdraw, redeem the returned CLM shares with beefy_clm_withdraw, then swap the received tokens to USDG with beefy_clm_swap.`);let L=f(await n(e.vault,"strategy")),_=await Promise.all([n(L,"paused"),n(e.strategy,"paused")]);if(_.some(v=>typeof v!="boolean"))throw new o("Invalid Beefy strategy pause flag.");if(_.some(Boolean))throw new o("The Beefy strategy is paused; deposits are unavailable. Exit with beefy_withdraw, redeem CLM shares with beefy_clm_withdraw, then convert the tokens to USDG with beefy_clm_swap.");if(await n(e.manager,"isCalm")!==!0)throw new o("The CLM pool is not calm; wait and request a fresh deposit preview.")}async function N(B,p){let A=new Set([...e.wants,f(ie),K]);if(!A.has(B)||!A.has(p)||B===p)throw new o("Use this CLM pair or the USDG/WETH conversion route, with different input and output tokens.");let D=q.routes.find(H=>H.from===B&&H.to===p&&(H.pools[0]===e.pool||H.kind==="v3"));if(!D)throw new o("No qualified direct CLM route for this token pair. Convert through the CLM bridge token in separately mined steps.");let L=q.markets[D.kind];for(let H of[L.router,L.quoter,L.factory,...D.pools])await l(H);let _=D.path;if(_.length!==88||f(_.slice(0,42))!==B||f(`0x${_.slice(-40)}`)!==p)throw new o("Invalid qualified CLM swap path.");let v=Number.parseInt(_.slice(42,48),16),$=await a.readContract({address:f(L.factory),abi:ge[D.kind],functionName:"getPool",args:[B,p,v],blockNumber:r});if(f($)!==D.pools[0])throw new o("The swap factory no longer selects the qualified CLM pool.");if(f(await n(L.quoter,"factory"))!==L.factory)throw new o("The CLM quoter factory differs from its pin.");return D}async function j(B,p,A){let D=await N(B,p),L=q.markets[D.kind],_=await a.simulateContract({address:f(L.quoter),abi:Fe,functionName:"quoteExactInput",args:[D.path,A],account:t,blockNumber:r}),v=F(_.result[0]);if(v===0n)throw new o("No positive quote for this CLM swap.");return{selected:D,market:L,out:v}}return{client:a,blockNumber:r,deadline:c.timestamp+600n,read:n,balance:V,token:ae,code:l,entryAvailable:U,quote:j}}function h(e,t,a,r="0"){return d.unsignedTx({to:f(e),data:t,description:a,value:r,chainId:S})}async function x(e,t,a){let r=await d.preview(e,t);return{txs:e,preview:r,summary:`${a} Re-read actual balances after every mined step. Calls are separate transactions; earlier steps can remain mined if a later step fails. Confirm the local preview. Gas is additional.`}}return{tools:[{name:"beefy_lp",inputSchema:{type:"object",properties:{...z,amount:{...O(),description:"Optional entry budget in the CLM bridge token base units (USDG or WETH)."}},required:["vault"],additionalProperties:!1},execute:(e,t)=>s(async()=>{let a=m(e,["amount","slippageBps"]),r=Q(e.slippageBps),c=await b(a,t),[n,i,l,g,u,y,E,C]=await Promise.all([c.token(a.wants[0]),c.token(a.wants[1]),c.token(a.manager),c.balance(a.wants[0]),c.balance(a.wants[1]),c.balance(a.manager),c.read(a.manager,"balances"),c.read(a.strategy,"price")]),k;if(e.amount!==void 0){await c.entryAvailable();let w=G(e.amount),[M,R]=ne(E,2),ee=Me(w,a.bridge===n.address,F(C),M,R),V=[];for(let[ae,U]of[n,i].entries()){let N=ee[ae],j=N===0n||U.address===a.bridge?N:(await c.quote(f(a.bridge),U.address,N)).out;V.push({token:U,bridgeAmount:N.toString(),expectedAmount:j.toString(),minimumAmount:j===0n?"0":X(j,r).toString(),swapRequired:N>0n&&U.address!==a.bridge})}k={bridge:await c.token(a.bridge),budget:w.toString(),inputs:V,source:"strategy.price() and CLM balances(); imbalance first, then split remaining value equally. Re-quote after mining swaps."}}return{chainId:S,vault:a.vault,manager:a.manager,bridge:await c.token(a.bridge),constituents:[{token:n,balance:g.toString()},{token:i,balance:u.toString()}],shares:{token:l,amount:y.toString()},entryPlan:k,block:c.blockNumber.toString(),summary:"Convert USDG or ETH to the bridge token with beefy_clm_swap. Use entryPlan to acquire the current deposit ratio, including a one-sided ratio when appropriate. Deposit actual balances with beefy_clm_deposit, then deposit mined CLM shares with beefy_deposit. Exit with beefy_withdraw, beefy_clm_withdraw, then beefy_clm_swap through the bridge token to USDG."}})},{name:"beefy_clm_swap",inputSchema:{type:"object",properties:{...z,from:Y,to:Y,amount:O()},required:["vault","from","to","amount"],additionalProperties:!1},execute:(e,t)=>s(async()=>{let a=m(e,["from","to","amount","slippageBps"]),r=Q(e.slippageBps),c=f(e.from),n=f(e.to),i=G(e.amount),l=c.toLowerCase()===ve,g=l?K:c,u=await b(a,t);if((l?await u.client.getBalance({address:t,blockNumber:u.blockNumber}):await u.balance(c))<i)throw new o("Insufficient CLM swap balance; keep ETH for gas.");let y=[];l&&(await u.code(K),y.push(h(K,T({abi:ye,functionName:"deposit"}),"Wrap exactly the requested ETH for the CLM workflow.",i.toString())));let E=i,C=i;if(g!==n){let w=await u.quote(g,n,i);E=w.out,C=X(E,r),y.push(d.approval(g,f(w.market.router),i.toString(),S));let M={path:w.selected.path,recipient:t,amountIn:i,amountOutMinimum:C},R=w.selected.kind==="cl"?T({abi:ce,functionName:"exactInput",args:[{...M,deadline:u.deadline}]}):T({abi:W,functionName:"multicall",args:[u.deadline,[T({abi:W,functionName:"exactInput",args:[M]})]]});y.push(h(w.market.router,R,`Swap exact input with at least ${C} output base units to the calling wallet.`))}else if(!l)throw new o("The CLM swap requires different input and output tokens.");let k=await u.token(n);return{...await x(y,t,"Swap qualified CLM constituents. Venue fees are included in the quote."),output:{token:k,amount:E.toString()},minimumOutput:{token:k,amount:C.toString()},deadline:u.deadline.toString()}})},{name:"beefy_clm_deposit",inputSchema:{type:"object",properties:{...z,amount0:O(),amount1:O()},required:["vault","amount0","amount1"],additionalProperties:!1},execute:(e,t)=>s(async()=>{let a=m(e,["amount0","amount1","slippageBps"]),r=Q(e.slippageBps),c=G(e.amount0,!0),n=G(e.amount1,!0);if(c===0n&&n===0n)throw new o("At least one CLM deposit amount must be positive.");let i=await b(a,t);if(await i.entryAvailable(),await i.balance(a.wants[0])<c||await i.balance(a.wants[1])<n)throw new o("Acquire the CLM constituents first and retry with their mined balances.");let[l,g,u,y,E]=ne(await i.read(a.manager,"previewDeposit",[c,n]),5);if(g>c||u>n||g+u===0n||y>g||E>u)throw new o("The CLM returned invalid deposit amounts or fees.");let C=X(l,r),k=[];for(let[w,M]of[c,n].entries())M>0n&&k.push(d.approval(f(a.wants[w]),f(a.manager),M.toString(),S));k.push(h(a.manager,T({abi:Z,functionName:"deposit",args:[c,n,C]}),`Mint at least ${C} CLM share base units to the calling wallet.`));for(let[w,M]of[c,n].entries())M>0n&&k.push(d.approval(f(a.wants[w]),f(a.manager),"0",S));return{...await x(k,t,"Mint CLM want shares with a positive share minimum and exact input approvals. Final revocations clear any unused allowance. Deposit the actual shares received into beefy_deposit separately."),output:{token:await i.token(a.manager),amount:l.toString()},minimumShares:C.toString(),usedAmounts:[g.toString(),u.toString()],fees:[y.toString(),E.toString()]}})},{name:"beefy_clm_withdraw",inputSchema:{type:"object",properties:{...z,shares:{anyOf:[O(),{const:"all"}]}},required:["vault","shares"],additionalProperties:!1},execute:(e,t)=>s(async()=>{let a=m(e,["shares","slippageBps"]),r=Q(e.slippageBps),c=e.shares==="all"?void 0:G(e.shares),n=await b(a,t),i=await n.balance(a.manager),l=c??i;if(l===0n||l>i)throw new o("Withdraw vault shares first, then provide a positive CLM share amount no greater than your mined balance.");let u=ne(await n.read(a.manager,"previewWithdraw",[l]),2).map(E=>E===0n?0n:X(E,r));if(u.every(E=>E===0n))throw new o("No positive CLM withdrawal output is available.");let y=[h(a.manager,T({abi:Z,functionName:"withdraw",args:[l,u[0],u[1]]}),"Redeem CLM shares and return the pair tokens to the calling wallet.")];return{...await x(y,t,"Redeem CLM shares. Convert actual returned tokens, including leftover deposit dust, through the bridge token to USDG with beefy_clm_swap after mining. Strategy pause or API status does not prevent requesting this preview."),minimumOutputs:await Promise.all(u.map(async(E,C)=>({token:await n.token(a.wants[C]),amount:E.toString()})))}})}]}};async function je(d,s,m,b){if(!we.includes(d))throw new o("Unknown Beefy CLM action.");let h=async()=>{throw new o("Beefy CLM reconstruction uses only qualified on-chain routes.")},x=ue({clientFor:()=>b,http:fetch,quoteSwap:h,buildSwap:h,preview:async t=>({txs:t,changes:[],summary:"Locally reconstructed CLM intent; local preview still required."})});return(await xe(x).tools.find(t=>t.name===d).execute(s,m)).txs}function Ge(d,s,m){let b=()=>{throw new o("Beefy CLM calldata differs from locally reconstructed intent; nothing was signed.")};function h(x,e,t){if(x===e)return;let a=J({abi:t,data:x}),r=J({abi:t,data:e});(a.functionName!==r.functionName||!a.args||!r.args)&&b();let c=[...a.args],n=[...r.args];if(I(T({abi:t,functionName:a.functionName,args:c}),x)||b(),a.functionName==="deposit"||a.functionName==="withdraw")for(let i of a.functionName==="deposit"?[2]:[1,2])F(c[i])<F(n[i])&&b(),c[i]=n[i];else if(a.functionName==="multicall"){let i=F(c[0]);(i<=m||i>F(n[0]))&&b(),(!Array.isArray(c[1])||!Array.isArray(n[1])||c[1].length!==1||n[1].length!==1)&&b(),h(c[1][0],n[1][0],W),c[0]=n[0],c[1]=n[1]}else if(a.functionName==="exactInput"){let i={...c[0]},l=n[0];F(i.amountOutMinimum)<F(l.amountOutMinimum)&&b(),i.amountOutMinimum=l.amountOutMinimum,"deadline"in i&&((F(i.deadline)<=m||F(i.deadline)>F(l.deadline))&&b(),i.deadline=l.deadline),c[0]=i}else b();I(T({abi:t,functionName:a.functionName,args:c}),e)||b()}(!s.length||d.length!==s.length)&&b();for(let[x,e]of d.entries()){let t=s[x];(e.chainId!==t.chainId||!I(e.to,t.to)||e.value!==t.value)&&b();try{if(I(t.to,q.markets.cl.router))J({abi:ce,data:t.data}).args[0].deadline<=m&&b();else if(I(t.to,q.markets.v3.router)){let a=J({abi:W,data:t.data});(a.functionName!=="multicall"||a.args[0]<=m)&&b()}}catch{b()}if(!I(e.data,t.data))try{let a=De.find(r=>I(r.manager,t.to));h(e.data,t.data,a?Z:I(t.to,q.markets.cl.router)?ce:W)}catch{b()}}}var We=d=>({tools:xe(d).tools.slice(1)});export{De as a,we as b,Z as c,ce as d,W as e,Se as f,Me as g,xe as h,je as i,Ge as j,We as k};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as q}from"./RETS2ZEK.js";import{c as h}from"./XPFVT2EA.js";import{a as o}from"./5YS5V2LK.js";var Y="12333333",I=1800,N=9000n,O=9607n,C=150n,U=(1n<<256n)-1n,f=10000n,g=10n**18n,X=10n**30n,R=1n<<192n,D=20n*g,E=75n*g,_=100n*g,x=300n*g,P=100000n*g,S=500000n*g,w=1000000n*g,B=10000000n*g;function c(n){let t=typeof n=="bigint"?n:q(n);if(t<0n||t>U)throw new o("Amount must be within the uint256 range.");return t}function p(n){if(typeof n=="bigint")return n;if(typeof n=="number"){if(!Number.isSafeInteger(n))throw new o("Integer parameter must be a safe integer.");return BigInt(n)}if(typeof n!="string"||!/^-?\d+$/.test(n))throw new o("Value must be a signed integer decimal string.");return BigInt(n)}function A(n,t=77){let i=typeof n=="number"?n:typeof n=="string"&&/^\d+$/.test(n)?Number(n):NaN;if(!Number.isInteger(i)||i<0||i>t)throw new o(`Token decimals must be an integer from 0 to ${t}.`);return i}function k(n){return 10n**BigInt(n)}function T(n,t="Result"){if(n<0n||n>U)throw new o(`${t} exceeds uint256 bounds.`);return n}function b(n,t,i="Factor"){return T(n*t,i)}function a(n,t,i,s="floor"){if(i<=0n)throw new o("The denominator must be positive.");let e=n*t;if(e===0n)return 0n;let r=s==="ceil"?e/i+(e%i===0n?0n:1n):e/i;return T(r,"Math.mulDiv result")}function $(n){let t=c(n);return t<P?D.toString():t<S?(D+a(t-P,E-D,S-P)).toString():t<w?(E+a(t-S,_-E,w-S)).toString():t<B?(_+a(t-w,x-_,B-w)).toString():x.toString()}function Q(n){let t=c(n);return T(9000000n+t/1000000000000n/6n,"noHoldPriceBase").toString()}function j(n){let t=c(n);return a(t,5n,100n,"ceil").toString()}function z(n,t){let i=c(n),s=c(t);if(s<=0n)throw new o("OAK-per-ETH price must be positive.");return a(i,g,s,"floor").toString()}function G(n,t,i=h){let s=c(n),e=c(t);if(e<=0n)throw new o("OAK USD price must be positive.");let r=k(A(i));return a(s,r,e,"ceil").toString()}function J(n,t,i=h){let s=c(n),e=c(t),r=k(A(i));return a(s,e,r,"floor").toString()}function Z(n,t){let i=c(n),s=c(t);if(i>f||s>f)throw new o("FeePolicyOutOfBounds: hook fee or creator tax exceeds 10000 bps.");let e=i+s+C;if(e>f-N)throw new o("FeePolicyOutOfBounds: fees and impact allowance exceed 1000 bps.");let r=f-e;return(r>O?O:r).toString()}function nn(n,t,i,s,e){let r=A(s,83);if(r<6)throw new o("OAK decimals must be at least 6 for burner conversion.");let u=c(e);if(u<N||u>O)throw new o("InvalidBurnerFloor: floor must be from 9000 to 9607 bps.");let m=c(n),d=c(t),l=c(i);if(l<=0n)throw new o("ETH USD price must be positive.");let v=k(r-6),y=b(m,v,"burnerMinOut usdgIn * decimalScale"),W=b(d,u,"burnerMinOut oakPerEthE18 * floorBps"),M=b(l,f,"burnerMinOut ethUsdE18 * 10000");return a(y,W,M,"floor").toString()}function tn(n,t,i=I){let s=p(n),e=p(t),r=p(i);if(r<=0n)throw new o("Observation window seconds must be positive.");let u=e-s,d=u/r-(u<0n&&u%r!==0n?1n:0n);return Number(d)}function en(n){let t=c(n);if(t<=0n)throw new o("sqrtRatioX96 must be positive.");let i=b(t,t,"sqrtRatioX96 squared");return a(i,X,R,"floor").toString()}function F(n){let t=c(n);if(t<=0n)throw new o("sqrtPriceX96 must be positive.");let i=b(t,t,"sqrtPriceX96 squared");return a(i,g,R,"floor").toString()}function L(n){let t="ethAmountWei"in n&&n.ethAmountWei!==void 0?n.ethAmountWei:"ethVolumeWei"in n?n.ethVolumeWei:void 0;if(t===void 0)throw new o("SwapTrade must provide ethAmountWei.");let i=p(t),s=i<0n?-i:i;if(s<=0n)throw new o("SwapTrade ETH volume must be positive.");let e;n.sqrtPriceX96!==void 0&&n.sqrtPriceX96!==""&&n.sqrtPriceX96!=="0"&&(e=BigInt(F(n.sqrtPriceX96)));let r;if(n.oakPerEthE18!==void 0&&n.oakPerEthE18!==""&&(r=c(n.oakPerEthE18)),e!==void 0&&r!==void 0&&e!==r)throw new o("SwapTrade oakPerEthE18 does not match post-swap sqrtPriceX96.");let u=e??r;if(u===void 0||u<=0n)throw new o("SwapTrade must provide a positive post-swap price.");let m=n.timestamp!==void 0&&n.timestamp!==""?c(n.timestamp):void 0;return{volumeWei:s,oakPerEth:u,timestamp:m}}function rn(n,t){if(!Array.isArray(n)||n.length===0)throw new o("At least one SwapTrade is required to compute the 30-minute average.");let i=t?.windowEnd!==void 0?c(BigInt(t.windowEnd)):t?.now!==void 0?c(BigInt(t.now)):void 0,s=t?.windowStart!==void 0?c(BigInt(t.windowStart)):i!==void 0?i-BigInt(I):void 0,e=0n,r=0n;for(let u of n){let{volumeWei:m,oakPerEth:d,timestamp:l}=L(u);s!==void 0&&i!==void 0&&l!==void 0&&(l<s||l>=i)||(e+=m*d,r+=m)}if(r<=0n)throw new o("No trades with positive ETH volume fell inside the 30-minute window.");return(e/r).toString()}export{Y as a,I as b,N as c,O as d,C as e,$ as f,Q as g,j as h,z as i,G as j,J as k,Z as l,nn as m,tn as n,en as o,F as p,rn as q};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var t={futures:[{name:"accrueCarry",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"adlMode",type:"function",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"carryLongCreditWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"carryLongPaidWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"carryShortCreditWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"carryShortPaidWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"carrySkimOwedTokens",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"clearingReserveTokens",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"close",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"equityUsdWad",type:"function",inputs:[{name:"trader",type:"address",internalType:"address"}],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{name:"feeRouter",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"lastCarryTime",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"liquidatable",type:"function",inputs:[{name:"trader",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"marginCall",type:"function",inputs:[{name:"trader",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"oiLongUsdWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"oiShortUsdWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"open",type:"function",inputs:[{name:"isLong",type:"bool",internalType:"bool"},{name:"sizeUsdWad",type:"uint256",internalType:"uint256"},{name:"marginTokens",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"oracle",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract PerpOracle"}],stateMutability:"view"},{name:"positions",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"isLong",type:"bool",internalType:"bool"},{name:"sizeUsdWad9",type:"uint128",internalType:"uint128"},{name:"marginTokens",type:"uint128",internalType:"uint128"},{name:"entryIndexWad9",type:"uint128",internalType:"uint128"},{name:"entryCarryWad9",type:"uint128",internalType:"uint128"}],stateMutability:"view"},{name:"redeemAllowed",type:"function",inputs:[{name:"tokensOut",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"sweepCarrySkim",type:"function",inputs:[],outputs:[{name:"swept",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{name:"token",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20Minimal"}],stateMutability:"view"},{name:"vault",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract UnderwritingVault"}],stateMutability:"view"}],underwriting:[{name:"clearinghouse",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"equityTokens",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"redeem",type:"function",inputs:[{name:"shares",type:"uint256",internalType:"uint256"}],outputs:[{name:"tokens",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{name:"sharePriceWad",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"sharesOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"subscribe",type:"function",inputs:[{name:"tokens",type:"uint256",internalType:"uint256"}],outputs:[{name:"shares",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{name:"subscribedTokens",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"token",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20Minimal"}],stateMutability:"view"},{name:"totalShares",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}],prize:[{name:"book",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IBonusBook"}],stateMutability:"view"},{name:"boostedPrincipalAt",type:"function",inputs:[{name:"account",type:"address",internalType:"address"},{name:"period",type:"uint256",internalType:"uint256"}],outputs:[{name:"weight",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"boostedPrincipalOf",type:"function",inputs:[{name:"account",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"controller",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDrawWeights"}],stateMutability:"view"},{name:"earlyUnlock",type:"function",inputs:[{name:"trancheIndex",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"enter",type:"function",inputs:[{name:"usdgAmount",type:"uint256",internalType:"uint256"},{name:"minNetOut",type:"uint256",internalType:"uint256"},{name:"referrer",type:"address",internalType:"address"}],outputs:[{name:"netStaked",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{name:"enterWithNet",type:"function",inputs:[{name:"netAmount",type:"uint256",internalType:"uint256"},{name:"referrer",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"exit",type:"function",inputs:[{name:"netAmount",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{name:"exitToUsdg",type:"function",inputs:[{name:"netAmount",type:"uint256",internalType:"uint256"},{name:"minUsdgOut",type:"uint256",internalType:"uint256"},{name:"to",type:"address",internalType:"address"}],outputs:[{name:"usdgOut",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{name:"hasDeposited",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"lockTranche",type:"function",inputs:[{name:"trancheIndex",type:"uint256",internalType:"uint256"},{name:"lockDraws",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{name:"net",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract INET"}],stateMutability:"view"},{name:"oracle",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IPairOracle"}],stateMutability:"view"},{name:"pokeRebase",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"potNet",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"previewSettle",type:"function",inputs:[],outputs:[{name:"prizeNet",type:"uint256",internalType:"uint256"},{name:"burnNet",type:"uint256",internalType:"uint256"},{name:"meetsMinPot",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"principalOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"referrerOf",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"router",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IUniswapV2Router02"}],stateMutability:"view"},{name:"sNet",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IsNET"}],stateMutability:"view"},{name:"staking",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IStaking"}],stateMutability:"view"},{name:"totalPrincipal",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"trancheAt",type:"function",inputs:[{name:"account",type:"address",internalType:"address"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"amount",type:"uint112",internalType:"uint112"},{name:"depositEpoch",type:"uint64",internalType:"uint64"},{name:"lockEndPeriod",type:"uint32",internalType:"uint32"},{name:"boostBps",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{name:"trancheCount",type:"function",inputs:[{name:"account",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"trancheHead",type:"function",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"treasury",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ITreasury"}],stateMutability:"view"},{name:"usdg",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20"}],stateMutability:"view"},{name:"wired",type:"function",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"}],pair_oracle:[{name:"checkpoint",type:"function",inputs:[],outputs:[],stateMutability:"nonpayable"},{name:"lastCheckpointAt",type:"function",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{name:"netIsToken0",type:"function",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{name:"observations",type:"function",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"timestamp",type:"uint32",internalType:"uint32"},{name:"priceCumulative",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"pair",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{name:"pairContract",type:"function",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IUniswapV2Pair"}],stateMutability:"view"},{name:"priceScale",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{name:"twapMaxWindow",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{name:"twapMinWindow",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{name:"twapNetUsdg",type:"function",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}]};export{t as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as N}from"./XW7RH7YY.js";import{a as E}from"./2O6A6WEX.js";import{b as q,c as _,d as O,e as R}from"./VCWDJQDE.js";import{a as I}from"./JRVTSGAT.js";import{c as M}from"./EC5W3UZD.js";import{b as G}from"./AXYOJBX6.js";import{a as b}from"./6IM6A5VA.js";import{a as x}from"./RETS2ZEK.js";import{a as o,d as P,i as U,j as y}from"./XPFVT2EA.js";import{a as r}from"./5YS5V2LK.js";import{encodeFunctionData as g,erc20Abi as k,parseAbi as L}from"viem";var i=U[o].vaults.steakhouse.address,j=(1n<<256n)-1n,l=L(["function asset() view returns (address)","function totalAssets() view returns (uint256)","function convertToAssets(uint256 shares) view returns (uint256 assets)","function previewWithdraw(uint256 assets) view returns (uint256 shares)","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)"]);function A(e){if(typeof e!="bigint"||e<0n||e>j)throw new r("The vault returned an invalid base-unit amount.");return e}function T(e){if(typeof e!="string")throw new r("Amount must be an integer string in base units.");let c=x(e);if(c===0n)throw new r("Amount must be positive.");if(c>j)throw new r("Amount exceeds the uint256 range.");return c}function D(e,c,h=!1){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).some(w=>!c||!["amount",...h?["force","maxPenaltyAssets","minAmountOut"]:[]].includes(w)))throw new r("Unexpected Steakhouse argument.")}var W=e=>{async function c(t){try{return await t()}catch(s){throw new r(e.plainError(s))}}async function h(){let t=e.clientFor(o);if(await t.getChainId()!==o)throw new r("Steakhouse requires chain 4663.");let s=await t.readContract({address:i,abi:l,functionName:"asset"});if(typeof s!="string"||s.toLowerCase()!==y.toLowerCase())throw new r("The Steakhouse vault asset does not match USDG on chain 4663.");let[a,n]=await Promise.all([t.readContract({address:y,abi:k,functionName:"decimals"}),t.readContract({address:i,abi:k,functionName:"decimals"})]);if(a!==P||!Number.isInteger(n)||n<0||n>255)throw new r("The vault returned invalid asset or share decimals.");return{client:t,asset:{address:y,symbol:"USDG",decimals:a,chainId:o},shares:{address:i,symbol:"steakUSDG",decimals:n,chainId:o}}}async function w(t,s){return A(await t.readContract({address:i,abi:k,functionName:"balanceOf",args:[s]}))}async function C(t,s,a){let n=await e.preview(t,s);if(n.changes.length===0)throw new r("The Steakhouse simulation returned no token balance changes.");let u=n.changes.map(({token:m,amount:d})=>{let f=d.startsWith("-"),p=e.formatAmount(f?d.slice(1):d,m.decimals);return`${f?"-":""}${p} ${m.symbol} (${m.address}, chain ${m.chainId}, decimals ${m.decimals})`});return{txs:t,summary:`${a} ${n.summary} Changes: ${u.join("; ")}.`}}return{tools:[_(e,"steakhouse_details",i),I(e,"steakhouse_analytics",i),E(e,"steakhouse_manage",i),...N(e,"steakhouse",i),{name:"steakhouse_list",inputSchema:{type:"object",properties:{},additionalProperties:!1},execute:async t=>c(async()=>{D(t,!1);let{client:s,asset:a,shares:n}=await h(),u=A(await s.readContract({address:i,abi:l,functionName:"totalAssets"}));return[{name:"Steakhouse USDG",vault:n,asset:a,totalAssets:{token:a,amount:u.toString()}}]})},{name:"steakhouse_deposit",inputSchema:$(!1),execute:async(t,s)=>c(async()=>{D(t,!0);let a=T(t.amount);b(s);let{asset:n}=await h(),u=[e.approval(n.address,i,a.toString(),o),e.unsignedTx({to:i,data:g({abi:l,functionName:"deposit",args:[a,s]}),value:"0",chainId:o,description:`Deposit ${e.formatAmount(a.toString(),n.decimals)} USDG into Steakhouse.`})];return C(u,s,"Approve the exact USDG amount, then deposit into Steakhouse.")})},{name:"steakhouse_withdraw",inputSchema:{...$(!0),properties:{...$(!0).properties,force:{type:"boolean",description:"Explicitly plan a full Morpho V2 force exit with penalty disclosure."},maxPenaltyAssets:{type:"string",pattern:"^[0-9]+$"},minAmountOut:{type:"string",pattern:"^[0-9]+$"}}},execute:async(t,s)=>c(async()=>{D(t,!0,!0);let a=t.amount==="max"?null:T(t.amount);b(s);let{client:n,asset:u,shares:m}=await h(),d=await w(n,s);if(d===0n)throw new r("The wallet has no Steakhouse shares to withdraw.");if(t.force!==void 0&&typeof t.force!="boolean")throw new r("force must be a boolean.");if(t.force===!0){if(a!==null)throw new r("Force exit currently requires amount max.");let p=M(t.maxPenaltyAssets),F=T(t.minAmountOut),v=await q(e,n,i,s,d,p),S=await e.preview([v.tx],s);return R(S.changes,i,d,F),{txs:[v.tx],preview:S,summary:`${O(v.plan)} ${S.summary}`}}if(t.maxPenaltyAssets!==void 0||t.minAmountOut!==void 0)throw new r("Penalty and output limits require force true.");let f;if(a===null)f=e.unsignedTx({to:i,data:g({abi:l,functionName:"redeem",args:[d,s,s]}),value:"0",chainId:o,description:`Redeem all ${e.formatAmount(d.toString(),m.decimals)} steakUSDG shares.`});else{let p=A(await n.readContract({address:i,abi:l,functionName:"previewWithdraw",args:[a]}));if(p===0n||p>d)throw new r("The withdrawal exceeds the available share balance or has an invalid share quote.");f=e.unsignedTx({to:i,data:g({abi:l,functionName:"withdraw",args:[a,s,s]}),value:"0",chainId:o,description:`Withdraw ${e.formatAmount(a.toString(),u.decimals)} USDG from Steakhouse.`})}return C([f],s,a===null?"Redeem the current full share balance from Steakhouse.":"Withdraw the requested USDG amount from Steakhouse.")})}],positions:t=>c(async()=>{b(t);let{client:s,asset:a,shares:n}=await h(),u=await w(s,t);if(u===0n)return[];let m=A(await s.readContract({address:i,abi:l,functionName:"convertToAssets",args:[u]}));return[{module:"steakhouse",id:`${o}:${i.toLowerCase()}`,chainId:o,assets:[{token:a,amount:m.toString()}],description:`${e.formatAmount(u.toString(),n.decimals)} steakUSDG shares (${i}, chain ${o}, decimals ${n.decimals}); USDG conversion is indicative, not guaranteed exit liquidity.`}]})}};function $(e){return{type:"object",additionalProperties:!1,required:["amount"],properties:{amount:{type:"string",pattern:e?"^(?:[0-9]+|max)$":"^[0-9]+$",description:`USDG base-unit integer string (6 decimals)${e?", or max to redeem every share":""}.`}}}}var te=e=>G("steakhouse",[W(e)]);export{W as a,te as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as K,c as U}from"./OJLMF5AR.js";import{L as z}from"./5H3MQWH7.js";import{a as T}from"./JRVTSGAT.js";import{c as N}from"./UXG67LH3.js";import{c as F,f as R,g as L,h as H,i as W}from"./EC5W3UZD.js";import{a as M}from"./6IM6A5VA.js";import{a as u}from"./UWOFA6GV.js";import{g as I}from"./73N3TOJL.js";import{a as y}from"./XPFVT2EA.js";import{a as o}from"./5YS5V2LK.js";import{encodeFunctionData as P,erc20Abi as j,getAddress as q,parseAbi as k}from"viem";var w=k(["function asset() view returns (address)","function decimals() view returns (uint8)","function balanceOf(address) view returns (uint256)","function previewMint(uint256) view returns (uint256)","function previewRedeem(uint256) view returns (uint256)","function previewWithdraw(uint256) view returns (uint256)","function mint(uint256 shares,address receiver) returns (uint256)","function redeem(uint256 shares,address receiver,address owner) returns (uint256)","function withdraw(uint256 assets,address receiver,address owner) returns (uint256)"]);function S(t,i=!1){if(typeof t!="string"||!/^\d+$/.test(t)||t.length>78||BigInt(t)>=1n<<256n||!i&&BigInt(t)===0n)throw new o("Provide a positive uint256 decimal base-unit string.");return BigInt(t)}function le(t,i,g){return["details","analytics","manage","mint",i==="netnet"?"redeem":"withdraw_assets","force_exit","in_kind_exit"].map(e=>{let $=[...i==="longbow"?["vault"]:[],...e==="mint"?["shares","maxAssets"]:e==="redeem"?["shares"]:e==="withdraw_assets"?["amount"]:e==="force_exit"?["maxPenaltyAssets","minAmountOut"]:[]],m={...i==="longbow"?{vault:{type:"string",enum:g.map(s=>s.vault)}}:{}};e==="in_kind_exit"&&(Object.assign(m,{amount:u(),maxShares:u(),maxPenaltyAssets:u(),deadline:u()}),$.push("amount","maxShares","maxPenaltyAssets","deadline")),e==="mint"&&Object.assign(m,{shares:u(),maxAssets:u()}),e==="redeem"&&(m.shares=u()),e==="withdraw_assets"&&(m.amount=u()),e==="force_exit"&&Object.assign(m,{maxPenaltyAssets:u(),minAmountOut:u()});let G=N(t,`${i}_manage`,g[0].vault,g[0].asset),J=T(t,`${i}_analytics`,g[0].vault);if(e==="manage"||e==="analytics"){let s=e==="manage"?G.inputSchema:J.inputSchema;Object.assign(m,s.properties),e==="analytics"&&i==="longbow"&&(m.view={type:"string",enum:["apy","published_apy","allocations","history","pending_governance"]}),$.push(...s.required)}return{name:`${i}_${e}`,inputSchema:{type:"object",properties:m,required:$,additionalProperties:!1},execute:async(s,r)=>{try{if(M(r),Object.keys(s).some(l=>!Object.hasOwn(m,l)))throw new o("Unsupported vault feature argument.");let A=i==="netnet"?g[0]:g.find(l=>typeof s.vault=="string"&&I(l.vault,s.vault));if(!A)throw new o("Choose a current vault returned by the project list tool.");let{vault:n,asset:a}=A,b={...s};if(delete b.vault,e==="details")return L(t,`${i}_details`,n,a).execute(b,r);if(e==="manage")return N(t,`${i}_manage`,n,a).execute(b,r);if(e==="analytics")return i==="longbow"&&s.view==="published_apy"?U(t,n,a,b):i==="longbow"&&s.view==="apy"?K(t,n,a,b):{...await T(t,`${i}_analytics`,n).execute(b,r),asset:{...a,address:q(a.address)},shareToken:{address:n,symbol:`${i} shares`,decimals:18,chainId:y}};if(e==="in_kind_exit")return z(t,n,a,s,r);let f=t.clientFor(y);if(await f.getChainId()!==y)throw new o("Vault actions require chain 4663.");let[Q,X,Y]=await Promise.all([f.readContract({address:n,abi:w,functionName:"asset"}),f.readContract({address:n,abi:w,functionName:"decimals"}),f.readContract({address:a.address,abi:j,functionName:"decimals"})]);if(q(Q)!==q(a.address)||X!==18||Y!==a.decimals)throw new o("Vault metadata does not match the pinned asset and shares.");let E=e==="force_exit"?await f.readContract({address:n,abi:w,functionName:"balanceOf",args:[r]}):void 0;if(e==="force_exit"){let l=await R(t,f,n,r,E,F(s.maxPenaltyAssets),a),C=S(s.minAmountOut),p=[l.tx],v=await t.preview(p,r);return W(v.changes,n,E,C,a),{txs:p,preview:v,summary:`${H(l.plan,a.symbol)} ${v.summary}`}}let d=e==="mint",x=e==="redeem",c=S(d||x?s.shares:s.amount),_=await f.readContract({address:n,abi:w,functionName:d?"previewMint":x?"previewRedeem":"previewWithdraw",args:[c]});if(_<=0n||d&&_>S(s.maxAssets))throw new o("Vault quote is zero or exceeds maxAssets.");let V=d?void 0:await f.readContract({address:n,abi:w,functionName:"balanceOf",args:[r]});if(!d&&(x?c:_)>V)throw new o("The wallet share balance cannot cover this exit.");let Z=d?P({abi:w,functionName:"mint",args:[c,r]}):x?P({abi:w,functionName:"redeem",args:[c,r,r]}):P({abi:w,functionName:"withdraw",args:[c,r,r]}),B=`${e} ${c} ${d||x?"18-decimal share":`${a.decimals}-decimal ${a.symbol}`} base units on ${n}; beneficiary ${r}.`,D=[...d?[t.approval(a.address,n,_.toString(),y)]:[],t.unsignedTx({to:n,data:Z,value:"0",chainId:y,description:B})],O=await t.preview(D,r),h=(l,C)=>O.changes.filter(p=>p.token.chainId===y&&I(p.token.address,l)).reduce((p,v)=>{if(v.token.decimals!==C||!/^-?\d+$/.test(v.amount))throw new o("Invalid vault preview metadata.");return p+BigInt(v.amount)},0n);if(d?h(a.address,a.decimals)!==-_||h(n,18)!==c:x?h(n,18)!==-c||h(a.address,a.decimals)<=0n:h(a.address,a.decimals)!==c||-h(n,18)<=0n||-h(n,18)>V)throw new o("Vault preview does not match the requested amount and beneficiary.");return{txs:D,preview:O,summary:`${B} Counterpart quote ${_} base units. Mint approval is exact; accrual may require a fresh quote. Standard ERC-4626 calls encode no minimum receipt. ${O.summary}`}}catch(A){throw new o(t.plainError(A))}}}})}export{le as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as D}from"./RETS2ZEK.js";import{a as d}from"./XPFVT2EA.js";import{a as c}from"./5YS5V2LK.js";import{concat as B,encodeAbiParameters as k,getAddress as v,isAddress as F,keccak256 as g,parseAbiParameters as O,recoverAddress as q,toHex as N}from"viem";import{privateKeyToAccount as U}from"viem/accounts";var T="OakPriceNote",l="1",w=300,E="0x0000000000000000000000000000000000000000",W=g(N("PriceNote(address wallet,uint256 oakPerEthE18,uint64 timestamp,bytes32 nonce)")),L=g(N("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")),M=(1n<<64n)-1n,P=(1n<<256n)-1n,z=0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,G=0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0n;function X(e){if(typeof e!="string"||!/^0x[0-9a-fA-F]{130}$/.test(e))return!1;let n=BigInt(`0x${e.slice(2,66)}`),t=BigInt(`0x${e.slice(66,130)}`),i=Number.parseInt(e.slice(130,132),16);return!(i!==27&&i!==28||n<=0n||n>=z||t<=0n||t>G)}function m(e,n){if(typeof e!="string"||!F(e,{strict:!1}))throw new c(`Invalid ${n} address.`);return v(e)}function p(e,n){let t;if(typeof e=="bigint")t=e;else if(typeof e=="number"){if(!Number.isSafeInteger(e)||e<0)throw new c(`Invalid ${n}.`);t=BigInt(e)}else t=D(e);if(t<0n||t>P)throw new c(`${n} exceeds uint256 bounds.`);return t}function h(e,n){let t=p(e,n);if(t>M)throw new c(`${n} exceeds uint64 bounds.`);return t}function Y(e,n){if(typeof e!="string"||!/^0x[0-9a-fA-F]{64}$/.test(e))throw new c(`${n} must be a 32-byte hex string.`);return e}function j(e){if(typeof e=="bigint"){if(e<=0n||e>P)throw new c("Private key must be a positive scalar.");return`0x${e.toString(16).padStart(64,"0")}`}if(typeof e=="string"&&/^0x[0-9a-fA-F]{1,64}$/.test(e))return`0x${e.slice(2).padStart(64,"0")}`;throw new c("Invalid private key format.")}function K(e){let n=p(e.chainId,"chainId"),t=m(e.verifyingContract,"verifyingContract");return g(k(O("bytes32, bytes32, bytes32, uint256, address"),[L,g(N(e.name)),g(N(e.version)),n,t]))}function ae(e,n=d,t=l){return{name:T,version:t,chainId:Number(p(n,"chainId")),verifyingContract:m(e,"consumer")}}function J(e,n=d,t=l){return K({name:T,version:t,chainId:n,verifyingContract:e})}function Q(e){let n=m(e.wallet,"wallet"),t=p(e.oakPerEthE18,"oakPerEthE18"),i=h(e.timestamp,"timestamp"),r=Y(e.nonce,"nonce");return g(k(O("bytes32, address, uint256, uint64, bytes32"),[W,n,t,i,r]))}function C(e,n,t=d,i=l){let r=J(n,t,i),o=Q(e);return g(B(["0x1901",r,o]))}async function ce(e,n,t,i=d,r=l){let o=C(e,n,i,r);return typeof t=="object"&&t!==null&&"sign"in t?t.sign({hash:o}):U(j(t)).sign({hash:o})}async function Z(e,n,t,i=d,r=l){if(!X(n))return E;try{let o=C(e,t,i,r),x=await q({hash:o,signature:n});return v(x)}catch{return E}}function ee(e,n){let t=p(e,"oakPerEthE18"),i=p(n,"spotOakPerEthE18");if(i<=0n||t<=0n)return!1;if(t>P/2n||i>P/3n)throw new c("Guard arithmetic overflow.");let r=t*2n;return r>=i&&r<=i*3n}function te(e,n,t,i){if("signature"in e&&"consumer"in e&&"note"in e&&!("average"in e))return e;if("note"in e&&"signature"in e&&"consumer"in e){let a=e,f=n??{};return{...f,note:a.note,signature:a.signature,consumer:f.consumer??a.consumer,expiresAt:f.expiresAt??a.expiresAt}}return{...i??{},note:e,signature:n,consumer:t}}async function fe(e,n,t,i){let r=te(e,n,t,i),{note:o,signature:x,consumer:S}=r,a=h(o.timestamp,"timestamp"),f=p(o.oakPerEthE18,"oakPerEthE18"),y=(a+BigInt(w)).toString(),s=(b,V,H)=>({valid:!1,ok:!1,...H?{signer:H}:{},oakPerEthE18:f.toString(),expiresAt:y,reason:b,error:V}),I=r.wallet??r.boundWallet;if(I===void 0)return s("wrong_wallet","Bound wallet context is required to verify a price note.");if(m(o.wallet,"wallet")!==m(I,"boundWallet"))return s("wrong_wallet","Price note wallet does not match the bound wallet.");if(r.now===void 0)return s("expired","Current time (now) is required to verify price note expiry.");let A=h(r.now,"now");if(a>A)return s("not_yet_valid","Price note timestamp is in the future.");if(A-a>BigInt(w))return s("expired","Price note has expired.");if(r.expiresAt!==void 0){let b=h(r.expiresAt,"expiresAt");if(b!==a+BigInt(w)||A>b)return s("expired","Price note has expired.")}let R=r.chainId??d,$=r.version??l,u=await Z(o,x,S,R,$);if(u===E)return s("bad_signature","Price note signature could not be recovered.");if(r.signer===void 0)return s("bad_signature","Expected oracle signer is required to verify a price note.",u);let _=m(r.signer,"signer");return _===E||u!==_?s("bad_signature","Price note signer does not match the oracle signer.",u):r.spotOakPerEthE18===void 0?s("outside_guard","Spot OAK/ETH price is required to verify the price note guard band.",u):ee(f,r.spotOakPerEthE18)?{valid:!0,ok:!0,signer:u,oakPerEthE18:f.toString(),expiresAt:y}:s("outside_guard","Price note is outside the 50% spot guard band.",u)}export{T as a,l as b,w as c,E as d,W as e,K as f,ae as g,J as h,Q as i,C as j,ce as k,Z as l,ee as m,fe as n};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as S,e as G,f as M,h as U,i as x,l as T,m as C,n as L,o as B,p as I,q as j,w as D,z as _}from"./2EDXKJ3B.js";import{a as O,b as h}from"./X5V2Z2NM.js";import{a as N}from"./6IM6A5VA.js";import{c as F,g as A}from"./73N3TOJL.js";import{a as p}from"./5YS5V2LK.js";import{a as $}from"./JXOEJPJ4.js";import{encodeFunctionData as q}from"viem";var z=10n**38n,W=`0x${"00".repeat(32)}`;function E(s,g){let k=s<0n,l=(k?-s:s).toString().padStart(g+1,"0"),P=l.slice(0,l.length-g),v=g?l.slice(l.length-g).replace(/0+$/,""):"";return`${k?"-":""}${P}${v?`.${v}`:""}`}var ie=s=>{let g=(e,a,i)=>({name:e,inputSchema:a,execute:async(t,n)=>{try{return N(n),L(s,t.chainId),await i(t,n)}catch(r){throw new p(s.plainError(r))}}}),k={transactionHash:{...G,description:"After local submission, repeat the same arguments with the mined hash to verify calldata, event and registry state."}},l=(e,a,i)=>s.clientFor(U(s).chainId).readContract({address:e,abi:h,functionName:a,args:i});async function P(e){let{chainId:a,registry:i}=U(s),t=await s.clientFor(a).readContract({address:i,abi:O,functionName:"ownerOf",args:[e]});return N(t),t}let v=e=>{if(typeof e!="string"||!/^[1-9][0-9]{0,18}$/.test(e)||BigInt(e)>=2n**64n)throw new p("Provide feedbackIndex as a decimal integer string of at least 1 (indexes are 1-based).");return BigInt(e)},X=g("erc8004_give_feedback",{type:"object",additionalProperties:!1,required:["agentId","value"],description:"Post public, permanent-by-hash feedback about an agent (ERC-8004 Reputation Registry giveFeedback). You cannot rate an agent you own or operate.",properties:{agentId:S,value:{type:"string",pattern:"^-?[0-9]+$",description:'Signed integer in fixed point, e.g. "87" with valueDecimals 0 is 87; "9977" with valueDecimals 2 is 99.77.'},valueDecimals:{type:"integer",minimum:0,maximum:18,default:0},tag1:{type:"string",description:"Optional filter tag such as starred, uptime, successRate, responseTime."},tag2:{type:"string"},endpoint:{type:"string",description:"Optional endpoint the feedback is about."},feedbackURI:{type:"string",description:"Optional HTTPS/IPFS URI of an off-chain feedback file."},feedbackHash:{...M,description:"keccak256 of the feedbackURI content; optional for IPFS, recommended for HTTPS."},...k}},async(e,a)=>{let{address:i}=x(s),t=T(e.agentId);if(typeof e.value!="string"||!/^-?[0-9]+$/.test(e.value))throw new p("Provide value as a signed integer string.");let n=BigInt(e.value);if(n>z||n<-z)throw new p("The feedback value is out of range (\xB11e38).");let r=e.valueDecimals===void 0?0:e.valueDecimals;if(typeof r!="number"||!Number.isInteger(r)||r<0||r>18)throw new p("valueDecimals must be an integer from 0 to 18.");let o=I(e.tag1,"tag1",128),b=I(e.tag2,"tag2",128),u=e.endpoint===void 0?"":I(e.endpoint,"endpoint",2048),f=e.feedbackURI===void 0?"":j(e.feedbackURI,"feedbackURI"),w=e.feedbackHash===void 0?W:B(e.feedbackHash,"feedbackHash"),R=q({abi:h,functionName:"giveFeedback",args:[t,n,r,o,b,u,f,w]});return _(s,a,e,{to:i,data:R,description:`Give feedback ${e.value}e-${r} to ERC-8004 agent ${t}.`,summary:`Publishes feedback ${E(n,r)} about agent ${t}${o?` (tag ${$(o)})`:""} from this wallet. Feedback is public and attributable to this wallet; it can be revoked later but never erased. Repeat with transactionHash to read back the feedback index.`,authority:async()=>{await P(t);let{registry:m,chainId:d}=U(s);if(await s.clientFor(d).readContract({address:m,abi:O,functionName:"isAuthorizedOrOwner",args:[a,t]})===!0)throw new p("The registry refuses feedback from the owner or an approved operator of the same agent.")},verify:async m=>{let d=D(m,i,h,"NewFeedback"),c=d.feedbackIndex,H=await l(i,"readFeedback",[t,a,c]);if(d.agentId!==t||!A(String(d.clientAddress),a)||d.value!==n||H[0]!==n||H[4])throw new p("The registry event or stored feedback does not match.");return{agentId:t.toString(),feedbackIndex:c.toString(),value:E(n,r),confirmed:!0}}})}),Y=g("erc8004_revoke_feedback",{type:"object",additionalProperties:!1,required:["agentId","feedbackIndex"],properties:{agentId:S,feedbackIndex:{type:"string",pattern:"^[1-9][0-9]*$",description:"1-based index from erc8004_give_feedback or erc8004_reputation."},...k}},async(e,a)=>{let{address:i}=x(s),t=T(e.agentId),n=v(e.feedbackIndex);return _(s,a,e,{to:i,data:q({abi:h,functionName:"revokeFeedback",args:[t,n]}),description:`Revoke feedback #${n} on ERC-8004 agent ${t}.`,summary:`Marks your feedback #${n} about agent ${t} as revoked. The original entry stays on-chain, flagged revoked. Repeat with transactionHash to verify.`,authority:async()=>{let r=await l(i,"getLastIndex",[t,a]);if(n>r)throw new p(`This wallet has given only ${r} feedback entries on agent ${t}.`);if((await l(i,"readFeedback",[t,a,n]))[4])throw new p("That feedback is already revoked.")},verify:async r=>{let o=D(r,i,h,"FeedbackRevoked"),b=await l(i,"readFeedback",[t,a,n]);if(o.agentId!==t||o.feedbackIndex!==n||!A(String(o.clientAddress),a)||!b[4])throw new p("The registry event or stored feedback does not show a revocation.");return{agentId:t.toString(),feedbackIndex:n.toString(),revoked:!0}}})}),Z=g("erc8004_append_response",{type:"object",additionalProperties:!1,required:["agentId","clientAddress","feedbackIndex","responseURI"],description:"Append a public response to a feedback entry (the agent showing a refund, or anyone tagging spam).",properties:{agentId:S,clientAddress:{...F,description:"The wallet that gave the feedback."},feedbackIndex:{type:"string",pattern:"^[1-9][0-9]*$"},responseURI:{type:"string",description:"HTTPS or IPFS URI of the response file."},responseHash:{...M,description:"keccak256 of the response content; optional for IPFS."},...k}},async(e,a)=>{let{address:i}=x(s),t=T(e.agentId),n=C(e.clientAddress,"clientAddress"),r=v(e.feedbackIndex),o=j(e.responseURI,"responseURI"),b=e.responseHash===void 0?W:B(e.responseHash,"responseHash");return _(s,a,e,{to:i,data:q({abi:h,functionName:"appendResponse",args:[t,n,r,o,b]}),description:`Append a response to feedback #${r} by ${n} on ERC-8004 agent ${t}.`,summary:`Publishes a response (${$(o)}) under feedback #${r} that ${n} gave agent ${t}, attributed to this wallet. Responses are append-only. Repeat with transactionHash to verify.`,authority:async()=>{let u=await l(i,"getLastIndex",[t,n]);if(r>u)throw new p(`${n} has given only ${u} feedback entries on agent ${t}.`)},verify:async u=>{let f=D(u,i,h,"ResponseAppended");if(f.agentId!==t||f.feedbackIndex!==r||!A(String(f.clientAddress),n)||!A(String(f.responder),a)||f.responseURI!==o)throw new p("The registry event does not match the response.");return{agentId:t.toString(),clientAddress:n,feedbackIndex:r.toString(),responder:a,confirmed:!0}}})}),J=g("erc8004_reputation",{type:"object",additionalProperties:!1,required:["agentId"],description:"Read-only: an agent's feedback summary and entries. Pass the reviewers you trust in clients; without it the summary counts every wallet, which anyone can spam.",properties:{agentId:S,clients:{type:"array",maxItems:200,items:F,description:"Reviewer wallets to count (recommended)."},tag1:{type:"string"},tag2:{type:"string"},includeRevoked:{type:"boolean",default:!1},limit:{type:"integer",minimum:1,maximum:200,default:50},clientAddress:{...F,description:"With feedbackIndex: also count responses to that one entry."},feedbackIndex:{type:"string",pattern:"^[1-9][0-9]*$"}}},async e=>{let{address:a}=x(s),i=T(e.agentId);await P(i);let t=I(e.tag1,"tag1",128),n=I(e.tag2,"tag2",128),r=typeof e.limit=="number"?Math.min(Math.max(1,Math.trunc(e.limit)),200):50,o=Array.isArray(e.clients)?e.clients.map(d=>C(d,"client")):void 0;if(o&&o.length>200)throw new p("Provide at most 200 reviewer wallets.");let b=o??await l(a,"getClients",[i]),u=b.slice(0,200),f={count:"0",value:"0",valueDecimals:0},w=[],R=0;if(u.length){let[d,c]=await Promise.all([l(a,"getSummary",[i,u,t,n]),l(a,"readAllFeedback",[i,u,t,n,e.includeRevoked===!0])]);f={count:d[0].toString(),value:E(d[1],d[2]),valueDecimals:d[2]},R=c[0].length,w=c[0].slice(0,r).map((H,y)=>({clientAddress:H,feedbackIndex:c[1][y].toString(),value:E(c[2][y],c[3][y]),valueDecimals:c[3][y],tag1:$(c[4][y]),tag2:$(c[5][y]),revoked:c[6][y]}))}let m;if(e.clientAddress!==void 0){let d=C(e.clientAddress,"clientAddress"),c=e.feedbackIndex===void 0?0n:v(e.feedbackIndex);m=(await l(a,"getResponseCount",[i,d,c,[]])).toString()}return{agentId:i.toString(),registry:a,clientsTotal:b.length,clientsUsed:u.length,filteredByClients:o!==void 0,summary:f,feedback:w,feedbackTotal:R,truncated:R>w.length||b.length>u.length,...m===void 0?{}:{responseCount:m},note:o?"Summary counts only the reviewers you named.":"Unfiltered: every reviewer wallet counts, and anyone can post feedback for free, so a high score is not evidence. Name trusted reviewers in clients for a meaningful score."}});return{tools:[X,Y,Z,J]}};export{E as a,ie as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as h}from"./QOY4AANB.js";import{c as k}from"./MYBDO5SA.js";import{a as p}from"./UWOFA6GV.js";import{i as u}from"./73N3TOJL.js";import{a as n}from"./5YS5V2LK.js";var _="hoodlock_public",t="https://hoodlock.tech",f=["lp_locks","lp_lock","airdrop_history","airdrop_list","airdrop_list_by_root","featured","feature_tiers","buyback_status","referral_available","links"];function x(c){return{tools:[{name:_,inputSchema:{type:"object",properties:{route:{type:"string",enum:[...f]},id:p(),account:{type:"string"},token:{type:"string"},root:{type:"string",pattern:"^0x[0-9a-fA-F]{64}$"},code:{type:"string",minLength:1,maxLength:64}},required:["route"],additionalProperties:!1},async execute(e,b){try{let i=String(e.route);if(!f.includes(i))throw new n("Choose a published HoodLock public read route.");let m=e.account??b,s=r=>u(r,"Provide a checksummed wallet or token address."),a=()=>h(e.id,"id").toString(),o;switch(i){case"links":{let r=e.id===void 0?void 0:a();return{source:t,links:{lockChecker:`${t}/lock-checker`,liquidityChecker:`${t}/liquidity-lock-checker`,burnChecker:`${t}/burn-checker`,vestingChecker:`${t}/vesting-checker`,embedDocs:`${t}/docs/embed`,badgeDocs:`${t}/docs/badge`,...e.token===void 0?{}:{token:`${t}/token/${s(e.token)}`},...r===void 0?{}:Object.fromEntries(["lock","burn","vesting","position"].map(l=>[l,`${t}/proof/${l}/${r}`]))},summary:"HoodLock-only records and integration links. Empty HoodLock results do not establish that no external locks or burns exist."}}case"lp_locks":o="/api/lp/locks";break;case"lp_lock":o=`/api/lp/lock/${a()}`;break;case"airdrop_history":o=`/api/airdrop/history?address=${s(m)}`;break;case"airdrop_list":o=`/api/airdrop/${a()}/list.json`;break;case"airdrop_list_by_root":if(typeof e.root!="string"||!/^0x[0-9a-fA-F]{64}$/.test(e.root))throw new n("Provide a bytes32 Merkle root.");o=`/api/airdrop/list-by-root/${e.root}.json`;break;case"featured":o="/api/featured";break;case"feature_tiers":o="/api/feature/tiers";break;case"referral_available":if(typeof e.code!="string"||e.code.length<1||e.code.length>64)throw new n("Provide a referral code with 1 to 64 characters.");o=`/api/aff/available?code=${encodeURIComponent(e.code)}`;break;default:o="/api/revenue/pool"}let d=`${t}${o}`,y=await k(c.http,d,{method:"GET",redirect:"error",signal:AbortSignal.timeout(1e4)},r=>r!==null&&typeof r=="object");return{source:d,data:y,untrusted:!0,summary:"Public off-chain HoodLock data. Verify custody, proofs, balances and authority on chain; API labels and indexes may lag. No transaction, authentication, payment or publication was performed."}}catch(i){throw new n(c.plainError(i))}}}]}}export{_ as a,x as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as A}from"./4X6JEMSF.js";import{a,b as g,c as b,e as w,f as x,g as h}from"./ITIIHCZK.js";import{a as r}from"./UWOFA6GV.js";import{c as y}from"./73N3TOJL.js";import{a as m}from"./XPFVT2EA.js";import{a as i}from"./5YS5V2LK.js";import{encodeAbiParameters as S,encodeFunctionData as B,encodePacked as T,erc20Abi as I,getAddress as q,parseAbi as C,parseAbiParameters as N,zeroAddress as R}from"viem";var O=q("0x0000ffffbe8efe702c8703ae3477ff5de3d319c0"),$=N("(address currency,address tokensRecipient,address fundsRecipient,uint64 startBlock,uint64 endBlock,uint64 claimBlock,uint256 tickSpacing,address validationHook,uint256 floorPrice,uint128 requiredCurrencyRaised,bytes auctionStepsData)"),P=C(["function create(address token,uint256 amount,bytes configData,bytes32 salt) returns (address)","function getAddress(address token,uint256 amount,bytes configData,bytes32 salt,address sender) view returns (address)"]),Q=C(["function distributeToken(address token,(address strategy,uint128 amount,bytes configData) distribution,bytes32 salt) payable"]),v={token:y,amount:r(),currency:y,startBlock:r(),endBlock:r(),claimBlock:r(),tickSpacing:r(),floorPrice:r(),requiredCurrencyRaised:r(),salt:{type:"string",pattern:"^0x[0-9a-fA-F]{64}$"},steps:{type:"array",minItems:1,maxItems:100,items:{type:"object",additionalProperties:!1,required:["mps","duration"],properties:{mps:r(),duration:r()}}}};function D(e,t){let s=a(e.startBlock,"startBlock",64),o=a(e.endBlock,"endBlock",64),c=a(e.claimBlock,"claimBlock",64);if(o<=s||c<o)throw new i("Auction needs startBlock < endBlock <= claimBlock.");if(!Array.isArray(e.steps)||e.steps.length<1||e.steps.length>100)throw new i("Provide 1 to 100 issuance steps.");let u="0x",p=0n,l=0n;for(let d of e.steps){if(!d||typeof d!="object"||Array.isArray(d))throw new i("Each step requires mps and duration decimal strings.");h(d,["mps","duration"]);let n=d,k=a(n.mps,"mps",24,!0),f=a(n.duration,"duration",40);u=`${u}${T(["uint24","uint40"],[Number(k),Number(f)]).slice(2)}`,l+=k*f,p+=f}if(l!==10000000n||p!==o-s)throw new i("Issuance must total exactly 10000000 MPS and its durations must equal endBlock - startBlock.");return S($,[{currency:b(e.currency),tokensRecipient:t,fundsRecipient:t,startBlock:s,endBlock:o,claimBlock:c,tickSpacing:a(e.tickSpacing,"tickSpacing"),validationHook:R,floorPrice:a(e.floorPrice,"floorPrice"),requiredCurrencyRaised:a(e.requiredCurrencyRaised??"0","requiredCurrencyRaised",128,!0),auctionStepsData:u}])}function U(e){return{tools:[{name:"uniswap_create_auction",inputSchema:{type:"object",additionalProperties:!1,required:["token","amount","currency","startBlock","endBlock","claimBlock","tickSpacing","floorPrice","steps","salt"],properties:v},async execute(t,s){h(t,Object.keys(v));let o=g(t.token),c=a(t.amount,"amount",128);if(o===R||o===b(t.currency))throw new i("Auction sale token must be an ERC-20 distinct from its payment currency.");let u=D(t,s);if(typeof t.salt!="string"||!/^0x[0-9a-fA-F]{64}$/.test(t.salt))throw new i("Provide a 32-byte deployment salt.");let p=t.salt,l=e.clientFor(m),d=await l.getBlockNumber();if(BigInt(String(t.startBlock))<=d)throw new i("Choose a future auction startBlock with time for confirmation and approvals.");let n=await l.readContract({address:A,abi:P,functionName:"getAddress",args:[o,c,u,p,s]});if((await l.getCode({address:n})??"0x")!=="0x")throw new i("This auction already exists; choose a fresh salt or configuration.");let k=await w(e,o),f=[e.unsignedTx({to:A,data:B({abi:P,functionName:"create",args:[o,c,u,p]}),value:"0",chainId:m,description:`Create CCA ${n}; proceeds and unsold tokens go to ${s}.`}),e.unsignedTx({to:o,data:B({abi:I,functionName:"transfer",args:[n,c]}),value:"0",chainId:m,description:`Fund the factory-predicted auction ${n} with exactly ${c} base units of ${o}.`}),e.unsignedTx({to:n,data:B({abi:C(["function onTokensReceived()"]),functionName:"onTokensReceived"}),value:"0",chainId:m,description:`Activate CCA ${n} after its sale tokens arrive.`})];return{...await x(e,f,s,"Create/fund/activate a standalone CCA in three separately confirmed transactions, not an LBP-managed liquidity launch. If interrupted, inspect the predicted address and journal before recovery; do not transfer tokens twice. Raw prices are payment-base-units per sale-token-base-unit in Q96. No validation hook or off-chain signature; all proceeds and unsold tokens go to the signing wallet."),auction:n,sale:{token:k,amount:c.toString()}}}}]}}export{O as a,$ as b,P as c,Q as d,D as e,U as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as U,l as C,p as X,r as F,t as V}from"./XKZOMGC3.js";import{m as A,n as q}from"./PQHU5A3U.js";import{a as $}from"./F3TOOLFQ.js";import{b as j,e as O,h as z}from"./SXBGOGYQ.js";import{a as y,b as h}from"./Z53DADZ4.js";import{a as v}from"./LIUXNOLP.js";import{a as P}from"./MEZH7RPA.js";import{h as g}from"./R5CBH2CR.js";import{a as m,b as f,c as W,d as k,i as w,j as R,k as K,p as B}from"./5BP72XOA.js";import{a as S}from"./7I6TXFXR.js";import{a as c}from"./Z3FZWNAJ.js";import{a as T,b as H}from"./XN4WDN3O.js";import{getAddress as b,isAddress as D,parseAbi as ie}from"viem";var Y=[{inputs:[],name:"available",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"ethUsdE18",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"liquidityUsdgE6",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"phase",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"priceSigner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"signer",type:"address"}],name:"setPriceSigner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"spotOakPerEthE18",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"supplyNet",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"syncPhase",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"wallet",type:"address"},{internalType:"uint256",name:"oakPerEthE18",type:"uint256"},{internalType:"uint64",name:"timestamp",type:"uint64"},{internalType:"bytes32",name:"nonce",type:"bytes32"}],internalType:"struct PriceNote",name:"n",type:"tuple"},{internalType:"bytes",name:"sig",type:"bytes"},{internalType:"address",name:"boundWallet",type:"address"}],name:"verifyNote",outputs:[{internalType:"uint256",name:"oakPerEthE18",type:"uint256"}],stateMutability:"view",type:"function"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"signer",type:"address"}],name:"PriceSignerSet",type:"event"},{inputs:[],name:"NotReady",type:"error"},{inputs:[],name:"NoteBadSignature",type:"error"},{inputs:[],name:"NoteExpired",type:"error"},{inputs:[],name:"NoteNotYetValid",type:"error"},{inputs:[{internalType:"uint256",name:"spot",type:"uint256"},{internalType:"uint256",name:"note",type:"uint256"}],name:"NoteOutsideGuard",type:"error"},{inputs:[],name:"NoteWrongWallet",type:"error"},{inputs:[{internalType:"address",name:"source",type:"address"}],name:"OracleUnreadable",type:"error"}];var M=300,re="1000000000000000000",J=b(w[m].tokens.USDG.address),Q=b(w[f].deployments.test_USDG.address),_=b(w[m].tokens.WETH.address),I=b(w[f].deployments.test_WETH.address);function Z(n){let e=n.address.toLowerCase();return n.chainId===m?e===J.toLowerCase():n.chainId===f?e===Q.toLowerCase():!1}function ee(n){return n.chainId!==m&&n.chainId!==f?!1:h(n.address)===y}function te(n){let e=n.address.toLowerCase();return n.chainId===m?e===_.toLowerCase():n.chainId===f?e===I.toLowerCase():!1}function ae(n){return ee(n)||te(n)}var se=-887272,oe=887272,de=(1n<<256n)-1n,ce=ie(["function observe(uint32[] secondsAgos) view returns (int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)","function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)"]);function L(n,e){if(typeof n=="bigint")return n;if(typeof n=="number"){if(!Number.isSafeInteger(n))throw new c(`Invalid ${e} timestamp.`);return BigInt(n)}if(typeof n=="string"&&/^-?\d+$/.test(n.trim()))return BigInt(n.trim());throw new c(`Invalid ${e} timestamp.`)}function Pe(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){try{return p(n,e,t),!0}catch{return!1}}function p(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){if(!Number.isInteger(t)||t<0)throw new c("Maximum price age must be a non-negative integer.");let a=L(n,"price"),s=L(e,"current");if(a<=0n)throw new c("Price timestamp must be positive.");if(a>s)throw new c("Price timestamp is in the future.");let r=s-a;if(r>BigInt(t))throw new c(`Price is stale: age ${r}s exceeds ${t}s.`);return a.toString()}function ue(n){if(!Number.isInteger(n)||n<se||n>oe)throw new c(`Tick ${n} is outside valid Uniswap bounds.`);let e=BigInt(n<0?-n:n),t=(e&0x1n)!==0n?0xfffcb933bd6fad37aa2d162d1a594001n:0x100000000000000000000000000000000n;return(e&0x2n)!==0n&&(t=t*0xfff97272373d413259a46990580e213an>>128n),(e&0x4n)!==0n&&(t=t*0xfff2e50f5f656932ef12357cf3c7fdccn>>128n),(e&0x8n)!==0n&&(t=t*0xffe5caca7e10e4e61c3624eaa0941cd0n>>128n),(e&0x10n)!==0n&&(t=t*0xffcb9843d60f6159c9db58835c926644n>>128n),(e&0x20n)!==0n&&(t=t*0xff973b41fa98c081472e6896dfb254c0n>>128n),(e&0x40n)!==0n&&(t=t*0xff2ea16466c96a3843ec78b326b52861n>>128n),(e&0x80n)!==0n&&(t=t*0xfe5dee046a99a2a811c461f1969c3053n>>128n),(e&0x100n)!==0n&&(t=t*0xfcbe86c7900a88aedcffc83b479aa3a4n>>128n),(e&0x200n)!==0n&&(t=t*0xf987a7253ac413176f2b074cf7815e54n>>128n),(e&0x400n)!==0n&&(t=t*0xf3392b0822b70005940c7a398e4b70f3n>>128n),(e&0x800n)!==0n&&(t=t*0xe7159475a2c29b7443b29c7fa6e889d9n>>128n),(e&0x1000n)!==0n&&(t=t*0xd097f3bdfd2022b8845ad8f792aa5825n>>128n),(e&0x2000n)!==0n&&(t=t*0xa9f746462d870fdf8a65dc1f90e061e5n>>128n),(e&0x4000n)!==0n&&(t=t*0x70d869a156d2a1b890bb3df62baf32f7n>>128n),(e&0x8000n)!==0n&&(t=t*0x31be135f97d08fd981231505542fcfa6n>>128n),(e&0x10000n)!==0n&&(t=t*0x9aa508b5b7a84e1c677de54f3e99bc9n>>128n),(e&0x20000n)!==0n&&(t=t*0x5d6af8dedb81196699c329225ee604n>>128n),(e&0x40000n)!==0n&&(t=t*0x2216e584f5fa1ea926041bedfe98n>>128n),(e&0x80000n)!==0n&&(t=t*0x48a170391f7dc42444e8fa2n>>128n),n>0&&(t=de/t),(t>>32n)+(t%(1n<<32n)===0n?0n:1n)}async function me(n,e,t){if(typeof n=="object"&&n!==null){let i=n.chainId??e,o=h(n.address)===y?y:b(n.address),d={address:o,symbol:n.symbol,decimals:n.decimals,chainId:i};return Z(d)?{address:o,symbol:"USDG",decimals:k,chainId:i}:ee(d)?{address:y,symbol:"ETH",decimals:18,chainId:i}:te(d)?{address:o,symbol:"WETH",decimals:18,chainId:i}:t.officialStockTokens?z(d,t.officialStockTokens):d}let a=n.trim(),s=a.toUpperCase(),r=a.toLowerCase();if(s==="ETH"||D(a,{strict:!1})&&h(a)===y)return{...j,chainId:e};if(s==="WETH"||e===m&&r===_.toLowerCase()||e===f&&r===I.toLowerCase()){if(e!==m&&e!==f)throw new c(`No canonical WETH address configured for chain ${e}.`);return{address:e===f?I:_,symbol:"WETH",decimals:18,chainId:e}}if(s==="USDG"||e===m&&r===R.toLowerCase()||e===f&&r===K.toLowerCase()){if(e!==m&&e!==f)throw new c(`No canonical USDG address configured for chain ${e}.`);return{address:e===f?Q:J,symbol:"USDG",decimals:k,chainId:e}}if(e===m&&(s==="USDE"||r===O.address.toLowerCase()))return{...O,chainId:e};let u=t.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS;if(s==="OAK"||u&&a.toLowerCase()===u.toLowerCase()){if(!u&&!D(a,{strict:!1}))throw new c("OAK token address is required to price OAK.");return{address:b(u??a),symbol:"OAK",decimals:W,chainId:e}}if(t.officialStockTokens){let i=t.officialStockTokens.find(o=>o.chainId===e&&o.symbol.toUpperCase()===s);if(i)return i;if(D(a,{strict:!1})){let o=b(a),d=t.officialStockTokens.find(l=>l.chainId===e&&l.address.toLowerCase()===o.toLowerCase());if(d)return d}}if(D(a,{strict:!1})){let i=b(a),o=t.client??g(t.rpcUrl,e),[d,l]=await Promise.all([P(o,e,i,"symbol",t.blockNumber),P(o,e,i,"decimals",t.blockNumber)]);return{address:i,symbol:d,decimals:Number(l),chainId:e}}throw new c(`Unknown token ${T(a)}.`)}async function N(n,e,t){if(e)return(await n.readContract({address:e,abi:Y,functionName:"ethUsdE18",blockNumber:t})).toString();let s=(await n.readContract({address:b(B),abi:ce,functionName:"observe",args:[[U,0]],blockNumber:t}))[0];if(!s||s.length<2)throw new c("ETH/USDG pool observation returned insufficient tick cumulatives.");let r=X(s[0],s[1],U),u=ue(r);return F(u)}async function x(n,e,t,a){if(n.timestamp!==void 0)return p(n.timestamp,t(),a);if(e&&typeof e.getBlock=="function"){let r=await v(e,n.blockNumber);return p(r.timestamp,t(),a)}let s=t();return p(s,s,a)}async function ve(n,e={}){let t=e.chainId??m,a=e.maxAgeSeconds??M,s=()=>e.now!==void 0?L(e.now,"current"):BigInt(Math.floor(Date.now()/1e3)),r=await me(n,t,e);if((H(r.symbol)||r.symbol.length>256)&&(r.symbol=T(r.symbol)),e.signedNote||e.priceNote){let i=e.signedNote?e.signedNote.note:e.priceNote,o=p(i.timestamp,s(),a);if(e.spotOakPerEthE18!==void 0&&!A(i.oakPerEthE18,e.spotOakPerEthE18))throw new c("Price note is outside the 50% spot guard band.");let d=e.signedNote?.signature??e.signature,l=e.signedNote?.consumer??e.consumer;if(d&&l){let G=await q({note:i,signature:d,consumer:l,signer:e.signer,now:s(),spotOakPerEthE18:e.spotOakPerEthE18,chainId:t});if(!G.valid)throw new c(G.error??"Price note verification failed.")}let E=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await N(e.client??g(e.rpcUrl,t),e.oracleAddress);return{token:r,usdE18:C(E,i.oakPerEthE18),timestamp:o}}if(e.trades){let i=await x(e,e.client,s,a),o=V(e.trades,{now:s(),windowStart:e.windowStart,windowEnd:e.windowEnd});if(e.spotOakPerEthE18!==void 0&&!A(o,e.spotOakPerEthE18))throw new c("30-minute average is outside the 50% spot guard band.");let d=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await N(e.client??g(e.rpcUrl,t),e.oracleAddress);return{token:r,usdE18:C(d,o),timestamp:i}}if(e.usdE18!==void 0){let i=await x(e,e.client,s,a),o=S(e.usdE18.toString());if(o<=0n)throw new c("USD price must be positive.");return{token:r,usdE18:o.toString(),timestamp:i}}if(e.resolver){let i=await e.resolver(r),o=p(i.timestamp,s(),a),d=S(i.usdE18);if(d<=0n)throw new c("USD price must be positive.");return{token:r,usdE18:d.toString(),timestamp:o}}let u=e.client??g(e.rpcUrl,t);if(Z(r)){let i=await x(e,u,s,a);return{token:r,usdE18:re,timestamp:i}}if(ae(r)){let i=await x(e,u,s,a),o=await N(u,e.oracleAddress,e.blockNumber);return{token:r,usdE18:o,timestamp:i}}if(r.chainId===m)try{let i=await v(u,e.blockNumber),o=p(i.timestamp,s(),a);if(i.number===null)throw new c("Pons reference requires a mined block.");let[d,l]=await Promise.all([$(r,u,i.number),N(u,e.oracleAddress,i.number)]),E=S(l)*d.numerator/d.denominator;if(E<=0n)throw new c("Pons USD reference price must be positive.");return{token:r,usdE18:E.toString(),timestamp:o}}catch{}throw new c(`No fresh on-chain price source available for token ${T(r.symbol)} (${r.address}).`)}export{M as a,re as b,Z as c,ee as d,te as e,ae as f,Pe as g,p as h,ue as i,ve as j};
|
|
1
|
+
import{m as A,n as q}from"./D3OWLDVB.js";import{b as U,i as C,n as X,o as F,q as V}from"./CCEWSOBT.js";import{a as $}from"./RFJCG4NA.js";import{b as j,e as O,h as z}from"./HZUWK5B2.js";import{a as y,b as h}from"./XCFA73P2.js";import{a as v}from"./LIUXNOLP.js";import{a as P}from"./OG5HRQU4.js";import{a as S}from"./RETS2ZEK.js";import{o as g}from"./IWALIX7Q.js";import{a as m,b as f,c as W,d as k,i as w,j as R,k as K,p as B}from"./XPFVT2EA.js";import{a as c}from"./5YS5V2LK.js";import{a as T,b as H}from"./JXOEJPJ4.js";import{getAddress as b,isAddress as D,parseAbi as ie}from"viem";var Y=[{inputs:[],name:"available",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"ethUsdE18",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"liquidityUsdgE6",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"phase",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"priceSigner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"signer",type:"address"}],name:"setPriceSigner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"spotOakPerEthE18",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"supplyNet",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"syncPhase",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"wallet",type:"address"},{internalType:"uint256",name:"oakPerEthE18",type:"uint256"},{internalType:"uint64",name:"timestamp",type:"uint64"},{internalType:"bytes32",name:"nonce",type:"bytes32"}],internalType:"struct PriceNote",name:"n",type:"tuple"},{internalType:"bytes",name:"sig",type:"bytes"},{internalType:"address",name:"boundWallet",type:"address"}],name:"verifyNote",outputs:[{internalType:"uint256",name:"oakPerEthE18",type:"uint256"}],stateMutability:"view",type:"function"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"signer",type:"address"}],name:"PriceSignerSet",type:"event"},{inputs:[],name:"NotReady",type:"error"},{inputs:[],name:"NoteBadSignature",type:"error"},{inputs:[],name:"NoteExpired",type:"error"},{inputs:[],name:"NoteNotYetValid",type:"error"},{inputs:[{internalType:"uint256",name:"spot",type:"uint256"},{internalType:"uint256",name:"note",type:"uint256"}],name:"NoteOutsideGuard",type:"error"},{inputs:[],name:"NoteWrongWallet",type:"error"},{inputs:[{internalType:"address",name:"source",type:"address"}],name:"OracleUnreadable",type:"error"}];var M=300,re="1000000000000000000",J=b(w[m].tokens.USDG.address),Q=b(w[f].deployments.test_USDG.address),_=b(w[m].tokens.WETH.address),I=b(w[f].deployments.test_WETH.address);function Z(n){let e=n.address.toLowerCase();return n.chainId===m?e===J.toLowerCase():n.chainId===f?e===Q.toLowerCase():!1}function ee(n){return n.chainId!==m&&n.chainId!==f?!1:h(n.address)===y}function te(n){let e=n.address.toLowerCase();return n.chainId===m?e===_.toLowerCase():n.chainId===f?e===I.toLowerCase():!1}function ae(n){return ee(n)||te(n)}var se=-887272,oe=887272,de=(1n<<256n)-1n,ce=ie(["function observe(uint32[] secondsAgos) view returns (int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)","function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)"]);function L(n,e){if(typeof n=="bigint")return n;if(typeof n=="number"){if(!Number.isSafeInteger(n))throw new c(`Invalid ${e} timestamp.`);return BigInt(n)}if(typeof n=="string"&&/^-?\d+$/.test(n.trim()))return BigInt(n.trim());throw new c(`Invalid ${e} timestamp.`)}function Pe(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){try{return p(n,e,t),!0}catch{return!1}}function p(n,e=BigInt(Math.floor(Date.now()/1e3)),t=M){if(!Number.isInteger(t)||t<0)throw new c("Maximum price age must be a non-negative integer.");let a=L(n,"price"),s=L(e,"current");if(a<=0n)throw new c("Price timestamp must be positive.");if(a>s)throw new c("Price timestamp is in the future.");let r=s-a;if(r>BigInt(t))throw new c(`Price is stale: age ${r}s exceeds ${t}s.`);return a.toString()}function ue(n){if(!Number.isInteger(n)||n<se||n>oe)throw new c(`Tick ${n} is outside valid Uniswap bounds.`);let e=BigInt(n<0?-n:n),t=(e&0x1n)!==0n?0xfffcb933bd6fad37aa2d162d1a594001n:0x100000000000000000000000000000000n;return(e&0x2n)!==0n&&(t=t*0xfff97272373d413259a46990580e213an>>128n),(e&0x4n)!==0n&&(t=t*0xfff2e50f5f656932ef12357cf3c7fdccn>>128n),(e&0x8n)!==0n&&(t=t*0xffe5caca7e10e4e61c3624eaa0941cd0n>>128n),(e&0x10n)!==0n&&(t=t*0xffcb9843d60f6159c9db58835c926644n>>128n),(e&0x20n)!==0n&&(t=t*0xff973b41fa98c081472e6896dfb254c0n>>128n),(e&0x40n)!==0n&&(t=t*0xff2ea16466c96a3843ec78b326b52861n>>128n),(e&0x80n)!==0n&&(t=t*0xfe5dee046a99a2a811c461f1969c3053n>>128n),(e&0x100n)!==0n&&(t=t*0xfcbe86c7900a88aedcffc83b479aa3a4n>>128n),(e&0x200n)!==0n&&(t=t*0xf987a7253ac413176f2b074cf7815e54n>>128n),(e&0x400n)!==0n&&(t=t*0xf3392b0822b70005940c7a398e4b70f3n>>128n),(e&0x800n)!==0n&&(t=t*0xe7159475a2c29b7443b29c7fa6e889d9n>>128n),(e&0x1000n)!==0n&&(t=t*0xd097f3bdfd2022b8845ad8f792aa5825n>>128n),(e&0x2000n)!==0n&&(t=t*0xa9f746462d870fdf8a65dc1f90e061e5n>>128n),(e&0x4000n)!==0n&&(t=t*0x70d869a156d2a1b890bb3df62baf32f7n>>128n),(e&0x8000n)!==0n&&(t=t*0x31be135f97d08fd981231505542fcfa6n>>128n),(e&0x10000n)!==0n&&(t=t*0x9aa508b5b7a84e1c677de54f3e99bc9n>>128n),(e&0x20000n)!==0n&&(t=t*0x5d6af8dedb81196699c329225ee604n>>128n),(e&0x40000n)!==0n&&(t=t*0x2216e584f5fa1ea926041bedfe98n>>128n),(e&0x80000n)!==0n&&(t=t*0x48a170391f7dc42444e8fa2n>>128n),n>0&&(t=de/t),(t>>32n)+(t%(1n<<32n)===0n?0n:1n)}async function me(n,e,t){if(typeof n=="object"&&n!==null){let i=n.chainId??e,o=h(n.address)===y?y:b(n.address),d={address:o,symbol:n.symbol,decimals:n.decimals,chainId:i};return Z(d)?{address:o,symbol:"USDG",decimals:k,chainId:i}:ee(d)?{address:y,symbol:"ETH",decimals:18,chainId:i}:te(d)?{address:o,symbol:"WETH",decimals:18,chainId:i}:t.officialStockTokens?z(d,t.officialStockTokens):d}let a=n.trim(),s=a.toUpperCase(),r=a.toLowerCase();if(s==="ETH"||D(a,{strict:!1})&&h(a)===y)return{...j,chainId:e};if(s==="WETH"||e===m&&r===_.toLowerCase()||e===f&&r===I.toLowerCase()){if(e!==m&&e!==f)throw new c(`No canonical WETH address configured for chain ${e}.`);return{address:e===f?I:_,symbol:"WETH",decimals:18,chainId:e}}if(s==="USDG"||e===m&&r===R.toLowerCase()||e===f&&r===K.toLowerCase()){if(e!==m&&e!==f)throw new c(`No canonical USDG address configured for chain ${e}.`);return{address:e===f?Q:J,symbol:"USDG",decimals:k,chainId:e}}if(e===m&&(s==="USDE"||r===O.address.toLowerCase()))return{...O,chainId:e};let u=t.oakTokenAddress??process.env.OAK_TOKEN_ADDRESS;if(s==="OAK"||u&&a.toLowerCase()===u.toLowerCase()){if(!u&&!D(a,{strict:!1}))throw new c("OAK token address is required to price OAK.");return{address:b(u??a),symbol:"OAK",decimals:W,chainId:e}}if(t.officialStockTokens){let i=t.officialStockTokens.find(o=>o.chainId===e&&o.symbol.toUpperCase()===s);if(i)return i;if(D(a,{strict:!1})){let o=b(a),d=t.officialStockTokens.find(l=>l.chainId===e&&l.address.toLowerCase()===o.toLowerCase());if(d)return d}}if(D(a,{strict:!1})){let i=b(a),o=t.client??g(t.rpcUrl,e),[d,l]=await Promise.all([P(o,e,i,"symbol",t.blockNumber),P(o,e,i,"decimals",t.blockNumber)]);return{address:i,symbol:d,decimals:Number(l),chainId:e}}throw new c(`Unknown token ${T(a)}.`)}async function N(n,e,t){if(e)return(await n.readContract({address:e,abi:Y,functionName:"ethUsdE18",blockNumber:t})).toString();let s=(await n.readContract({address:b(B),abi:ce,functionName:"observe",args:[[U,0]],blockNumber:t}))[0];if(!s||s.length<2)throw new c("ETH/USDG pool observation returned insufficient tick cumulatives.");let r=X(s[0],s[1],U),u=ue(r);return F(u)}async function x(n,e,t,a){if(n.timestamp!==void 0)return p(n.timestamp,t(),a);if(e&&typeof e.getBlock=="function"){let r=await v(e,n.blockNumber);return p(r.timestamp,t(),a)}let s=t();return p(s,s,a)}async function ve(n,e={}){let t=e.chainId??m,a=e.maxAgeSeconds??M,s=()=>e.now!==void 0?L(e.now,"current"):BigInt(Math.floor(Date.now()/1e3)),r=await me(n,t,e);if((H(r.symbol)||r.symbol.length>256)&&(r.symbol=T(r.symbol)),e.signedNote||e.priceNote){let i=e.signedNote?e.signedNote.note:e.priceNote,o=p(i.timestamp,s(),a);if(e.spotOakPerEthE18!==void 0&&!A(i.oakPerEthE18,e.spotOakPerEthE18))throw new c("Price note is outside the 50% spot guard band.");let d=e.signedNote?.signature??e.signature,l=e.signedNote?.consumer??e.consumer;if(d&&l){let G=await q({note:i,signature:d,consumer:l,signer:e.signer,now:s(),spotOakPerEthE18:e.spotOakPerEthE18,chainId:t});if(!G.valid)throw new c(G.error??"Price note verification failed.")}let E=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await N(e.client??g(e.rpcUrl,t),e.oracleAddress);return{token:r,usdE18:C(E,i.oakPerEthE18),timestamp:o}}if(e.trades){let i=await x(e,e.client,s,a),o=V(e.trades,{now:s(),windowStart:e.windowStart,windowEnd:e.windowEnd});if(e.spotOakPerEthE18!==void 0&&!A(o,e.spotOakPerEthE18))throw new c("30-minute average is outside the 50% spot guard band.");let d=e.ethUsdE18!==void 0?e.ethUsdE18.toString():await N(e.client??g(e.rpcUrl,t),e.oracleAddress);return{token:r,usdE18:C(d,o),timestamp:i}}if(e.usdE18!==void 0){let i=await x(e,e.client,s,a),o=S(e.usdE18.toString());if(o<=0n)throw new c("USD price must be positive.");return{token:r,usdE18:o.toString(),timestamp:i}}if(e.resolver){let i=await e.resolver(r),o=p(i.timestamp,s(),a),d=S(i.usdE18);if(d<=0n)throw new c("USD price must be positive.");return{token:r,usdE18:d.toString(),timestamp:o}}let u=e.client??g(e.rpcUrl,t);if(Z(r)){let i=await x(e,u,s,a);return{token:r,usdE18:re,timestamp:i}}if(ae(r)){let i=await x(e,u,s,a),o=await N(u,e.oracleAddress,e.blockNumber);return{token:r,usdE18:o,timestamp:i}}if(r.chainId===m)try{let i=await v(u,e.blockNumber),o=p(i.timestamp,s(),a);if(i.number===null)throw new c("Pons reference requires a mined block.");let[d,l]=await Promise.all([$(r,u,i.number),N(u,e.oracleAddress,i.number)]),E=S(l)*d.numerator/d.denominator;if(E<=0n)throw new c("Pons USD reference price must be positive.");return{token:r,usdE18:E.toString(),timestamp:o}}catch{}throw new c(`No fresh on-chain price source available for token ${T(r.symbol)} (${r.address}).`)}export{M as a,re as b,Z as c,ee as d,te as e,ae as f,Pe as g,p as h,ue as i,ve as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ee,d as te,e as ne}from"./HQVC6X3T.js";import{b as oe}from"./ZQI7B2Z7.js";import{b as T}from"./XCFA73P2.js";import{a as f,b as U,c as q}from"./6IM6A5VA.js";import{c as H}from"./HIMVOTIU.js";import{a as o,d as J}from"./RETS2ZEK.js";import{a as x,i as V,w as $,x as y,y as Y,z as Z}from"./XPFVT2EA.js";import{a as r}from"./5YS5V2LK.js";import{decodeFunctionData as F,encodeFunctionData as P,parseAbi as ae}from"viem";var fe=60,G=50,Pe=200;var we="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",j="0x0000000000000000000000000000000000000000",B=V[4663].routes.kyberswap.address,L=V[4663].routes.velora.address,W=$[4663].kyberswap.toLowerCase(),se=$[4663].velora.toLowerCase(),Ae="0x0000000000000000000000000000000000000000000000000000000000000000",Q=ae(["function swap((address callTarget, address approveTarget, bytes targetData, (address srcToken, address dstToken, address[] srcReceivers, uint256[] srcAmounts, address[] feeReceivers, uint256[] feeAmounts, address dstReceiver, uint256 amount, uint256 minReturnAmount, uint256 flags, bytes permit) desc, bytes clientData) execution) payable returns (uint256 returnAmount, uint256 gasUsed)"]),_=ae(["function swapExactAmountIn(address executor, (address srcToken, address destToken, uint256 fromAmount, uint256 toAmount, uint256 quotedAmount, bytes32 metadata, address beneficiary) swapData, uint256 partnerAndFee, bytes permit, bytes executorData) payable returns (uint256 receivedAmount, uint256 submittedAmount, uint256 augustusFeeAmount)"]),E=class extends r{name="NoRouteError";constructor(t="No swap route is available for this token pair and amount."){super(t)}},R=class extends r{name="ExpiredQuoteError";constructor(t="Quote has expired. Request a fresh quote."){super(t)}},ge=1e3,h=new Map;function ie(e){for(let[t,n]of h)BigInt(e)>=o(n.expiresAt)&&h.delete(t)}function K(e){return{...e,...e.sourcePoolRoute!==void 0?{sourcePoolRoute:structuredClone(e.sourcePoolRoute)}:{},...e.txs?{txs:e.txs.map(t=>({...t}))}:{}}}function re(e){let t=K(e);return t.txs&&(t.txs.forEach(Object.freeze),Object.freeze(t.txs)),Object.freeze(t)}var ve=["router","from","to","wallet","amountIn","amountOut","minAmountOut","expiresAt","chainId","spender","value","ponsCurveToken","ponsPoolToken","blockNumber","calldataMinAmountOut","expectedSpend","expectedRefund"];function M(e,t,n=!1){for(let s of ve)if(!(s==="expiresAt"&&n&&o(e.expiresAt)<=o(t.expiresAt))&&e[s]!==void 0&&String(e[s]).toLowerCase()!==String(t[s]).toLowerCase())throw new r(`Quote ${s} does not match the accepted quote.`)}function N(e=Date.now){let t=e();if(!Number.isFinite(t)||t<0)throw new r("Clock must return a non-negative timestamp.");return t>1e11?Math.floor(t/1e3):Math.floor(t)}function C(e){let t=e.toLowerCase();return t===we.toLowerCase()||t===j.toLowerCase()}function Se(e,t=G){if(!Number.isInteger(t)||t<0||t>=1e4)throw new r("Slippage must be an integer from 0 to 9999 bps.");return J(e,String(1e4-t),"10000","floor")}var he=200;function Le(e){if(typeof e!="number"||!Number.isFinite(e)||!/^\d+(?:\.\d{1,2})?$/.test(String(e)))throw new r("Velora returned an unsupported venue fee. Request a fresh quote.");let[t,n=""]=String(e).split("."),s=Number(t)*100+Number(n.padEnd(2,"0"));return X(s),s}function X(e){if(!Number.isInteger(e)||e<0||e>he)throw new r("Velora returned an unsupported venue fee. Request a fresh quote.")}function ue(e,t=1){return X(t),o(e)*10000n/BigInt(1e4-t)+1n}function be(e,t){X(t);let n=e>>96n,s=Y>>96n,a=0x3fffn,d=1n<<92n,l=e&(1n<<96n)-1n;if(n!==s&&!(n===0n&&t===0)||(l&a)!==BigInt(t)||(l&~(d|a))!==0n)throw new r("Velora partnerAndFee must match the accepted venue fee and recipient.")}function de(e){if(e.oakFee!==void 0&&o(e.oakFee)!==0n)throw new r("Oak charges 0 swap fee; venue fees must never be counted as Oak income.");let t=e.provider??"venue";return`Venue fee: ${e.venueFee} base units (${e.venueFeeBps} bps) retained by ${t}; Oak swap fee: 0 (venue fee is never Oak income).`}function Oe(e){f(e.from),f(e.to),f(e.wallet);let t=e.callTarget??y[x].kyberswap.address,n=e.approveTarget??j;f(t),f(n);let s=o(e.amountIn),a=o(e.minAmountOut);return P({abi:Q,functionName:"swap",args:[{callTarget:t,approveTarget:n,targetData:e.targetData??"0x",desc:{srcToken:e.from,dstToken:e.to,srcReceivers:C(e.from)?[]:[t],srcAmounts:C(e.from)?[]:[s],feeReceivers:[],feeAmounts:[],dstReceiver:e.wallet,amount:s,minReturnAmount:a,flags:0n,permit:"0x"},clientData:e.clientData??"0x"}]})}function xe(e){f(e.from),f(e.to),f(e.wallet);let t=e.executor??y[x].velora.address;return f(t),P({abi:_,functionName:"swapExactAmountIn",args:[t,{srcToken:e.from,destToken:e.to,fromAmount:o(e.amountIn),toAmount:o(e.minAmountOut),quotedAmount:o(e.amountOut),metadata:e.metadata??Ae,beneficiary:e.wallet},e.partnerAndFee??0n,"0x",e.executorData??"0x"]})}function Ie(e){if(typeof e!="string"||!/^0x([0-9a-fA-F]{2})+$/.test(e)||e.length<10)throw new r("Swap calldata must contain a 4-byte function selector.");let t=e.slice(0,10).toLowerCase();if(t===W)return F({abi:Q,data:e}).args[0].desc.minReturnAmount;if(t===se)return F({abi:_,data:e}).args[1].toAmount;if(t==="0x3593564c")return te(e).swap.amountOutMinimum;let n=F({abi:ee,data:e});if(n.functionName==="buy"||n.functionName==="sell")return n.args[1];throw new r(`Unsupported swap router selector ${t}.`)}function ce(e,t,n=!1){let s=o(t),a=Ie(e);if(a<=0n||s<=0n||a!==s&&!(n&&(a>s||e.slice(0,10).toLowerCase()===W&&a+1n===s)))throw new r(`Built swap calldata minimum output (${a}) does not match the accepted quote minimum (${s}).`);return a}function le(e,t){let{from:n,to:s,wallet:a,amountIn:d}=t;if(!n||!s||!a||d===void 0)throw new r("Accepted quote must include input, output, amount and wallet.");for(let u of[n,s,a,t.router,e.to])f(u);let l=(u,m,A)=>{if(u.toLowerCase()!==m.toLowerCase())throw new r(`Built swap ${A} does not match the accepted quote.`)};if(l(e.to,t.router,"router"),e.chainId!==(t.chainId??x))throw new r("Built swap chain does not match the accepted quote.");let g=C(n)?o(d):0n;if(o(e.value)!==g||t.value!==void 0&&o(t.value)!==g)throw new r("Built swap value does not match the accepted quote input.");let w=e.data.slice(0,10).toLowerCase(),i=t.router.toLowerCase(),p;if(i===B.toLowerCase()&&w===W){l(t.spender??t.router,B,"spender");let u=F({abi:Q,data:e.data});if(P({abi:Q,...u}).toLowerCase()!==e.data.toLowerCase())throw new r("KyberSwap calldata must be canonically decodable.");let{callTarget:m,approveTarget:A,desc:c}=u.args[0];l(m,y[x].kyberswap.address,"executor"),l(A,j,"executor approval target");let b=C(n);if(c.srcReceivers.length!==c.srcAmounts.length||(b?c.srcReceivers.length!==0:c.srcReceivers.length===0||c.srcAmounts.some(v=>v<=0n)||c.srcAmounts.reduce((v,S)=>v+S,0n)!==o(d)))throw new r("KyberSwap source transfers must send the exact input to the pinned executor or verified input pool.");for(let v of c.srcReceivers)if(v.toLowerCase()!==m.toLowerCase()&&!oe(n,v,e.data))throw new r(`KyberSwap source transfers: receiver ${v} is not a verified input pool or the pinned executor.`);if(c.feeReceivers.length||c.feeAmounts.length||c.flags!==0n&&c.flags!==512n||c.permit!=="0x")throw new r("KyberSwap fee recipients, fee amounts, flags and permit must match the pinned zero-fee policy.");p={from:c.srcToken,to:c.dstToken,wallet:c.dstReceiver,amount:c.amount}}else if(i===L.toLowerCase()&&w===se){l(t.spender??t.router,L,"spender");let u=F({abi:_,data:e.data});if(P({abi:_,...u}).toLowerCase()!==e.data.toLowerCase())throw new r("Velora calldata must be canonically decodable.");let[m,A,c,b]=u.args;if(!Z.some(v=>v.toLowerCase()===m.toLowerCase()))throw new r("Built swap executor does not match the accepted quote.");if(b!=="0x")throw new r("Velora permit must match the pinned empty-permit policy.");if((t.calldataMinAmountOut!==void 0||c!==0n)&&be(c,t.venueFeeBps??0),t.calldataMinAmountOut!==void 0&&o(t.calldataMinAmountOut)!==ue(t.minAmountOut,t.venueFeeBps??1))throw new r("Velora calldata minimum must cover the accepted net output, venue fee and router dust.");if(t.calldataMinAmountOut!==void 0&&(A.quotedAmount!==o(t.grossAmountOut??"0")||A.quotedAmount<o(t.calldataMinAmountOut)))throw new r("Velora quoted gross output must match the accepted quote and cover its calldata minimum.");if(c!==0n&&t.calldataMinAmountOut===void 0)throw new r("Velora venue fee requires a fee-adjusted calldata minimum.");p={from:A.srcToken,to:A.destToken,wallet:A.beneficiary,amount:A.fromAmount}}else if(t.provider==="pons"&&(t.ponsPoolToken||t.ponsCurveToken))p=ne(e,{...t,from:n,to:s,wallet:a});else throw new r("Built swap selector does not match the accepted router.");if(l(p.from,n,"input token"),l(p.to,s,"output token"),l(p.wallet,a,"recipient"),p.amount!==o(d))throw new r("Built swap input amount does not match the accepted quote.");ce(e.data,t.calldataMinAmountOut??t.minAmountOut,i===B.toLowerCase())}function z(e,t={}){if(!e||typeof e.quoteId!="string"||!e.quoteId.trim())throw new r("Quote must include a non-empty quoteId.");if(f(e.router),e.oakFee!==void 0&&o(e.oakFee)!==0n)throw new r("Oak charges 0 swap fee; venue fees must never be counted as Oak income.");let n=o(e.amountOut),s=e.destAmountAfterFee??e.netAmountOut,a,d,l;if(s!==void 0){if(d=o(s),a=e.grossAmountOut!==void 0?o(e.grossAmountOut):n>=d?n:d,a<d)throw new r("Gross output cannot be less than net output.");l=e.venueFee!==void 0?o(e.venueFee):a-d}else if(e.grossAmountOut!==void 0){if(a=o(e.grossAmountOut),d=n,a<d)throw new r("Gross output cannot be less than net output.");l=e.venueFee!==void 0?o(e.venueFee):a-d}else e.venueFee!==void 0?(l=o(e.venueFee),d=n,a=d+l):(d=n,a=n,l=0n);if(d<=0n)throw new E("Quote output amount must be positive.");let g=t.slippageBps??e.slippageBps??G,w=e.minAmountOut!==void 0?o(e.minAmountOut):o(Se(d.toString(),g));if(w<=0n||w>a)throw new r("Quote minAmountOut must be positive and not exceed gross output.");if((t.provider??e.provider)==="velora"&&e.calldataMinAmountOut!==void 0){if(o(e.calldataMinAmountOut)!==ue(w.toString(),e.venueFeeBps??1)||o(e.calldataMinAmountOut)>a)throw new r("Velora calldata minimum must cover the accepted net output, venue fee and router dust.")}else if(e.calldataMinAmountOut!==void 0||e.ponsCurveToken!==void 0){if((t.provider??e.provider)!=="pons"||!e.ponsCurveToken)throw new r("Curve minimum requires a Pons curve quote.");f(e.ponsCurveToken);let O=o(t.amountIn??e.amountIn??"0"),I=o(e.expectedSpend??"0"),me=o(e.expectedRefund??"0"),pe=o(e.calldataMinAmountOut??"0");if(O<=0n||I<=0n||I+me!==O||pe*I/O!==w)throw new r("Pons actual minimum and refund do not match the encoded minimum.")}let i=N(t.now),p=BigInt(i+fe),u=e.expiresAt!==void 0?o(e.expiresAt):p,m=(u>p?p:u).toString(),A=l.toString(),c=e.venueFeeBps??(a>0n&&l>0n?Number((l*10000n+a/2n)/a):0),b=t.provider??e.provider??(e.router.toLowerCase()===L.toLowerCase()?"velora":"kyberswap"),v=b==="pons"&&e.feeDisclosure?e.feeDisclosure:de({provider:b,venueFee:A,venueFeeBps:c,oakFee:"0"}),S={...e,quoteId:e.quoteId,amountOut:d.toString(),minAmountOut:w.toString(),router:e.router,expiresAt:m,provider:b,grossAmountOut:a.toString(),destAmountAfterFee:d.toString(),netAmountOut:d.toString(),venueFee:A,venueFeeBps:c,oakFee:"0",feeDisclosure:v,...t.from??e.from?{from:T(t.from??e.from)}:{},...t.to??e.to?{to:T(t.to??e.to)}:{},...t.amountIn??e.amountIn?{amountIn:t.amountIn??e.amountIn}:{},...t.wallet??e.wallet?{wallet:t.wallet??e.wallet}:{},slippageBps:g,chainId:t.chainId??e.chainId??x,spender:e.spender??e.router,...t.allowance??e.allowance?{allowance:t.allowance??e.allowance}:{}};if(BigInt(i)>=o(m))throw new R;if(t.cache===!1)return S;if(ie(i),BigInt(i)>=o(m))throw new R;let k=h.get(S.quoteId);if(k){M(S,k,!0);let O=re({...k,expiresAt:S.expiresAt});return h.set(O.quoteId,O),K(O)}for(;h.size>=ge;)h.delete(h.keys().next().value);let D=re(S);return h.set(D.quoteId,D),K(D)}async function Qe(e,t,n={}){e={...e},f(e.from),f(e.to),f(e.wallet),e.from=T(e.from),e.to=T(e.to);let s=o(e.amountIn);if(s<=0n)throw new r("Swap amountIn must be greater than zero.");let a=e.slippageBps??G;if(!Number.isInteger(a)||a<0||a>=1e4)throw new r("Slippage must be an integer from 0 to 9999 bps.");if(!Array.isArray(t)||t.length===0)throw new E;let d={from:e.from,to:e.to,amountIn:s.toString(),slippageBps:a},l=await Promise.allSettled(t.map(async i=>{let p=await(i.quotePrices??i.quote).call(i,{...d},e.wallet);return{quote:z(p,{provider:i.name,from:e.from,to:e.to,amountIn:s.toString(),wallet:e.wallet,slippageBps:a,chainId:e.chainId??x,allowance:e.allowance,now:e.now,cache:!1}),provider:i}})),g,w=[];for(let i of l)i.status==="rejected"&&(g??=H(i.reason)),i.status==="fulfilled"&&o(i.value.quote.expiresAt)>BigInt(N(e.now))&&w.push(i.value);if(w.length===0)throw g??new E;w.sort((i,p)=>{let m=o(p.quote.amountOut)-o(i.quote.amountOut)||o(p.quote.minAmountOut)-o(i.quote.minAmountOut);return m>0n?1:m<0n?-1:0});for(let{quote:i,provider:p}of w)try{if(BigInt(N(e.now))>=o(i.expiresAt))continue;if(n.deferBuild||!p.prepareQuote)return z(i,{now:e.now});let u=await p.prepareQuote(i.quoteId,e.wallet);if(u.quoteId!==i.quoteId)throw new r("Prepared quote ID does not match the selected route.");if(M(u,i,!0),!u.data)throw new r("Selected route did not return swap calldata.");let m={...i,expiresAt:u.expiresAt,data:u.data,value:u.value,allowance:u.allowance??i.allowance};return le(U({to:m.router,data:u.data,value:u.value??"0",chainId:m.chainId??x,description:"Selected swap route"}),m),z(m,{now:e.now})}catch(u){g??=H(u);continue}throw g??new E}function _e(e,t={}){if(!e||typeof e.quoteId!="string"||!e.quoteId.trim())throw new r("Provide a valid quote to build a swap.");f(e.router);let n=h.get(e.quoteId),s=N(t.now);if(ie(s),!n||BigInt(s)>=o(n.expiresAt))throw h.delete(e.quoteId),new R;if(e.oakFee!==void 0&&o(e.oakFee)!==0n)throw new r("Oak charges 0 swap fee; venue fees must never be counted as Oak income.");M(e,n),M({...n,...t},n);let a=n.from,d=n.to,l=n.amountIn,g=n.wallet;if(!a||!d||!g||l===void 0)throw new r("Accepted quote must include input, output, amount and wallet.");let w=n.chainId??x,i=n.spender??n.router,p=t.allowance??e.allowance??n?.allowance??"0";f(a),f(d),f(g),f(i);let u=o(l);if(u<=0n)throw new r("Swap amountIn must be greater than zero.");let m=o(n.minAmountOut);if(m<=0n)throw new r("Swap minAmountOut must be greater than zero.");let A=e.router.toLowerCase()===L.toLowerCase(),c=t.data??e.data??n?.data??(A?xe({from:a,to:d,amountIn:u.toString(),amountOut:n.amountOut,minAmountOut:m.toString(),wallet:g}):Oe({from:a,to:d,amountIn:u.toString(),minAmountOut:m.toString(),wallet:g}));ce(c,n.calldataMinAmountOut??m.toString(),n.router.toLowerCase()===B.toLowerCase());let b=n.venueFee??"0",v=n.venueFeeBps??0,S=n.provider??(A?"velora":"kyberswap"),k=n.feeDisclosure??de({provider:S,venueFee:b,venueFeeBps:v,oakFee:"0"}),D=C(a),O=t.value??e.value??n?.value??(D?u.toString():"0"),I=U({to:e.router,data:c,value:O,chainId:w,description:`Swap ${u} base units of ${a} for at least ${m} base units of ${d} via ${S} (${e.router}). ${k}`});return le(I,n),D||o(p)>=u?[I]:[q(a,i,u.toString(),w),I]}export{fe as a,G as b,Pe as c,we as d,j as e,Q as f,E as g,R as h,ge as i,K as j,re as k,M as l,N as m,C as n,Se as o,he as p,Le as q,ue as r,be as s,de as t,Oe as u,xe as v,Ie as w,ce as x,le as y,z,Qe as A,_e as B};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as L}from"./6IM6A5VA.js";import{a as Q}from"./RETS2ZEK.js";import{a as x,i as J}from"./XPFVT2EA.js";import{a as r}from"./5YS5V2LK.js";import{decodeAbiParameters as se,encodeAbiParameters as Z,encodeFunctionData as F,erc20Abi as $,getAddress as g,keccak256 as ee,parseAbi as D,parseAbiParameters as oe,zeroAddress as te}from"viem";var N=10n**18n,B=(1n<<256n)-1n,q=g(J[x].morpho.morpho_blue.address),_=oe("(address loanToken,address collateralToken,address oracle,address irm,uint256 lltv)"),w=D(["function adaptersLength() view returns (uint256)","function adapters(uint256) view returns (address)","function liquidityAdapter() view returns (address)","function liquidityData() view returns (bytes)","function forceDeallocatePenalty(address) view returns (uint256)","function performanceFee() view returns (uint256)","function managementFee() view returns (uint256)","function owner() view returns (address)","function curator() view returns (address)","function previewRedeem(uint256) view returns (uint256)","function previewWithdraw(uint256) view returns (uint256)","function forceDeallocate(address adapter,bytes data,uint256 assets,address onBehalf) returns (uint256)","function redeem(uint256 shares,address receiver,address owner) returns (uint256)","function multicall(bytes[] data)"]),I=D(["function parentVault() view returns (address)","function asset() view returns (address)","function morpho() view returns (address)","function marketIdsLength() view returns (uint256)","function marketIds(uint256) view returns (bytes32)","function expectedSupplyAssets(bytes32) view returns (uint256)"]),ne=D(["function idToMarketParams(bytes32) view returns (address loanToken,address collateralToken,address oracle,address irm,uint256 lltv)","function market(bytes32) view returns (uint128 totalSupplyAssets,uint128 totalSupplyShares,uint128 totalBorrowAssets,uint128 totalBorrowShares,uint128 lastUpdate,uint128 fee)"]),M=(e,t)=>e<t?e:t,T=(e,t)=>(e+t-1n)/t;function f(e){if(typeof e!="bigint"||e<0n||e>B)throw new r("Invalid Morpho V2 integer read.");return e}function ye(e){if(typeof e!="string")throw new r("Provide maxPenaltyAssets as a USDG base-unit integer string, including 0 for no penalty.");let t=Q(e);if(t>B)throw new r("Penalty limit exceeds uint256.");return t}function h(e){if(typeof e!="string")throw new r("Invalid Morpho V2 address read.");return L(e),g(e)}async function ae(e,t,a){if(await e.getChainId()!==x||a.chainId!==x)throw new r("Vault exit requires chain 4663.");let c=await e.getBlockNumber({cacheTime:0}),n=(p,y,k,P=[])=>e.readContract({address:p,abi:y,functionName:k,args:P,blockNumber:c}),[l,o,i,d,u]=await Promise.all([n(t,w,"adaptersLength"),n(t,w,"liquidityAdapter"),n(t,w,"liquidityData"),n(g(a.address),$,"balanceOf",[t]),n(g(a.address),$,"balanceOf",[q])]);if(f(l)!==1n)throw new r("Force exit requires exactly one verified MorphoMarketV1AdapterV2. This vault needs a separately qualified adapter plan.");let s=h(await n(t,w,"adapters",[0n])),v=h(o);if(v!==te&&v!==s)throw new r("The liquidity adapter is not the supported market adapter.");let[A,C,S,m,O]=await Promise.all([n(s,I,"parentVault"),n(s,I,"asset"),n(s,I,"morpho"),n(s,I,"marketIdsLength"),n(t,w,"forceDeallocatePenalty",[s])]);if(h(A)!==g(t)||h(C)!==g(a.address)||h(S)!==q)throw new r("The adapter does not match this vault and pinned Morpho Blue deployment.");let b=f(m);if(b>64n)throw new r("The adapter market inventory exceeds this reader\u2019s supported size.");let E=f(O);if(E>N/50n)throw new r("The force-deallocation penalty exceeds the documented 2% maximum.");let H;if(v!==te){if(typeof i!="string")throw new r("Invalid liquidity-market data.");let[p]=se(_,i);H=ee(Z(_,[p])).toLowerCase()}let V=await Promise.all(Array.from({length:Number(b)},(p,y)=>n(s,I,"marketIds",[BigInt(y)])));if(V.some(p=>typeof p!="string"||!/^0x[0-9a-f]{64}$/i.test(p))||new Set(V.map(p=>String(p).toLowerCase())).size!==V.length)throw new r("The adapter returned an invalid or duplicate market ID.");let R=await Promise.all(V.map(async p=>{let y=p,[k,P,ie]=await Promise.all([n(q,ne,"idToMarketParams",[y]),n(q,ne,"market",[y]),n(s,I,"expectedSupplyAssets",[y])]);if(!Array.isArray(k)||k.length!==5||!Array.isArray(P)||P.length!==6)throw new r("Invalid Morpho market state.");let z={loanToken:h(k[0]),collateralToken:h(k[1]),oracle:h(k[2]),irm:h(k[3]),lltv:f(k[4])},j=Z(_,[z]);if(ee(j).toLowerCase()!==y.toLowerCase()||z.loanToken!==g(a.address))throw new r("Morpho market identity or loan asset does not match the vault.");let X=f(P[0]),Y=f(P[2]);if(Y>X)throw new r("Invalid Morpho market liquidity.");let G=f(ie),K=X-Y;return{id:y,adapter:s,data:j,supplied:G,liquidity:K,capacity:M(G,K),penalty:E,normal:y.toLowerCase()===H}})),U=f(d),W=f(u),re=U+M(W,R.filter(p=>p.normal).reduce((p,y)=>p+y.capacity,0n));return{vault:t,blockNumber:c,idle:U,blueCash:W,normalCapacity:re,markets:R}}function de(e,t){if(t<=0n||t>B)throw new r("Force exit needs a positive position value.");let a=t>e.normalCapacity?t-e.normalCapacity:0n,c=[],n=e.blueCash-(e.normalCapacity-e.idle);for(let l of e.markets.filter(o=>!o.normal).sort((o,i)=>o.capacity===i.capacity?o.id.localeCompare(i.id):o.capacity>i.capacity?-1:1)){if(a===0n)break;let o=M(l.capacity,n);if(o===0n)continue;let i=s=>s+T(s*l.penalty,N),d=o;i(o)>=a&&(d=T(a*N,N+l.penalty),d>0n&&i(d-1n)>=a&&(d-=1n),d=M(o,d+(T(t,10000n)||1n)));let u=T(d*l.penalty,N);c.push({...l,amount:d,penaltyAssets:u}),n-=d,a=i(d)>=a?0n:a-i(d)}if(a>0n)throw new r("Underlying market liquidity cannot cover this force exit. Request a partial withdrawal or use a separately supported in-kind exit; force deallocation cannot create liquidity.");return{requestedAssets:t,normalCapacity:e.normalCapacity,legs:c,penaltyAssets:c.reduce((l,o)=>l+o.penaltyAssets,0n)}}async function he(e,t,a,c,n,l,o){let i=await ae(t,a,o),d=f(await t.readContract({address:a,abi:$,functionName:"balanceOf",args:[c],blockNumber:i.blockNumber}));if(n<=0n||n>d)throw new r("The fresh share balance cannot cover this exit.");let u=f(await t.readContract({address:a,abi:w,functionName:"previewRedeem",args:[n],blockNumber:i.blockNumber})),s=de(i,u);if(s.penaltyAssets>l)throw new r("The force-exit penalty exceeds maxPenaltyAssets. Inspect a fresh plan before authorizing a larger penalty.");let A=(await Promise.all(s.legs.map(b=>t.readContract({address:a,abi:w,functionName:"previewWithdraw",args:[b.penaltyAssets],blockNumber:i.blockNumber})))).reduce((b,E)=>b+f(E),0n);if(A>=n)throw new r("The penalty would consume the share balance.");let C=n-A,S=s.legs.map(b=>F({abi:w,functionName:"forceDeallocate",args:[b.adapter,b.data,b.amount,c]})),m=F({abi:w,functionName:"redeem",args:[C,c,c]});return S.push(m),{tx:e.unsignedTx({to:a,chainId:x,value:"0",data:s.legs.length?F({abi:w,functionName:"multicall",args:[S]}):m,description:`Exit this wallet\u2019s Morpho V2 shares; estimated penalty ${s.penaltyAssets} ${o.symbol} base units. No approvals.`}),plan:s,penaltyShares:A,redeemShares:C,blockNumber:i.blockNumber}}var ce="In-kind exits transfer supported market positions rather than cash; use the project in_kind_exit tool.";function we(e,t,a,c,n=ce){return{name:t,inputSchema:{type:"object",properties:{},additionalProperties:!1},execute:async(l,o)=>{try{if(L(o),Object.keys(l).length)throw new r("Vault details takes no arguments.");let i=e.clientFor(x);if(await i.getChainId()!==x)throw new r("Vault details requires chain 4663.");let d=await i.readContract({address:a,abi:D(["function asset() view returns (address)"]),functionName:"asset"});if(h(d)!==g(c.address))throw new r("The vault does not use the pinned underlying asset.");let u=await ae(i,a,c),[s,v,A,C]=await Promise.all(["performanceFee","managementFee","owner","curator"].map(m=>i.readContract({address:a,abi:w,functionName:m,blockNumber:u.blockNumber}))),S={...c,address:g(c.address)};return{vault:a,chainId:x,blockNumber:u.blockNumber.toString(),asset:S,owner:h(A),curator:h(C),idleAssets:u.idle.toString(),normalCapacityAssets:u.normalCapacity.toString(),markets:u.markets.map(m=>({marketId:m.id,adapter:m.adapter,suppliedAssets:m.supplied.toString(),marketLiquidityAssets:m.liquidity.toString(),capacityAssets:m.capacity.toString(),liquidityMarket:m.normal,penaltyWad:m.penalty.toString()})),fees:{performanceFeeWad:f(s).toString(),managementFeePerSecondWad:f(v).toString(),scale:N.toString()},apy:null,apyStatus:"This onchain snapshot does not include APY. Use the module analytics tool for indexed historical APY; maxRate is an accrual ceiling.",capacityCaveat:`Snapshot estimates; gates, price accrual, liquidity and penalties can change. Preview the exact action. Force exits may leave share rounding dust. ${n}`}}catch(i){throw new r(e.plainError(i))}}}}function be(e,t){return`Force-exit estimate: position ${e.requestedAssets} ${t} base units; penalty ${e.penaltyAssets}; net estimate ${e.requestedAssets-e.penaltyAssets}; effective penalty ${T(e.penaltyAssets*10000n,e.requestedAssets)} bps (rounded up). Penalty limit is a local preview check, not a calldata bound. Re-preview before signing and recheck positions for rounding dust.`}function ge(e,t,a,c,n){let l=(i,d)=>e.filter(u=>u.token.chainId===x&&u.token.address.toLowerCase()===i.toLowerCase()).reduce((u,s)=>{if(s.token.decimals!==d||!/^-?\d+$/.test(s.amount))throw new r("Invalid force-exit preview metadata.");return u+BigInt(s.amount)},0n),o=-l(t,18);if(o<=0n||o>a||l(g(n.address),n.decimals)<c)throw new r("The force-exit preview exceeds the share balance or returns less than minAmountOut.")}export{w as a,f as b,ye as c,ae as d,de as e,he as f,we as g,be as h,ge as i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as f}from"./
|
|
1
|
+
import{a as f}from"./5YS5V2LK.js";var s=10000000n;function p(n,i){let t=s;return typeof n=="bigint"&&n>0n&&n<t&&(t=n),typeof i=="bigint"&&i>0n&&i*2n<t&&(t=i*2n),t}function u(n,i,t,r){return`needs ETH for network fees: need at least ${t} wei including transaction value; held ${r} wei. Send ETH to ${n} on chain ${i}.`}function m(n,i,t,r,g,d){let o=t+21000n*r;if(i<o)throw new f(u(g,d,o,i));let e=r>0n?(i-t)/r:n;return e<n?e:n}export{s as a,p as b,u as c,m as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s}from"./E7ASOYQI.js";import{formatUnits as c}from"viem";function l(e){return`HoodLock creation fee: ${e.eth} ETH (${e.amount} wei; ${e.usd===null?"USD unavailable: no fresh ETH/USD reference":`approximately $${e.usd} USD`}), not refundable after creation. Paid to ${e.contract}; separate from network gas.`}async function p(e,t,d,r){let o=r===0n?"0":null;if(r>0n)try{let a=await s("ETH",{client:e.clientFor(4663),chainId:4663});BigInt(a.usdE18)>0n&&(o=c(r*BigInt(a.usdE18)/10n**18n,18))}catch{}let n={contract:d,amount:r.toString(),eth:c(r,18),usd:o,refundable:!1},i=l(n);return{...t,summary:`${t.summary} ${i}`,preview:{...t.preview,summary:`${t.preview.summary} ${i}`},protocolFee:n}}export{l as a,p as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as a}from"./2EGFALNH.js";import{a as i}from"./SPRVVJXI.js";import{a as o}from"./XPFVT2EA.js";var d=n=>({tools:i.map(e=>{let t=e==="netnet_blackjack_claim"?"seriesId":"sessionId";return{name:e,inputSchema:{description:"Self-only recovery on chain 4663, available without an active identity or subscription; every action requires local human confirmation. Card counts use whole units.",type:"object",additionalProperties:!1,required:[t],properties:{[t]:{type:"string",pattern:"^[1-9][0-9]{0,77}$"}}},execute:async(s,c)=>{let r=await a(e,s,c,n.clientFor(o));return{txs:r.txs,summary:r.decision}}}})});export{d as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as P,e as _,f as m}from"./LBEMCOND.js";import{c as p,f as r,g as f,h as N,i as S,k as D,p as x,q}from"./C3TJLARP.js";import{b as I}from"./UWOFA6GV.js";import{h as A}from"./73N3TOJL.js";import{randomInt as U,randomUUID as H}from"node:crypto";import{isDeepStrictEqual as b}from"node:util";import{recoverTypedDataAddress as z}from"viem";function j(t){Object.keys(t).some(u=>!["subaccount","subaccountId","instructions","failureBehavior","continuation","signature"].includes(u))&&r("Use the Meridian batch schema."),D(t.subaccountId),(!Array.isArray(t.instructions)||t.instructions.length<1||t.instructions.length>20)&&r("A Meridian batch needs 1\u201320 instructions."),["ContinueOnFailure","StopOnFailure"].includes(String(t.failureBehavior))||r("Choose ContinueOnFailure or StopOnFailure explicitly; a batch does not roll back earlier results.");let c=new Set;return t.instructions.map(u=>{let e=f(u),a=e.kind;a!=="NEW"&&a!=="CANCEL"&&r("Each Meridian batch instruction needs kind NEW or CANCEL.");let o=a==="NEW"?P.order:["orderId","clientOrderId"];Object.keys(e).some(i=>i!=="kind"&&!o.includes(i))&&r("Unsupported Meridian batch instruction fields."),a==="CANCEL"&&e.orderId===void 0==(e.clientOrderId===void 0)&&r("Each batch cancellation needs exactly one orderId or clientOrderId.");for(let i of a==="NEW"?["clientOrderId"]:["orderId","clientOrderId"])if(e[i]!==void 0){let g=`${a}:${i}:${e[i]}`;c.has(g)&&r("Duplicate Meridian batch order identifiers."),c.add(g)}let d={subaccountId:t.subaccountId,...t.subaccount===void 0?{}:{subaccount:t.subaccount}};return a==="CANCEL"?{action:"cancel",kind:a,args:{...d,...e.orderId===void 0?{clientOrderIds:[e.clientOrderId]}:{orderIds:[e.orderId]}}}:{action:"order",kind:a,args:{...d,...Object.fromEntries(Object.entries(e).filter(([i])=>i!=="kind"))}}})}function M(t,c,u,e,a){let o=j(t);(!Number.isInteger(c)||c<0||c>=o.length)&&r("Invalid Meridian batch signing index.");let d=o[c],i=_(d.action,d.args,u,e,a);return d.kind==="CANCEL"&&(i.data={sender:u,subaccount:i.data.subaccount,nonce:e,...i.data.orderIds?{orderId:i.data.orderIds[0]}:{clientOrderId:i.data.clientOrderIds[0]}}),i}function ee(t,c,u,e,a,o){(e.stage!=="perps_batch_sign"||e.chainId!==p||!A(e.wallet,c)||typeof e.requestId!="string"||!e.requestId||typeof e.index!="number"||typeof e.signedAt!="number"||typeof e.expiresAt!="number"||e.expiresAt<=o||e.expiresAt>o+120||e.signedAt<o-120||e.signedAt>o+10)&&r("Meridian batch signing round is invalid or expired."),(a?a.requestId!==e.requestId||Number(a.index)+1!==e.index||a.expiresAt!==e.expiresAt:e.index!==0)&&r("Unexpected Meridian batch signing order.");let d=M(t,e.index,c,N(e.nonce,"the nonce",!1,64),e.signedAt),i=m(d,f(e.signatureTypes));(!b(e.request,i)||!b(e.data,d.data)||!b(u,[{kind:"typedData",request:i}]))&&r("Meridian batch signing fields differ from the local instruction.")}function te(t,c){let u=new Map;return{name:"meridian_perps_batch",inputSchema:{type:"object",additionalProperties:!1,required:["subaccountId","instructions","failureBehavior"],description:"Sign 1\u201320 NEW/CANCEL instructions locally and submit one batch. failureBehavior is explicit. Cancel/replace is not atomic. Reconcile each result and check fills after submission.",properties:{subaccountId:{type:"string",format:"uuid"},subaccount:{type:"string"},failureBehavior:{type:"string",enum:["ContinueOnFailure","StopOnFailure"]},instructions:{type:"array",minItems:1,maxItems:20,items:{type:"object",properties:{kind:{type:"string",enum:["NEW","CANCEL"]},quantity:I("D9 quantity base units."),price:I("D9 price base units."),stopPrice:I("D9 stop price base units."),expiresAt:I("Unix seconds.")},additionalProperties:!0}},continuation:{type:"object"},signature:{type:"string"}}},execute:async(e,a)=>{let o=S(a),d=j(e);d.forEach((s,n)=>M(e,n,o,"0",Math.floor(Date.now()/1e3)));let i=s=>({steps:[{kind:"typedData",request:structuredClone(s.round.request)}],continuation:structuredClone(s.round),summary:`Review and confirm Meridian batch instruction ${Number(s.round.index)+1}/${d.length}. D9 signed quantities and prices have 9 decimals. Every instruction is separately signed; no API submission occurs until all signatures are collected. ${e.failureBehavior}; earlier successful results are never rolled back.`});if(e.continuation!==void 0){let s=f(e.continuation),n=u.get(String(s.requestId));(!n||!A(s.wallet,o)||!b(n.round,s)||!b(n.args,Object.fromEntries(Object.entries(e).filter(([l])=>!["continuation","signature"].includes(l)))))&&r("Meridian batch continuation is lost, expired or changed. Check orders before restarting."),u.delete(String(s.requestId));let F=s.request;(typeof s.expiresAt!="number"||s.expiresAt<=Math.floor(Date.now()/1e3))&&(clearTimeout(n.timer),r("Meridian batch expired. Check orders before restarting."));try{(typeof e.signature!="string"||!/^0x[0-9a-fA-F]{130}$/.test(e.signature)||!A(await z({...F,signature:e.signature}),o))&&r("The local Meridian batch signature does not match this wallet.");let l=Number(s.index),L=n.values[l];if(n.signed.push({type:d[l].kind,data:L.data,signature:e.signature}),l+1<d.length){let h=n.values[l+1],$=f(s.signatureTypes);return n.round={...s,index:l+1,nonce:h.message.nonce,data:h.data,request:m(h,$),review:n.reviews[l+1]},u.set(String(s.requestId),n),i(n)}clearTimeout(n.timer),(t.network==="testnet"||await t.clientFor(p).getChainId()!==p)&&r("Meridian batch requires chain 4663.");let W=await q(t);return n.values.some(h=>!b(m(h,W).types,m(h,f(s.signatureTypes)).types))&&r("Meridian batch signing types changed; check orders before restarting."),{result:await x(t,"/v1/order/batch",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({failureBehavior:e.failureBehavior,instructions:n.signed})}),chainId:p,summary:"Meridian batch API responded. Inspect every instruction result and subsequent order/fill state. HTTP success is not atomic success or proof of execution."}}catch(l){throw clearTimeout(n.timer),l}}e.signature!==void 0&&r("Meridian batch signatures require an active local signing round."),u.size>=1e3&&r("Too many pending Meridian batches. Try again shortly."),(t.network==="testnet"||await t.clientFor(p).getChainId()!==p)&&r("Meridian batch requires chain 4663.");let g=await q(t),y=f(await x(t,"/v1/time")).time;(typeof y!="number"||!Number.isSafeInteger(y)||Math.abs(y-Date.now())>3e4)&&r("Synchronize the clock before signing a Meridian batch.");let C=Math.floor(y/1e3),B=BigInt(y)*1000000n+BigInt(U(999980)),w=d.map((s,n)=>M(e,n,o,(B+BigInt(n)).toString(),C)),T=[];for(let[s,n]of d.entries())T.push(await c(n.action,n.args,o,w[s].data));let k=H(),v=w[0],R={stage:"perps_batch_sign",chainId:p,wallet:o,requestId:k,index:0,signedAt:C,expiresAt:C+90,nonce:v.message.nonce,data:v.data,request:m(v,g),signatureTypes:{TradeOrder:g.TradeOrder,CancelOrder:g.CancelOrder},review:T[0]},O=setTimeout(()=>u.delete(k),9e4);O.unref?.();let E={args:structuredClone(e),round:R,values:w,reviews:T,signed:[],timer:O};return u.set(k,E),i(E)}}}export{ee as a,te as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{q as p}from"./2EDXKJ3B.js";import{b as c,e as d}from"./73N3TOJL.js";import{a as n}from"./5YS5V2LK.js";import{b as a}from"./JXOEJPJ4.js";var f=/^(?:[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?\.)+[\p{L}]{2,}$/u,m=/^did:[a-z0-9]+:[A-Za-z0-9._%:;=@/?#-]{1,512}$/,u=/^[^\s@<>()[\]\\,;:"]{1,64}@[A-Za-z0-9](?:[A-Za-z0-9.-]{0,251}[A-Za-z0-9])?\.[A-Za-z]{2,}$/,w=/^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}:[-.%a-zA-Z0-9]{1,128}$/,l=["web","a2a","mcp","oasf"],P=["web","A2A","MCP","OASF","ENS","DID","email","agentWallet"];function s(e,r){if(typeof e!="string"||!e.trim()||e.length>2048||a(e))throw new n(`Provide a valid profile ${r}.`);return e}function h(e){return/^[a-z][a-z0-9+.-]*:\/\//i.test(e)}function z(e){if(!d(e))throw new n("Provide valid profile services.");let r=s(e.name,"service name"),t=s(e.endpoint,"service endpoint");e.version!==void 0&&s(e.version,"service version");let i=r.toLowerCase(),o=()=>{try{p(t,"Profile service endpoint")}catch{throw new n("Profile service endpoint must be an HTTPS or IPFS URI without credentials.")}};if(l.includes(i))return o();if(i==="ens"){if(!f.test(t))throw new n("An ENS service endpoint must be an ENS name such as agent.eth.");return}if(i==="did"){if(!m.test(t))throw new n("A DID service endpoint must be a DID such as did:web:agent.example.");return}if(i==="email"){if(!u.test(t))throw new n("An email service endpoint must be an email address.");return}if(i==="agentwallet"||i==="wallet"){if(!w.test(t)&&!c.test(t))throw new n("A wallet service endpoint must be a CAIP-10 account such as eip155:4663:0x\u2026 or an 0x address.");return}if(h(t)||/^(?:ipfs|https):/.test(t))return o();if(!(f.test(t)||m.test(t)||u.test(t)||w.test(t)))throw new n("Profile service endpoint must be an HTTPS or IPFS URI, an ENS name, a DID, an email address or a CAIP-10 account.")}export{P as a,z as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as o,g as s}from"./73N3TOJL.js";import{a as i,s as r}from"./XPFVT2EA.js";var d=new Set(["0x0000000000000000000000000000000000000000","0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",r.mainnet.usdg.toLowerCase()]);function a(f,e,n){if(f!=="relay_bridge_in"||e.swap!==void 0||typeof n!="string"||!o.test(n)||e.destinationChainId!==void 0&&e.destinationChainId!==i||e.recipient!==void 0&&(typeof e.recipient!="string"||!s(e.recipient,n)))return!1;let t=e.destinationCurrency??"0x0000000000000000000000000000000000000000";return typeof t=="string"&&d.has(t.toLowerCase())}export{a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as l,h as x,i as h}from"./53N7PNJH.js";import{g}from"./73N3TOJL.js";import{a as r}from"./5YS5V2LK.js";import{encodeFunctionData as y,erc20Abi as O,getAddress as f,parseAbi as R}from"viem";var P=[{chainId:1,vault:"0x57b68c4ea221ee8da6eb14ebdfccee5177567771",asset:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",gateway:"0xed8a2a23bf9d6818651527daaf3bf4ffeb53945f"},{chainId:42161,vault:"0xc7273772b87860097373d91b3880fd4cc61fba2d",asset:"0x82af49447d8a07e3bd95bd0d56f35241523fbab1",gateway:"0x67defe8d90c8cd013fd527669e76e0be420f1208"}].map(t=>({chainId:t.chainId,vault:f(t.vault),asset:f(t.asset),gateway:f(t.gateway)})),T=R(["function balanceOf(address) view returns (uint256)","function asset() view returns (address)","function yieldPool() view returns (address)","function maxWithdraw(address) view returns (uint256)","function convertToAssets(uint256) view returns (uint256)","function previewRedeem(uint256) view returns (uint256)","function previewWithdraw(uint256) view returns (uint256)","function redeem(uint256,address,address) returns (uint256)","function withdraw(uint256,address,address) returns (uint256)"]),$=R(["function redeem(address,uint256,address,uint256) returns (uint256)","function withdraw(address,uint256,address,uint256) returns (uint256)"]),I={type:"string",pattern:"^[1-9][0-9]*$"},A={type:"integer",enum:[1,42161]};function S(t){let o=P.find(i=>i.chainId===x(t));if(!o)throw new r("Relay legacy vault exits support Ethereum (1) and Arbitrum (42161).");return o}function b(t){let o=h(t);if(o==="0")throw new r("Provide a positive Relay vault amount or limit.");return o}function E(t,o){let i=S(t.chainId),s=f(l(o));if(Object.keys(t).some(c=>!["chainId","mode","amount","native","minAssetsOut","maxSharesIn"].includes(c)))throw new r("Provide only the documented Relay vault exit arguments.");if(t.mode!=="redeem"&&t.mode!=="withdraw")throw new r("Choose redeem (shares) or withdraw (WETH amount).");if(t.native!==void 0&&typeof t.native!="boolean")throw new r("Provide native as a boolean.");let e=b(t.amount),n=t.native===!0,a=t.mode==="redeem";if(!a&&!n)throw new r("Direct WETH withdrawals cannot enforce maxSharesIn on-chain. Use native withdraw or redeem a fixed number of shares.");if(t.minAssetsOut!==void 0&&(!n||!a)||t.maxSharesIn!==void 0&&a)throw new r("minAssetsOut applies only to native redeem; maxSharesIn applies only to withdraw.");let d=n&&a?b(t.minAssetsOut):void 0,u=a?e:b(t.maxSharesIn),w=(c,v,p)=>({to:c,data:v,chainId:i.chainId,value:"0",description:p}),m=[];return n?(m.push(w(i.vault,y({abi:O,functionName:"approve",args:[i.gateway,BigInt(u)]}),`Approve exactly ${u} WETH-REL share base units for the Relay native gateway.`)),m.push(w(i.gateway,y({abi:$,functionName:t.mode,args:[i.vault,BigInt(e),s,BigInt(a?d:u)]}),`Relay legacy vault ${t.mode} to native ETH for ${s}.`))):m.push(w(i.vault,y({abi:T,functionName:t.mode,args:[BigInt(e),s,s]}),`Relay legacy vault ${t.mode} to WETH for ${s}.`)),{pin:i,txs:m,wallet:s,redeem:a,native:n,amount:e,maxSharesIn:u,minAssetsOut:d}}function C(t,o,i){let s=E(o,i).txs;if(t.length!==s.length||t.some((e,n)=>e.chainId!==s[n].chainId||l(e.to)!==l(s[n].to)||e.value!=="0"||!g(e.data,s[n].data)))throw new r("Relay vault transactions differ from the requested exit.")}var H=t=>{async function o(i,s){let e=S(i),n;try{n=t.clientFor(e.chainId)}catch(c){throw/No RPC URL configured for chain/.test(t.plainError(c))?new r(`Relay legacy vault reads and exits on chain ${e.chainId} need an RPC. Ask the operator to configure OAK_RPC_URL_${e.chainId} on the server. No vault balances were checked.`):c}if(await n.getChainId()!==e.chainId)throw new r("The RPC chain does not match the Relay vault chain.");let a=(c,v,p=[])=>n.readContract({address:c,abi:T,functionName:v,args:p});if(l(await a(e.vault,"asset"))!==l(e.asset))throw new r("Relay vault asset does not match the pinned WETH.");let d=h(String(await a(e.vault,"balanceOf",[s]))),u=f(l(await a(e.vault,"yieldPool"))),w=h(String(await a(e.vault,"convertToAssets",[BigInt(d)]))),m=h(String(await a(u,"maxWithdraw",[e.vault])));return{pin:e,shares:d,assets:w,liquidAssets:m,read:a}}return{tools:[{name:"relay_vault_status",inputSchema:{type:"object",description:"Read legacy vault shares and shared liquidity. Requires server OAK_RPC_URL_1 or OAK_RPC_URL_42161 for the selected chain; no API key. New deposits are unsupported.",additionalProperties:!1,required:["chainId"],properties:{chainId:A}},execute:async(i,s)=>{if(Object.keys(i).some(u=>u!=="chainId"))throw new r("Provide only the Relay vault chainId.");let{pin:e,shares:n,assets:a,liquidAssets:d}=await o(i.chainId,s);return{chainId:e.chainId,vault:e.vault,shares:{token:{address:e.vault,chainId:e.chainId,symbol:"WETH-REL",decimals:18},amount:n},assets:{token:{address:e.asset,chainId:e.chainId,symbol:"WETH",decimals:18},amount:a},liquidAssets:d,summary:"Relay legacy vault wind-down: new deposits are unsupported. Available yield-pool liquidity is shared by all LPs and may change. Withdraw with relay_vault_withdraw; gas is paid in ETH on the vault chain."}}},{name:"relay_vault_withdraw",inputSchema:{type:"object",additionalProperties:!1,required:["chainId","mode","amount"],properties:{chainId:A,mode:{type:"string",enum:["redeem","withdraw"]},amount:I,native:{type:"boolean"},minAssetsOut:I,maxSharesIn:I}},execute:async(i,s)=>{let e=E(i,s),n=await o(i.chainId,s),a=e.redeem?e.amount:h(String(await n.read(e.pin.vault,"previewWithdraw",[BigInt(e.amount)]))),d=e.redeem?h(String(await n.read(e.pin.vault,"previewRedeem",[BigInt(e.amount)]))):e.amount;if(BigInt(a)>BigInt(n.shares)||BigInt(a)>BigInt(e.maxSharesIn))throw new r("Relay vault exit exceeds your shares or maxSharesIn.");if(BigInt(d)>BigInt(n.liquidAssets))throw new r("Relay vault liquidity is insufficient. Withdraw less or retry when liquidity returns.");if(e.minAssetsOut!==void 0&&BigInt(d)<BigInt(e.minAssetsOut))throw new r("Relay vault output is below minAssetsOut.");let u=await t.preview(e.txs,s);return{txs:e.txs,preview:u,chainId:e.pin.chainId,expectedAssets:d,expectedShares:a,summary:`Relay legacy vault exit on chain ${e.pin.chainId}: ${a} share base units for about ${d} ${e.native?"ETH":"WETH"} base units (18 decimals), to ${e.wallet}. ${e.minAssetsOut?`Gateway minimum ${e.minAssetsOut}.`:e.redeem?"Direct ERC-4626 redeem has no calldata minimum output.":`Gateway maximum input ${e.maxSharesIn} share base units.`} Review the local preview and confirm before signing. No destination bridge or future yield is promised.`}}}]}};export{P as a,E as b,C as c,H as d};
|