@oakagentkit/core 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dist/api/abort-scope.d.ts +2 -0
- package/build/dist/api/abort-scope.js +1 -0
- package/build/dist/api/chain.js +1 -1
- package/build/dist/api/history.js +1 -1
- package/build/dist/api/http.js +1 -1
- package/build/dist/api/metadata.js +1 -1
- package/build/dist/api/modules/beefy/boosts.js +1 -1
- package/build/dist/api/modules/beefy/clm.js +1 -1
- package/build/dist/api/modules/beefy/guard.js +1 -1
- package/build/dist/api/modules/beefy/index.js +1 -1
- package/build/dist/api/modules/beefy/liquidity.js +1 -1
- package/build/dist/api/modules/beefy/management.js +1 -1
- package/build/dist/api/modules/beefy/vaults.js +1 -1
- package/build/dist/api/modules/borro/actions.js +1 -1
- package/build/dist/api/modules/borro/checks.js +1 -1
- package/build/dist/api/modules/borro/copy.d.ts +15 -10
- package/build/dist/api/modules/borro/copy.js +1 -1
- package/build/dist/api/modules/borro/index.js +1 -1
- package/build/dist/api/modules/borro/liquidity.js +1 -1
- package/build/dist/api/modules/borro/positions.js +1 -1
- package/build/dist/api/modules/borro/reader.js +1 -1
- package/build/dist/api/modules/chop/abi.d.ts +31 -0
- package/build/dist/api/modules/chop/abi.js +1 -1
- package/build/dist/api/modules/chop/actions.js +1 -1
- package/build/dist/api/modules/chop/checks.d.ts +13 -5
- package/build/dist/api/modules/chop/checks.js +1 -1
- package/build/dist/api/modules/chop/copy.d.ts +11 -1
- package/build/dist/api/modules/chop/copy.js +1 -1
- package/build/dist/api/modules/chop/guard.js +1 -1
- package/build/dist/api/modules/chop/index.js +1 -1
- package/build/dist/api/modules/chop/positions.js +1 -1
- package/build/dist/api/modules/chop/reader.d.ts +132 -7
- package/build/dist/api/modules/chop/reader.js +1 -1
- package/build/dist/api/modules/chop/types.d.ts +12 -0
- package/build/dist/api/modules/clanker/extensions.d.ts +9 -0
- package/build/dist/api/modules/clanker/extensions.js +1 -1
- package/build/dist/api/modules/clanker/index.js +1 -1
- package/build/dist/api/modules/clanker/manage.js +1 -1
- package/build/dist/api/modules/clanker/pool-config.d.ts +15 -0
- package/build/dist/api/modules/clanker/pool-config.js +1 -1
- package/build/dist/api/modules/clanker/protocol.js +1 -1
- package/build/dist/api/modules/earn/copy.d.ts +32 -10
- package/build/dist/api/modules/earn/copy.js +1 -1
- package/build/dist/api/modules/earn/cost.d.ts +11 -1
- package/build/dist/api/modules/earn/cost.js +1 -1
- package/build/dist/api/modules/earn/index.js +1 -1
- package/build/dist/api/modules/earn/lp.d.ts +14 -1
- package/build/dist/api/modules/earn/lp.js +1 -1
- package/build/dist/api/modules/earn/options.d.ts +6 -4
- package/build/dist/api/modules/earn/options.js +1 -1
- package/build/dist/api/modules/erc8004/common.d.ts +1 -1
- package/build/dist/api/modules/erc8004/common.js +1 -1
- package/build/dist/api/modules/erc8004/domain.js +1 -1
- package/build/dist/api/modules/erc8004/index.js +1 -1
- package/build/dist/api/modules/erc8004/management.js +1 -1
- package/build/dist/api/modules/erc8004/reputation.js +1 -1
- package/build/dist/api/modules/erc8004/services.js +1 -1
- package/build/dist/api/modules/erc8004/validation.js +1 -1
- package/build/dist/api/modules/factor/abi.d.ts +642 -0
- package/build/dist/api/modules/factor/abi.js +1 -0
- package/build/dist/api/modules/factor/actions.d.ts +15 -0
- package/build/dist/api/modules/factor/actions.js +1 -0
- package/build/dist/api/modules/factor/api.d.ts +7 -0
- package/build/dist/api/modules/factor/api.js +1 -0
- package/build/dist/api/modules/factor/checks.d.ts +11 -0
- package/build/dist/api/modules/factor/checks.js +1 -0
- package/build/dist/api/modules/factor/copy.d.ts +33 -0
- package/build/dist/api/modules/factor/copy.js +1 -0
- package/build/dist/api/modules/factor/guard.d.ts +12 -0
- package/build/dist/api/modules/factor/guard.js +1 -0
- package/build/dist/api/modules/factor/index.d.ts +16 -0
- package/build/dist/api/modules/factor/index.js +8 -0
- package/build/dist/api/modules/factor/messages.d.ts +46 -0
- package/build/dist/api/modules/factor/messages.js +1 -0
- package/build/dist/api/modules/factor/pins.d.ts +64 -0
- package/build/dist/api/modules/factor/pins.js +1 -0
- package/build/dist/api/modules/factor/reader.d.ts +17 -0
- package/build/dist/api/modules/factor/reader.js +1 -0
- package/build/dist/api/modules/factor/types.d.ts +18 -0
- package/build/dist/api/modules/factor/types.js +0 -0
- package/build/dist/api/modules/gloam/copy.d.ts +4 -3
- package/build/dist/api/modules/gloam/copy.js +2 -2
- package/build/dist/api/modules/gloam/index.js +1 -1
- package/build/dist/api/modules/grove/index.js +1 -1
- package/build/dist/api/modules/heyresearch/builder-feed.js +1 -1
- package/build/dist/api/modules/heyresearch/index.js +1 -1
- package/build/dist/api/modules/heyresearch/public-reads.d.ts +29 -1
- package/build/dist/api/modules/heyresearch/public-reads.js +1 -1
- package/build/dist/api/modules/heyresearch/scan.js +1 -1
- package/build/dist/api/modules/heyresearch/status-labels.d.ts +2 -0
- package/build/dist/api/modules/heyresearch/status-labels.js +1 -1
- package/build/dist/api/modules/heyresearch/token-facts.js +1 -1
- package/build/dist/api/modules/hoodag/chain-reads.js +1 -1
- package/build/dist/api/modules/hoodag/index.js +1 -1
- package/build/dist/api/modules/hoodag/management.js +1 -1
- package/build/dist/api/modules/hoodag/public-reads.js +1 -1
- package/build/dist/api/modules/hoodag/reconstruct.js +1 -1
- package/build/dist/api/modules/hoodlock/airdrop.js +1 -1
- package/build/dist/api/modules/hoodlock/commerce.js +1 -1
- package/build/dist/api/modules/hoodlock/fee.js +1 -1
- package/build/dist/api/modules/hoodlock/guard.js +1 -1
- package/build/dist/api/modules/hoodlock/index.js +1 -1
- package/build/dist/api/modules/hoodlock/lifecycle.js +1 -1
- package/build/dist/api/modules/hoodlock/locks-burn.js +1 -1
- package/build/dist/api/modules/hoodlock/public.js +1 -1
- package/build/dist/api/modules/hookr/actions.js +1 -1
- package/build/dist/api/modules/hookr/addons.js +1 -1
- package/build/dist/api/modules/hookr/agent-gate.js +1 -1
- package/build/dist/api/modules/hookr/contracts.d.ts +2 -1
- package/build/dist/api/modules/hookr/contracts.js +1 -1
- package/build/dist/api/modules/hookr/create-cancel.js +1 -1
- package/build/dist/api/modules/hookr/discovery.js +1 -1
- package/build/dist/api/modules/hookr/fill-bounty.js +1 -1
- package/build/dist/api/modules/hookr/index.js +1 -1
- package/build/dist/api/modules/hookr/launch-options.js +1 -1
- package/build/dist/api/modules/hookr/launch-receipt.js +1 -1
- package/build/dist/api/modules/hookr/launch.js +1 -1
- package/build/dist/api/modules/hookr/liquidity.js +1 -1
- package/build/dist/api/modules/hookr/lp-positions.js +1 -1
- package/build/dist/api/modules/hookr/lp-reads.d.ts +2 -0
- package/build/dist/api/modules/hookr/lp-reads.js +1 -1
- package/build/dist/api/modules/hookr/lp-receipt.js +1 -1
- package/build/dist/api/modules/hookr/lp-state.js +1 -1
- package/build/dist/api/modules/hookr/public-reads.js +1 -1
- package/build/dist/api/modules/hookr/read-utils.js +1 -1
- package/build/dist/api/modules/hookr/relay.js +1 -1
- package/build/dist/api/modules/hookr/revenue.js +1 -1
- package/build/dist/api/modules/kyberswap/index.js +1 -1
- package/build/dist/api/modules/kyberswap/source-pools.js +1 -1
- package/build/dist/api/modules/layerbank/actions.js +1 -1
- package/build/dist/api/modules/layerbank/index.js +1 -1
- package/build/dist/api/modules/layerbank/merkl.js +1 -1
- package/build/dist/api/modules/layerbank/reader.js +1 -1
- package/build/dist/api/modules/lighter/index.js +1 -1
- package/build/dist/api/modules/longbow/administration.js +1 -1
- package/build/dist/api/modules/longbow/fixed.js +1 -1
- package/build/dist/api/modules/longbow/index.js +1 -1
- package/build/dist/api/modules/longbow/nft.js +1 -1
- package/build/dist/api/modules/longbow/rebates.js +1 -1
- package/build/dist/api/modules/longbow/staking.js +1 -1
- package/build/dist/api/modules/meridian/index.js +1 -1
- package/build/dist/api/modules/meridian/markets.js +1 -1
- package/build/dist/api/modules/meridian/perps-batch.js +1 -1
- package/build/dist/api/modules/meridian/perps-stream.js +1 -1
- package/build/dist/api/modules/meridian/perps.js +1 -1
- package/build/dist/api/modules/meridian/predict-read.js +1 -1
- package/build/dist/api/modules/meridian/rfq.js +1 -1
- package/build/dist/api/modules/merkl/discovery.js +1 -1
- package/build/dist/api/modules/merkl/index.js +1 -1
- package/build/dist/api/modules/merkl/manage.js +1 -1
- package/build/dist/api/modules/merkl/protocol.js +1 -1
- package/build/dist/api/modules/morpho/allocator.js +1 -1
- package/build/dist/api/modules/morpho/bundles.js +1 -1
- package/build/dist/api/modules/morpho/in-kind.js +1 -1
- package/build/dist/api/modules/morpho/index.js +1 -1
- package/build/dist/api/modules/morpho/local-guard.js +1 -1
- package/build/dist/api/modules/morpho/midnight.js +1 -1
- package/build/dist/api/modules/morpho/protocol.js +1 -1
- package/build/dist/api/modules/morpho/vault-management.js +1 -1
- package/build/dist/api/modules/morpho/vault-tools.js +1 -1
- package/build/dist/api/modules/morpho/vault-v2.d.ts +2 -0
- package/build/dist/api/modules/morpho/vault-v2.js +1 -1
- package/build/dist/api/modules/netnet/card-plan.js +1 -1
- package/build/dist/api/modules/netnet/card-read.js +1 -1
- package/build/dist/api/modules/netnet/card-recovery.js +1 -1
- package/build/dist/api/modules/netnet/desk-action.js +1 -1
- package/build/dist/api/modules/netnet/desk-read.js +1 -1
- package/build/dist/api/modules/netnet/financial.js +1 -1
- package/build/dist/api/modules/netnet/index.js +1 -1
- package/build/dist/api/modules/netnet/staking.js +1 -1
- package/build/dist/api/modules/orbio/gateway.js +1 -1
- package/build/dist/api/modules/orbio/index.js +1 -1
- package/build/dist/api/modules/pendle/convert.js +1 -1
- package/build/dist/api/modules/pendle/costs.js +1 -1
- package/build/dist/api/modules/pendle/index.js +1 -1
- package/build/dist/api/modules/pendle/markets.js +1 -1
- package/build/dist/api/modules/pendle/positions.js +1 -1
- package/build/dist/api/modules/pendle/pricecheck.js +1 -1
- package/build/dist/api/modules/pendle/reader.js +1 -1
- package/build/dist/api/modules/pendle/redeem.js +1 -1
- package/build/dist/api/modules/pendle/trade.js +1 -1
- package/build/dist/api/modules/pendle/validate.js +1 -1
- package/build/dist/api/modules/pons/claim.js +1 -1
- package/build/dist/api/modules/pons/holder-directory.js +1 -1
- package/build/dist/api/modules/pons/index.js +1 -1
- package/build/dist/api/modules/pons/launch-status.js +1 -1
- package/build/dist/api/modules/pons/reads.js +1 -1
- package/build/dist/api/modules/pons/trade.d.ts +3 -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.js +1 -1
- package/build/dist/api/modules/priors/discovery.js +1 -1
- package/build/dist/api/modules/priors/features.js +1 -1
- package/build/dist/api/modules/priors/holdings.js +1 -1
- package/build/dist/api/modules/priors/index.js +1 -1
- package/build/dist/api/modules/priors/integration.d.ts +1 -0
- package/build/dist/api/modules/priors/integration.js +1 -1
- package/build/dist/api/modules/priors/market.js +1 -1
- package/build/dist/api/modules/priors/pt.js +1 -1
- package/build/dist/api/modules/priors/savings-exit.js +1 -1
- package/build/dist/api/modules/priors/stock-swap.js +1 -1
- package/build/dist/api/modules/raeto/authorization.d.ts +30 -0
- package/build/dist/api/modules/raeto/authorization.js +1 -0
- package/build/dist/api/modules/raeto/copy.d.ts +46 -0
- package/build/dist/api/modules/raeto/copy.js +1 -0
- package/build/dist/api/modules/raeto/errors.d.ts +4 -0
- package/build/dist/api/modules/raeto/errors.js +1 -0
- package/build/dist/api/modules/raeto/estimate.d.ts +2 -0
- package/build/dist/api/modules/raeto/estimate.js +1 -0
- package/build/dist/api/modules/raeto/index.d.ts +16 -0
- package/build/dist/api/modules/raeto/index.js +1 -0
- package/build/dist/api/modules/raeto/pairing.d.ts +40 -0
- package/build/dist/api/modules/raeto/pairing.js +1 -0
- package/build/dist/api/modules/raeto/pins.d.ts +24 -0
- package/build/dist/api/modules/raeto/pins.js +1 -0
- package/build/dist/api/modules/raeto/templates.d.ts +22 -0
- package/build/dist/api/modules/raeto/templates.js +1 -0
- package/build/dist/api/modules/raeto/terms.d.ts +8 -0
- package/build/dist/api/modules/raeto/terms.js +1 -0
- package/build/dist/api/modules/raeto/types.d.ts +64 -0
- package/build/dist/api/modules/raeto/types.js +0 -0
- package/build/dist/api/modules/relay/api.d.ts +16 -0
- package/build/dist/api/modules/relay/api.js +1 -1
- package/build/dist/api/modules/relay/discovery.js +1 -1
- package/build/dist/api/modules/relay/inbound.js +1 -1
- package/build/dist/api/modules/relay/index.d.ts +1 -0
- package/build/dist/api/modules/relay/index.js +1 -1
- package/build/dist/api/modules/relay/order.js +1 -1
- package/build/dist/api/modules/relay/outbound-status.js +1 -1
- package/build/dist/api/modules/relay/readiness.d.ts +1 -0
- package/build/dist/api/modules/relay/readiness.js +1 -1
- package/build/dist/api/modules/relay/reads.js +1 -1
- package/build/dist/api/modules/relay/vaults.js +1 -1
- package/build/dist/api/modules/spark/actions.js +1 -1
- package/build/dist/api/modules/spark/index.js +1 -1
- package/build/dist/api/modules/spark/management.js +1 -1
- package/build/dist/api/modules/steakhouse/analytics.js +1 -1
- package/build/dist/api/modules/steakhouse/erc4626.js +1 -1
- package/build/dist/api/modules/steakhouse/index.js +1 -1
- package/build/dist/api/modules/steakhouse/local-guard.js +1 -1
- package/build/dist/api/modules/steakhouse/management.js +1 -1
- package/build/dist/api/modules/steakhouse/v2-exit.js +1 -1
- package/build/dist/api/modules/tickerspring/basket-routes.js +1 -1
- package/build/dist/api/modules/tickerspring/contract-reads.js +1 -1
- package/build/dist/api/modules/tickerspring/exit-preview.js +1 -1
- package/build/dist/api/modules/tickerspring/guards.js +1 -1
- package/build/dist/api/modules/tickerspring/index.js +1 -1
- package/build/dist/api/modules/tickerspring/journeys.d.ts +1 -0
- package/build/dist/api/modules/tickerspring/journeys.js +1 -1
- package/build/dist/api/modules/tickerspring/ladder.js +1 -1
- package/build/dist/api/modules/tickerspring/maker.js +1 -1
- package/build/dist/api/modules/tickerspring/order-accounting.js +1 -1
- package/build/dist/api/modules/tickerspring/research.js +1 -1
- package/build/dist/api/modules/tickerspring/strategies.js +1 -1
- package/build/dist/api/modules/uniswap/auction-create.js +1 -1
- package/build/dist/api/modules/uniswap/auction.js +1 -1
- package/build/dist/api/modules/uniswap/batch.js +1 -1
- package/build/dist/api/modules/uniswap/common.js +1 -1
- package/build/dist/api/modules/uniswap/fee-percent.d.ts +4 -0
- package/build/dist/api/modules/uniswap/fee-percent.js +1 -0
- package/build/dist/api/modules/uniswap/fees.js +1 -1
- package/build/dist/api/modules/uniswap/index.js +1 -1
- package/build/dist/api/modules/uniswap/local-guard.d.ts +2 -0
- package/build/dist/api/modules/uniswap/local-guard.js +1 -1
- package/build/dist/api/modules/uniswap/oracle.js +1 -1
- package/build/dist/api/modules/uniswap/pool-math.js +1 -1
- package/build/dist/api/modules/uniswap/pools.d.ts +2 -0
- package/build/dist/api/modules/uniswap/pools.js +1 -1
- package/build/dist/api/modules/uniswap/position.js +1 -1
- package/build/dist/api/modules/uniswap/protocol.js +1 -1
- package/build/dist/api/modules/uniswap/quote-guard.d.ts +38 -0
- package/build/dist/api/modules/uniswap/quote-guard.js +1 -0
- package/build/dist/api/modules/uniswap/token-jar.js +1 -1
- package/build/dist/api/modules/uniswap/trade-batch.js +1 -1
- package/build/dist/api/modules/uniswap/trade.d.ts +10 -3
- package/build/dist/api/modules/uniswap/trade.js +1 -1
- package/build/dist/api/modules/uniswap/v2.js +1 -1
- package/build/dist/api/modules/uniswap/v3.js +1 -1
- package/build/dist/api/modules/uniswap/v4.d.ts +6 -0
- package/build/dist/api/modules/uniswap/v4.js +1 -1
- package/build/dist/api/modules/uniswap/wrap.js +1 -1
- package/build/dist/api/modules/velora/claims.js +1 -1
- package/build/dist/api/modules/velora/delta-reads.js +1 -1
- package/build/dist/api/modules/velora/index.js +1 -1
- package/build/dist/api/modules/wormhole/index.js +1 -1
- package/build/dist/api/modules/wormhole/scan-text.js +1 -1
- package/build/dist/api/modules/wormhole/swap-token-verdict.js +1 -1
- package/build/dist/api/modules/wormhole/third-party-text.d.ts +14 -3
- package/build/dist/api/modules/wormhole/third-party-text.js +1 -1
- package/build/dist/api/modules/wormhole/token-check.js +1 -1
- package/build/dist/api/modules/wormhole/x402-client.js +1 -1
- package/build/dist/api/oak-fee.d.ts +12 -0
- package/build/dist/api/oak-fee.js +1 -0
- package/build/dist/api/param-text.d.ts +22 -0
- package/build/dist/api/param-text.js +1 -0
- package/build/dist/api/position-economics.d.ts +70 -0
- package/build/dist/api/position-economics.js +1 -0
- package/build/dist/api/positions.d.ts +8 -5
- package/build/dist/api/positions.js +1 -1
- package/build/dist/api/prices.d.ts +3 -0
- package/build/dist/api/prices.js +1 -1
- package/build/dist/api/progress.d.ts +7 -0
- package/build/dist/api/progress.js +1 -0
- package/build/dist/api/read-budgets.d.ts +4 -0
- package/build/dist/api/read-budgets.js +1 -0
- package/build/dist/api/read-shape.d.ts +45 -0
- package/build/dist/api/read-shape.js +1 -0
- package/build/dist/api/revert.d.ts +23 -0
- package/build/dist/api/revert.js +1 -0
- package/build/dist/api/routes.js +1 -1
- package/build/dist/api/rpc.d.ts +1 -0
- package/build/dist/api/rpc.js +1 -1
- package/build/dist/api/secret-fields.js +1 -1
- package/build/dist/api/send.js +1 -1
- package/build/dist/api/signing-registry.d.ts +8 -0
- package/build/dist/api/signing-registry.js +1 -1
- package/build/dist/api/simulate.js +1 -1
- package/build/dist/api/swap.d.ts +4 -0
- package/build/dist/api/swap.js +1 -1
- package/build/dist/api/tokens.d.ts +1 -0
- package/build/dist/api/tokens.js +1 -1
- package/build/dist/api/tool-policy.js +1 -1
- package/build/dist/api/types.d.ts +3 -0
- package/build/dist/api/untrusted-unwrap.d.ts +1 -0
- package/build/dist/api/untrusted-unwrap.js +1 -0
- package/build/dist/api/usd-estimate.d.ts +23 -0
- package/build/dist/api/usd-estimate.js +1 -0
- package/build/dist/api/vendor-limits.js +1 -1
- package/build/dist/chunks/{T7TFUH5K.js → 2E4I7CJ7.js} +1 -1
- package/build/dist/chunks/2FHELZ7Y.js +1 -0
- package/build/dist/chunks/2GXHYI23.js +1 -0
- package/build/dist/chunks/2LWBN35N.js +1 -0
- package/build/dist/chunks/{4HG6FRVH.js → 2OKYXT25.js} +1 -1
- package/build/dist/chunks/2SUHQWND.js +1 -0
- package/build/dist/chunks/2ZWKIBJT.js +1 -0
- package/build/dist/chunks/32RXFUOH.js +1 -0
- package/build/dist/chunks/3CH2IPQL.js +1 -0
- package/build/dist/chunks/3DNJTJ2X.js +1 -0
- package/build/dist/chunks/3K2N5VFH.js +1 -0
- package/build/dist/chunks/3VBIRLU3.js +1 -0
- package/build/dist/chunks/3ZABD6ZF.js +2 -0
- package/build/dist/chunks/44MB6SA6.js +1 -0
- package/build/dist/chunks/4D4ZRZUW.js +1 -0
- package/build/dist/chunks/{IPN6Z4JM.js → 4FPV4CRC.js} +1 -1
- package/build/dist/chunks/4GNUXN4K.js +1 -0
- package/build/dist/chunks/{K4DHHQBI.js → 4JRXEN7C.js} +2 -2
- package/build/dist/chunks/4JTTA3BX.js +1 -0
- package/build/dist/chunks/4OVIMYNH.js +2 -0
- package/build/dist/chunks/{7QIO77VE.js → 4Q2ZBZXM.js} +1 -1
- package/build/dist/chunks/4RQAOOO2.js +1 -0
- package/build/dist/chunks/4TTDAF4B.js +1 -0
- package/build/dist/chunks/523ZIR3J.js +1 -0
- package/build/dist/chunks/5DPJQCKJ.js +68 -0
- package/build/dist/chunks/5HIHUYA4.js +1 -0
- package/build/dist/chunks/5PI57UC2.js +1 -0
- package/build/dist/chunks/5RXALTDT.js +1 -0
- package/build/dist/chunks/5TUXSOMI.js +1 -0
- package/build/dist/chunks/5UAXLWJ2.js +1 -0
- package/build/dist/chunks/5XAXJEWM.js +5 -0
- package/build/dist/chunks/67BWOVET.js +1 -0
- package/build/dist/chunks/6NUNCD5J.js +1 -0
- package/build/dist/chunks/{FJ4S4GHY.js → 6PZGDVHV.js} +1 -1
- package/build/dist/chunks/{RTAHNWHN.js → 6UVGQYZ3.js} +1 -1
- package/build/dist/chunks/753HZZTY.js +1 -0
- package/build/dist/chunks/7D73A6KS.js +1 -0
- package/build/dist/chunks/7MBVTNLU.js +1 -0
- package/build/dist/chunks/7QKYDNF6.js +18 -0
- package/build/dist/chunks/7VC53B5X.js +70 -0
- package/build/dist/chunks/7VNO46LV.js +1 -0
- package/build/dist/chunks/ACH4BSME.js +3 -0
- package/build/dist/chunks/AHUCYDBC.js +1 -0
- package/build/dist/chunks/AI3VAPA3.js +1 -0
- package/build/dist/chunks/AMTRDPVO.js +1 -0
- package/build/dist/chunks/APHNOGNS.js +1 -0
- package/build/dist/chunks/{BND2UFVW.js → ARI72OYT.js} +1 -1
- package/build/dist/chunks/ARLGF5MU.js +1 -0
- package/build/dist/chunks/BAIY32AV.js +1 -0
- package/build/dist/chunks/BB765L75.js +3 -0
- package/build/dist/chunks/BE3A7677.js +1 -0
- package/build/dist/chunks/{PAY5PD4H.js → BX46C5ZP.js} +1 -1
- package/build/dist/chunks/{XL3LLGIR.js → BZ34ZR65.js} +1 -1
- package/build/dist/chunks/C3WBHFLX.js +1 -0
- package/build/dist/chunks/C75MT5SD.js +1 -0
- package/build/dist/chunks/CAWTAR5V.js +1 -0
- package/build/dist/chunks/CNLL4NCR.js +1 -0
- package/build/dist/chunks/CO4GCF4L.js +1 -0
- package/build/dist/chunks/{P5PYFK7L.js → CQ5WRWV4.js} +1 -1
- package/build/dist/chunks/{SJJR4ZBZ.js → CSDN4MYP.js} +1 -1
- package/build/dist/chunks/CSOO4SW7.js +1 -0
- package/build/dist/chunks/CZL6T2ZQ.js +1 -0
- package/build/dist/chunks/D742AYEV.js +1 -0
- package/build/dist/chunks/DGCJZ3HO.js +1 -0
- package/build/dist/chunks/DNNFKDZR.js +1 -0
- package/build/dist/chunks/DPE7SPW7.js +1 -0
- package/build/dist/chunks/DSTMEY5F.js +1 -0
- package/build/dist/chunks/{FUDAXV5X.js → DYYEA5HB.js} +1 -1
- package/build/dist/chunks/EFESPGA2.js +1 -0
- package/build/dist/chunks/EGZREEG2.js +1 -0
- package/build/dist/chunks/EH5G4O3U.js +1 -0
- package/build/dist/chunks/EI6GGPDS.js +20 -0
- package/build/dist/chunks/EVBHQQQG.js +1 -0
- package/build/dist/chunks/EZZM2GQT.js +2 -0
- package/build/dist/chunks/F3VDVTMS.js +1 -0
- package/build/dist/chunks/F4UQEPJT.js +1 -0
- package/build/dist/chunks/FHTNMGFR.js +1 -0
- package/build/dist/chunks/FJLJ7ZQ5.js +1 -0
- package/build/dist/chunks/{WP6RHXGN.js → FL5SSHUL.js} +1 -1
- package/build/dist/chunks/FNGIJKMZ.js +1 -0
- package/build/dist/chunks/{KIFZ5ZSK.js → FOD34G2H.js} +1 -1
- package/build/dist/chunks/{WV3A3OUU.js → FOKEFXGP.js} +1 -1
- package/build/dist/chunks/FV4WZOTD.js +1 -0
- package/build/dist/chunks/FWIFTPSE.js +2 -0
- package/build/dist/chunks/FZ6IJZZM.js +1 -0
- package/build/dist/chunks/G2LAO23N.js +1 -0
- package/build/dist/chunks/GDRQ2ANN.js +1 -0
- package/build/dist/chunks/GG24LO2R.js +1 -0
- package/build/dist/chunks/GLF7WEY2.js +1 -0
- package/build/dist/chunks/GQ3XZFRL.js +1 -0
- package/build/dist/chunks/{QU5XKRGK.js → GQYV4TFO.js} +1 -1
- package/build/dist/chunks/GRSXWQWD.js +1 -0
- package/build/dist/chunks/{DL6AEWEM.js → GSFHM5L3.js} +1 -1
- package/build/dist/chunks/{QHBS3PVU.js → H5DY7CNB.js} +1 -1
- package/build/dist/chunks/HCBX4NFM.js +1 -0
- package/build/dist/chunks/HHO5ISMM.js +1 -0
- package/build/dist/chunks/HIX5N25Z.js +1 -0
- package/build/dist/chunks/HKVQ646Q.js +1 -0
- package/build/dist/chunks/IEG6GLFR.js +1 -0
- package/build/dist/chunks/INOYMBWE.js +1 -0
- package/build/dist/chunks/IV4K7FMD.js +1 -0
- package/build/dist/chunks/{PIIHOXWF.js → J73ATSEQ.js} +1 -1
- package/build/dist/chunks/JBTOZ6IH.js +1 -0
- package/build/dist/chunks/JESMX2UC.js +1 -0
- package/build/dist/chunks/JJGZ7W3V.js +1 -0
- package/build/dist/chunks/JKRBGAX2.js +1 -0
- package/build/dist/chunks/JLRHM2DQ.js +1 -0
- package/build/dist/chunks/JOKL5L6X.js +1 -0
- package/build/dist/chunks/JS53DQVT.js +1 -0
- package/build/dist/chunks/{WIRBCS4W.js → JWR5XVP2.js} +1 -1
- package/build/dist/chunks/{JFYBH3DX.js → K6D6SDIG.js} +1 -1
- package/build/dist/chunks/K7HTDKAT.js +1 -0
- package/build/dist/chunks/{2VXLVXIB.js → KDGSYNOP.js} +1 -1
- package/build/dist/chunks/KKPMOAVI.js +1 -0
- package/build/dist/chunks/KREBNL2D.js +1 -0
- package/build/dist/chunks/L646YWDP.js +1 -0
- package/build/dist/chunks/{GSBIERZD.js → LR4XTZ37.js} +1 -1
- package/build/dist/chunks/LVFI74ST.js +1 -0
- package/build/dist/chunks/{QBIY6FQN.js → M7ZXDLKM.js} +1 -1
- package/build/dist/chunks/MVD3KWPP.js +1 -0
- package/build/dist/chunks/N245WC5R.js +1 -0
- package/build/dist/chunks/{WTXC3XKW.js → N4XNNXOJ.js} +1 -1
- package/build/dist/chunks/N6GIC7HJ.js +1 -0
- package/build/dist/chunks/{RUC7KH7A.js → NA424YAL.js} +1 -1
- package/build/dist/chunks/NUFZUKYS.js +1 -0
- package/build/dist/chunks/{XD6X3KTC.js → O3JWCJIF.js} +1 -1
- package/build/dist/chunks/OARVU3RC.js +1 -0
- package/build/dist/chunks/OEZ7FCLF.js +1 -0
- package/build/dist/chunks/{H43RNCX2.js → OUROA7XR.js} +1 -1
- package/build/dist/chunks/{2MT3G7YZ.js → OYJFXEDU.js} +1 -1
- package/build/dist/chunks/OYPAVXGQ.js +1 -0
- package/build/dist/chunks/{SMYWWIE6.js → OZ5MDUD2.js} +1 -1
- package/build/dist/chunks/P6OMKZMR.js +3 -0
- package/build/dist/chunks/PV4AK32X.js +1 -0
- package/build/dist/chunks/{HKEMQBFA.js → PXVREXCS.js} +1 -1
- package/build/dist/chunks/PZEF5LBL.js +2 -0
- package/build/dist/chunks/Q2ACLVWR.js +1 -0
- package/build/dist/chunks/QFSBDPLN.js +1 -0
- package/build/dist/chunks/QJNLLI6N.js +1 -0
- package/build/dist/chunks/QMZEGT5B.js +1 -0
- package/build/dist/chunks/{PNA6UIE5.js → REWXG6X6.js} +1 -1
- package/build/dist/chunks/{ALLLYOUG.js → RLI4JDOL.js} +1 -1
- package/build/dist/chunks/{UD2XMNIT.js → RLMVA575.js} +1 -1
- package/build/dist/chunks/RPB46QAC.js +1 -0
- package/build/dist/chunks/{Q42YI3EP.js → RT7IU6TI.js} +1 -1
- package/build/dist/chunks/{ER47KGRM.js → SBY4RJ7I.js} +1 -1
- package/build/dist/chunks/SCG5HWMN.js +1 -0
- package/build/dist/chunks/{XQA5LCL6.js → SENOU5JR.js} +1 -1
- package/build/dist/chunks/SKEKXEUU.js +1 -0
- package/build/dist/chunks/SOTYQGPT.js +1 -0
- package/build/dist/chunks/SZ466I5X.js +1 -0
- package/build/dist/chunks/{GNC6RXLT.js → TDZTC5WR.js} +1 -1
- package/build/dist/chunks/TE6D3OIX.js +1 -0
- package/build/dist/chunks/TID4C2KC.js +1 -0
- package/build/dist/chunks/TK55VASJ.js +2 -0
- package/build/dist/chunks/TM7Z5SA4.js +1 -0
- package/build/dist/chunks/TNJTET4G.js +1 -0
- package/build/dist/chunks/TPEKCXVE.js +1 -0
- package/build/dist/chunks/TVIMP5CK.js +1 -0
- package/build/dist/chunks/U2YCQWZK.js +1 -0
- package/build/dist/chunks/U363GQTF.js +1 -0
- package/build/dist/chunks/{U4JGEMKT.js → UEDGYZOC.js} +1 -1
- package/build/dist/chunks/UOCRYXAB.js +1 -0
- package/build/dist/chunks/UQEEF5W5.js +1 -0
- package/build/dist/chunks/{QQECG3WP.js → UUID2E22.js} +1 -1
- package/build/dist/chunks/UWBKAWX3.js +7 -0
- package/build/dist/chunks/V37L4DU4.js +1 -0
- package/build/dist/chunks/VR344DAZ.js +1 -0
- package/build/dist/chunks/{TX2EOIRS.js → VST6LFUB.js} +1 -1
- package/build/dist/chunks/VTPT5544.js +1 -0
- package/build/dist/chunks/VVWFB53Q.js +1 -0
- package/build/dist/chunks/WHTRPRRD.js +1 -0
- package/build/dist/chunks/WHVZ372B.js +1 -0
- package/build/dist/chunks/{AFBEZXNV.js → WNWRF4HE.js} +1 -1
- package/build/dist/chunks/{4DP2VPXR.js → WOGWLFAL.js} +1 -1
- package/build/dist/chunks/WUT7TZYM.js +1 -0
- package/build/dist/chunks/XCKTE4ON.js +1 -0
- package/build/dist/chunks/XEPCDGN2.js +1 -0
- package/build/dist/chunks/XHYFISVV.js +1 -0
- package/build/dist/chunks/XPEDQBLI.js +1 -0
- package/build/dist/chunks/{QFNT73OF.js → XQ24RSEI.js} +1 -1
- package/build/dist/chunks/XRDXFHIK.js +1 -0
- package/build/dist/chunks/XTFRPI4G.js +1 -0
- package/build/dist/chunks/XVJ7ILKK.js +1 -0
- package/build/dist/chunks/XWKK75TO.js +1 -0
- package/build/dist/chunks/{CBLMQ5UU.js → XYPGLG6A.js} +1 -1
- package/build/dist/chunks/Y77EVVT4.js +1 -0
- package/build/dist/chunks/YEIM6BZQ.js +1 -0
- package/build/dist/chunks/{XSKFKBDR.js → YMV5TL5C.js} +1 -1
- package/build/dist/chunks/YSMWCKIX.js +1 -0
- package/build/dist/chunks/YTLH4M4Y.js +1 -0
- package/build/dist/chunks/YUHNPUNK.js +1 -0
- package/build/dist/chunks/YWZQJJYY.js +1 -0
- package/build/dist/chunks/{EGYVRQUR.js → ZF2VPDRQ.js} +1 -1
- package/build/dist/chunks/ZFU65MB4.js +1 -0
- package/build/dist/chunks/ZKZUS3QU.js +1 -0
- package/build/dist/chunks/ZOMFHTB2.js +1 -0
- package/build/dist/chunks/{OLSP46ZD.js → ZP36DSOD.js} +1 -1
- package/build/dist/chunks/ZQ6AF3VX.js +1 -0
- package/package.json +1 -1
- package/build/dist/chunks/2THSW4QN.js +0 -1
- package/build/dist/chunks/2TK3ETUO.js +0 -1
- package/build/dist/chunks/35KR3VSS.js +0 -1
- package/build/dist/chunks/3GQ7A3VB.js +0 -1
- package/build/dist/chunks/3XNZUIRU.js +0 -1
- package/build/dist/chunks/46547QT3.js +0 -1
- package/build/dist/chunks/4EN6MQEI.js +0 -1
- package/build/dist/chunks/4I3OU56B.js +0 -1
- package/build/dist/chunks/52ELWNXJ.js +0 -2
- package/build/dist/chunks/5AXWBSPG.js +0 -1
- package/build/dist/chunks/5N3O42X6.js +0 -1
- package/build/dist/chunks/5SMVQCAP.js +0 -1
- package/build/dist/chunks/5SZPNZG4.js +0 -1
- package/build/dist/chunks/64GOINYS.js +0 -1
- package/build/dist/chunks/6I4NTKB2.js +0 -1
- package/build/dist/chunks/6JAXZNZ3.js +0 -1
- package/build/dist/chunks/6O3Q5B6M.js +0 -1
- package/build/dist/chunks/6OGDTEGH.js +0 -1
- package/build/dist/chunks/6WZX7C4T.js +0 -2
- package/build/dist/chunks/6YB3VOUL.js +0 -1
- package/build/dist/chunks/7GJ6SLEV.js +0 -1
- package/build/dist/chunks/7KWZ5QJU.js +0 -1
- package/build/dist/chunks/7QZOTRSA.js +0 -2
- package/build/dist/chunks/7WSHW7KW.js +0 -1
- package/build/dist/chunks/A7I4IWUB.js +0 -1
- package/build/dist/chunks/ABPL3ZZI.js +0 -1
- package/build/dist/chunks/ACW63WIL.js +0 -20
- package/build/dist/chunks/AEL62KCG.js +0 -1
- package/build/dist/chunks/AKYF5264.js +0 -7
- package/build/dist/chunks/AW7AXQCZ.js +0 -1
- package/build/dist/chunks/AXRL3REN.js +0 -1
- package/build/dist/chunks/BBTPRZ6T.js +0 -1
- package/build/dist/chunks/BOVMED7R.js +0 -1
- package/build/dist/chunks/BTPXJAUX.js +0 -1
- package/build/dist/chunks/C7AXJHBT.js +0 -1
- package/build/dist/chunks/CBG5HARQ.js +0 -2
- package/build/dist/chunks/CDPSMI3Z.js +0 -1
- package/build/dist/chunks/CHXBOXOD.js +0 -1
- package/build/dist/chunks/CQEJSCFQ.js +0 -1
- package/build/dist/chunks/DBNTZEAJ.js +0 -1
- package/build/dist/chunks/DHUDSOGR.js +0 -18
- package/build/dist/chunks/DJN3JAWB.js +0 -1
- package/build/dist/chunks/FEYAY6OZ.js +0 -1
- package/build/dist/chunks/GG6Y4OCJ.js +0 -1
- package/build/dist/chunks/GGHBFLRC.js +0 -1
- package/build/dist/chunks/GGSAKCND.js +0 -1
- package/build/dist/chunks/GRQYTVNT.js +0 -1
- package/build/dist/chunks/H6T5FXEX.js +0 -1
- package/build/dist/chunks/HHXBUYHO.js +0 -1
- package/build/dist/chunks/HQUVB7Z5.js +0 -3
- package/build/dist/chunks/HU7IMNBI.js +0 -1
- package/build/dist/chunks/HWX36XJI.js +0 -1
- package/build/dist/chunks/I26DMNJG.js +0 -1
- package/build/dist/chunks/I55MURSJ.js +0 -1
- package/build/dist/chunks/IMO3GDA5.js +0 -1
- package/build/dist/chunks/IPRVIKYC.js +0 -1
- package/build/dist/chunks/IVX4R5OL.js +0 -1
- package/build/dist/chunks/JQOQMFWD.js +0 -3
- package/build/dist/chunks/JUZ5JU6D.js +0 -70
- package/build/dist/chunks/JZS3E66E.js +0 -1
- package/build/dist/chunks/K3RDPI5J.js +0 -1
- package/build/dist/chunks/KBKK7UNY.js +0 -1
- package/build/dist/chunks/KVFZKPJT.js +0 -1
- package/build/dist/chunks/L5BLHY34.js +0 -1
- package/build/dist/chunks/LKXO2BQS.js +0 -1
- package/build/dist/chunks/LKZX4CAA.js +0 -1
- package/build/dist/chunks/LYMNHO5T.js +0 -1
- package/build/dist/chunks/M2UXYCKH.js +0 -1
- package/build/dist/chunks/M37654RL.js +0 -1
- package/build/dist/chunks/M6LC6DRE.js +0 -1
- package/build/dist/chunks/MOE3EVAL.js +0 -1
- package/build/dist/chunks/N4Q6GN65.js +0 -1
- package/build/dist/chunks/NAZPDRIF.js +0 -1
- package/build/dist/chunks/NKX3FE34.js +0 -1
- package/build/dist/chunks/NKZKKCK2.js +0 -1
- package/build/dist/chunks/NOFUKKP5.js +0 -1
- package/build/dist/chunks/O6ROOKY2.js +0 -1
- package/build/dist/chunks/OJ4WJUPP.js +0 -1
- package/build/dist/chunks/OOZSE2R7.js +0 -1
- package/build/dist/chunks/OTXSKFUD.js +0 -1
- package/build/dist/chunks/P5AJSLZ7.js +0 -1
- package/build/dist/chunks/PACN53TR.js +0 -1
- package/build/dist/chunks/PAHXBLCS.js +0 -1
- package/build/dist/chunks/PK66GCDT.js +0 -1
- package/build/dist/chunks/PSBQWDYI.js +0 -1
- package/build/dist/chunks/PXT5YTWU.js +0 -1
- package/build/dist/chunks/PZGGE5D3.js +0 -1
- package/build/dist/chunks/QA2RRIES.js +0 -1
- package/build/dist/chunks/QA3UHEO3.js +0 -1
- package/build/dist/chunks/QW2OPEYJ.js +0 -1
- package/build/dist/chunks/QYVREJYC.js +0 -1
- package/build/dist/chunks/ROFPXEQ5.js +0 -2
- package/build/dist/chunks/RTGS7RIO.js +0 -1
- package/build/dist/chunks/RUX3RY7Y.js +0 -1
- package/build/dist/chunks/RVDUSNWW.js +0 -1
- package/build/dist/chunks/S5CBVFHY.js +0 -1
- package/build/dist/chunks/SIYUNOLI.js +0 -1
- package/build/dist/chunks/TEJ7W534.js +0 -1
- package/build/dist/chunks/TPBAFS7K.js +0 -1
- package/build/dist/chunks/TVWMTMEF.js +0 -1
- package/build/dist/chunks/U2RMUVVY.js +0 -1
- package/build/dist/chunks/U5PMVP56.js +0 -1
- package/build/dist/chunks/V5JWGWXC.js +0 -1
- package/build/dist/chunks/VCOTCVKN.js +0 -1
- package/build/dist/chunks/VEQBHI6O.js +0 -1
- package/build/dist/chunks/VNV6ZISN.js +0 -1
- package/build/dist/chunks/VYAJXLND.js +0 -1
- package/build/dist/chunks/WCNHZYQQ.js +0 -1
- package/build/dist/chunks/X2P55AC3.js +0 -1
- package/build/dist/chunks/XBE3B6Y2.js +0 -1
- package/build/dist/chunks/XKSVTN5X.js +0 -1
- package/build/dist/chunks/XSRIJUFU.js +0 -1
- package/build/dist/chunks/YCZPSMZ5.js +0 -1
- package/build/dist/chunks/YN56C7PN.js +0 -1
- package/build/dist/chunks/YRNXGQJC.js +0 -1
- package/build/dist/chunks/YWRLY5EA.js +0 -1
- package/build/dist/chunks/YWSX6IE6.js +0 -1
- package/build/dist/chunks/YXTSWRV5.js +0 -1
- package/build/dist/chunks/Z6LZGCVW.js +0 -1
- package/build/dist/chunks/ZQWZGH7V.js +0 -1
- package/build/dist/chunks/ZSN4IRI5.js +0 -1
- package/build/dist/chunks/ZV5HIQXC.js +0 -1
- package/build/dist/chunks/ZXJ24B4L.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as R}from"./LKXO2BQS.js";import{a as L,f as N,g as b}from"./PIIHOXWF.js";import{H,J as j,K as O,b as p,d as l,y as D}from"./2THSW4QN.js";import{g as d}from"./NWNYJ26T.js";import{a as y}from"./FWD4L3CJ.js";import{a as e}from"./XSD5NL7J.js";import{decodeAbiParameters as J,decodeFunctionData as A,encodeAbiParameters as K,encodeFunctionData as Q,erc20Abi as W,getAddress as Y,parseAbi as Z,parseAbiParameters as ee}from"viem";var U=Z(["function modifyLiquidities(bytes unlockData,uint256 deadline) payable"]),V=ee("bytes actions,bytes[] params");function de(f,$){return{tools:[{name:"uniswap_batch",inputSchema:{type:"object",additionalProperties:!1,required:["operations"],properties:{operations:{type:"array",minItems:1,maxItems:20,items:{type:"object",additionalProperties:!1,required:["name","arguments"],properties:{name:{type:"string",enum:["uniswap_add","uniswap_collect","uniswap_remove"]},arguments:{anyOf:[H,j,O]}}}}}},async execute(a,v){if(b(a,["operations"]),!Array.isArray(a.operations)||a.operations.length<1||a.operations.length>20)throw new e("Provide 1 to 20 v4 liquidity operations.");let s="0x",c,h=[],P=0n,g=new Map,_=new Set,E=new Set;for(let t of a.operations){if(!t||typeof t!="object"||Array.isArray(t))throw new e("Each operation needs name and arguments.");let o=t;if(b(o,["name","arguments"]),!["uniswap_add","uniswap_collect","uniswap_remove"].includes(String(o.name))||!o.arguments||typeof o.arguments!="object"||Array.isArray(o.arguments))throw new e("Batch supports v4 add, collect and remove operations only.");let r=o.arguments;if(r.version!=="v4")throw new e("Every batch operation must explicitly select version v4.");if(r.initialPrice!==void 0||r.sqrtPriceX96!==void 0)throw new e("Create a pool before batching its liquidity operations.");if(r.tokenId!==void 0){let n=L(r.tokenId,"tokenId").toString();if(E.has(n))throw new e("Batch tokenIds must be distinct decimal strings.");E.add(n)}else if(o.name!=="uniswap_add")throw new e("Existing-position operations require tokenId.");let I=await $.tools.find(n=>n.name===o.name).execute(r,v),u=I.txs.at(-1);if(!u||!d(u.to,p))throw new e("Batch operation returned an unexpected destination.");P+=BigInt(u.value);for(let n of I.txs.slice(0,-1)){if(BigInt(n.value)!==0n)throw new e("Batch prerequisite cannot send native currency.");if(d(n.to,l)){let i=A({abi:R,data:n.data}),[B,G,X,z]=i.args;if(!d(G,p))throw new e("Batch Permit2 spender must be PositionManager.");let T=B.toLowerCase(),m=g.get(T),q=BigInt(z),C=(m?.amount??0n)+X;if(C>=1n<<160n)throw new e("Batch approval exceeds uint160.");g.set(T,{token:B,amount:C,expiration:m&&m.expiration<q?m.expiration:q})}else{let i=A({abi:W,data:n.data});if(i.functionName!=="approve"||!d(i.args[0],l))throw new e("Unexpected batch prerequisite.")}}let S=A({abi:U,data:u.data}),[F,x]=J(V,S.args[0]),k=F.slice(2).match(/../g)??[];if(k.length!==x.length)throw new e("Batch action/parameter count differs.");k.forEach((n,i)=>{n==="14"?_.add(x[i]):(s=`${s}${n}`,h.push(x[i]))});let M=S.args[1];c=c===void 0||M<c?M:c}for(let t of _)s=`${s}14`,h.push(t);let w=[];for(let t of g.values())w.push(f.approval(Y(t.token),l,t.amount.toString(),y),D(t.token,p,t.amount.toString(),t.expiration.toString()));return w.push(f.unsignedTx({to:p,data:Q({abi:U,functionName:"modifyLiquidities",args:[K(V,[s,h]),c]}),value:P.toString(),chainId:y,description:`Atomically modify ${a.operations.length} v4 positions; recipients are the signing wallet.`})),N(f,w,v,"Atomic v4 batch: every operation must succeed. Each position retains its own minimums; preview covers the complete action stream.")}}]}}export{U as a,V as b,de as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as ne,b as re,d as ae,e as se,f as ce,g as de}from"./A7I4IWUB.js";import{A as J}from"./2THSW4QN.js";import{c as te,d as ie}from"./CBLMQ5UU.js";import{a as m,e as T,f as q,h as _,i as E,j as n,k as oe,l as B,m as x,n as C,o as P,p as A,q as I,r as M,t as N}from"./T7TFUH5K.js";import{f as Y,g as Z,i as ee}from"./MQK6OP7S.js";import{a as W}from"./QHBS3PVU.js";import{a as s}from"./XSD5NL7J.js";import{encodeFunctionData as fe,zeroAddress as S}from"viem";var le=["hookr_lp_add","hookr_lp_remove","hookr_lp_collect"],ye=t=>le.includes(t),F=t=>({type:"object",additionalProperties:!1,properties:t,required:Object.keys(t)}),j=ce.oneOf[0],ue={hookr_lp_add:F({target:F({position:j}),liquidity:m,amount0Max:m,amount1Max:m,deadline:m}),hookr_lp_remove:F({position:j,liquidity:m,amount0Min:m,amount1Min:m,deadline:m}),hookr_lp_collect:F({position:j,deadline:m})};function he(t,r){if(!ye(t))throw new s("Choose a supported Hookr family LP action.");let d=ue[t],i=T(r,Object.keys(d.properties),d.required),e=t==="hookr_lp_add",l=t==="hookr_lp_collect",o=de(e?T(i.target,["position"],["position"]).position:i.position),a=l?0n:q(i.liquidity,127);if(!l&&!a)throw new s("Hookr add/remove liquidity must be an exact positive integer; use collect for fees only.");let v=l?0n:q(i[e?"amount0Max":"amount0Min"],e?128:256),k=l?0n:q(i[e?"amount1Max":"amount1Min"],e?128:256);return{position:o,adding:e,collecting:l,liquidity:a,bound0:v,bound1:k,deadline:q(i.deadline,64)}}async function ke(t,r,d){let{block:i,poolId:e,position:l,pc:o,core:a,role:v}=r,k=(p,L=[])=>A(t,a,P(v),p,L,i.number),[$,H,O,R]=await Promise.all([k("config",[e]),A(t,M,P("registry"),"admission",[I,a],i.number),k("configSchemaHash"),k("recaptureConfig",[e])]),y=x($),u=x(H),f=x(u.caps),g=x(o.caps);if(u.implementation!==a||u.codeHash!==Y(a).codeHash||u.schemaHash!==_(O)||n(u.kind,8)!==0n||!n(u.gasLimit,32)||n(f.maxLpFeePips,24)>600000n||n(f.maxQuoteTakePips,24)>=1000000n||n(f.maxSubjectTakeBps,16)>1000n)throw new s("Hookr core admission or fee caps are unavailable or outside the reviewed limits.");let h=n(g.maxLpFeePips,24),b=n(g.maxQuoteTakePips,24),c=n(g.maxSubjectTakeBps,16),w=n(y.burnBps,16),pe=n(y.lpBps,16),D=n(y.protocolShareBps,16);if(h>600000n||h>n(f.maxLpFeePips,24)||n(o.baseLpFeePips,24)>h||n(y.maxFeePips,24)>h||b>n(f.maxQuoteTakePips,24)||c>n(f.maxSubjectTakeBps,16)||w+pe>1000n||D<2000n||D>5000n)throw new s("Hookr pool fee settings exceed the reviewed entry caps. Exit tools remain available.");let U=E(o.advisory),z={gated:!1};if(U!==S){if(U!==N||o.advisoryFailOpen!==!1||n(o.advisoryPhases,8)!==1n)throw new s("Hookr entry requires the reviewed fail-closed agent gate configuration.");await Z(t,i.number,[N]);let p=await te(t,i.number,d),L=await ie(t,i.number,e,l.launcher,U);if(!p.healthyIdentityOnly||!p.walletAgent||!("liquidityEntryAllowed"in L)||!L.liquidityEntryAllowed)throw new s("Hookr family entry needs a healthy gate and a current on-chain agent identity. Collect/remove do not need Hookr gate eligibility.");let me=x(L.terms),X=q(me.tierPips,24);if(X>50000n||n(o.baseLpFeePips,24)+X>h||n(o.advisoryGasLimit,32)<400000n||n(o.advisoryGasLimit,32)>2000000n)throw new s("Hookr gate surcharge or gas exceeds the pool caps.");z=L}let V=x(B(R,3)[0]);oe(V.on);let G=null,K=BigInt(_(await t.getStorageAt({address:I,slot:re(e),blockNumber:i.number})));if(BigInt(l.launcher)!==(K&(1n<<160n)-1n))throw new s("Hookr frozen Root record differs from the family Launcher.");let Q=(K>>200n&255n)!==0n;if(Q){let p=B(await A(t,M,P("registry"),"activeLaneOf",[I],i.number),4);if(E(p[0]),_(p[1]),n(p[2],32),n(p[3],16)>10000n)throw new s("Hookr recapture switch is malformed.");G=C({activeSwapSwitch:p,swapExecutorUsedByLpAction:!1,liquidityCallbackFloor:300000n+300000n/63n+5000n,floorSource:"Pinned HookrLane._flush; sender estimates the complete transaction, including EIP-150 overhead."})}return C({config:y,poolCaps:g,gateStatus:z,reportedRecaptureConfig:V,laneLiquidity:Q,lane:G})}async function ge(t,r,d,i){let e=he(t,d);if(r.network==="testnet")throw new s("Hookr family LP actions require Robinhood Chain 4663.");let l=r.clientFor(4663),o=await ae(l,i,e.position);if(e.deadline<=o.block.timestamp||e.deadline>o.block.timestamp+300n)throw new s("Set a fresh Hookr LP deadline within the next 300 seconds of chain time.");if(!e.adding&&e.liquidity>o.liquidity)throw new s("Remove no more than the exact remaining Hookr family liquidity.");if(e.adding&&e.liquidity+o.liquidity>=1n<<127n)throw new s("Hookr resulting liquidity must fit int128 max.");let a=J({liquidity:e.liquidity,tickLower:o.tickLower,tickUpper:o.tickUpper,sqrtPriceX96:o.sqrtPriceX96,roundUp:e.adding});if(e.adding&&(!a.amount0&&!a.amount1||a.amount0>=1n<<127n||a.amount1>=1n<<127n||a.amount0>e.bound0||a.amount1>e.bound1))throw new s("Hookr rounded-up principal debts must fit the exact finite funding caps.");let v=t==="hookr_lp_remove"?await se(l,o):null;if(v?.currentlyLocked)throw new s("Hookr principal is locked on the parent-block clock. Collect fees now or wait until all principal locks expire.");let k=e.adding?await ke(l,o,i):null,$=null,H=null;try{$=(await Promise.all([o.key.currency0,o.key.currency1].map(c=>A(l,o.core,P("rulesV1"),"poolAccrued",[o.poolId,c],o.block.number)))).map((c,w)=>({token:o.tokens[w],amount:n(c).toString()}))}catch{H="Core credit forecast unavailable; receipt verification must identify any core payment separately. No zero is inferred."}let O=e.adding?"Add":e.collecting?"Collect LP fees with zero principal removed from":"Remove",R=`${o.key.currency0} / ${o.key.currency1}`,y=`${O} Hookr family ${e.position.familyId}, member ${e.position.member}, Launcher ${e.position.launcher}. ${e.adding||!e.collecting?`Exact liquidity ${e.liquidity}; existing ticks ${o.tickLower} to ${o.tickUpper}.`:""} Recipient ${i}. Currencies ${R} (base units; decimals ${o.tokens[0].decimals}/${o.tokens[1].decimals}). ${e.adding?`Deposit caps ${e.bound0}/${e.bound1}; current rounded-up principal debts ${a.amount0}/${a.amount1}. Exact finite approvals are reset first and revoked after the add; unused funding returns to ${i} in the add transaction.`:`Principal minimums ${e.bound0}/${e.bound1}; current principal forecast ${a.amount0}/${a.amount1}. Fees cannot satisfy a principal minimum.`} Uncollected LP fee forecast ${o.fees[0]}/${o.fees[1]}, paid separately from principal. Any family accrual moved into the wallet\u2019s core claim ledger is reported separately after mining; this credit is not a wallet token receipt; pool pending recapture is not earned position fees. ${H??"Core credit forecast is separate in terms."} Deadline ${e.deadline}.`,u=[],f=[],g=[];if(e.adding)for(let[b,c]of[o.key.currency0,o.key.currency1].entries()){let w=b===0?e.bound0:e.bound1;w&&(g.push({token:c===S?W:c,amount:w,...c===S?{to:e.position.launcher}:{}}),c!==S&&(u.push(r.approval(c,e.position.launcher,"0",4663),r.approval(c,e.position.launcher,w.toString(),4663)),f.push(r.approval(c,e.position.launcher,"0",4663))))}let h=u.length;return u.push(r.unsignedTx({to:e.position.launcher,chainId:4663,value:e.adding&&o.key.currency0===S?e.bound0.toString():"0",description:y,data:fe({abi:ne(e.position),functionName:e.adding?"addLiquidity":"withdraw",args:e.adding?[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,e.deadline]:[e.position.familyId,Number(e.position.member),e.liquidity,e.bound0,e.bound1,i,e.deadline]})}),...f),await ee(l,o.block),{txs:u,inputs:g,summary:y,state:o,request:e,actionIndex:h,terms:C({request:d,blockNumber:o.block.number,blockHash:o.block.hash,poolId:o.poolId,poolKey:o.key,owner:i,recipient:i,range:{tickLower:o.tickLower,tickUpper:o.tickUpper},liquidityBefore:o.liquidity,liquidityDelta:e.adding?e.liquidity:-e.liquidity,principal:a,principalBounds:[e.bound0,e.bound1],uncollectedLpFees:o.fees.map((b,c)=>({token:o.tokens[c],amount:b})),coreCredits:$,coreCreditsReason:H,locks:v,entry:k,exactApprovals:u.filter((b,c)=>c!==h),refunds:e.adding?[e.bound0-a.amount0,e.bound1-a.amount1]:null,gasEstimate:null,gasEstimateReason:"Local sender estimates the ordered calls and confirms the maximum network fee."})}}function be(t){if(!Array.isArray(t)||!t.length||t.length>7)throw new s("Hookr LP requires only its exact finite approvals, one family action and cleanup.");for(let r of t)T(r,["to","data","value","chainId","description"],["to","data","value","chainId","description"])}function $e(t,r){if(be(t),t.length!==r.length||t.some((d,i)=>d.to!==r[i].to||d.data!==r[i].data||d.value!==r[i].value||d.chainId!==4663))throw new s("Hookr LP differs from the locally reconstructed exact family action, recipient, bounds, approvals or cleanup.")}function Te(t){return le.map(r=>({name:r,inputSchema:ue[r],execute:async(d,i)=>{let e=await ge(r,t,d,i);return{txs:e.txs,preview:await t.preview(e.txs,i),terms:e.terms,summary:e.summary}}}))}export{le as a,ye as b,ue as c,he as d,ge as e,be as f,$e as g,Te as h};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as l}from"./NWNYJ26T.js";import{a as i}from"./XSD5NL7J.js";async function m(a,e,t,r){let n=`OAK_RPC_URL_${e}`;try{let s=a(e);if(await s.getChainId()!==e)throw new Error("Wrong chain");let o=await s.request({method:"debug_traceCall",params:[{from:t,to:t,data:"0x",value:"0x0",gas:"0x5208"},"latest",{tracer:"callTracer"}]});if(o?.type!=="CALL"||!l(o.to,t)||o.error)throw new Error("Invalid trace")}catch{throw new i(`Relay return path is unavailable on the ${r} for chain ${e}. Set ${n} in both the Oak server and local add-on environments to an RPC for chain ${e} that supports debug_traceCall with callTracer, then restart both and retry bridge-out. Nothing was submitted.`)}return`Relay return path checked on the ${r}: chain ${e} RPC and debug_traceCall with callTracer are available. This checks setup now; it does not guarantee future RPC availability or Relay settlement. Keep destination ETH for return gas.`}var h=500;function d(a,e){let t=BigInt(a),r=BigInt(e),n=((t-r)*10000n+t-1n)/t;return new i(`Relay order minimum is below the allowed slippage minimum. This quote needs slippageBps at least ${n} (maximum 9999), or explicit minAmountOut "${e}". Review that minimum before retrying; a new quote alone may have the same floor.`)}export{m as a,h as b,d as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function c(r,s){return r==="hoodlock_airdrop_claim"&&!Object.hasOwn(s,"id")}var h=new Map([]),_="find_tool",l="run_tool",i=["oak_setup","oak_identity_unlink","oak_subscribe","oak_renew","oak_redeem","send","hoodlock_feature_buy","hoodlock_feature_claim","hoodlock_referral_register","heyresearch_token_facts","heyresearch_feed","heyresearch_follow","heyresearch_unfollow","heyresearch_position_context"],d={oak:["account","balances","find_token","price","quote","swap","positions","send","oak_setup","oak_subscribe","oak_renew","oak_identity_unlink","oak_redeem"],kyberswap:[],velora:[],steakhouse:["steakhouse_deposit","steakhouse_withdraw"],spark:["spark_deposit","spark_withdraw"],layerbank:["layerbank_deposit","layerbank_withdraw"],borro:["borro_deposit","borro_withdraw"],chop:["chop_wrap","chop_unwrap"],gloam:["gloam_shield","gloam_pay","gloam_claim","gloam_cash_out"],pendle:["pendle_buy","pendle_sell","pendle_redeem"],earn:["earn_options"],netnet:["netnet_deposit","netnet_withdraw"],longbow:["longbow_list","longbow_deposit","longbow_withdraw"],grove:["grove_deposit","grove_withdraw"],beefy:["beefy_list","beefy_deposit","beefy_withdraw"],pons:["pons_browse","pons_buy","pons_sell","pons_launch"],orbio:["orbio_credit_status","orbio_buy_credit"],hoodlock:["hoodlock_list_locks","hoodlock_lock","hoodlock_withdraw"],merkl:["merkl_rewards","merkl_claim"],relay:["relay_bridge_in","relay_bridge_out","relay_status"],lighter:["lighter_funding"],wormhole:[],erc8004:["erc8004_identity"],hoodag:["hoodag_resolve","hoodag_register"],heyresearch:["heyresearch_research_project","heyresearch_token_facts","heyresearch_feed","heyresearch_follow","heyresearch_position_context"],priors:["priors_status","priors_lend","priors_withdraw","priors_borrow","priors_repay"],morpho:["morpho_status","morpho_supply","morpho_withdraw","morpho_supply_collateral","morpho_withdraw_collateral","morpho_borrow","morpho_repay"],uniswap:["uniswap_list_positions","uniswap_add","uniswap_remove","uniswap_collect"],hookr:["hookr_orders","hookr_create","hookr_cancel"],meridian:["meridian_browse","meridian_positions","meridian_sell","meridian_redeem"],tickerspring:["tickerspring_account","tickerspring_create","tickerspring_cancel","tickerspring_claim"],clanker:["clanker_browse","clanker_launch"],poolstrade:["poolstrade_status","poolstrade_buy","poolstrade_sell","poolstrade_launch"]};function w(r,s){let a=new Set(r),t=new Set;for(let[o,n]of Object.entries(d))for(let e of n){if(t.has(e))throw new Error(`Visible tool ${e} is listed twice.`);if(o!=="oak"&&!e.startsWith(`${o}_`))throw new Error(`Visible tool ${e} is filed under ${o}.`);if(i.includes(e)||a.has(e))t.add(e);else if(s==="mainnet")throw new Error(`Visible tool ${e} is not registered.`)}for(let o of[_,l,...i,"oak_playbook"])if(a.has(o))throw new Error(`Tool name ${o} is reserved for the add-on.`);return t}export{c as a,h as b,_ as c,l as d,i as e,d as f,w as g};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as m}from"./DFM4T6ZE.js";import{a as p,e as b}from"./DJN3JAWB.js";import{o as O}from"./AEL62KCG.js";import{a as y}from"./66F5ZH34.js";import{a as l}from"./FWD4L3CJ.js";import{a as u}from"./XSD5NL7J.js";import{encodeFunctionData as g,getAddress as a,parseAbi as I}from"viem";var x="(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)",A="(address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96)",h=I([`function swapExactIn(${x} key,bool zeroForOne,uint128 amountIn,uint256 minOut,uint160 sqrtPriceLimitX96,address to,uint256 deadline) returns (uint256 paid,uint256 out)`,`function exactInputSingle(${A} params) payable returns (uint256 amountOut)`,"function multicall(uint256 deadline,bytes[] data) payable returns (bytes[] results)"]),E=I(["function quoteExactInputSingle((address tokenIn,address tokenOut,uint256 amountIn,uint24 fee,uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut,uint160 sqrtPriceX96After,uint32 initializedTicksCrossed,uint256 gasEstimate)"]),N=I([`function quoteExactInputSingle((${x} poolKey,bool zeroForOne,uint128 exactAmount,bytes hookData) params) returns (uint256 amountOut,uint256 gasEstimate)`]),_="0x0000000000000000000000000000000000000000",w={symbol:{type:"string",enum:m.tokens.map(e=>e.symbol)},side:{type:"string",enum:["buy","sell"]},amountIn:y()};async function S(e,o){let n=m.tokens.find(s=>s.symbol===e.symbol);if(!n||e.side!=="buy"&&e.side!=="sell")throw new u("Choose a published stock symbol and buy or sell.");let t=await O(String(e.symbol),{context:o});if(t.kind!=="official_stock"||t.address!==a(n.token))throw new u("Published Priors stock pool does not match the official stock contract address. Retry after the pool mapping is updated.");let r=b(e.amountIn,"amountIn",128);if(r===0n)throw new u("amountIn must be positive base units.");return{token:n,identity:t,amount:r,input:e.side==="buy"?p.usdg:a(n.token),output:e.side==="buy"?a(n.token):p.usdg}}function P(e,o,n){let[t,r]=BigInt(p.usdg)<BigInt(e)?[p.usdg,e]:[e,p.usdg];return{currency0:t,currency1:r,fee:o,tickSpacing:n,hooks:_}}function X(e){return{tools:[{name:"priors_stock_quote",inputSchema:{type:"object",properties:w,required:Object.keys(w),additionalProperties:!1},async execute(o,n){if(e.network==="testnet")throw new u("Priors stock swaps require mainnet chain 4663.");let t=await S(o,e),r=e.clientFor(l),s=await r.getBlockNumber({cacheTime:0}),k=await Promise.all(t.token.pools.map(async(i,d)=>{try{let c=P(a(t.token.token),i.fee,"tickSpacing"in i?i.tickSpacing:0),f=i.v===3?await r.simulateContract({address:a(m.v3.quoter),abi:E,functionName:"quoteExactInputSingle",args:[{tokenIn:t.input,tokenOut:t.output,amountIn:t.amount,fee:i.fee,sqrtPriceLimitX96:0n}],account:n,blockNumber:s}):await r.simulateContract({address:a(m.v4.quoter),abi:N,functionName:"quoteExactInputSingle",args:[{poolKey:c,zeroForOne:t.input===c.currency0,exactAmount:t.amount,hookData:"0x"}],account:n,blockNumber:s});return{poolIndex:d,version:i.v,amountOut:f.result[0].toString()}}catch(c){return{poolIndex:d,version:i.v,error:e.plainError(c)}}}));return{chainId:l,blockNumber:s.toString(),token:t.identity,quotes:k,warning:"Use explicit minimum output with priors_stock_swap and inspect its preview. Issuer restrictions can prevent sale. Quote is no promise of an exit; local regional eligibility remains required."}}},{name:"priors_stock_swap",inputSchema:{type:"object",properties:{...w,poolIndex:{type:"integer",minimum:0,maximum:2},minOut:y(),deadline:y(),eligible:{type:"boolean",description:"Operator/user affirms eligibility for this stock-token trade in their jurisdiction."}},required:[...Object.keys(w),"poolIndex","minOut","deadline","eligible"],additionalProperties:!1},async execute(o,n){if(e.network==="testnet")throw new u("Priors stock swaps require mainnet chain 4663.");if(n=a(n),o.eligible!==!0)throw new u("Confirm local eligibility for Robinhood stock tokens before trading.");let t=await S(o,e),r=b(o.minOut,"minOut"),s=b(o.deadline,"deadline"),k=BigInt(Math.floor(Date.now()/1e3));if(r===0n||s<=k||s>k+1800n||!Number.isSafeInteger(o.poolIndex))throw new u("Provide positive minOut, poolIndex and a deadline within 30 minutes.");let i=t.token.pools[o.poolIndex];if(!i)throw new u("No published pool at that index. Read priors_stock_quote.");let d=P(a(t.token.token),i.fee,"tickSpacing"in i?i.tickSpacing:0),c=t.input===d.currency0,f=a(i.v===3?m.v3.router:m.v4.swapper),q=i.v===3?g({abi:h,functionName:"multicall",args:[s,[g({abi:h,functionName:"exactInputSingle",args:[{tokenIn:t.input,tokenOut:t.output,fee:i.fee,recipient:n,amountIn:t.amount,amountOutMinimum:r,sqrtPriceLimitX96:0n}]})]]}):g({abi:h,functionName:"swapExactIn",args:[d,c,t.amount,r,c?4295128740n:1461446703485210103287273052203988822378723970341n,n,s]}),v=[e.approval(t.input,f,t.amount.toString(),l),e.unsignedTx({to:f,data:q,value:"0",chainId:l,description:`Priors stock ${o.side}: ${t.amount} input base units; minimum ${r}; pinned V${i.v} pool.`})],$=await e.preview(v,n);return{txs:v,expiresAt:s.toString(),summary:`Stock ${o.side} ${o.symbol}: input ${t.amount} base units (${t.input}), minimum output ${r} (${t.output}), receiver ${n}, deadline ${s}. Issuer transfer/sale restrictions apply. Price impact is not measured by this builder; inspect minOut and the preview. ${$.summary}`}}}]}}export{h as a,X as b};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{t as R}from"./DHUDSOGR.js";import{b as S}from"./CBG5HARQ.js";import{a as v}from"./P4UQGWCP.js";import{c as P}from"./VEQBHI6O.js";import{e as f}from"./NWNYJ26T.js";import{a as c,i as I}from"./FWD4L3CJ.js";import{a}from"./XSD5NL7J.js";import{getAddress as x,isAddress as w}from"viem";function _(r){if(typeof r!="string"||!r.trim()||r.length>200)throw new a("Provide nonempty filter text of at most 200 characters.");return r}function O(r,u){if(typeof r!="number"||!Number.isSafeInteger(r)||r<0||r>u)throw new a(`Choose a pagination integer from 0 to ${u}.`);return r}var k={morpho:{assess:"morpho_status",enter:"morpho_supply_collateral",exit:"morpho_withdraw_collateral"},steakhouse:{assess:"steakhouse_list",enter:"steakhouse_deposit",exit:"steakhouse_withdraw"},spark:{assess:"spark_list",enter:"spark_deposit",exit:"spark_withdraw"},netnet:{assess:"netnet_list",enter:"netnet_deposit",exit:"netnet_withdraw"},longbow:{assess:"longbow_list",enter:"longbow_deposit",exit:"longbow_withdraw"},grove:{assess:"grove_list",enter:"grove_deposit",exit:"grove_withdraw"},beefy:{assess:"beefy_list",enter:"beefy_deposit",exit:"beefy_withdraw"},uniswap:{assess:"uniswap_list_positions",enter:"uniswap_add",exit:"uniswap_remove"}},h=I[c].vaults,C={steakhouse:[h.steakhouse.address],spark:[h.spark.address],netnet:[h.netnet.address],longbow:[h.longbowCore.address,h.longbowFrontier.address,h.longbowEth.address],grove:[h.groveAlm.address],beefy:v.vaults.map(r=>r.earnContractAddress)},M=new Set(R.map(r=>r.marketId.toLowerCase()));function N(r,u){return Object.hasOwn(C,r)&&typeof u=="string"&&w(u,{strict:!1})&&C[r].some(g=>g.toLowerCase()===u.toLowerCase())}var V=r=>{let u=(t,n,o)=>({name:`merkl_${t}`,inputSchema:{type:"object",properties:n,additionalProperties:!1},execute:async(d,e)=>{try{let s=Object.keys(d).find(p=>!Object.hasOwn(n,p));if(s)throw new a(`Unsupported Merkl input: ${s}.`);return await o(d,e)}catch(s){throw new a(r.plainError(s))}}}),g={page:{type:"integer",minimum:0,maximum:1e4},items:{type:"integer",minimum:1,maximum:100}},A=async(t,n)=>{let o=new URL(`https://api.merkl.xyz/v4/${t}`);for(let[d,e]of Object.entries(n))o.searchParams.set(d,e);return P(r.http,o.toString(),{method:"GET",headers:{"User-Agent":"oak-core/merkl"}},d=>Array.isArray(d)||f(d))},b=t=>{let n=O(t.items??20,100);if(!n)throw new a("Choose at least one item per page.");return{page:String(O(t.page??0,1e4)),items:String(n)}};return{tools:[u("opportunities",{...g,protocol:{type:"string"},name:{type:"string"},explorerAddress:{type:"string"}},async t=>{let n={chainId:String(c),campaigns:"true",...b(t)};if(t.protocol!==void 0&&(n.mainProtocolId=_(t.protocol)),t.name!==void 0&&(n.name=_(t.name)),t.explorerAddress!==void 0){if(typeof t.explorerAddress!="string"||!w(t.explorerAddress,{strict:!1}))throw new a("Provide a pool or market explorer address.");n.explorerAddress=x(t.explorerAddress)}let o=await A("opportunities",n);if(!Array.isArray(o)||!o.every(e=>f(e)&&typeof e.id=="string"&&Number.isSafeInteger(e.chainId)))throw new a("Merkl returned unexpected opportunities.");return{opportunities:o.filter(e=>e.chainId===c).map(e=>{let s=(f(e.protocol)?e.protocol.id:void 0)??e.mainProtocolId??e.mainProtocol,p=typeof s=="string"?s.toLowerCase():"",i;p==="morpho"&&e.action==="LEND"?e.type==="MORPHOCOLLATERAL"?[e.marketId,e.identifier,e.explorerAddress].some(m=>typeof m=="string"&&M.has(m.toLowerCase()))&&(i=k.morpho):typeof e.type=="string"&&(e.type==="ERC20LOGPROCESSOR"||e.type.includes("MORPHOVAULT"))&&typeof e.explorerAddress=="string"&&w(e.explorerAddress,{strict:!1})&&x(e.explorerAddress)===I[c].vaults.steakhouse.address&&(i=k.steakhouse):p==="uniswap"?e.type==="UNISWAP_V4"&&e.action==="POOL"&&(i=k.uniswap):N(p,e.explorerAddress)&&(e.action==="LEND"||e.action==="STAKE")&&(i=k[p]);let l=e.action==="POOL"||i?.enter==="uniswap_add"?{lpWarning:`Illustration for $100; no deposit amount has been selected.
|
|
2
|
-
${S({apr:typeof e.apr=="number"?e.apr:void 0,endDate:typeof e.endTimestamp=="number"||typeof e.endTimestamp=="string"?e.endTimestamp:void 0,amountUsd:100})}`}:{};return{...e,oak:{...i?{candidateTools:i}:{},...l,destinationVerificationRequired:!0,eligibility:"Read campaign conditions; no wallet eligibility has been verified."}}}),...b(t),hasMore:o.length===Number(n.items),summary:"Powered by Merkl \u2014 https://app.merkl.xyz. Public, untrusted campaign data includes conditions and destinations. Candidate Oak tools require a matching verified market/vault and a supported entry AND exit. APR is indicative; no rewards are promised."}}),u("campaigns",{...g,creator:{type:"string"},tokenSymbol:{type:"string"},opportunityId:{type:"string",pattern:"^\\d{1,30}$"}},async t=>{if(t.opportunityId!==void 0&&(t.creator!==void 0||t.tokenSymbol!==void 0))throw new a("Use creator and tokenSymbol without opportunityId; the opportunity endpoint does not support those filters.");if(t.opportunityId!==void 0&&(typeof t.opportunityId!="string"||!/^\d{1,30}$/.test(t.opportunityId)))throw new a("Provide an opportunityId as a decimal string of 1 to 30 digits.");let n={chainId:String(c),withOpportunity:"true",...b(t)};if(t.creator!==void 0){if(typeof t.creator!="string"||!w(t.creator,{strict:!1}))throw new a("Provide a creator address.");n.creatorAddress=x(t.creator)}t.tokenSymbol!==void 0&&(n.tokenSymbol=_(t.tokenSymbol));let o=t.opportunityId===void 0?"campaigns":`opportunities/${t.opportunityId}/campaigns`,d=await A(o,t.opportunityId===void 0?n:{}),e=t.opportunityId!==void 0&&f(d)?d:void 0;if(e&&e.chainId!==c)throw new a(`Merkl opportunity must be on chain ${c}.`);let s=t.opportunityId===void 0?d:e?.campaigns;if(!Array.isArray(s)||!s.every(y=>f(y)&&(typeof y.id=="string"||typeof y.id=="number")))throw new a("Merkl returned unexpected campaigns.");let p=e?s.filter(y=>y.distributionChainId===c):s,i=Number(n.page)*Number(n.items),l=t.opportunityId===void 0?p:p.slice(i,i+Number(n.items)),m=t.opportunityId===void 0?p.length===Number(n.items):i+Number(n.items)<p.length;return{campaigns:l,...e?{opportunity:{id:e.id,name:e.name,chainId:e.chainId,protocol:f(e.protocol)?{id:e.protocol.id,name:e.protocol.name}:void 0,explorerAddress:e.explorerAddress,identifier:e.identifier}}:{},chainId:c,...b(t),hasMore:m,summary:"Powered by Merkl \u2014 https://app.merkl.xyz. Campaign rules, budgets, timing, exclusions and configuration are public API data; verify the reward distribution chain and destination before entering."}}),u("earning_status",{view:{enum:["active","breakdowns","stats","claims"]},...g},async(t,n)=>{if(!w(n,{strict:!1}))throw new a("Provide a valid connected wallet address.");let o=t.view??"active";if(!["active","breakdowns","stats","claims"].includes(String(o)))throw new a("Choose active, breakdowns, stats or claims.");let d=o==="claims"?"claims":o==="breakdowns"?`users/${n}/rewards/chains/${c}/breakdowns`:`users/${n}/rewards/${o==="active"?"active-opportunities":"stats"}`,{page:e,items:s}=b(t),p=o==="breakdowns"?{}:{chainId:String(c)};o==="claims"&&(p.recipient=n);let i=await A(d,p),l=Number(e)*Number(s),m=Array.isArray(i)?i:o==="breakdowns"&&f(i)&&Array.isArray(i.opportunities)?i.opportunities:void 0,y=m?Array.isArray(i)?m.slice(l,l+Number(s)):{...i,opportunities:m.slice(l,l+Number(s))}:i;return{view:o,chainId:c,wallet:n,data:y,...m?{page:e,items:s,hasMore:l+Number(s)<m.length}:{},summary:"Powered by Merkl \u2014 https://app.merkl.xyz. API earning attribution and history can lag onchain state; pending earnings are not claimable. Private or restricted attribution may be omitted by Merkl. Recheck merkl_rewards before a claim."}})]}};export{V as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as c,b as T,e as v,f as F,g as I}from"./PIIHOXWF.js";import{a as l}from"./66F5ZH34.js";import{c as A,g,h as S}from"./NWNYJ26T.js";import{a as h}from"./FWD4L3CJ.js";import{a as d}from"./XSD5NL7J.js";import{encodeFunctionData as y,getAddress as M,parseAbi as j,parseAbiItem as D,zeroAddress as H}from"viem";var x=M("0x000000001f26a0044baa66024e7b6599c61963f8"),_=D("event AuctionCreated(address indexed auction,address indexed token,uint256 amount,bytes configData)"),n=j(["function currency() view returns (address)","function token() view returns (address)","function startBlock() view returns (uint64)","function endBlock() view returns (uint64)","function claimBlock() view returns (uint64)","function validationHook() view returns (address)","function clearingPrice() view returns (uint256)","function isGraduated() view returns (bool)","function bids(uint256) view returns ((uint64 startBlock,uint24 startCumulativeMps,uint64 exitedBlock,uint256 maxPrice,address owner,uint256 amountQ96,uint256 tokensFilled))","function submitBid(uint256 maxPrice,uint128 amount,address owner,uint256 prevTickPrice,bytes hookData) payable returns (uint256)","function exitBid(uint256)","function exitPartiallyFilledBid(uint256,uint64,uint64)","function claimTokens(uint256)","function claimTokensBatch(address,uint256[])","function checkpoint()","function sweepCurrency()","function sweepUnsoldTokens()"]);async function $(s,B){let o=T(B.auction),t=c(B.creationBlock,"creationBlock",64,!0),e=await s.getLogs({address:x,event:_,args:{auction:o},fromBlock:t,toBlock:t,strict:!0});if(e.length!==1||!g(e[0].address,x)||!S(e[0].args.auction,o))throw new d("Auction has no matching AuctionCreated event at the pinned CCA factory and creationBlock.");return o}async function Q(s,B){let o=s.clientFor(h),t=await $(o,B),e=await o.getBlockNumber(),[a,k,i,b,m,C,u,w]=await Promise.all([o.readContract({address:t,abi:n,functionName:"currency",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"token",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"startBlock",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"endBlock",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"claimBlock",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"validationHook",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"clearingPrice",blockNumber:e}),o.readContract({address:t,abi:n,functionName:"isGraduated",blockNumber:e})]);return{auction:t,currency:a,saleToken:k,startBlock:i,endBlock:b,claimBlock:m,validationHook:C,clearingPrice:u,graduated:w,blockNumber:e}}var U={auction:A,creationBlock:l(),bidId:l(),amount:l(),maxPrice:l(),prevTickPrice:l(),lastFullyFilledCheckpointBlock:l(),outbidBlock:l(),mode:{type:"string",enum:["full","partial"]},bidIds:{type:"array",minItems:1,maxItems:50,items:l()}};function R(s){let o=["status","bid","exit","claim","checkpoint","sweep_currency","sweep_tokens"].map(t=>({name:`uniswap_auction_${t}`,inputSchema:{type:"object",additionalProperties:!1,required:["auction","creationBlock",...t==="bid"?["amount","maxPrice","prevTickPrice"]:t==="exit"?["bidId","mode"]:[]],properties:U},async execute(e,a){I(e,["auction","creationBlock",...t==="bid"?["amount","maxPrice","prevTickPrice"]:t==="exit"?["bidId","mode","lastFullyFilledCheckpointBlock","outbidBlock"]:t==="claim"?["bidId","bidIds"]:t==="status"?["bidId"]:[]]);let i=await Q(s,e),b=s.clientFor(h),[m,C]=await Promise.all([v(s,i.currency,i.blockNumber),v(s,i.saleToken,i.blockNumber)]),u=e.bidId===void 0?void 0:await b.readContract({address:i.auction,abi:n,functionName:"bids",args:[c(e.bidId,"bidId",256,!0)],blockNumber:i.blockNumber});if(t==="status")return{auction:i.auction,paymentToken:m,saleToken:C,startBlock:i.startBlock.toString(),endBlock:i.endBlock.toString(),claimBlock:i.claimBlock.toString(),validationHook:i.validationHook,clearingPrice:i.clearingPrice.toString(),graduated:i.graduated,...u?{bid:{...u,startBlock:u.startBlock.toString(),exitedBlock:u.exitedBlock.toString(),maxPrice:u.maxPrice.toString(),amountQ96:u.amountQ96.toString(),tokensFilled:u.tokensFilled.toString()}}:{},summary:"CCA prices use currency-base-units per sale-token-base-unit in Q96. Clearing price/graduation reflect the latest checkpoint and may lag the head."};let w=[],f,N=0n;if(t==="bid"){if(i.validationHook!==H)throw new d("This auction has a validation hook. Its validation/signing contract is not configured; do not pass an off-chain signature manually.");if(i.blockNumber<i.startBlock||i.blockNumber>=i.endBlock)throw new d("Auction is not in its bidding window.");let r=c(e.amount,"amount",128),p=c(e.maxPrice,"maxPrice"),P=c(e.prevTickPrice,"prevTickPrice",256,!0);if(p<=i.clearingPrice)throw new d("Bid maxPrice must be above the checkpoint clearing price.");i.currency===H?N=r:w.push(s.approval(i.currency,i.auction,r.toString(),h)),f=y({abi:n,functionName:"submitBid",args:[p,r,a,P,"0x"]})}else if(t==="exit"){if(!u||!g(u.owner,a))throw new d("Only exit a bid owned by the signing wallet.");let r=c(e.bidId,"bidId",256,!0);if(e.mode==="full"){if(e.lastFullyFilledCheckpointBlock!==void 0||e.outbidBlock!==void 0)throw new d("Full exit takes no checkpoint hints.");f=y({abi:n,functionName:"exitBid",args:[r]})}else if(e.mode==="partial")f=y({abi:n,functionName:"exitPartiallyFilledBid",args:[r,c(e.lastFullyFilledCheckpointBlock,"lastFullyFilledCheckpointBlock",64,!0),c(e.outbidBlock,"outbidBlock",64,!0)]});else throw new d("Choose full or partial exit explicitly; partial exits require checkpoint hints.")}else if(t==="claim"){if(e.bidId===void 0==(e.bidIds===void 0))throw new d("Provide bidId or bidIds, not both.");let r=e.bidIds===void 0?[c(e.bidId,"bidId",256,!0)]:Array.isArray(e.bidIds)?e.bidIds.map(p=>c(p,"bidIds",256,!0)):[];if(r.length<1||r.length>50||new Set(r.map(String)).size!==r.length)throw new d("Provide 1 to 50 unique bid IDs.");for(let p of r){let P=await b.readContract({address:i.auction,abi:n,functionName:"bids",args:[p],blockNumber:i.blockNumber});if(!g(P.owner,a))throw new d("Claimed tokens must belong to the signing wallet.")}f=y({abi:n,functionName:"claimTokensBatch",args:[a,r]})}else f=y({abi:n,functionName:t==="checkpoint"?"checkpoint":t==="sweep_currency"?"sweepCurrency":"sweepUnsoldTokens"});return w.push(s.unsignedTx({to:i.auction,data:f,value:N.toString(),chainId:h,description:`CCA ${t} on factory-verified auction ${i.auction}. Bid owner ${a}.`})),F(s,w,a,`CCA ${t}; checkpoint/exit/claim eligibility and creator-only sweeps are checked by the contract in preview. Sweeps pay the auction's immutable funds/tokens recipient, not an arbitrary recipient.`)}}));return o.push({name:"uniswap_auctions",inputSchema:{type:"object",additionalProperties:!1,properties:{fromBlock:l(),toBlock:l()}},async execute(t){I(t,["fromBlock","toBlock"]);let e=s.clientFor(h),a=await e.getBlockNumber(),k=t.fromBlock===void 0?a>9999n?a-9999n:0n:c(t.fromBlock,"fromBlock",64,!0),i=t.toBlock===void 0?a:c(t.toBlock,"toBlock",64,!0);if(k>i||i>a||i-k>=10000n)throw new d("Scan an ordered range of at most 10000 blocks, ending at or before the head.");let b=await e.getLogs({address:x,event:_,fromBlock:k,toBlock:i,strict:!0});return{factory:x,fromBlock:k.toString(),toBlock:i.toString(),auctions:b.map(m=>({auction:m.args.auction,token:m.args.token,amount:m.args.amount.toString(),creationBlock:m.blockNumber.toString()})),summary:"Factory-verified auctions in this block window only. An empty result does not establish that no auctions exist outside it. Scan earlier windows for older launches."}}}),{tools:o}}export{x as a,_ as b,n as c,$ as d,Q as e,R as f};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as S,b as N,d as k,f as c,g as $,h as p,i as T,k as v,l as F,m as P}from"./PV5FDT6O.js";import{c as u,g as h}from"./NWNYJ26T.js";import{a as g}from"./FWD4L3CJ.js";import{a as d}from"./XSD5NL7J.js";import{a as I}from"./JXOEJPJ4.js";import{encodeFunctionData as l,erc20Abi as x,parseAbi as O}from"viem";var w=O(["function admin() view returns (address)","function originalAdmin() view returns (address)","function updateAdmin(address)","function updateImage(string)","function updateMetadata(string)","function verify()","function delegate(address)","function burn(uint256)"]),j=m=>{let f=()=>m.clientFor(g),y=(t,i,n,e)=>({name:`clanker_${t}`,inputSchema:{type:"object",properties:i,required:n,additionalProperties:!1},execute:async(r,a)=>{try{return T(r,Object.keys(i)),await e(r,c(a))}catch(o){throw new d(m.plainError(o))}}}),A=async(t,i,n,e)=>{let r=[m.unsignedTx({to:t,data:i,chainId:g,value:"0",description:n})],a=await m.preview(r,e);return{txs:r,preview:a,summary:`${n} ${a.summary}`}},C=async t=>{let[i,n]=await Promise.all([f().readContract({address:t,abi:x,functionName:"symbol"}),f().readContract({address:t,abi:x,functionName:"decimals"})]);if(typeof i!="string"||!i.trim())throw new d("Clanker returned invalid metadata.");return{address:t,symbol:I(i),decimals:p(n,0,255),chainId:g}};return{tools:[y("status",{token:u},["token"],async(t,i)=>{let n=c(t.token),e=await P(m,n),r=await C(n),[a,o,b]=await Promise.all([f().readContract({address:n,abi:x,functionName:"balanceOf",args:[i]}),Promise.all(e.rewardBps.map((s,_)=>f().readContract({address:e.locker,abi:k,functionName:"feePreferences",args:[n,BigInt(_)]}))),Promise.all([n,e.pairedToken].map(async s=>({token:await C(s),amount:v(await f().readContract({address:S.fee_locker.address,abi:O(["function availableFees(address,address) view returns (uint256)"]),functionName:"availableFees",args:[i,s]}))})))]);return{...e,token:r,balance:{token:r,amount:v(a)},feePreferences:o.map(s=>p(s,0,2)),collectedFees:b,summary:"Onchain pool and connected-wallet holdings. Collected fees exclude pending LP fees. Token metadata is untrusted public text."}}),y("update_reward",{token:u,rewardIndex:{type:"integer",minimum:0,maximum:6},field:{enum:["recipient","admin","feePreference"]},recipient:u,admin:u,feePreference:{type:"integer",minimum:0,maximum:2}},["token","rewardIndex","field"],async(t,i)=>{let n=c(t.token),e=await P(m,n),r=p(t.rewardIndex,0,e.rewardAdmins.length-1);if(!h(e.rewardAdmins[r],i))throw new d("Only this reward index administrator may update its configuration.");let a=t.field;if(!["recipient","admin","feePreference"].includes(String(a)))throw new d("Choose recipient, admin or feePreference.");for(let s of["recipient","admin","feePreference"])if(t[s]!==void 0&&s!==a)throw new d(`Input ${s} does not match field ${String(a)}.`);let o=`Update Clanker reward ${r} ${String(a)} for ${n} to ${String(t[String(a)])}. Existing collected fees keep their prior recipient; transferring admin transfers future control.`,b=a==="feePreference"?l({abi:k,functionName:"updateFeePreference",args:[n,BigInt(r),p(t.feePreference,0,2)]}):l({abi:k,functionName:a==="admin"?"updateRewardAdmin":"updateRewardRecipient",args:[n,BigInt(r),c(t[String(a)])]});return A(e.locker,b,o,i)}),y("update_token",{token:u,field:{enum:["image","metadata","admin","verify","delegate","burn"]},text:{type:"string"},recipient:u,amount:N},["token","field"],async(t,i)=>{let n=c(t.token);await F(m,n);let e=t.field;if(!["image","metadata","admin","verify","delegate","burn"].includes(String(e)))throw new d("Choose a supported token update.");let r=e==="image"||e==="metadata"?"text":e==="admin"||e==="delegate"?"recipient":e==="burn"?"amount":void 0;for(let o of["text","recipient","amount"])if(t[o]!==void 0&&o!==r)throw new d(`Input ${o} does not match this token update.`);if(["image","metadata","admin","verify"].includes(String(e))){let o=await f().readContract({address:n,abi:w,functionName:e==="verify"?"originalAdmin":"admin"});if(!h(c(o),i))throw new d("The connected wallet is not the required token administrator.")}let a;if(e==="image"||e==="metadata"){if(typeof t.text!="string")throw new d("Provide public metadata text.");a=l({abi:w,functionName:e==="image"?"updateImage":"updateMetadata",args:[t.text]})}else if(e==="admin"||e==="delegate")a=l({abi:w,functionName:e==="admin"?"updateAdmin":"delegate",args:[c(t.recipient,e==="delegate")]});else if(e==="verify")a=l({abi:w,functionName:"verify"});else{let o=$(t.amount);if(!o)throw new d("Provide a positive burn amount.");a=l({abi:w,functionName:"burn",args:[o]})}return A(n,a,`Clanker token ${n}: ${String(e)} ${String(t.text??t.recipient??t.amount??"")}. Burns are irreversible; verification records original-admin approval, not an Oak safety review.`,i)})]}};export{j as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as f,b as O,f as c,g as _,i as D}from"./PV5FDT6O.js";import{c as i,g as C}from"./NWNYJ26T.js";import{a as m}from"./FWD4L3CJ.js";import{a}from"./XSD5NL7J.js";import{encodeFunctionData as F,parseAbi as P}from"viem";var E=["function owner() view returns (address)","function admins(address) view returns (bool)","function allowedDepositors(address) view returns (bool)","function setAdmin(address,bool)","function setDeprecated(bool)","function setTeamFeeRecipient(address)","function claimTeamFees(address)","function setHook(address,bool)","function setLocker(address,address,bool)","function setMevModule(address,bool)","function setExtension(address,bool)","function addDepositor(address)","function storeFees(address,address,uint256)","function claim(address,address)","function withdrawETH(address)","function withdrawERC20(address,address)","function transferOwnership(address)","function renounceOwnership()"],w=P(E),g={setAdmin:{contract:"factory",fields:["target","enabled"],admin:!1},setDeprecated:{contract:"factory",fields:["enabled"],admin:!1},setTeamFeeRecipient:{contract:"factory",fields:["recipient"],admin:!1},claimTeamFees:{contract:"factory",fields:["token"],admin:!0},setHook:{contract:"factory",fields:["target","enabled"],admin:!0},setLocker:{contract:"factory",fields:["target","hook","enabled"],admin:!0},setMevModule:{contract:"factory",fields:["target","enabled"],admin:!0},setExtension:{contract:"factory",fields:["target","enabled"],admin:!0},addDepositor:{contract:"fee_locker",fields:["target"],admin:!1},withdrawETH:{contract:"locker",fields:["recipient"],admin:!1},withdrawERC20:{contract:"locker",fields:["token","recipient"],admin:!1}},R=p=>{let h=()=>p.clientFor(m),k=async(e,n,t)=>({txs:e,preview:await p.preview(e,n),summary:t}),y=(e,n,t,r)=>p.unsignedTx({to:e,chainId:m,data:F({abi:w,functionName:n,args:t}),value:"0",description:r}),$={operation:{enum:[...Object.keys(g),"transferOwnership","renounceOwnership"]},contract:{enum:["factory","locker","fee_locker"]},target:i,hook:i,token:i,recipient:i,enabled:{type:"boolean"}},b=(e,n,t,r)=>({name:`clanker_${e}`,inputSchema:{type:"object",properties:n,required:t,additionalProperties:!1},execute:async(o,s)=>{try{return D(o,Object.keys(n)),await r(o,c(s))}catch(d){throw new a(p.plainError(d))}}});return{tools:[b("protocol_admin",$,["operation"],async(e,n)=>{let t=String(e.operation),r=t==="transferOwnership"||t==="renounceOwnership";if(!r&&!Object.hasOwn(g,t))throw new a("Choose a supported Clanker protocol operation.");let o=r?void 0:g[t],s=o?.contract??e.contract;if(s!=="factory"&&s!=="locker"&&s!=="fee_locker")throw new a("Select factory, locker or fee_locker for an ownership change.");if(!r&&e.contract!==void 0&&e.contract!==s)throw new a("This operation targets a different pinned contract.");let d=o?.fields??(t==="transferOwnership"?["recipient"]:[]);for(let l of["target","hook","token","recipient","enabled"])if(e[l]!==void 0&&!d.includes(l))throw new a(`Input ${l} does not match this protocol operation.`);let u=f[s].address,A=c(await h().readContract({address:u,abi:w,functionName:"owner"}),!0);if(!C(A,n)&&(o?.admin&&await h().readContract({address:u,abi:w,functionName:"admins",args:[n]}))!==!0)throw new a("The connected wallet lacks the required Clanker protocol owner/admin role.");let T=d.map(l=>{if(l!=="enabled")return c(e[l]);if(typeof e.enabled!="boolean")throw new a("Provide enabled as boolean.");return e.enabled}),v=`Clanker protocol ${s}: ${t} ${JSON.stringify(T)}. Owner/admin operation; renouncing ownership permanently removes owner-only controls. Withdrawals transfer the entire recorded asset balance; team fees go to the configured team recipient.`;return k([y(u,t,T,v)],n,v)}),b("store_fees",{token:i,recipient:i,amount:O},["token","recipient","amount"],async(e,n)=>{let t=c(e.token),r=c(e.recipient),o=_(e.amount);if(!o)throw new a("Provide a positive fee deposit amount.");if(await h().readContract({address:f.fee_locker.address,abi:w,functionName:"allowedDepositors",args:[n]})!==!0)throw new a("This wallet is not an authorized Clanker fee depositor.");let d=`Deposit exactly ${o} base units of token ${t} into Clanker fees for ${r}. Fee-on-transfer receipts may be smaller; the recorded recipient can later claim them.`,u=[p.approval(t,f.fee_locker.address,o.toString(),m),y(f.fee_locker.address,"storeFees",[r,t,o],d)];return k(u,n,d)}),b("claim_for",{token:i,recipient:i},["token","recipient"],async(e,n)=>{let t=c(e.token),r=c(e.recipient),o=`Permissionlessly claim already-collected Clanker ${t} fees for ${r}; all receipts go to that fee owner, while ${n} pays gas.`;return k([y(f.fee_locker.address,"claim",[r,t],o)],n,o)})]}};export{R as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as $}from"./LT5P6PZW.js";import{a as L}from"./QHBS3PVU.js";import{c as D,f as z,g as F,i as U}from"./NWNYJ26T.js";import{a as k}from"./FWD4L3CJ.js";import{a as c}from"./XSD5NL7J.js";import{encodeFunctionData as W,erc20Abi as ne,erc721Abi as K,getAddress as te,parseAbi as oe,zeroAddress as q}from"viem";var A=$,J=oe(["function launchFee() view returns (uint256 fee,address treasury,uint256 pendingFee,address pendingTreasury,uint256 readyAt)"]),w=(e,n)=>e.name==="seed"?"marketSeed":e.name||`arg${n}`,G=e=>"components"in e?e.components:[],re=e=>{if(typeof e!="string"||!/^(0|[1-9][0-9]*)$/.test(e)||e.length>78||BigInt(e)>=1n<<256n)throw new c("Provide Hookr amounts as decimal base-unit strings within uint256.");return BigInt(e)},p=e=>z(e,"Provide the documented Hookr parameter object."),g=e=>U(e,"Provide a valid Hookr address."),Q=e=>e.stateMutability==="view"||e.stateMutability==="pure";function B(e){return e.abi}function X(e){let n=/^(.*)\[([0-9]*)\]$/.exec(e.type);return n?{type:"array",items:X({...e,type:n[1]}),minItems:n[2]?Number(n[2]):0,maxItems:n[2]?Number(n[2]):128}:e.type==="tuple"?E(G(e)):e.type==="bool"?{type:"boolean"}:e.type==="address"?D:/^u?int/.test(e.type)?{type:"string",pattern:e.type.startsWith("uint")?"^(0|[1-9][0-9]*)$":"^(0|-?[1-9][0-9]*)$",description:"Decimal integer; token amounts are base units, timestamps are Unix seconds."}:e.type.startsWith("bytes")?{type:"string",pattern:"^0x([0-9a-fA-F]{2})*$",maxLength:32770}:{type:"string",maxLength:4096}}function E(e){return{type:"object",properties:Object.fromEntries(e.map((n,r)=>[w(n,r),X(n)])),required:e.map(w),additionalProperties:!1}}function j(e,n){let r=/^(.*)\[([0-9]*)\]$/.exec(e.type);if(r){if(!Array.isArray(n)||n.length>128||r[2]&&n.length!==Number(r[2]))throw new c("Hookr parameter array has an invalid length.");return n.map(s=>j({...e,type:r[1]},s))}if(e.type==="tuple"){let s=p(n),u=G(e);return C(s,u.map(w)),Object.fromEntries(u.map((i,d)=>[i.name||`arg${d}`,j(i,s[w(i,d)])]))}if(e.type==="address")return g(n);if(e.type==="bool"){if(typeof n!="boolean")throw new c("Provide a Hookr boolean.");return n}let a=/^(u?)int([0-9]*)$/.exec(e.type);if(a){if(typeof n!="string"||!/^(0|-?[1-9][0-9]*)$/.test(n)||n.length>79)throw new c("Provide Hookr integers as decimal base-unit strings.");let s=BigInt(n),u=BigInt(a[2]||256),i=!a[1];if(s<(i?-(1n<<u-1n):0n)||s>=1n<<(i?u-1n:u))throw new c("Hookr integer exceeds its ABI range.");return u<=32n?Number(s):s}if(e.type.startsWith("bytes")){let s=Number(e.type.slice(5));if(typeof n!="string"||!/^0x([0-9a-fA-F]{2})*$/.test(n)||n.length>32770||s&&n.length!==2+s*2)throw new c("Provide a valid Hookr hex byte string of the ABI length.");return n}if(e.type!=="string"||typeof n!="string"||new TextEncoder().encode(n).length>4096)throw new c("Provide a valid Hookr string.");return n}function C(e,n){if(Object.keys(e).some(r=>!n.includes(r))||n.some(r=>!Object.hasOwn(e,r)))throw new c("Provide exactly the documented Hookr parameters.")}function fe(e,n){C(n,e.inputs.map(w));let r=e.inputs.map((a,s)=>j(a,n[w(a,s)]));return{values:r,params:Object.fromEntries(e.inputs.map((a,s)=>[w(a,s),r[s]]))}}function Y(e,n){if(C(e,["contract","function","params"]),typeof e.contract!="string"||!Object.hasOwn(A,e.contract))throw new c("Choose a contract from hookr_contracts.");let r=A[e.contract];if(!n&&r.address.toLowerCase()===$.launcherV1.address.toLowerCase())throw new c("Use hookr_launch for the reviewed new Launcher; generic actions cannot call it.");let a=B(r).find(d=>d.name===e.function&&(n?Q(d):r.actions.includes(d.name)));if(!a)throw new c("This Hookr function is not exposed in this read/action lane. Read hookr_contracts for coverage.");let s=p(e.params);C(s,a.inputs.map(w));let u=a.inputs.map((d,f)=>j(d,s[w(d,f)])),i=Object.fromEntries(a.inputs.map((d,f)=>[w(d,f),u[f]]));return{pin:r,fn:a,values:u,params:i,target:g(r.address)}}var V={type:"object",properties:{contract:{type:"string",enum:Object.keys(A)},function:{type:"string"},params:{type:"object",description:"Exact typed parameters from hookr_contracts for this contract and function; validated recursively before any chain read."}},required:["contract","function","params"],additionalProperties:!1};function Z(e){return JSON.parse(JSON.stringify(e,(n,r)=>typeof r=="bigint"?r.toString():r))}async function ie(e,n,r){if(e.network==="testnet")throw new c("Hookr actions are configured only on mainnet, chain 4663.");let{pin:a,fn:s,values:u,params:i,target:d}=Y(n,!1),f=n.contract,h=s.name,H=e.clientFor(k),P=[],I=[],b=0n,O=new Map,l=(t,o)=>{let m=g(t),x=typeof o=="bigint"?o:re(o);if(x<0n||x>=(1n<<256n)-1n)throw new c("Hookr funding must be an exact bounded amount.");x&&(m===q?b+=x:O.set(m,(O.get(m)??0n)+x))},v=(t,o,m=[])=>H.readContract({address:g(A[t].address),abi:A[t].abi,functionName:o,args:m});if(f==="router"&&["swap","swapGated"].includes(h)){let t=p(i.params),o=p(t.key),m=t.amountSpecified;if(m===0n||t.amountBound===0n)throw new c("Hookr swaps require a nonzero amount and bound.");l(t.zeroForOne?o.currency0:o.currency1,m<0n?-m:t.amountBound)}else if(f==="vault"&&h==="deposit"){let t=p(i.params),o=p(t.key);if(l(o.currency0,t.amount0Desired),l(o.currency1,t.amount1Desired),t.amount0Min>t.amount0Desired||t.amount1Min>t.amount1Desired)throw new c("Hookr deposit minimum exceeds its desired amount.")}else if(f==="vault"&&h==="transfer")I.push({token:d,id:i.id,amount:i.amount,to:g(i.receiver)});else if(f==="launcher"&&h.startsWith("launch")){let t=h==="launchFamily"?p(i.p):i,o=p(t.token),m=t.members;if(m.length<1||m.length>8)throw new c("Hookr launch needs one to eight members.");if(F(String(o.salt),String(await v("launcher","SKIP_TAKEN"))))throw new c("Hookr skip-taken launches need per-pool funding checks and are not exposed yet.");let x=o.existing===q?g(await v("launcher","predictToken",[r,o])):g(o.existing),_=0n;for(let y of m){let T=BigInt(x)<BigInt(String(y.quote)),M=T?y.amount0Max:y.amount1Max;o.existing===q?_+=M:l(x,M),l(y.quote,T?y.amount1Max:y.amount0Max)}if(_>o.supply)throw new c("Hookr launch seeds more new tokens than its supply.");let ee=h==="launchFamily"?t.buys:h==="launchWithBuy"?[p(i.buy)]:[];for(let y of ee){let T=m[Number(y.member)];if(!T)throw new c("Hookr dev buy references an unavailable member.");l(T.quote,y.quoteIn)}let N=await H.readContract({address:d,abi:J,functionName:"launchFee"});if(!Array.isArray(N)||typeof N[0]!="bigint"||N[0]<0n)throw new c("Hookr launch fee is unavailable.");b+=N[0]}else if(f==="launcher"&&h==="addLiquidity"){let t=p(await v("launcher","position",[i.familyId,i.member])),o=p(t.key);l(o.currency0,i.max0),l(o.currency1,i.max1)}else if(f==="ownedFactory"&&h==="deploy"){let t=await v("ownedFactory","deployFee");if(typeof t!="bigint"||t<0n)throw new c("Hookr own-hook deployment fee is unavailable.");b=t}else if(f==="programs"&&h==="createProgram"){let t=p(i.t);if(l(t.rewardToken,t.cashBudget),b)throw new c("Hookr program cash rewards require an ERC-20 token.")}else if(f==="commissions"&&h==="createCampaign"){let t=p(i.t),o=t.end-t.start;if(o<=0n||o%86400n!==0n||o/86400n>366n)throw new c("Hookr referral campaigns must cover one to 366 whole days.");l(t.currency,t.dailyBudget*(o/86400n))}else if(f==="reserve"&&h==="fundReserve")l(i.token,i.amount);else if(f==="tokenizer"){let t=p(i.arg1);if(t.launchParams!=="0x"||["feebs","positionIds","positionPermits","v3PositionIds","v3Permits"].some(o=>t[o].length>0))throw new c("Composite revenue launches and NFT streams need their exact child-spender and funding routes; this route accepts families, Rules, revenue-token shares and bound outside sources.");for(let o of t.revenueTokens)l(o.token,o.amount);if(h==="tokenize"&&p(i.arg2).open){let o=await H.readContract({address:g(A.launcher.address),abi:J,functionName:"launchFee"});if(!Array.isArray(o)||typeof o[0]!="bigint"||o[0]<0n)throw new c("Hookr revenue market launch fee is unavailable.");b+=o[0]}}else if(f==="boost"&&["fund","notify"].includes(h)){let t=p(await v("boost","gauge",[i.id]));if(l(p(t.terms).rewardToken,i.amount),b)throw new c("Hookr boost rewards require an ERC-20 token.")}else if(f==="boost"&&h==="stake"){let t=g(await v("boost","positionManager"));if(t!==te("0x58daec3116aae6D93017bAAea7749052E8a04fA7"))throw new c("Hookr boost position manager disagrees with the published deployment.");let o=await H.readContract({address:t,abi:K,functionName:"ownerOf",args:[i.tokenId]});if(!F(o,r))throw new c("The signing wallet must own the position NFT it stakes.");P.push(e.unsignedTx({to:t,data:W({abi:K,functionName:"approve",args:[d,i.tokenId]}),value:"0",chainId:k,description:`Approve only Hookr position NFT #${i.tokenId} to ${d}.`})),I.push({token:t,id:i.tokenId,amount:1n,to:d})}let R=await H.getBlock();if(typeof R.timestamp!="bigint"||R.timestamp<=0n)throw new c("Hookr chain time is unavailable.");let S=t=>{if(Array.isArray(t)){t.forEach(S);return}if(!(!t||typeof t!="object"))for(let[o,m]of Object.entries(t)){if(o==="deadline"&&typeof m=="bigint"&&m<R.timestamp)throw new c("Hookr deadline expired. Refresh the action terms.");S(m)}};S(i);for(let[t,o]of O){if(o>=(1n<<256n)-1n)throw new c("Hookr aggregate funding exceeds its exact approval bound.");let m=await H.readContract({address:t,abi:ne,functionName:"allowance",args:[r,d]});m>0n&&m!==o&&P.push(e.approval(t,d,"0",k)),P.push(e.approval(t,d,o.toString(),k)),I.push({token:t,amount:o})}return b&&I.push({token:L,amount:b,to:d}),P.push(e.unsignedTx({to:d,data:W({abi:[s],functionName:s.name,args:u}),value:b.toString(),chainId:k,description:`Hookr ${f}.${h}: ${JSON.stringify(Z(i))}. Review recipients, bounds, ownership and any delayed effects.`})),{txs:P,inputs:I}}function pe(e,n){if(e.length!==n.length||e.some((r,a)=>r.chainId!==n[a].chainId||!F(r.to,n[a].to)||r.value!==n[a].value||!F(r.data,n[a].data)))throw new c("Hookr transactions differ from the locally reconstructed parameters and exact funding.")}function he(e){return[{name:"hookr_contracts",inputSchema:{type:"object",description:"Read Hookr contract coverage and typed function schemas: swaps, launches and dev buys, liquidity, saved hooks, own hooks, LP boost, programs, referrals, claims, registry and treasury administration. Filter contract/function to fetch only the needed schema. No network request.",properties:{contract:{type:"string",enum:Object.keys(A)},function:{type:"string"}},additionalProperties:!1},execute:async n=>{if(Object.keys(n).some(a=>!["contract","function"].includes(a))||n.contract!==void 0&&(typeof n.contract!="string"||!Object.hasOwn(A,n.contract))||n.function!==void 0&&typeof n.function!="string")throw new c("Choose a documented Hookr contract and function filter.");let r=a=>n.function===void 0||a.name===n.function;return{chainId:k,contracts:Object.entries(A).filter(([a])=>n.contract===void 0||a===n.contract).map(([a,s])=>({role:a,address:g(s.address),source:s.source,match:s.match,reads:B(s).filter(u=>Q(u)&&r(u)).map(u=>({function:u.name,params:E(u.inputs)})),actions:s.actions.filter(u=>n.function===void 0||u===n.function).map(u=>({function:u,params:E(B(s).find(i=>i.name===u).inputs)}))})),note:"Contract parameters use decimal base-unit strings for every integer. Actions always require preview and local human confirmation. Unlisted/internal functions are unavailable."}}},{name:"hookr_read",inputSchema:{...V,description:"Read a pinned Hookr contract function. Fetch its exact parameter schema with hookr_contracts {contract,function}; no signing, subscription or identity required."},execute:async n=>{let{pin:r,fn:a,values:s,target:u}=Y(n,!0),i=await e.clientFor(k).readContract({address:u,abi:[a],functionName:a.name,args:s});return{chainId:k,contract:u,function:a.name,result:Z(i),source:r.source}}},{name:"hookr_action",inputSchema:{...V,description:"Build a pinned Hookr action with exact funding: swap, launch/dev buy, liquidity deposit/exit, boost stake/exit, profile/own-hook management, programs/referrals and owner/keeper administration. Fetch its exact parameter schema with hookr_contracts {contract,function}. Preview and human confirmation required."},execute:async(n,r)=>{let a=await ie(e,n,r),s=await e.preview(a.txs,r);return{txs:a.txs,preview:s,summary:`Hookr ${n.contract}.${n.function}; review the preview and human confirmation.`}}}]}export{E as a,fe as b,ie as c,pe as d,he as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as w,d as T,i as A,m as S}from"./NWNYJ26T.js";import{a as c,i as k}from"./FWD4L3CJ.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as D,getAddress as E,keccak256 as P,parseAbi as O}from"viem";var g=E("0x03695edcfcf2c62a4dc36b032eb2513cd1d928a2"),I="0x0b3d9287f6788f70f8f32597eb50d8aaf791742819ecf58053f3e22fd96cb76b",F=["beefy_vault_manage"],C=O(["function owner() view returns(address)","function want() view returns(address)","function vault() view returns(address)","function strategy() view returns(address)","function approvalDelay() view returns(uint256)","function stratCandidate() view returns(address implementation,uint256 proposedTime)","function earn()","function proposeStrat(address)","function upgradeStrat()","function inCaseTokensGetStuck(address)","function transferOwnership(address)","function renounceOwnership()"]),s=E(k[c].vaults.beefyTestedLpVault.address);function d(u){return A(u,"Provide a contract or wallet address.",T)}function h(u){return S(u,"Invalid Beefy administration integer.")}var R=u=>{async function v(e){try{return await e()}catch(t){throw new r(u.plainError(t))}}function b(e,t){if(e.chainId!==void 0&&e.chainId!==c)throw new r("Beefy requires chain 4663.");for(let p of Object.keys(e))if(!["chainId","vault",...t].includes(p))throw new r(`Unsupported Beefy input: ${p}.`);if(d(e.vault)!==s)throw new r("Administration is qualified only for the measured up33-weth-up vault.")}async function _(){let e=u.clientFor(c);if(await e.getChainId()!==c)throw new r("The Beefy endpoint must report chain 4663.");let t=h(await e.getBlockNumber()),[p,n]=await Promise.all([e.getCode({address:s,blockNumber:t}),e.getCode({address:g,blockNumber:t})]),o=`0x363d3d373d3d3d363d73${g.slice(2).toLowerCase()}5af43d82803e903d91602b57fd5bf3`;if(p?.toLowerCase()!==o||!n||P(n)!==I)throw new r("The Beefy vault implementation no longer matches its qualified code hash.");let a=(B,N)=>e.readContract({address:B,abi:C,functionName:N,blockNumber:t}),[f,m,y,i,l,x]=await Promise.all([a(s,"owner"),a(s,"want"),a(s,"strategy"),a(s,"approvalDelay"),a(s,"stratCandidate"),e.getBlock({blockNumber:t})]);if(!Array.isArray(l)||l.length!==2)throw new r("Invalid Beefy strategy candidate.");return{client:e,blockNumber:t,owner:d(f),want:d(m),strategy:d(y),approvalDelay:h(i),candidate:{implementation:d(l[0]),proposedTime:h(l[1])},timestamp:h(x.timestamp),read:a}}return{tools:[{name:"beefy_vault_admin",inputSchema:{type:"object",properties:{vault:w,chainId:{const:c}},required:["vault"],additionalProperties:!1},execute:e=>v(async()=>{b(e,[]);let t=await _();return{vault:s,chainId:c,owner:t.owner,want:t.want,strategy:t.strategy,candidate:{implementation:t.candidate.implementation,proposedTime:t.candidate.proposedTime.toString()},approvalDelay:t.approvalDelay.toString(),block:t.blockNumber.toString(),implementation:g,codeHash:I}})},{name:"beefy_vault_manage",inputSchema:{type:"object",properties:{vault:w,action:{enum:["earn","propose_strategy","upgrade_strategy","rescue_tokens","transfer_ownership","renounce_ownership"]},strategy:w,token:w,recipient:w,chainId:{const:c}},required:["vault","action"],additionalProperties:!1},execute:(e,t)=>v(async()=>{let p={earn:[],propose_strategy:["strategy"],upgrade_strategy:[],rescue_tokens:["token"],transfer_ownership:["recipient"],renounce_ownership:[]},n=String(e.action);if(!Object.hasOwn(p,n))throw new r("Choose a documented Beefy vault management action.");b(e,["action",...p[n]]),t=d(t);let o=await _();if(n!=="earn"&&o.owner!==t)throw new r("This wallet is not the Beefy vault owner.");let a,f=[];if(n==="earn")a="earn";else if(n==="propose_strategy"){let i=d(e.strategy),l=await o.client.getCode({address:i,blockNumber:o.blockNumber});if(!l||l==="0x"||d(await o.read(i,"vault"))!==s||d(await o.read(i,"want"))!==o.want)throw new r("The proposed strategy must be deployed for this exact vault and want token.");a="proposeStrat",f=[i]}else if(n==="upgrade_strategy"){if(o.candidate.implementation==="0x0000000000000000000000000000000000000000"||o.candidate.proposedTime+o.approvalDelay>=o.timestamp)throw new r("Propose a strategy first and wait until the on-chain approval delay has fully passed.");a="upgradeStrat"}else if(n==="rescue_tokens"){let i=d(e.token);if(i===o.want)throw new r("The vault owner cannot rescue the want token.");a="inCaseTokensGetStuck",f=[i]}else if(n==="transfer_ownership"){let i=d(e.recipient);if(i==="0x0000000000000000000000000000000000000000")throw new r("Ownership transfer needs a nonzero recipient.");a="transferOwnership",f=[i]}else a="renounceOwnership";let m=[u.unsignedTx({to:s,data:D({abi:C,functionName:a,args:f}),value:"0",chainId:c,description:`Beefy vault ${n}.`})],y=n==="renounce_ownership"?" This permanently gives up owner administration.":n==="rescue_tokens"?" Rescued tokens go to the calling owner wallet; want is excluded.":n==="propose_strategy"||n==="upgrade_strategy"?" Strategy changes affect all vault depositors.":"";return{txs:m,inputs:[],preview:await u.preview(m,t),summary:`Beefy vault action ${n} on ${s}.${y} Inspect the preview before local human confirmation.`}})}]}};export{g as a,I as b,F as c,C as d,R as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as k,i as S,l as O,m as R,n as $}from"./NWNYJ26T.js";import{a as f,i as P}from"./FWD4L3CJ.js";import{a as c}from"./XSD5NL7J.js";import{a as A}from"./JXOEJPJ4.js";import{encodeFunctionData as x,erc20Abi as E,parseAbi as U,zeroAddress as j}from"viem";var g=P[f].merkl.distributor.address,H=["function accessControlManager() view returns (address)","function isGovernor(address) view returns (bool)","function isGovernorOrGuardian(address) view returns (bool)","function canUpdateMerkleRoot(address) view returns (uint256)","function mainOperators(address,address) view returns (uint256)","function disputeToken() view returns (address)","function disputeAmount() view returns (uint256)","function disputer() view returns (address)","function endOfDisputePeriod() view returns (uint48)","function getMerkleRoot() view returns (bytes32)","function getEpochDuration() view returns (uint32)","function disputePeriod() view returns (uint48)","function upgradeabilityDeactivated() view returns (uint256)","function disputeTree(string)","function updateTree((bytes32 merkleRoot,bytes32 ipfsHash))","function toggleTrusted(address)","function toggleMainOperatorStatus(address,address)","function revokeUpgradeability()","function setEpochDuration(uint32)","function resolveDispute(bool)","function revokeTree()","function recoverERC20(address,address,uint256)","function setDisputePeriod(uint48)","function setDisputeToken(address)","function setDisputeAmount(uint256)"],y=U(H),F={type:"string",pattern:"^\\d+$"},C={type:"string",pattern:"^0x[0-9a-fA-F]{64}$"},G="Provide a valid address.";function m(o,l=!1){let n=S(o,G);return l?n:O(n,G)}function _(o,l=256){return $(o,`Value exceeds uint${l}.`,{bits:l})}function b(o){return R(o,"Merkl returned invalid protocol state.")}function I(o){return typeof o=="number"&&Number.isSafeInteger(o)&&o>=0?String(o):b(o).toString()}var D={updateTree:["merkleRoot","ipfsHash"],toggleTrusted:["target","enabled"],toggleMainOperatorStatus:["target","token","enabled"],revokeUpgradeability:[],setEpochDuration:["amount"],resolveDispute:["valid"],revokeTree:[],recoverERC20:["token","recipient","amount"],setDisputePeriod:["amount"],setDisputeToken:["token"],setDisputeAmount:["amount"]},K=o=>{let l=()=>o.clientFor(f),n=(r,i=[],e=g)=>l().readContract({address:e,abi:y,functionName:r,args:i}),h=(r,i,e,p)=>({name:`merkl_${r}`,inputSchema:{type:"object",properties:i,required:e,additionalProperties:!1},execute:async(u,s)=>{try{let a=Object.keys(u).find(d=>!Object.hasOwn(i,d));if(a)throw new c(`Unsupported Merkl input: ${a}.`);return await p(u,m(s))}catch(a){throw new c(o.plainError(a))}}}),z=async(r,i,e,p)=>{let u=[o.unsignedTx({to:g,data:x({abi:y,functionName:r,args:i}),value:"0",chainId:f,description:e})],s=await o.preview(u,p);return{txs:u,preview:s,summary:`Powered by Merkl \u2014 https://app.merkl.xyz. ${e} ${s.summary}`}};return{tools:[h("distributor_status",{},[],async(r,i)=>{let[e,p,u,s,a,d,t,w,N]=await Promise.all([n("getMerkleRoot"),n("disputeToken"),n("disputeAmount"),n("disputer"),n("endOfDisputePeriod"),n("getEpochDuration"),n("disputePeriod"),n("upgradeabilityDeactivated"),n("accessControlManager")]);if(typeof e!="string"||!/^0x[0-9a-fA-F]{64}$/.test(e)||typeof d!="number"||!Number.isInteger(d)||d<0||d>4294967295)throw new c("Merkl returned invalid Distributor state.");let v=m(N),[M,T]=await Promise.all([n("isGovernor",[i],v),n("isGovernorOrGuardian",[i],v)]);if(typeof M!="boolean"||typeof T!="boolean")throw new c("Merkl returned invalid governance roles.");return{chainId:f,distributor:g,root:e,disputeToken:m(p,!0),disputeAmount:b(u).toString(),disputer:m(s,!0),endOfDisputePeriod:I(a),epochDuration:String(d),disputePeriod:I(t),upgradeabilityDeactivated:b(w).toString(),accessControlManager:v,governor:M,governorOrGuardian:T,summary:"Powered by Merkl \u2014 https://app.merkl.xyz. Dispute amounts are token base units. Opening a dispute locks collateral until governor resolution; a rejected dispute forfeits it."}}),h("dispute",{reason:{type:"string",minLength:1,maxLength:2e3}},["reason"],async(r,i)=>{if(typeof r.reason!="string"||!r.reason.trim()||r.reason.length>2e3)throw new c("Provide a public dispute reason of 1 to 2000 characters.");let e=m(await n("disputeToken")),p=b(await n("disputeAmount")),[u,s]=await Promise.all([l().readContract({address:e,abi:E,functionName:"symbol"}),l().readContract({address:e,abi:E,functionName:"decimals"})]);if(typeof u!="string"||!u.trim()||typeof s!="number"||!Number.isInteger(s)||s<0||s>255)throw new c("Merkl dispute token metadata is invalid.");let a=`Dispute Merkl's tree: ${r.reason}. Lock ${p} ${A(u)} base units (token ${e}, decimals ${s}) until governor resolution; rejection forfeits the deposit. There is no unilateral withdrawal.`,d=[...p?[o.approval(e,g,p.toString(),f)]:[],o.unsignedTx({to:g,data:x({abi:y,functionName:"disputeTree",args:[r.reason]}),value:"0",chainId:f,description:a})],t=await o.preview(d,i);return{txs:d,preview:t,deposit:{token:{address:e,symbol:u,decimals:s,chainId:f},amount:p.toString()},summary:`Powered by Merkl \u2014 https://app.merkl.xyz. ${a} ${t.summary}`}}),h("distributor_admin",{operation:{enum:Object.keys(D)},target:k,token:k,recipient:k,amount:F,enabled:{type:"boolean"},valid:{type:"boolean"},merkleRoot:C,ipfsHash:C},["operation"],async(r,i)=>{let e=String(r.operation);if(!Object.hasOwn(D,e))throw new c("Choose a supported Distributor operation.");let p=D[e];for(let t of Object.keys(r))if(t!=="operation"&&!p.includes(t))throw new c(`Input ${t} does not match this Distributor operation.`);let u=m(await n("accessControlManager")),s=await n("isGovernor",[i],u);if(typeof s!="boolean")throw new c("Merkl returned invalid governor status.");if(!s&&!(e==="updateTree"?await n("canUpdateMerkleRoot",[i])===1n:e==="toggleMainOperatorStatus"&&r.token!==j?await n("isGovernorOrGuardian",[i],u)===!0:!1))throw new c("The connected wallet lacks the required Merkl governance role.");let a=p.map(t=>{if(t==="enabled"||t==="valid"){if(typeof r[t]!="boolean")throw new c(`Provide ${t} as boolean.`);return r[t]}if(t==="amount"){let w=_(r[t],e==="setEpochDuration"?32:e==="setDisputePeriod"?48:256);return e==="setEpochDuration"?Number(w):w}if(t==="merkleRoot"||t==="ipfsHash"){if(typeof r[t]!="string"||!/^0x[0-9a-fA-F]{64}$/.test(r[t]))throw new c("Provide a bytes32 root and IPFS hash.");return r[t]}return m(r[t],t==="token"&&e==="toggleMainOperatorStatus")}),d=a;if(e==="updateTree"&&(d=[{merkleRoot:a[0],ipfsHash:a[1]}]),e==="toggleTrusted"||e==="toggleMainOperatorStatus"){let t=await n(e==="toggleTrusted"?"canUpdateMerkleRoot":"mainOperators",e==="toggleTrusted"?[a[0]]:a.slice(0,2));if(t!==0n&&t!==1n)throw new c("Merkl returned invalid authorization state.");if(t===1n===r.enabled)return{txs:[],summary:"Powered by Merkl \u2014 https://app.merkl.xyz. Authorization already has the requested state."};d=a.slice(0,-1)}return z(e,d,`Merkl Distributor ${e} ${JSON.stringify(r)}. Governance affects every claimant. Upgradeability revocation is permanent; dispute resolution returns or forfeits collateral. Authorization operations toggle the observed state; re-preview if state changes.`,i)})]}};export{K as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as L}from"./ROFPXEQ5.js";import{a as H}from"./TEJ7W534.js";import{b as z}from"./SPJCSEKP.js";import{a as P}from"./43LI5NKJ.js";import{c as D}from"./VEQBHI6O.js";import{c as y,e as b,g as A,i as N,l as _}from"./NWNYJ26T.js";import{b as E}from"./IX3GZMTM.js";import{a as l,i as I}from"./FWD4L3CJ.js";import{a as u}from"./XSD5NL7J.js";import{a as S}from"./JXOEJPJ4.js";import{encodeFunctionData as C,parseAbi as Y,zeroAddress as v}from"viem";import{encodeAbiParameters as B,encodeFunctionData as G,keccak256 as O,parseAbi as J}from"viem";var R=I[l].merkl.distributor.address,w="Claim rewards on Merkl (Powered by Merkl \u2014 https://app.merkl.xyz)",j=`${w}. No claimable rewards on Robinhood Chain. Pending rewards must settle into a Merkle root before they can be claimed.`,T=J(["function claimed(address user,address token) view returns (uint208 amount,uint48 timestamp,bytes32 merkleRoot)","function getMerkleRoot() view returns (bytes32)","function claim(address[] users,address[] tokens,uint256[] amounts,bytes32[][] proofs)"]);function W(o){return typeof o=="string"&&/^0x[0-9a-fA-F]{64}$/.test(o)}function p(){throw new u("Merkl returned an unexpected response. Please refetch rewards.")}function x(o){typeof o!="string"&&p();let d=E(o);if(d>=1n<<256n)throw new u("The Merkl reward amount exceeds the uint256 range.");return d.toString()}function K(o){let d=[],m=new Set;for(let c of o)if((!b(c)||!b(c.chain)||!Number.isSafeInteger(c.chain.id))&&p(),c.chain.id===l){Array.isArray(c.rewards)||p();for(let r of c.rewards){if((!b(r)||typeof r.distributionLayer!="string"||!b(r.token))&&p(),r.distributionLayer!=="TREE"||(Number.isSafeInteger(r.token.chainId)||p(),r.token.chainId!==l)||(Array.isArray(r.proofs)||p(),!r.proofs.length))continue;(!r.proofs.every(W)||typeof r.token.address!="string"||typeof r.token.symbol!="string"||!r.token.symbol.trim()||typeof r.token.decimals!="number"||!Number.isInteger(r.token.decimals)||r.token.decimals<0||r.token.decimals>255)&&p(),P(r.token.address);let t=x(r.amount),e=x(r.pending);if(BigInt(t)===0n)continue;let n=r.token.address.toLowerCase();if(m.has(n))throw new u("Merkl returned duplicate token leaves. Please refetch rewards.");m.add(n),d.push({token:{address:r.token.address,chainId:l,decimals:r.token.decimals,symbol:r.token.symbol},amount:t,pending:e,proofs:r.proofs})}}return d}function Q(o,d,m){let c=O(B([{type:"address"},{type:"address"},{type:"uint256"}],[o,d.token.address,BigInt(d.amount)]));for(let r of d.proofs){let t=BigInt(c)<BigInt(r)?[c,r]:[r,c];c=O(B([{type:"bytes32"},{type:"bytes32"}],t))}if(!A(c,m))throw new u("The Merkl proof does not match the active root. Please refetch rewards.")}function F(o){if(!b(o)||Object.keys(o).length)throw new u("This Merkl tool takes no arguments and uses the connected wallet.")}async function V(o,d){let m=await Z(o,d),c=[],r=new Set;for(let t of m)if((!b(t)||!b(t.chain)||!Number.isSafeInteger(t.chain.id))&&p(),t.chain.id===l){Array.isArray(t.rewards)||p();for(let e of t.rewards){if((!b(e)||typeof e.distributionLayer!="string"||!b(e.token)||!Number.isSafeInteger(e.token.chainId))&&p(),e.token.chainId!==l)continue;(typeof e.token.address!="string"||typeof e.token.symbol!="string"||!e.token.symbol.trim()||typeof e.token.decimals!="number"||!Number.isInteger(e.token.decimals)||e.token.decimals<0||e.token.decimals>255)&&p(),P(e.token.address);let n=x(e.amount),i=x(e.pending),s=`${e.distributionLayer}:${e.token.address.toLowerCase()}`;if(r.has(s))throw new u("Merkl returned duplicate earning rows. Please refetch rewards.");r.add(s);let a={address:e.token.address,symbol:e.token.symbol,decimals:e.token.decimals,chainId:l},k="0";if(e.distributionLayer==="TREE"){let h=await o.clientFor(l).readContract({address:R,abi:T,functionName:"claimed",args:[d,a.address]});(!Array.isArray(h)||typeof h[0]!="bigint"||h[0]<0n||h[0]>=1n<<208n)&&p(),k=h[0].toString()}c.push({token:a,amount:n,pending:i,claimed:k,claimable:"0",distributionLayer:e.distributionLayer,status:e.distributionLayer!=="TREE"?"unsupported_distribution_layer":BigInt(n)>BigInt(k)?"awaiting_verified_proof":BigInt(i)>0n?"pending_settlement":"settled"})}}return{body:m,earnings:c}}async function Z(o,d){return P(d),D(o.http,`https://api.merkl.xyz/v4/users/${d}/rewards/summary?chainId=${l}`,{method:"GET",headers:{"User-Agent":"oak-core/merkl"}},m=>Array.isArray(m))}async function $(o,d,m){P(d);let c=K(m??await Z(o,d)),r=o.clientFor(l),t=[];for(let n of c){let i=await r.readContract({address:R,abi:T,functionName:"claimed",args:[d,n.token.address]});if(!Array.isArray(i)||typeof i[0]!="bigint"||i[0]<0n||i[0]>=1n<<208n)throw new u("The Merkl claimed balance could not be read. Please try again.");BigInt(n.amount)<=i[0]||t.push({...n,claimed:i[0].toString(),claimable:(BigInt(n.amount)-i[0]).toString()})}if(!t.length)return[];let e=await r.readContract({address:R,abi:T,functionName:"getMerkleRoot"});if(!W(e))throw new u("The active Merkl root could not be read. Please try again.");for(let n of t)Q(d,n,e);return t}var X=o=>{async function d(t){try{return await t()}catch(e){throw new u(o.plainError(e))}}function m(t){let e=t.amount.startsWith("-"),n=e?t.amount.slice(1):t.amount;return`${e?"-":""}${o.formatAmount(n,t.token.decimals)} ${S(t.token.symbol)} (${t.token.address}, chain ${t.token.chainId}, ${t.token.decimals} decimals)`}let c=t=>$(o,t);return{tools:[{name:"merkl_rewards",description:"Read claimable rewards (Powered by Merkl \u2014 https://app.merkl.xyz).",inputSchema:{type:"object",properties:{},additionalProperties:!1,description:"Read rewards (Powered by Merkl \u2014 https://app.merkl.xyz)."},execute:(t,e)=>d(async()=>{F(t);let{body:n,earnings:i}=await V(o,e),s=await $(o,e,n);for(let a of i){let k=s.find(h=>A(h.token.address,a.token.address)&&a.distributionLayer==="TREE");k&&(a.claimed=k.claimed,a.claimable=k.claimable,a.status="claimable")}return{earnings:i,rewards:s.map(({proofs:a,...k})=>k),summary:s.length?`${w}. Claimable reward leaves: ${s.map(a=>m({token:a.token,amount:a.claimable})).join("; ")}. Wrapped leaves may transfer underlying tokens; claim preview shows the received assets. Pending rewards appear separately in earnings and are excluded from claimable amounts.`:`${j} Earnings include pending-only and unsupported distribution layers; an unverified amount is never presented as claimable.`}})},{name:"merkl_claim",description:w,inputSchema:{type:"object",properties:{},additionalProperties:!1,description:w},execute:(t,e)=>d(async()=>{F(t);let n=await c(e);if(!n.length)return{txs:[],summary:j};let i=[o.unsignedTx({to:R,chainId:l,value:"0",description:w,data:G({abi:T,functionName:"claim",args:[n.map(()=>e),n.map(a=>a.token.address),n.map(a=>BigInt(a.amount)),n.map(a=>a.proofs)]})})],s=await o.preview(i,e);return{txs:i,summary:`${w}. Prepared unsigned claim. Expected wallet changes: ${s.changes.length?s.changes.map(m).join("; "):"no token transfers in simulation"}. ${s.summary}`}})}],positions:t=>d(async()=>(await c(t)).map(e=>({module:"merkl",id:`${l}:${e.token.address.toLowerCase()}`,chainId:l,assets:[{token:e.token,amount:e.claimable}],description:`${w}. Unclaimed reward leaf; wrapped rewards may transfer underlying assets. Pending rewards are excluded.`})))}},ue=o=>z("merkl",[X(o),L(o),U(o),H(o)]);var M=I[l].merkl.distributor.address,g=Y(["function operators(address,address) view returns (uint256)","function claimRecipient(address,address) view returns (address)","function toggleOperator(address,address)","function setClaimRecipient(address,address)","function claim(address[],address[],uint256[],bytes32[][])","function claimWithRecipient(address[],address[],uint256[],bytes32[][],address[],bytes[])"]),q="Provide a valid address.";function f(o,d=!1){let m=N(o,q);return d?m:_(m,q)}var U=o=>{let d=()=>o.clientFor(l),m=async(r,t,e)=>{let n=[o.unsignedTx({to:M,chainId:l,value:"0",data:r,description:t})],i=await o.preview(n,e);return{txs:n,preview:i,summary:`Powered by Merkl \u2014 https://app.merkl.xyz. ${t} ${i.summary}`}},c=(r,t,e,n)=>({name:`merkl_${r}`,inputSchema:{type:"object",properties:t,required:e,additionalProperties:!1},execute:async(i,s)=>{try{let a=Object.keys(i).find(k=>!Object.hasOwn(t,k));if(a)throw new u(`Unsupported Merkl input: ${a}.`);return await n(i,f(s))}catch(a){throw new u(o.plainError(a))}}});return{tools:[c("claim_config",{token:y,operator:y},[],async(r,t)=>{let e=f(r.token??v,!0),n=f(await d().readContract({address:M,abi:g,functionName:"claimRecipient",args:[t,v]}),!0),i=f(await d().readContract({address:M,abi:g,functionName:"claimRecipient",args:[t,e]}),!0),s;if(r.operator!==void 0){let a=await d().readContract({address:M,abi:g,functionName:"operators",args:[t,f(r.operator,!0)]});if(a!==0n&&a!==1n)throw new u("Merkl returned invalid operator authorization.");s=a===1n}return{chainId:l,wallet:t,token:e,defaultRecipient:n,tokenRecipient:i,effectiveRecipient:i!==v?i:n!==v?n:t,...s===void 0?{}:{operatorEnabled:s},summary:"Powered by Merkl \u2014 https://app.merkl.xyz. Zero recipient restores self-claims. Token overrides take precedence over the global recipient."}}),c("set_operator",{operator:y,enabled:{type:"boolean"}},["operator","enabled"],async(r,t)=>{let e=f(r.operator,!0);if(typeof r.enabled!="boolean")throw new u("Provide enabled as boolean.");let n=await d().readContract({address:M,abi:g,functionName:"operators",args:[t,e]});if(n!==0n&&n!==1n)throw new u("Merkl returned invalid operator authorization.");return n===1n===r.enabled?{txs:[],summary:"Powered by Merkl \u2014 https://app.merkl.xyz. Operator already has the requested state; no transaction needed."}:m(C({abi:g,functionName:"toggleOperator",args:[t,e]}),`${r.enabled?"Authorize":"Revoke"} Merkl claims by ${e} for ${t}. Zero operator grants permissionless claiming; configured recipients still apply. The contract toggles the observed state; preview and confirmation must remain current.`,t)}),c("set_recipient",{recipient:y,token:y},["recipient"],async(r,t)=>{let e=f(r.recipient,!0),n=f(r.token??v,!0);return m(C({abi:g,functionName:"setClaimRecipient",args:[e,n]}),`Set Merkl reward recipient for ${n===v?"all tokens":n} to ${e===v?`self (${t})`:e}. This redirects future claims; token-specific overrides remain authoritative.`,t)}),c("claim_to",{recipient:y,token:y,data:{type:"string",pattern:"^0x([0-9a-fA-F]{2})*$",maxLength:16386}},["recipient"],async(r,t)=>{let e=f(r.recipient),n=r.token===void 0?void 0:f(r.token),i=r.data??"0x";if(typeof i!="string"||!/^0x([0-9a-fA-F]{2})*$/.test(i)||i.length>16386)throw new u("Provide callback data as at most 8192 hexadecimal bytes.");let s=(await $(o,t)).filter(a=>!n||A(a.token.address,n));return s.length?m(C({abi:g,functionName:"claimWithRecipient",args:[s.map(()=>t),s.map(a=>a.token.address),s.map(a=>BigInt(a.amount)),s.map(a=>a.proofs),s.map(()=>e),s.map(()=>i)]}),`Claim ${s.map(a=>`${a.claimable} ${a.token.symbol} base units (token ${a.token.address}, decimals ${a.token.decimals})`).join("; ")} to ${e}, overriding saved claim recipients for this claim only. Callback data for each leaf: ${i}. Inspect all callback effects in preview.`,t):{txs:[],summary:"Powered by Merkl \u2014 https://app.merkl.xyz. No verified claimable rewards for the selected token."}}),c("claim_for",{user:y,token:y},["user"],async(r,t)=>{let e=f(r.user),n=r.token===void 0?void 0:f(r.token),i=(await $(o,e)).filter(s=>!n||A(s.token.address,n));return i.length?m(C({abi:g,functionName:"claim",args:[i.map(()=>e),i.map(s=>s.token.address),i.map(s=>BigInt(s.amount)),i.map(s=>s.proofs)]}),`Claim Merkl rewards for ${e}; caller ${t} pays gas. The user's saved recipients control payment. Claim authorization and actual receipts must pass preview.`,t):{txs:[],summary:"Powered by Merkl \u2014 https://app.merkl.xyz. No verified claimable rewards for this user."}})]}};export{U as a,$ as b,X as c,ue as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as G}from"./VYAJXLND.js";import{a as p}from"./43LI5NKJ.js";import{a as W}from"./66F5ZH34.js";import{g as P}from"./NWNYJ26T.js";import{b as T}from"./IX3GZMTM.js";import{a as w,d as R,i as B}from"./FWD4L3CJ.js";import{a as o}from"./XSD5NL7J.js";import{encodeFunctionData as h,getAddress as L,parseAbi as x}from"viem";var y={address:L("0x451b42a15100c340ca12f7c66de06fac5ea2d751"),symbol:"BOW",decimals:18,chainId:w},u=L("0xeba502e1177f5fad9432c2deb273569d8381e01a"),b={address:B[w].tokens.USDG.address,symbol:"USDG",decimals:R,chainId:w},i=x(["function stakingToken() view returns (address)","function rewardsToken() view returns (address)","function balanceOf(address account) view returns (uint256)","function earned(address account) view returns (uint256)","function stake(uint256 amount)","function withdraw(uint256 amount)","function getReward()","function exit()","function cooldown() view returns (uint256)","function stakedAt(address) view returns (uint256)","function stakePaused() view returns (bool)","function totalSupply() view returns (uint256)","function rewardRate() view returns (uint256)","function rewardsDuration() view returns (uint256)","function periodFinish() view returns (uint256)","function owner() view returns (address)","function rewardsDistribution() view returns (address)","function notifyRewardAmount(uint256 reward)","function setRewardsDistribution(address distribution)","function setRewardsDuration(uint256 duration)","function setCooldown(uint256 cooldown)","function setStakePaused(bool paused)","function recoverERC20(address token,uint256 amount)","function transferOwnership(address newOwner)","function renounceOwnership()"]),X=m=>{async function D(n){try{return await n()}catch(t){throw new o(m.plainError(t))}}function A(n,t){if(Object.keys(n).some(e=>!t.includes(e)))throw new o("Unsupported Longbow staking input. Use the fields in the tool schema.")}async function U(){let n=m.clientFor(w);if(await n.getChainId()!==w)throw new o("Longbow requires a client on chain 4663.");let[t,e]=await Promise.all([n.readContract({address:u,abi:i,functionName:"stakingToken"}),n.readContract({address:u,abi:i,functionName:"rewardsToken"})]);if(typeof t!="string"||typeof e!="string"||!P(t,y.address)||!P(e,b.address))throw new o("Longbow staking does not report the pinned BOW stake and USDG reward tokens.");return n}async function S(n){let t=await U(),[e,a,s]=await Promise.all([t.readContract({address:u,abi:i,functionName:"balanceOf",args:[n]}),t.readContract({address:u,abi:i,functionName:"earned",args:[n]}),t.readContract({address:y.address,abi:i,functionName:"balanceOf",args:[n]})]);return{staked:e,earned:a,held:s,rpc:t}}async function v(n,t,e){let a=await m.preview(n,t),s=a.changes.map(({token:r,amount:d})=>{let c=d.startsWith("-");return`${c?"-":"+"}${m.formatAmount(c?d.slice(1):d,r.decimals)} ${r.symbol}`}).join(", ");return{txs:n,preview:a,summary:`${e} ${a.summary} ${s?`Estimated changes: ${s}. `:""}No transaction was sent.`}}let O=(n,t)=>m.unsignedTx({to:u,data:n,value:"0",chainId:w,description:t}),l=n=>m.formatAmount(n.toString(),y.decimals);async function _(n,t){if(A(n,["amount"]),p(t),typeof n.amount!="string")throw new o("Provide an integer BOW amount in base units (18 decimals).");let e=T(n.amount),{held:a,rpc:s}=await S(t),[r,d]=await Promise.all([s.readContract({address:u,abi:i,functionName:"cooldown"}),s.readContract({address:u,abi:i,functionName:"stakePaused"})]);if(d)throw new o("Longbow new stakes are paused; withdrawals and claims remain available.");if(e<=0n)throw new o("Stake amount must be positive.");if(e>a)throw new o(`Insufficient BOW: wallet holds ${a.toString()} base units, requested ${e.toString()}.`);return v([m.approval(y.address,u,e.toString(),w),O(h({abi:i,functionName:"stake",args:[e]}),`Stake ${l(e)} BOW in Longbow StakingRewards.`)],t,`Approve exactly ${l(e)} BOW, then stake it for USDG rewards. Current withdrawal cooldown: ${r} seconds; staking restarts that clock.`)}async function I(n,t){A(n,["amount"]),p(t);let{staked:e,earned:a,rpc:s}=await S(t),r=await s.readContract({address:u,abi:i,functionName:"cooldown"});if(r>0n){let[c,g]=await Promise.all([s.readContract({address:u,abi:i,functionName:"stakedAt",args:[t]}),s.getBlock()]);if(g.timestamp<c+r)throw new o(`Longbow unstaking cooldown ends at Unix second ${c+r}. Rewards can still be claimed.`)}if(e===0n)throw new o("This wallet has no BOW staked with Longbow.");if(n.amount==="all")return v([O(h({abi:i,functionName:"exit"}),`Unstake all ${l(e)} BOW and claim USDG rewards.`)],t,`Exit Longbow staking: return all ${l(e)} staked BOW and claim ${m.formatAmount(a.toString(),b.decimals)} USDG of earned rewards in one call.`);if(typeof n.amount!="string")throw new o('Provide an integer BOW amount in base units, or "all".');let d=T(n.amount);if(d<=0n||d>e)throw new o(`Unstake amount must be positive and at most the ${e.toString()} base units staked.`);return v([O(h({abi:i,functionName:"withdraw",args:[d]}),`Unstake ${l(d)} BOW.`)],t,`Unstake ${l(d)} BOW. Earned USDG rewards stay claimable with longbow_claim_rewards.`)}async function E(n,t){A(n,[]),p(t);let{earned:e}=await S(t);if(e===0n)throw new o("No Longbow staking rewards to claim for this wallet.");let a=m.formatAmount(e.toString(),b.decimals);return v([O(h({abi:i,functionName:"getReward"}),`Claim ${a} USDG of Longbow staking rewards.`)],t,`Claim ${a} USDG of earned Longbow staking rewards; staked BOW stays staked.`)}async function F(n){return D(async()=>{p(n);let{staked:t,earned:e}=await S(n);return t===0n&&e===0n?[]:[{module:"longbow",id:`${w}:${u.toLowerCase()}`,chainId:w,assets:[...t>0n?[{token:{...y},amount:t.toString()}]:[],...e>0n?[{token:{...b},amount:e.toString()}]:[]],description:`Longbow BOW staking: ${l(t)} BOW staked, ${m.formatAmount(e.toString(),b.decimals)} USDG rewards earned and claimable.`}]})}let $=(n,t,e,a)=>({name:n,inputSchema:{type:"object",properties:t,required:e,additionalProperties:!1},execute:(s,r)=>D(()=>a(s,r))});async function j(n,t){A(n,[]),p(t);let{staked:e,earned:a,held:s,rpc:r}=await S(t),d=["cooldown","stakePaused","totalSupply","rewardRate","rewardsDuration","periodFinish","owner","rewardsDistribution"],c=await Promise.all(d.map(f=>r.readContract({address:u,abi:i,functionName:f}))),g=await r.readContract({address:u,abi:i,functionName:"stakedAt",args:[t]});return{chainId:w,staking:u,stakeToken:y,rewardToken:b,staked:e.toString(),earned:a.toString(),walletBalance:s.toString(),stakedAt:g.toString(),...Object.fromEntries(d.map((f,k)=>[f,typeof c[k]=="bigint"?c[k].toString():c[k]])),rewardRateScale:"1000000000000000000",caveat:"rewardRate is USDG base units multiplied by 1e18 per second, not APY. Cooldown and pause state are owner-configurable."}}let C=[["notifyRewardAmount",["uint256"]],["setRewardsDistribution",["address"]],["setRewardsDuration",["uint256"]],["setCooldown",["uint256"]],["setStakePaused",["bool"]],["recoverERC20",["address","uint256"]],["transferOwnership",["address"]],["renounceOwnership",[]]];async function q(n,t){A(n,["operation","values","fund"]),p(t);let e=C.find(([f])=>f===n.operation);if(!e||!Array.isArray(n.values)||n.values.length!==e[1].length)throw new o("Choose a staking operation and its exact ordered values.");let a=e[1].map((f,k)=>G(f,n.values[k])),s=await U(),r=e[0]==="notifyRewardAmount",d=await s.readContract({address:u,abi:i,functionName:r?"rewardsDistribution":"owner"});if(!P(d,t))throw new o("This wallet lacks the Longbow staking owner/distribution role.");if(n.fund!==void 0&&(typeof n.fund!="boolean"||!r))throw new o("fund is a boolean available only for notifyRewardAmount.");let c=`Longbow staking ${e[0]}, values ${JSON.stringify(n.values)}.${e[0]==="renounceOwnership"?" Owner administration is permanently relinquished.":""}`,g=[];if(r&&n.fund===!0){let f=a[0];if(f===0n)throw new o("Reward funding must be positive.");let k=x(["function transfer(address,uint256) returns (bool)"]);g.push(m.unsignedTx({to:b.address,data:h({abi:k,functionName:"transfer",args:[u,f]}),value:"0",chainId:w,description:`Fund exactly ${f} USDG base units before notifying rewards.`}))}return g.push(O(h({abi:i,functionName:e[0],args:a}),c)),v(g,t,`${c} ${n.fund===!0?"Funding and notification are separate transactions. A failed notification leaves funded USDG in the staking contract.":""}`)}let N=W("Positive BOW amount in integer base units (18 decimals).");return{positions:F,tools:[$("longbow_staking_status",{},[],j),$("longbow_manage_staking",{operation:{enum:C.map(([n])=>n)},values:{type:"array",maxItems:2,items:{oneOf:[{type:"string"},{type:"boolean"}]}},fund:{type:"boolean"}},["operation","values"],q),$("longbow_stake",{amount:N},["amount"],_),$("longbow_unstake",{amount:{anyOf:[N,{const:"all",description:"Unstake everything and claim rewards in one exit() call."}]}},["amount"],I),$("longbow_claim_rewards",{},[],E)]}};export{y as a,u as b,X as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as h}from"./FEYAY6OZ.js";import{e as k,i as V}from"./IPN6Z4JM.js";import{a as P,b as f,f as O,g as A}from"./PIIHOXWF.js";import{a as g,v as M}from"./2THSW4QN.js";import{a as b}from"./66F5ZH34.js";import{c as _,g as T}from"./NWNYJ26T.js";import{a as y}from"./FWD4L3CJ.js";import{a as l}from"./XSD5NL7J.js";import{encodeFunctionData as c,parseAbi as j,zeroAddress as I}from"viem";var n=j(["function owner() view returns (address)","function feeTo() view returns (address)","function feeToSetter() view returns (address)","function protocolFeeController() view returns (address)","function setFeeTo(address)","function setFeeToSetter(address)","function setOwner(address)","function enableFeeAmount(uint24,int24)","function setFeeProtocol(uint8,uint8)","function collectProtocol(address,uint128,uint128) returns (uint128,uint128)","function transferOwnership(address)","function setProtocolFeeController(address)","function setProtocolFee((address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks),uint24)","function collectProtocolFees(address recipient,address currency,uint256 amount) returns (uint256)"]),E=["set_fee_recipient","set_fee_setter","set_owner","enable_fee","set_pool_fee","collect_protocol","set_controller"],R={version:{type:"string",enum:["v2","v3","v4"]},operation:{type:"string",enum:E},target:_,token0:_,token1:_,fee:{type:"integer"},tickSpacing:{type:"integer"},fee0:{type:"integer"},fee1:{type:"integer"},currency:_,amount:b(),amount0Max:b(),amount1Max:b(),poolKey:{type:"object"}};function L(w){let x=async e=>{let i=w.clientFor(y);if(e==="v2"){let[o,t]=await Promise.all([i.readContract({address:h,abi:n,functionName:"feeToSetter"}),i.readContract({address:h,abi:n,functionName:"feeTo"})]);return{version:e,contract:h,owner:o,feeRecipient:t}}if(e==="v3")return{version:e,contract:k.factory,owner:await i.readContract({address:k.factory,abi:n,functionName:"owner"})};if(e==="v4"){let[o,t]=await Promise.all([i.readContract({address:g,abi:n,functionName:"owner"}),i.readContract({address:g,abi:n,functionName:"protocolFeeController"})]);return{version:e,contract:g,owner:o,controller:t}}throw new l("Provide protocol version v2, v3 or v4.")};return{tools:[{name:"uniswap_protocol_status",inputSchema:{type:"object",additionalProperties:!1,required:["version"],properties:{version:R.version}},async execute(e){return A(e,["version"]),x(e.version)}},{name:"uniswap_protocol_admin",inputSchema:{type:"object",additionalProperties:!1,required:["version","operation"],properties:R},async execute(e,i){let{version:o,operation:t}=e,v=await x(o),K=w.clientFor(y),C=o==="v4"&&["set_pool_fee","collect_protocol"].includes(String(t))?"controller"in v?v.controller:void 0:v.owner;if(!C||!T(C,i))throw new l("The signing wallet does not hold the required Uniswap owner/controller role.");let N=v.contract,s,a,F=()=>{let r=f(e.target);if(r===I)throw new l("Administration target must be nonzero.");return r},u=(r,d,p,m)=>{if(typeof r!="number"||!Number.isInteger(r)||r<p||r>m)throw new l(`${d} must be an integer from ${p} to ${m}.`);return r};if(o==="v2"&&t==="set_fee_recipient")a=["target"],s=c({abi:n,functionName:"setFeeTo",args:[f(e.target)]});else if(o==="v2"&&t==="set_fee_setter")a=["target"],s=c({abi:n,functionName:"setFeeToSetter",args:[F()]});else if(o==="v3"&&t==="set_owner")a=["target"],s=c({abi:n,functionName:"setOwner",args:[F()]});else if(o==="v3"&&t==="enable_fee")a=["fee","tickSpacing"],s=c({abi:n,functionName:"enableFeeAmount",args:[u(e.fee,"fee",0,999999),u(e.tickSpacing,"tickSpacing",1,16383)]});else if(o==="v3"&&["set_pool_fee","collect_protocol"].includes(String(t))){a=["token0","token1","fee",...t==="set_pool_fee"?["fee0","fee1"]:["amount0Max","amount1Max"]];let r=f(e.token0),d=f(e.token1),p=u(e.fee,"fee",0,999999);if(N=await K.readContract({address:k.factory,abi:V,functionName:"getPool",args:[r,d,p]}),N===I)throw new l("No factory-verified v3 pool exists for these tokens and fee.");if(t==="set_pool_fee"){let m=$=>{let S=u($,"fee divisor",0,10);if(S!==0&&S<4)throw new l("V3 protocol fee divisors must be zero or 4 through 10.");return S};s=c({abi:n,functionName:"setFeeProtocol",args:[m(e.fee0),m(e.fee1)]})}else s=c({abi:n,functionName:"collectProtocol",args:[i,P(e.amount0Max,"amount0Max",128,!0),P(e.amount1Max,"amount1Max",128,!0)]})}else if(o==="v4"&&t==="set_owner")a=["target"],s=c({abi:n,functionName:"transferOwnership",args:[F()]});else if(o==="v4"&&t==="set_controller")a=["target"],s=c({abi:n,functionName:"setProtocolFeeController",args:[f(e.target)]});else if(o==="v4"&&t==="set_pool_fee"){a=["poolKey","fee0","fee1"];let r=M(e.poolKey),d=u(e.fee0,"fee0 pips",0,1e3),p=u(e.fee1,"fee1 pips",0,1e3);s=c({abi:n,functionName:"setProtocolFee",args:[r,d+(p<<12)]})}else if(o==="v4"&&t==="collect_protocol")a=["currency","amount"],s=c({abi:n,functionName:"collectProtocolFees",args:[i,f(e.currency),P(e.amount,"amount",256,!0)]});else throw new l("This operation is not supported by the selected Uniswap protocol version.");return A(e,["version","operation",...a]),O(w,[w.unsignedTx({to:N,data:s,value:"0",chainId:y,description:`Uniswap ${o} protocol administration: ${t}. Role holder ${i}.`})],i,"Privileged protocol operation. Review the exact role/recipient/fee changes. Protocol fee collections pay the signing wallet; no wallet token approval is required.")}}]}}export{n as a,L as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as P,e as E,f,h as M,j as b,k as V,l as T,m as q,n as j,o as g,p as S,q as x,t as F,w as U,z as $}from"./N4Q6GN65.js";import{c as m}from"./X5V2Z2NM.js";import{a as _}from"./43LI5NKJ.js";import{c as R,g as v}from"./NWNYJ26T.js";import{a as i}from"./XSD5NL7J.js";import{a as I}from"./JXOEJPJ4.js";import{encodeFunctionData as N,keccak256 as G,toBytes as L}from"viem";var D=`0x${"00".repeat(32)}`,ae=d=>{let A=(e,t,s)=>({name:e,inputSchema:t,execute:async(r,a)=>{try{return _(a),j(d,r.chainId),await s(r,a)}catch(u){throw new i(d.plainError(u))}}}),C={transactionHash:{...E,description:"After local submission, repeat the same arguments with the mined hash to verify calldata, event and registry state."}},w=(e,t,s)=>d.clientFor(M(d).chainId).readContract({address:e,abi:m,functionName:t,args:s}),p=async(e,t)=>{try{return await w(e,"getValidationStatus",[t])}catch{return}},H=(e,t)=>({requestHash:e,validator:t[0],agentId:t[1].toString(),response:t[2],responseHash:t[3],tag:I(t[4]),lastUpdate:t[5].toString(),possiblyUnanswered:t[2]===0&&t[3]===D&&t[4]===""}),W=A("erc8004_validation_request",{type:"object",additionalProperties:!1,required:["agentId","validator","requestURI"],description:"Ask a validator (re-execution staker, zkML verifier, TEE oracle, judge) to check an agent's work (Validation Registry validationRequest). Owner or approved operator only.",properties:{agentId:P,validator:{...R,description:"The validator contract or wallet that will respond."},requestURI:{type:"string",description:"HTTPS/IPFS URI of the data the validator needs (inputs and outputs)."},requestHash:{...f,description:"keccak256 commitment to the request payload; provide this or requestContent."},requestContent:{type:"string",description:"The exact request payload text; Oak commits its keccak256 as requestHash."},...C}},async(e,t)=>{let{address:s}=b(d),r=T(e.agentId),a=q(e.validator,"validator");if(V(a))throw new i("Provide a real validator address.");let u=x(e.requestURI,"requestURI");if(e.requestHash===void 0==(e.requestContent===void 0))throw new i("Provide exactly one of requestHash or requestContent.");let l=e.requestHash!==void 0?g(e.requestHash,"requestHash"):G(L(S(e.requestContent,"requestContent",1e6,!1)));return $(d,t,e,{to:s,data:N({abi:m,functionName:"validationRequest",args:[a,r,u,l]}),description:`Request validation of ERC-8004 agent ${r} by ${a}.`,summary:`Asks ${a} to validate agent ${r}'s work: request ${l}, data at ${I(u)}. The request is public and permanent. Only the named validator can respond. Repeat with transactionHash to verify.`,authority:async()=>{if(await F(d,r,t,"request validation"),await p(s,l))throw new i("A validation request with that requestHash already exists; use a different payload commitment.")},verify:async h=>{let c=U(h,s,m,"ValidationRequest"),o=await p(s,l);if(!o||!v(String(c.validatorAddress),a)||c.agentId!==r||c.requestHash!==l||o[1]!==r||!v(o[0],a))throw new i("The registry event or stored request does not match.");return{...H(l,o),confirmed:!0}}})}),Z=A("erc8004_validation_response",{type:"object",additionalProperties:!1,required:["requestHash","response"],description:"As the named validator, record a validation result from 0 (failed) to 100 (passed) for a request. May be called again to update.",properties:{requestHash:f,response:{type:"integer",minimum:0,maximum:100},responseURI:{type:"string",description:"Optional HTTPS/IPFS evidence or audit URI."},responseHash:{...f,description:"Optional commitment to the evidence content."},tag:{type:"string",description:"Optional category, e.g. soft-finality / hard-finality."},...C}},async(e,t)=>{let{address:s}=b(d),r=g(e.requestHash,"requestHash"),a=e.response;if(typeof a!="number"||!Number.isInteger(a)||a<0||a>100)throw new i("response must be an integer from 0 to 100.");let u=e.responseURI===void 0?"":x(e.responseURI,"responseURI"),l=e.responseHash===void 0?D:g(e.responseHash,"responseHash"),h=S(e.tag,"tag",128);return $(d,t,e,{to:s,data:N({abi:m,functionName:"validationResponse",args:[r,a,u,l,h]}),description:`Respond ${a}/100 to validation request ${r}.`,summary:`Records validation result ${a}/100${h?` (tag ${I(h)})`:""} for request ${r} as this wallet. It is public; a later response replaces the stored result but the event history stays. Repeat with transactionHash to verify.`,authority:async()=>{let c=await p(s,r);if(!c)throw new i("No validation request has that requestHash.");if(!v(c[0],t))throw new i("Only the validator named in the request can respond to it.")},verify:async c=>{let o=U(c,s,m,"ValidationResponse"),n=await p(s,r);if(!n||o.requestHash!==r||o.response!==a||!v(String(o.validatorAddress),t)||n[2]!==a)throw new i("The registry event or stored result does not match.");return{...H(r,n),confirmed:!0}}})}),z=A("erc8004_validation",{type:"object",additionalProperties:!1,description:"Read-only validation lookups. Provide exactly one of requestHash (one request), agentId (its requests and average) or validator (requests addressed to it).",properties:{requestHash:f,agentId:P,validator:R,validators:{type:"array",maxItems:50,items:R,description:"With agentId: average only these validators."},tag:{type:"string",description:"With agentId: average only this tag."},limit:{type:"integer",minimum:1,maximum:100,default:25}}},async e=>{let{address:t}=b(d),s=["requestHash","agentId","validator"].filter(n=>e[n]!==void 0);if(s.length!==1)throw new i("Provide exactly one of requestHash, agentId or validator.");let r=typeof e.limit=="number"?Math.min(Math.max(1,Math.trunc(e.limit)),100):25,a=async n=>{let y=n.slice(-r).reverse(),B=await Promise.all(y.map(async k=>{let O=await p(t,k);return O?H(k,O):{requestHash:k,unavailable:!0}}));return{requestsTotal:n.length,requests:B,truncated:n.length>y.length,newestFirst:!0}};if(s[0]==="requestHash"){let n=g(e.requestHash,"requestHash"),y=await p(t,n);if(!y)throw new i("No validation request has that requestHash.");return{registry:t,...H(n,y)}}if(s[0]==="validator")return{registry:t,validator:q(e.validator,"validator"),...await a(await w(t,"getValidatorRequests",[q(e.validator,"validator")]))};let u=T(e.agentId),l=Array.isArray(e.validators)?e.validators.map(n=>q(n,"validator")):[],h=S(e.tag,"tag",128),[c,o]=await Promise.all([w(t,"getAgentValidations",[u]),w(t,"getSummary",[u,l,h])]);return{registry:t,agentId:u.toString(),answeredCount:o[0].toString(),averageResponse:o[0]===0n?null:o[1],...await a(c),note:"The average counts only answered requests and includes whatever validators were asked; judge a result by who the validator is."}});return{tools:[W,Z,z]}};export{ae as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as l,b as p,c as v,e as f,f as L,g as C,h as x,j as h,k,l as T}from"./YWSX6IE6.js";import{a as b}from"./JFYBH3DX.js";import{a as I,d as A}from"./7QZOTRSA.js";import{a as u}from"./I6PQW2JI.js";import{a as g}from"./XSD5NL7J.js";import{encodeFunctionData as M}from"viem";var d=(o,e)=>({token:o,amount:e.toString()}),U=6e4;function _(){let o=new WeakMap;return{entry(e){let r=o.get(e);return(!r||Date.now()>=r.expiresAt)&&(r={logs:new Map,expiresAt:Date.now()+U},o.set(e,r)),r}}}function R(o,e){return{to:o.log.address,data:M({abi:b,functionName:"debond",args:[e,[],[]]}),value:"0",chainId:4663,description:`Unwrap ${e} log base units from ${o.log.address}.`}}async function P(o,e,r,i,t=BigInt(e.measuredAtBlock)){if(i>BigInt(e.totalSupply))throw new g("Unwrap amount exceeds the issued Chop log supply.");let s=p(await f(o,e.log.address,"convertToAssets",[i],t,r)),n=1n<<96n,a=BigInt(e.managedUnderlying)*(i*n/BigInt(e.totalSupply))/n;if(s>a)throw new g("Chop redemption exceeds the measured backing.");return{gross:d(e.underlying,a),fee:d(e.underlying,a-s),net:d(e.underlying,s)}}async function S(o){if(o.network==="testnet")throw new g("Chop requires chain 4663.");let e=o.clientFor(4663),r=await C(e);await x(e,u.registry,r);let i=await f(e,u.registry.address,"allIndexes",[],r);if(!Array.isArray(i)||i.length>1e3)throw new g("Chop registry inventory is unreadable or too large.");let t=i.filter(n=>n&&n.verified===!0).map(n=>l(n.index));if(new Set(t).size!==t.length)throw new g("Chop registry returned duplicate logs.");let s=[];for(let n=0;n<t.length;n+=4)s.push(...await Promise.all(t.slice(n,n+4).map(a=>h(e,a,"read",r))));return{logs:s,measuredAtBlock:r.toString(),warnings:s.flatMap(n=>n.drift.length?[`Code changed for ${n.log.address}: ${n.drift.join(", ")}.`]:[])}}async function $(o,e){if(!e)return S(o);let r=o.clientFor(4663),i=e.entry(r);if(i.inventory)return structuredClone(i.inventory);let t=i.pending??S(o);i.pending=t;try{let s=await t;i.inventory=structuredClone(s);for(let n of s.logs)i.logs.set(n.log.address.toLowerCase(),structuredClone(n));return s}finally{i.pending===t&&(i.pending=void 0)}}async function V(o,e,r,i=BigInt(e.measuredAtBlock)){await x(o,u.whitelist,i);let t=await L(o,[{target:e.log.address,fn:"balanceOf",args:[r]},{target:e.staking.address,fn:"balanceOf",args:[r]},{target:e.staking.address,fn:"withdrawableStake",args:[r]},{target:e.rewards,fn:"getUnpaid",args:[u.chop,r]},{target:e.rewards,fn:"getClaimable",args:[u.chop,r]},{target:u.whitelist.address,fn:"paused",args:[u.chop]},{target:e.log.address,fn:"totalSupply"},{target:e.log.address,fn:"totalAssets",args:[e.underlying.address]}],i);if(typeof t[5]!="boolean")throw new g("Chop reward pause state is unavailable.");let s=p(t[0]),n=p(t[6]),a=p(t[7]);if(n===0n)throw new g("This Chop log has no issued supply.");let m={...e,totalSupply:n.toString(),managedUnderlying:a.toString()},c=s===0n?{gross:d(e.underlying,0n),fee:d(e.underlying,0n),net:d(e.underlying,0n)}:await P(o,m,r,s,i),y={address:l(u.chop),symbol:"CHOP",decimals:18,chainId:4663};return{log:e.log.address,logTokens:d(e.log,s),...c,stakedLp:d(e.staking,p(t[1])),withdrawableLp:d(e.staking,p(t[2])),pendingChop:d(y,p(t[3])),claimableChop:d(y,p(t[4])),rewardsPaused:t[5],measuredAtBlock:i.toString(),warnings:A(e)}}async function H(o,e,r,i){let t=o.clientFor(4663);l(r);let s=i?.entry(t),n=l(e).toLowerCase(),a=s?.logs.get(n)??await h(t,e,"read");return s&&!s.logs.has(n)&&s.logs.set(n,structuredClone(a)),V(t,a,r,await C(t))}async function j(o,e,r,i){let t=v(i),s=o.clientFor(4663);l(r);let n=await h(s,e,"exit"),a=await P(s,n,r,t),m=BigInt(a.net.amount);if(m===0n)throw new g("This Chop unwrap would return no underlying.");let c=R(n,t),y=o.unsignedTx(c);k([y],[c]);let w=await o.preview([y],r);k(w.txs,[c]);let B=T(w,[{token:n.log,min:-t,max:-t},{token:n.underlying,min:m}]);return{log:n.log.address,amount:t.toString(),...a,simulatedNet:d(n.underlying,B.get(n.underlying.address.toLowerCase())),quotedNet:a.net.amount,preview:w,measuredAtBlock:n.measuredAtBlock,warning:I,summary:A(n)}}export{d as a,U as b,_ as c,R as d,P as e,$ as f,V as g,H as h,j as i};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as K}from"./JKD2B6OX.js";import{b as Y,d as Z,e as Q}from"./V74F6IDY.js";import{a as J}from"./PNA6UIE5.js";import{a as W,c as x,d as B,h as F,i as E,j as L}from"./QFNT73OF.js";import{Z as z,ca as H}from"./ACW63WIL.js";import{a as P}from"./E3RACZUY.js";import{j}from"./7KWZ5QJU.js";import{j as M}from"./AEL62KCG.js";import{a as $}from"./IOYRL6AY.js";import{e as O,h as U}from"./NWNYJ26T.js";import{a as v}from"./XSD5NL7J.js";import{erc20Abi as X,formatUnits as G,parseAbiItem as q}from"viem";var ee=q("event CreateVaultV2(address indexed caller,address indexed owner,bytes32 salt,address indexed vault)"),te=r=>H("unverified",{...r?{vaultLabel:r}:{}});function ae(r){if(!O(r)||!O(r.chain)||r.chain.id!==4663||!Array.isArray(r.contracts)||!Array.isArray(r.markets)||r.contracts.length>1e3||r.markets.length>1e3)throw new v("Borro vault discovery returned an unreadable candidate list.");let i=[...r.contracts.filter(O).filter(e=>e.name==="BorroUSDGVault").map(e=>e.address),...r.markets.filter(O).map(e=>O(e.vault)?e.vault.address:void 0)];return[...new Set(i.map(x))]}function se(r){return r.sort((i,e)=>+(e.symbol==="USDG")-+(i.symbol==="USDG")||0)}var re=6e4;function oe(r,i={}){let e=i.resolveAllowedAsset??E(i.officialStockTokens),g=L({resolveAllowedAsset:e}),S=new WeakMap,A=s=>{let t=S.get(s);return t||(t={},S.set(s,t)),t},m=s=>{if(s?.aborted)throw new v("Borro read was cancelled.")};async function h(s,t,u){let c=A(s);if(c.inventory&&Date.now()<c.inventory.expiresAt)return structuredClone(c.inventory);let a={items:[],sources:[],incomplete:!1,warnings:[],expiresAt:0},o=new Map;m(u);try{for(let l of ae(await Y(r.http,"contracts",u)))o.set(l.toLowerCase(),{vault:l});a.sources.push("contracts.json")}catch{a.incomplete=!0,a.warnings.push("Borro candidate discovery is unavailable; this inventory may be incomplete.")}if(i.factoryEvents!==!1)try{let l=new Map;for(let p=BigInt(P.factory.fromBlock);p<=t;p+=10000000n){m(u);let k=p+9999999n<t?p+9999999n:t,y=await s.getLogs({address:P.factory.address,event:ee,fromBlock:p,toBlock:k,strict:!0});if(y.length>1e3)throw new v("Borro factory inventory exceeds the read limit.");for(let d of y){let n=x(d.args.vault);if(d.removed||!U(d.address,P.factory.address)||d.blockNumber===null||d.blockNumber<p||d.blockNumber>k||l.has(n.toLowerCase()))throw new v("Borro factory events are unreadable.");l.set(n.toLowerCase(),{vault:n,block:d.blockNumber})}if(l.size>1e3)throw new v("Borro factory inventory exceeds the read limit.")}for(let[p,k]of l)o.set(p,k);a.sources.push("factory-events")}catch{a.incomplete=!0,a.warnings.push("Borro factory discovery is unavailable; vault creation dates or inventory may be incomplete.")}return m(u),a.items=[...o.values()],a.expiresAt=Date.now()+re,a.incomplete||(c.inventory=structuredClone(a)),a}let w=async(s,t={})=>{m(t.signal);let u=await F(s),c=A(s);if(!t.wallet&&c.verified&&Date.now()<c.verified.expiresAt)return structuredClone(c.verified.result);let a=await h(s,u,t.signal),o={vaults:[],refused:[],sources:a.sources,incomplete:a.incomplete,warnings:a.warnings,measuredAtBlock:u.toString()},l=a.items;if(t.heldOnly){if(!t.wallet)throw new v("Provide a wallet for Borro holdings.");m(t.signal);let y=l.length?await s.multicall({allowFailure:!1,batchSize:0,contracts:l.map(({vault:d})=>({address:d,abi:X,functionName:"balanceOf",args:[t.wallet]})),blockNumber:u}):[];if(!Array.isArray(y)||y.length!==l.length)throw new v("Borro share balances could not be read completely. Please try again.");o.shareBalances=l.map((d,n)=>({vault:d.vault,amount:B(y[n]).toString()})),l=l.filter((d,n)=>BigInt(o.shareBalances[n].amount)>0n)}m(t.signal);let p=e;if(l.length&&!i.resolveAllowedAsset&&!i.officialStockTokens)try{p=E(await M({http:r.http,allowAmbiguousSymbols:!0}))}catch{o.incomplete=!0,o.warnings.push("Official stock identities could not be checked; held-share exits remain available by vault address.")}let k=L({resolveAllowedAsset:p});for(let y=0;y<l.length;y+=4){m(t.signal);let d=await Promise.all(l.slice(y,y+4).map(async n=>{try{let b=await k(s,n.vault,t.wallet?"withdraw":"deposit",{blockNumber:u,...t.wallet?{wallet:t.wallet}:{}});if(n.block!==void 0)try{let V=await s.getBlock({blockNumber:n.block}),f=B(V.timestamp);f<=8640000000000n&&V.number===n.block&&(b.deployedAt=new Date(Number(f)*1e3).toISOString())}catch{}return{facts:b}}catch{return{rejected:{vault:n.vault,reason:te(n.vault)}}}}));for(let n of d)n.facts&&o.vaults.push(n.facts),n.rejected&&o.refused.push(n.rejected)}return m(t.signal),se(o.vaults),!t.wallet&&!o.incomplete&&(c.verified={result:structuredClone(o),expiresAt:a.expiresAt}),o},T=async(s,t={})=>{m(t.signal);let u=A(s),c;if(t.wallet||t.signal)c=await w(s,t);else{let a=u.pending??w(s);u.pending=a;try{c=structuredClone(await a)}finally{u.pending===a&&(u.pending=void 0)}}return m(t.signal),{...c,vaults:c.vaults.filter(a=>!t.asset||a.symbol.toUpperCase()===t.asset.toUpperCase())}};return{discoverVaults:T,verifyVault:g,resolveVault:async(s,t,u,c)=>{if(t.asset!==void 0&&!/^[A-Za-z0-9.$_-]{1,32}$/.test(t.asset))throw new v("Provide an official asset symbol.");if(t.vault){let y=await g(s,t.vault,u,{wallet:c});if(t.asset&&y.symbol.toUpperCase()!==t.asset.toUpperCase())throw new v("The asset symbol does not match the verified vault.");return y}if(!t.asset)throw new v("Provide an asset symbol or the vault address.");let a=await T(s,{asset:t.asset,...u==="withdraw"?{wallet:c}:{}});if(a.incomplete)throw new v("Borro discovery is incomplete. Provide the vault address for on-chain verification.");let o=a.vaults.length===1?a.vaults[0]:void 0;if(!o&&t.asset.toUpperCase()==="USDG"&&a.vaults.length>1){let y=await F(s);try{if(a.vaults.some(f=>!U(f.asset,P.assetRule.usdg.address)||f.assetDecimals!==6))throw new v("Unreadable USDG identity.");let d=a.vaults.filter(f=>f.setup.drift.length===0&&f.assetAllowed),n=await Promise.all(d.map(async f=>({facts:f,total:B(await s.readContract({address:f.vault,abi:W,functionName:"totalAssets",blockNumber:y}))})));n.sort((f,_)=>f.total>_.total?-1:f.total<_.total?1:0);let[b,V]=n;b&&b.total>=100000000n&&(!V||b.total>=V.total*10n)&&(o=b.facts)}catch{}}if(!o)throw new v(a.vaults.length?"More than one Borro vault uses this symbol. Provide the vault address.":"No verified Borro vault matched this asset. Provide the vault address to check it on chain.");let l=e;if(!i.resolveAllowedAsset&&!i.officialStockTokens&&!U(o.asset,P.assetRule.usdg.address))try{l=E(await M({http:r.http,allowAmbiguousSymbols:!0}))}catch{}let k=await L({resolveAllowedAsset:l})(s,o.vault,u,{wallet:c});if(k.symbol.toUpperCase()!==t.asset.toUpperCase())throw new v("The asset symbol does not match the verified vault.");return{...k,...o.deployedAt?{deployedAt:o.deployedAt}:{}}}}}var N=(r,i)=>({token:r,amount:i.toString()});async function ne(r,i,e){try{let[g,S]=await Promise.all([i.getGasPrice(),j("ETH",{client:i,http:r.http,chainId:4663,blockNumber:e})]);if(!/^\d+$/.test(S.usdE18)||BigInt(S.usdE18)<=0n||B(g)===0n)return{};let A=w=>Number(G(w*g*BigInt(S.usdE18)/10n**18n,18)),m=A($*2n),h=A($);return[m,h].every(w=>Number.isFinite(w)&&w>0)?{gasInUsd:m,gasOutUsd:h}:{}}catch{return{}}}async function ie(r,i,e,g,S=new Map,A){let m={vault:e.vault,verified:!0,symbol:e.symbol,vaultSymbol:e.vaultSymbol,setup:e.setup,measuredAtBlock:(A??BigInt(e.measuredAtBlock)).toString(),verifiedAtBlock:e.measuredAtBlock,...e.owner?{owner:e.owner}:{},...e.curator?{curator:e.curator}:{},...e.deployedAt?{deployedAt:e.deployedAt}:{}};try{let h=A??BigInt(e.measuredAtBlock),w={address:e.asset,symbol:e.symbol,decimals:e.assetDecimals,chainId:4663},T={address:e.vault,symbol:e.vaultSymbol,decimals:18,chainId:4663},R=(D,C,I=[])=>i.readContract({address:D,abi:[...W,...X],functionName:C,args:I,blockNumber:h}),[s,t,u,c,a,o,l]=await Promise.all([R(e.vault,"totalAssets"),R(e.vault,"performanceFee"),R(e.asset,"balanceOf",[g]),R(e.vault,"balanceOf",[g]),J(i,e,h),ne(r,i,h),i.getBlock({blockNumber:h})]),p=B(c),k=B(t);if(k>10n**18n)throw new v("Borro performance fee is unreadable.");let y=B(await R(e.vault,"convertToAssets",[p])),d={};if(e.owner)try{let[D,C]=await Promise.all([R(e.owner,"getThreshold"),R(e.owner,"getOwners")]),I=B(D);if(!Array.isArray(C)||C.length>1e3||new Set(C.map(x)).size!==C.length||I<1n||I>BigInt(C.length))throw new v("Unreadable group wallet.");d={safeThreshold:Number(I),safeOwners:C.length}}catch{}let n;if(U(e.asset,P.assetRule.usdg.address))try{let D=(await K(i,h)).rateBasePct;Number.isFinite(D)&&D>=0&&(n=D)}catch{}let b=Q(S,w,e.vault);if(l.number!==h)throw new v("Borro block timestamp could not be verified.");let V=Number(B(l.timestamp)),f=e.deployedAt?Date.parse(e.deployedAt)/1e3:void 0,_=z({symbol:e.symbol,kind:U(e.asset,P.assetRule.usdg.address)?"usdg":"stock",nowSeconds:V,...f===void 0?{}:{deployedAtSeconds:f},threshold:d.safeThreshold,owners:d.safeOwners,borroRatePct:b.apr===void 0?void 0:b.apr*100,feePct:Number(G(k,16)),layerbankRatePct:n,totalAmount:G(B(s),e.assetDecimals),readyAmount:a.readyBase===void 0?void 0:G(a.readyBase,e.assetDecimals),gasInUsd:o.gasInUsd===void 0?void 0:`up to $${o.gasInUsd.toFixed(4)}`,gasOutUsd:o.gasOutUsd===void 0?void 0:`up to $${o.gasOutUsd.toFixed(4)}`});return{...m,asset:w,shares:T,totalAssets:N(w,B(s)),performanceFeeWad:k.toString(),walletAssetBalance:N(w,B(u)),walletShares:N(T,p),walletShareValue:N(w,y),liquidityKind:a.kind,...a.readyBase===void 0?{}:{cashOnHand:N(w,a.readyBase)},...d,...o,...n===void 0?{}:{layerbankRateBasePct:n},...b.apr===void 0?{}:{apr:b.apr,rateSource:b.source},...b.readyToWithdraw?{vendorReadyToWithdraw:b.readyToWithdraw}:{},...f!==void 0&&f<=V?{ageSeconds:String(Math.floor(V-f))}:{},risk:{title:"Lending on Borro",text:_,source:"Oak"}}}catch{return{...m,error:"This Borro vault can't be read right now. Please try again."}}}async function ge(r,i,e={},g={},S){if(e.vault&&!g.resolveAllowedAsset&&!g.officialStockTokens)try{g={...g,officialStockTokens:await M({http:r.http,allowAmbiguousSymbols:!0})}}catch{}let A=r.clientFor(4663),m=S??oe(r,g);x(i);let h;if(e.vault){let s=await m.resolveVault(A,e,"deposit",i);h={vaults:[s],refused:[],sources:[],incomplete:!1,warnings:[],measuredAtBlock:s.measuredAtBlock}}else h=await m.discoverVaults(A,e.asset?{asset:e.asset}:{});let[w,T]=await Promise.all([Z(r.http),F(A)]),R=[];for(let s=0;s<h.vaults.length;s+=4)R.push(...await Promise.all(h.vaults.slice(s,s+4).map(t=>ie(r,A,t,i,w,T))));return{...h,vaults:R}}export{ae as a,se as b,oe as c,N as d,ie as e,ge as f};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as w,b as R}from"./OTXSKFUD.js";import{a,e as P}from"./XSD5NL7J.js";function q(t){return t===404||t===410?`The service returned HTTP ${t}: it has no record of that request, so trying again will not help.`:`The service returned HTTP ${t}. Please try again.`}var y=class extends a{constructor(n){super(q(n.status));this.response=n}response};function h(){return new a("The request was cancelled.")}async function v(t,s){if(s.aborted)throw h();await new Promise((n,c)=>{let o=setTimeout(()=>{s.removeEventListener("abort",m),n()},t),m=()=>{clearTimeout(o),s.removeEventListener("abort",m),c(h())};s.addEventListener("abort",m,{once:!0})})}function _(t,s){if(t===null)return s;if(/^\d+(\.\d+)?$/.test(t))return Number(t)*1e3;let n=Date.parse(t);return Number.isFinite(n)?Math.max(0,n-Date.now()):s}function A(t={}){let s=t.fetch??globalThis.fetch,n=t.timeoutMs??1e4,c=t.retries??2,u=t.retryDelayMs??250,o=t.maxRetryDelayMs??3e4;if(!Number.isInteger(c)||c<0||c>10||!Number.isFinite(n)||n<=0||n>2147483647||!Number.isFinite(u)||u<0||!Number.isFinite(o)||o<0||o>2147483647)throw new a("Provide finite timeout and retry bounds, with 0 to 10 retries.");return async(m,k)=>{let r=new Request(m,{...k,redirect:"error"}),d=R(s,r.url),N=r.method==="GET"||r.method==="HEAD";for(let b=0;;b++){if(r.signal.aborted)throw h();if(d){let e=Date.now()+2e3,f=d.reserve();for(f>0&&await v(f,r.signal);;){if(r.signal.aborted)throw h();if(Date.now()>e)throw new w(d.label,1);let i=d.dispatchDelay();if(i===0)break;if(Date.now()+i>e)throw new w(d.label,i/1e3);await v(i,r.signal)}}if(r.signal.aborted)throw h();let p=new AbortController,x=()=>p.abort();r.signal.addEventListener("abort",x,{once:!0});let D=!1,O=setTimeout(()=>{D=!0,p.abort()},n),M;try{let e=await s(r.clone(),{signal:p.signal});if(e.redirected)throw await e.body?.cancel(),new a("The request failed. Please try again.");if(e.ok){let f=await e.text();if(r.method!=="HEAD"&&e.status!==204&&e.status!==205){let i=r.headers.get("accept")?.toLowerCase(),l=e.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase(),T=l?.startsWith("text/"),E=i?.split(",").some(g=>g.trim().startsWith("text/"));if(!E&&i?.split(",").some(g=>/(?:application\/json|\+json)(?:\s*;.*)?$/.test(g.trim()))||l==="application/json"||l?.endsWith("+json")||!T&&!E)try{JSON.parse(f)}catch{throw new a("The service returned malformed JSON.")}}return new Response(f||null,{status:e.status,statusText:e.statusText,headers:e.headers})}else{let f=e.status===429||e.status>=500,i=u*2**b*(.5+Math.random()),l=Math.max(i,_(e.headers.get("Retry-After"),i));if(e.status===429&&d?.backoff(l),!N||!f||b>=c||l>o){if(e.status===429)throw await e.body?.cancel(),new w(d?.label??"The service",Math.max(1,l/1e3));let T=await e.text();throw new y(new Response(T||null,{status:e.status,statusText:e.statusText,headers:e.headers}))}await e.body?.cancel(),M=l}}catch(e){throw r.signal.aborted?h():D?new a("The request timed out. Please try again."):e instanceof y?e:new a(P(e))}finally{clearTimeout(O),r.signal.removeEventListener("abort",x)}await v(M,r.signal)}}}async function S(t,s,n,c){let u=await t(s,n);if(!u.ok)throw new a(q(u.status));let o;try{o=await u.json()}catch{throw new a("The service returned malformed JSON.")}try{if(c(o))return o}catch{}throw new a("The service returned an unexpected response.")}export{y as a,A as b,S as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as a}from"./BND2UFVW.js";import{a as i}from"./SPRVVJXI.js";import{a as o}from"./FWD4L3CJ.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as f}from"./7WSHW7KW.js";import{a as p}from"./43LI5NKJ.js";import{a as u}from"./FWD4L3CJ.js";import{a as r}from"./XSD5NL7J.js";import{encodeFunctionData as A,getAddress as w,parseAbi as T,parseAbiItem as F}from"viem";var R=[["setOwner(address newOwner)","owner"],["setCurator(address newCurator)","owner"],["setIsSentinel(address account,bool enabled)","owner"],["setName(string name)","owner"],["setSymbol(string symbol)","owner"],["setIsAllocator(address account,bool enabled)","timelock"],["setReceiveSharesGate(address gate)","timelock"],["setSendSharesGate(address gate)","timelock"],["setReceiveAssetsGate(address gate)","timelock"],["setSendAssetsGate(address gate)","timelock"],["setAdapterRegistry(address registry)","timelock"],["addAdapter(address adapter)","timelock"],["removeAdapter(address adapter)","timelock"],["increaseTimelock(bytes4 selector,uint256 duration)","timelock"],["decreaseTimelock(bytes4 selector,uint256 duration)","timelock"],["abdicate(bytes4 selector)","timelock"],["setPerformanceFee(uint256 fee)","timelock"],["setManagementFee(uint256 fee)","timelock"],["setPerformanceFeeRecipient(address recipient)","timelock"],["setManagementFeeRecipient(address recipient)","timelock"],["increaseAbsoluteCap(bytes idData,uint256 cap)","timelock"],["increaseRelativeCap(bytes idData,uint256 cap)","timelock"],["decreaseAbsoluteCap(bytes idData,uint256 cap)","curatorOrSentinel"],["decreaseRelativeCap(bytes idData,uint256 cap)","curatorOrSentinel"],["setForceDeallocatePenalty(address adapter,uint256 penalty)","timelock"],["allocate(address adapter,bytes data,uint256 assets)","allocator"],["deallocate(address adapter,bytes data,uint256 assets)","allocatorOrSentinel"],["setLiquidityAdapterAndData(address adapter,bytes data)","allocator"],["setMaxRate(uint256 rate)","allocator"],["accrueInterest()","any"]],S=R.map(([a,t])=>({abi:F(`function ${a}`),authority:t})),x=T(["function asset() view returns (address)","function owner() view returns (address)","function curator() view returns (address)","function isSentinel(address) view returns (bool)","function isAllocator(address) view returns (bool)","function executableAt(bytes) view returns (uint256)","function abdicated(bytes4) view returns (bool)","function submit(bytes data)","function revoke(bytes data)"]);function M(a,t){if(a==="bool"){if(typeof t!="boolean")throw new r("Boolean operation values must be booleans.");return t}if(typeof t!="string")throw new r("All address, byte, text and integer operation values must be strings.");if(a==="address")return p(t),w(t);if(a==="uint256"){if(!/^\d+$/.test(t)||BigInt(t)>=1n<<256n)throw new r("Integer operation values must be uint256 decimal base-unit strings.");return BigInt(t)}if((a==="bytes"||a==="bytes4")&&!(a==="bytes4"?/^0x[0-9a-f]{8}$/i:/^0x(?:[0-9a-f]{2})*$/i).test(t))throw new r("Invalid hexadecimal operation bytes.");return t}function E(a,t,m,O){return{name:t,inputSchema:{type:"object",additionalProperties:!1,required:["operation","values"],properties:{operation:{type:"string",enum:S.map(i=>i.abi.name)},values:{type:"array",maxItems:3,items:{oneOf:[{type:"string"},{type:"boolean"}]},description:"Ordered ABI values. Integers are decimal base-unit strings; addresses and bytes are explicit strings."},mode:{enum:["call","submit","revoke"],default:"call",description:"Submit/revoke only for timelocked curator operations. Execution is a separate call after the delay."}}},execute:async(i,c)=>{try{if(p(c),Object.keys(i).some(e=>!["operation","values","mode"].includes(e)))throw new r("Unexpected vault management argument.");let n=S.find(e=>e.abi.name===i.operation);if(!n||!Array.isArray(i.values)||i.values.length!==n.abi.inputs.length)throw new r("Provide a supported operation and its exact ordered values.");let o=i.mode??"call";if(!["call","submit","revoke"].includes(String(o))||o!=="call"&&n.authority!=="timelock")throw new r("Submit/revoke is available only for timelocked curator operations.");let I=n.abi.inputs.map((e,d)=>M(e.type,i.values[d])),l=A({abi:[n.abi],functionName:n.abi.name,args:I}),b=a.clientFor(u);if(await b.getChainId()!==u)throw new r("Vault management requires chain 4663.");let s=(e,d=[])=>b.readContract({address:m,abi:x,functionName:e,args:d}),y=await s("asset");if(typeof y!="string"||w(y)!==w(O.address))throw new r("Vault management requires the pinned vault asset.");let g=e=>typeof e=="string"&&e.toLowerCase()===c.toLowerCase(),C=async e=>e==="any"?!0:e==="owner"?g(await s("owner")):e==="allocator"?await s("isAllocator",[c])===!0:e==="allocatorOrSentinel"?await s("isAllocator",[c])===!0||await s("isSentinel",[c])===!0:g(await s("curator"))||e==="curatorOrSentinel"&&await s("isSentinel",[c])===!0;if(n.authority==="timelock"&&o==="call"){let[e,d,D]=await Promise.all([s("executableAt",[l]),s("abdicated",[l.slice(0,10)]),b.getBlock()]);if(f(e)===0n||f(e)>D.timestamp||d!==!1)throw new r("This exact operation has not matured or its selector is abdicated. Submit it with the curator, then wait for its executable time.")}else if(!await C(o==="submit"?"timelock":o==="revoke"?"curatorOrSentinel":n.authority))throw new r("This wallet does not hold the required vault management role. No transaction was built.");let $=o==="call"?l:A({abi:x,functionName:o==="submit"?"submit":"revoke",args:[l]}),k=`${o} ${n.abi.name} on ${m}; ordered values ${JSON.stringify(i.values)}. ${n.abi.name==="abdicate"?"Abdication is irreversible.":""}`,h=[a.unsignedTx({to:m,data:$,value:"0",chainId:u,description:k})],v=await a.preview(h,c);return{txs:h,preview:v,summary:`${k} ${v.summary} ${o==="submit"?"Submission schedules this exact operation; it does not execute the configuration change.":"Role, cap and timing checks can change before execution."}`}}catch(n){throw new r(a.plainError(n))}}}}export{S as a,M as b,E as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as ne}from"./3XNZUIRU.js";import{a as ee,b as re,d as te,e as B,f as X,g as ie}from"./O7HCEPQY.js";import{a as z,c as f,d as L,f as i,g,h as C,i as S,j as G,k,l as F,m as v,n as Z,p as A,q as R,s as V,t as W}from"./46KWRAYK.js";import{b as M}from"./66F5ZH34.js";import{c as N,h as I}from"./NWNYJ26T.js";import{a as Y}from"./XSD5NL7J.js";import{randomInt as le,randomUUID as he}from"node:crypto";import{isDeepStrictEqual as H}from"node:util";import{encodeFunctionData as ae,erc20Abi as se,pad as qe,recoverTypedDataAddress as fe,zeroHash as ge}from"viem";var $={funding:{path:"/v1/funding",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!0,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["chargedAt"]}}]},"funding/projected-rate":{path:"/v1/funding/projected-rate",parameters:[{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}}]},"linked-signer":{path:"/v1/linked-signer",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"statuses",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["PENDING","ACTIVE","PENDING_REVOKE","REVOKED","REJECTED"]}}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt","expiresAt"]}}]},"linked-signer/address/{address}":{path:"/v1/linked-signer/address/{address}",parameters:[{name:"address",in:"path",required:!0,schema:{type:"string",format:"hex"}}]},"linked-signer/quota":{path:"/v1/linked-signer/quota",parameters:[{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}}]},"linked-signer/{id}":{path:"/v1/linked-signer/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},maintenance:{path:"/v1/maintenance",parameters:[]},order:{path:"/v1/order",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"clientOrderId",in:"query",required:!1,schema:{type:"string"}},{name:"productIds",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"uuid"},minItems:1,uniqueItems:!0}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}},{name:"side",in:"query",required:!1,schema:{type:"integer",enum:[0,1],"x-enum-varnames":["BUY","SELL"]}},{name:"close",in:"query",required:!1,schema:{type:"boolean"}},{name:"stopTypes",in:"query",required:!1,schema:{type:"array",items:{type:"integer",enum:[0,1],"x-enum-varnames":["GAIN","LOSS"]}}},{name:"isWorking",in:"query",required:!1,schema:{type:"boolean",enum:[!0]}},{name:"isPending",in:"query",required:!1,schema:{type:"boolean",enum:[!0]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"order/fill":{path:"/v1/order/fill",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"productIds",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"uuid"},minItems:1,uniqueItems:!0}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}},{name:"side",in:"query",required:!1,schema:{type:"integer",enum:[0,1],"x-enum-varnames":["BUY","SELL"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["productId","filled","price","createdAt"]}},{name:"includeSelfTrades",in:"query",required:!1,schema:{type:"boolean"}},{name:"expandSelfTrades",in:"query",required:!1,schema:{type:"boolean"}}]},"order/trade":{path:"/v1/order/trade",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"order/{id}":{path:"/v1/order/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},"order/{id}/group":{path:"/v1/order/{id}/group",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}},{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},points:{path:"/v1/points",parameters:[{name:"address",in:"query",required:!0,schema:{type:"string",format:"hex"}},{name:"season",in:"query",required:!0,schema:{type:"integer",maximum:10,minimum:0}},{name:"epoch",in:"query",required:!0,schema:{type:"integer",maximum:256,minimum:1}}]},"points/summary":{path:"/v1/points/summary",parameters:[{name:"address",in:"query",required:!0,schema:{type:"string",format:"hex"}}]},"points/total":{path:"/v1/points/total",parameters:[{name:"season",in:"query",required:!1,schema:{type:"integer",maximum:10,minimum:0}},{name:"epoch",in:"query",required:!1,schema:{type:"integer",maximum:256,minimum:1}}]},position:{path:"/v1/position",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"productIds",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"uuid"},minItems:1,uniqueItems:!0}},{name:"open",in:"query",required:!1,schema:{type:"boolean"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["size","createdAt","updatedAt","realizedPnl"]}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}},{name:"side",in:"query",required:!1,schema:{type:"integer",enum:[0,1],"x-enum-varnames":["BUY","SELL"]}},{name:"isLiquidated",in:"query",required:!1,schema:{type:"boolean"}}]},"position-fee":{path:"/v1/position-fee",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!0,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["chargedAt"]}}]},"position-fee/projected-rate":{path:"/v1/position-fee/projected-rate",parameters:[{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}}]},"position/active":{path:"/v1/position/active",parameters:[{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}}]},"position/fill":{path:"/v1/position/fill",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"positionId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["price","filled","createdAt"]}}]},"position/liquidation":{path:"/v1/position/liquidation",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"position/{id}":{path:"/v1/position/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},product:{path:"/v1/product",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt","openInterest","baseTokenName","quoteTokenName"]}},{name:"ticker",in:"query",required:!1,schema:{type:"string",pattern:"^[a-zA-Z0-9]{1,32}$"}}]},"product/mark-price-gap":{path:"/v1/product/mark-price-gap",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!0,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["startTime"]}}]},"product/market-liquidity":{path:"/v1/product/market-liquidity",parameters:[{name:"productId",in:"query",required:!0,schema:{type:"string",format:"uuid"}}]},"product/market-price":{path:"/v1/product/market-price",parameters:[{name:"productIds",in:"query",required:!0,schema:{type:"array",items:{type:"string",format:"uuid"},maxItems:50,minItems:1,uniqueItems:!0}}]},"product/{id}":{path:"/v1/product/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},"rate-limit/config":{path:"/v1/rate-limit/config",parameters:[]},"rpc/config":{path:"/v1/rpc/config",parameters:[]},subaccount:{path:"/v1/subaccount",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"name",in:"query",required:!1,schema:{type:"string",format:"hex"}},{name:"sender",in:"query",required:!0,schema:{type:"string",format:"hex"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt","name"]}}]},"subaccount/all":{path:"/v1/subaccount/all",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"subaccount/balance":{path:"/v1/subaccount/balance",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["tokenName","updatedAt","amount"]}}]},"subaccount/{id}":{path:"/v1/subaccount/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},time:{path:"/v1/time",parameters:[]},token:{path:"/v1/token",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"depositEnabled",in:"query",required:!1,schema:{type:"boolean"}},{name:"withdrawEnabled",in:"query",required:!1,schema:{type:"boolean"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"token/transfer":{path:"/v1/token/transfer",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"statuses",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["SUBMITTED","PENDING","COMPLETED","REJECTED"]},uniqueItems:!0}},{name:"types",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["DEPOSIT","WITHDRAW","CONVERT"]}}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}},{name:"createdAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"createdBefore",in:"query",required:!1,schema:{type:"integer"}}]},"token/withdraw":{path:"/v1/token/withdraw",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"subaccountId",in:"query",required:!0,schema:{type:"string",format:"uuid"}},{name:"isActive",in:"query",required:!1,schema:{type:"boolean"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["createdAt"]}}]},"token/{id}":{path:"/v1/token/{id}",parameters:[{name:"id",in:"path",required:!0,schema:{type:"string"}}]},"usde/transfer":{path:"/v1/usde/transfer",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"address",in:"query",required:!0,schema:{type:"string",format:"hex"}},{name:"excludeTransferAddresses",in:"query",required:!1,schema:{type:"array",items:{type:"string",format:"hex"},maxItems:10,uniqueItems:!0}},{name:"statuses",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["PENDING","COMPLETED"]},uniqueItems:!0}},{name:"types",in:"query",required:!1,schema:{type:"array",items:{type:"string",enum:["DEPOSIT","WITHDRAW","TRANSFER"]},uniqueItems:!0}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["initiatedAt"]}},{name:"initiatedAfter",in:"query",required:!1,schema:{type:"integer"}},{name:"initiatedBefore",in:"query",required:!1,schema:{type:"integer"}}]},"archive/subaccount/balance":{path:"/v1/subaccount/balance",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["hour1","hour2","hour4","hour8","hour12","day1","week1","month1"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"tokenIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/funding":{path:"/v1/subaccount/funding",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"positionIds",in:"query",required:!1,schema:{minItems:1,maxItems:128,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}},{name:"productIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/position-fee":{path:"/v1/subaccount/position-fee",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"positionIds",in:"query",required:!1,schema:{minItems:1,maxItems:128,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}},{name:"productIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/unrealized-pnl":{path:"/v1/subaccount/unrealized-pnl",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["hour1","hour2","hour4","hour8","hour12","day1","week1","month1"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}},{name:"productIds",in:"query",required:!1,schema:{minItems:1,uniqueItems:!0,type:"array",items:{type:"string",format:"uuid"}}}]},"archive/subaccount/volume":{path:"/v1/subaccount/volume",host:"archive",parameters:[{name:"order",in:"query",required:!1,schema:{type:"string",enum:["asc","desc"]}},{name:"limit",in:"query",required:!1,schema:{type:"integer"}},{name:"cursor",in:"query",required:!1,schema:{type:"string"}},{name:"startTime",in:"query",required:!0,schema:{type:"number"}},{name:"endTime",in:"query",required:!1,schema:{type:"number"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["hour1","hour2","hour4","hour8","hour12","day1","week1","month1"]}},{name:"orderBy",in:"query",required:!1,schema:{type:"string",enum:["time"]}},{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}}]},"archive/subaccount/total-volume":{path:"/v1/subaccount/total-volume",host:"archive",parameters:[{name:"subaccountId",in:"query",required:!0,schema:{format:"uuid",type:"string"}}]},"candles/last-price/config":{path:"/v1/last-price/config",host:"candles",parameters:[]},"candles/last-price/time":{path:"/v1/last-price/time",host:"candles",parameters:[]},"candles/last-price/symbols":{path:"/v1/last-price/symbols",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}}]},"candles/last-price/search":{path:"/v1/last-price/search",host:"candles",parameters:[{name:"query",in:"query",schema:{type:"string"}},{name:"type",in:"query",schema:{type:"string"}},{name:"exchange",in:"query",schema:{type:"string"}},{name:"limit",in:"query",schema:{type:"integer",minimum:1,maximum:100}}]},"candles/last-price/history":{path:"/v1/last-price/history",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["1","3","5","15","30","60","120","240","480","720","1D","3D","1W","1M"]}},{name:"from",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"to",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"countback",in:"query",required:!1,schema:{type:"integer",minimum:0}}]},"candles/oracle-price/config":{path:"/v1/oracle-price/config",host:"candles",parameters:[]},"candles/oracle-price/time":{path:"/v1/oracle-price/time",host:"candles",parameters:[]},"candles/oracle-price/symbols":{path:"/v1/oracle-price/symbols",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}}]},"candles/oracle-price/search":{path:"/v1/oracle-price/search",host:"candles",parameters:[{name:"query",in:"query",schema:{type:"string"}},{name:"type",in:"query",schema:{type:"string"}},{name:"exchange",in:"query",schema:{type:"string"}},{name:"limit",in:"query",schema:{type:"integer",minimum:1,maximum:100}}]},"candles/oracle-price/history":{path:"/v1/oracle-price/history",host:"candles",parameters:[{name:"symbol",in:"query",required:!0,schema:{type:"string"}},{name:"resolution",in:"query",required:!0,schema:{type:"string",enum:["1","3","5","15","30","60","120","240","480","720","1D","3D","1W","1M"]}},{name:"from",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"to",in:"query",required:!0,schema:{type:"integer",minimum:0}},{name:"countback",in:"query",required:!1,schema:{type:"integer",minimum:0}}]}};var O={type:"string",format:"uuid"},de={type:"string",description:"ASCII subaccount name (default primary) or bytes32. Query IDs are UUIDs."},ue={subaccount:de,subaccountId:O};function ce(t,a){return a.type==="array"?((!Array.isArray(t)||t.length<Number(a.minItems??1)||t.length>Number(a.maxItems??200)||a.uniqueItems&&new Set(t).size!==t.length)&&i("Invalid Meridian perps query array."),t.flatMap(s=>ce(s,g(a.items)))):(a.type==="integer"||a.type==="number"?(typeof t!="number"||!Number.isSafeInteger(t)||t<Number(a.minimum??0)||t>Number(a.maximum??Number.MAX_SAFE_INTEGER))&&i("Invalid Meridian perps query integer."):a.type==="boolean"?typeof t!="boolean"&&i("Invalid Meridian perps query flag."):((typeof t!="string"||t.length<1||t.length>4096)&&i("Invalid Meridian perps query string."),a.format==="uuid"&&k(t),a.format==="hex"&&!/^0x(?:[0-9a-fA-F]{2})+$/.test(t)&&i("Invalid Meridian perps hexadecimal query.")),Array.isArray(a.enum)&&!a.enum.includes(t)&&i("Invalid Meridian perps query option."),[String(t)])}async function be(t,a,s){if(t.network==="testnet"&&i("Meridian perps extended reads require mainnet."),Object.keys(a).some(r=>!["resource","params"].includes(r))&&i("Use resource and params for Meridian perps reads."),a.resource===void 0&&a.params===void 0)return{chainId:f,resources:$,scope:"Fixed official public read routes and their exact query/path parameter schemas."};(typeof a.resource!="string"||!Object.hasOwn($,a.resource))&&i("Choose a Meridian perps resource from the tool schema.");let b=$[a.resource],l=a.params===void 0?{}:{...g(a.params)};a.resource==="subaccount"&&l.sender===void 0&&(l.sender=s),Object.keys(l).some(r=>!b.parameters.some(e=>e.name===r))&&i("Unsupported Meridian perps query parameter.");let h=new URLSearchParams,m=b.path;for(let r of b.parameters){let e=l[r.name];if(e===void 0){r.required&&i(`Meridian perps ${a.resource} needs ${r.name}.`);continue}r.name==="limit"&&(typeof e!="number"||e<1||e>100)&&i("Choose a page limit from 1 to 100.");let n=ce(e,r.schema);if(r.in==="path")r.name==="id"&&k(e),r.name==="address"&&S(e),m=m.replace(`{${r.name}}`,encodeURIComponent(n[0]));else for(let p of n)h.append(r.name,p)}let u=await A(t,`${m}${h.size?`?${h}`:""}`,void 0,b.host);if(u&&typeof u=="object"&&"hasNext"in u){let r=g(u);(typeof r.hasNext!="boolean"||!Array.isArray(r.data)||r.hasNext&&(typeof r.nextCursor!="string"||!r.nextCursor))&&i("Meridian perps returned invalid pagination metadata.")}return{chainId:f,resource:a.resource,data:u,scope:"One API response. Follow hasNext/nextCursor using the same filters; an accepted action or API balance is not proof of final on-chain delivery."}}async function D(t,a){let s=[],b=new Set,l;for(let h=0;h<100;h++){let m=g(await A(t,`${a}${a.includes("?")?"&":"?"}limit=100${l?`&cursor=${encodeURIComponent(l)}`:""}`));if((!Array.isArray(m.data)||typeof m.hasNext!="boolean")&&i("Meridian perps listing is incomplete."),s.push(...m.data.map(g)),!m.hasNext)return s;(typeof m.nextCursor!="string"||!m.nextCursor||b.has(m.nextCursor))&&i("Meridian perps pagination did not advance."),l=m.nextCursor,b.add(l)}return i("Meridian perps listing exceeded the safety bound; retry after indexing stabilizes.")}async function me(t,a,s,b,l){let h={};if(a!=="referral"&&!(a==="signer"&&s.mode==="extend")&&await V(t,s.subaccountId,b,F(s.subaccount)),a==="order"){let m=(await D(t,"/v1/product?order=asc")).filter(o=>o.onchainId===s.onchainId&&o.engineType===0);m.length!==1&&i("No unique Meridian perps product matches this onchainId.");let u=m[0];u.status!=="ACTIVE"&&i("The Meridian perps product is not active.");let r=BigInt(C(s.quantity,"the D9 quantity")),e=v(u.lotSize),n=v(u.tickSize);(!e||!n||r%e||r>v(u.maxQuantity)||!s.close&&r<v(u.minQuantity))&&i("Meridian perps quantity violates the current product limits or lot size.");for(let o of["price","stopPrice"])if(s[o]!==void 0){let d=BigInt(C(s[o],`the D9 ${o}`));(d%n||d<v(u.minPrice)||d>v(u.maxPrice))&&i("Meridian perps price violates current bounds or tick size.")}let p=g(await A(t,"/v1/order/dry-run",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({data:l})}));p.code!=="Ok"&&i("Meridian perps dry run did not accept this order. Inspect balances, isolated-pool conversions and current risk limits."),h={marginMode:u.marginMode,quoteTokenAddress:u.quoteTokenAddress,currentApiFeeFractions:{maker:u.makerFee,taker:u.takerFee},dryRun:p}}if(a==="withdraw"){let m=await W(t,s.tokenId);(!I(m.address,s.token)||m.withdrawEnabled!==!0)&&i("The chosen Meridian perps token is not enabled for withdrawal.");let u=(await D(t,`/v1/subaccount/balance?subaccountId=${k(s.subaccountId)}`)).find(r=>r.tokenId===s.tokenId);(!u||v(u.available)<BigInt(C(s.amount,"the D9 withdrawal amount")))&&i("Not enough available Meridian perps collateral. Unrealized trading profit is not withdrawable."),h={availableD9:v(u.available).toString(),withdrawFeeD9:v(m.withdrawFee).toString(),tokenSymbol:m.erc20Symbol,tokenNativeDecimals:m.erc20Decimals}}if(a==="convert"){let m=await D(t,"/v1/token?order=asc"),u=m.find(e=>I(e.address,s.fromToken)),r=m.find(e=>I(e.address,s.toToken));(!u||!r||(u.backingTokenId??u.id)!==(r.backingTokenId??r.id))&&i("The Meridian perps quote-token pools do not share a backing token."),h={fromTokenId:u.id,toTokenId:r.id,conversionFeeD9:"0",conversionRate:"1:1 in D9 accounting units"}}if(a==="signer"){let m=S(s.mode==="extend"?b:s.signer),r=(s.mode==="extend"?[g(await A(t,`/v1/linked-signer/address/${m}`))]:await D(t,`/v1/linked-signer?subaccountId=${k(s.subaccountId)}`)).filter(e=>I(e.signer,m));if(r.length!==1&&i("The Meridian linked signer does not match the requested subaccount."),s.mode==="extend"&&(r[0].status!=="ACTIVE"||typeof r[0].expiresAt!="number"||r[0].expiresAt<=Date.now())&&i("Only an active unexpired local Meridian signer can extend itself."),h={currentSignerStatus:r[0].status,expiresAtMilliseconds:r[0].expiresAt},s.mode==="revoke"){let e=g(await A(t,`/v1/order?subaccountId=${k(s.subaccountId)}&statuses=NEW&statuses=PENDING&statuses=FILLED_PARTIAL&limit=1`));(!Array.isArray(e.data)||e.data.length||e.hasNext!==!1)&&i("Cancel every working order and confirm cancellation before revoking a Meridian signer.")}}return h}var oe="Oak cannot place Meridian perps orders or initiate withdrawals; use Meridian's supported interface for those. Oak can only finalize a withdrawal that was already initiated there.",Ne=t=>{let a=new Map;async function s(){(t.network==="testnet"||await t.clientFor(f).getChainId()!==f)&&i("Meridian perps requires the mainnet RPC on chain 4663.")}async function b(r,e,n){if(te(r,e),B(r,e,n,"0",Math.floor(Date.now()/1e3)),e.continuation!==void 0){let w=g(e.continuation),E=typeof w.requestId=="string"?a.get(w.requestId):void 0;(!E||!I(E.round.wallet,n)||!H(E.round,w)||!H(E.args,Object.fromEntries(Object.entries(e).filter(([x])=>!["continuation","signature"].includes(x)))))&&i("Meridian perps continuation is lost, expired or belongs to different arguments. Check history before starting again.");let j=g(w.request);ie(`meridian_perps_${r}`,e,n,[{kind:"typedData",request:j}],w,void 0,Math.floor(Date.now()/1e3)),(typeof e.signature!="string"||!/^0x[0-9a-fA-F]{130}$/.test(e.signature))&&i("The local Meridian perps signature is missing."),clearTimeout(E.timer),a.delete(w.requestId),I(await fe({...j,signature:e.signature}),n)||i("The Meridian perps signature does not match this wallet."),await s();let pe=await R(t);H(X(B(r,e,n,String(w.nonce),Number(w.signedAt)),pe),j)||i("Meridian perps signing configuration changed; start again after checking history.");let P=B(r,e,n,String(w.nonce),Number(w.signedAt)),Q=P.path,U={};if(P.method==="GET"){Object.assign(U,{"X-Meridian-Auth":"EIP712Auth","X-Meridian-Sender":n,"X-Meridian-Signature":e.signature,"X-Meridian-Intent":"2","X-Meridian-SignedAt":String(w.signedAt)});let x=new URLSearchParams;e.cursor!==void 0&&((typeof e.cursor!="string"||!e.cursor||e.cursor.length>4096)&&i("Provide the returned Meridian referral cursor."),x.set("cursor",e.cursor)),e.limit!==void 0&&((typeof e.limit!="number"||!Number.isInteger(e.limit)||e.limit<1||e.limit>100)&&i("Choose a referral page limit from 1 to 100."),x.set("limit",String(e.limit))),x.size&&(Q+=`?${x}`)}else U["content-type"]="application/json";return{result:await A(t,Q,{method:P.method,headers:U,...P.method==="GET"?{}:{body:JSON.stringify({data:P.data,signature:e.signature})}}),chainId:f,summary:"Meridian API responded. This is not a fill or final withdrawal receipt. Check order, position and transfer status before a dependent action or retry."}}e.signature!==void 0&&i("A Meridian perps signature requires an active local signing round."),a.size>=1e3&&i("Too many pending Meridian perps signing rounds. Try again shortly."),await s();let p=await R(t),o=g(await A(t,"/v1/time")).time;(typeof o!="number"||!Number.isSafeInteger(o)||Math.abs(o-Date.now())>3e4)&&i("Meridian perps server time differs from the local clock; synchronize the clock before signing.");let d=Math.floor(o/1e3),y=(BigInt(o)*1000000n+BigInt(le(1e6))).toString(),c=B(r,e,n,y,d),q=await me(t,r,e,n,c.data),T=X(c,p),_=he(),J={stage:"perps_sign",requestId:_,chainId:f,wallet:n,expiresAt:d+90,signedAt:d,nonce:y,request:T,signatureTypes:{[c.primaryType]:p[c.primaryType]},data:c.data,path:c.path,method:c.method,review:q},K=setTimeout(()=>a.delete(_),9e4);return K.unref?.(),a.set(_,{args:structuredClone(e),round:structuredClone(J),timer:K}),{steps:[{kind:"typedData",request:T}],continuation:J,summary:"Review every Meridian perps field and sign locally. Amounts and prices in the typed message use D9 base units (9 decimals). An API acceptance is not an executed trade. No gasless signature simulates future sequencer execution."}}function l(r,e,n,p,o){return{name:r,inputSchema:{type:"object",properties:e,required:n,additionalProperties:!1,description:p},execute:async(d,y)=>{try{return g(d),S(y),(Object.keys(d).some(c=>!Object.hasOwn(e,c))||n.some(c=>d[c]===void 0))&&i("Provide the required Meridian perps tool inputs only."),await o(d,y)}catch(c){throw new Y(t.plainError(c))}}}}let h={...ue,continuation:{type:"object"},signature:{type:"string"},type:{type:"string",enum:["LIMIT","MARKET"]},side:{type:"integer",enum:[0,1]},onchainId:{type:"integer",minimum:1,maximum:4294967295},quantity:M("D9 product quantity base units (9 decimals); 0 only for a full close."),price:M("D9 limit price base units (9 decimals)."),stopPrice:M("D9 trigger price base units (9 decimals)."),amount:M("D9 amount base units (9 decimals)."),timeInForce:{type:"string",enum:["GTD","IOC","FOK"]},postOnly:{type:"boolean"},reduceOnly:{type:"boolean"},close:{type:"boolean"},clientOrderId:{type:"string"},stopType:{type:"integer",enum:[0,1]},expiresAt:M("Unix seconds order expiry."),groupId:O,groupContingencyType:{type:"integer",enum:[0,1]},all:{type:"boolean"},orderIds:{type:"array",items:O,maxItems:200},clientOrderIds:{type:"array",items:{type:"string"},maxItems:200},token:N,tokenId:O,fromToken:N,toToken:N,mode:{type:"string"},signer:N,code:{type:"string"},cursor:{type:"string"},limit:{type:"integer",minimum:1,maximum:100}},m={order:["subaccountId","type","side","onchainId","quantity"],cancel:["subaccountId"],withdraw:["subaccountId","token","tokenId","amount"],convert:["subaccountId","fromToken","toToken","amount"],signer:["mode"],referral:["mode"]},u=ee.map(r=>l(`meridian_perps_${r}`,Object.fromEntries([...re[r],"subaccount","subaccountId","continuation","signature"].map(e=>[e,h[e]])),m[r],`Prepare and locally sign a Meridian perps ${r}. Internal continuation only; never supply a signature manually. Requires the perps bridge integration.`,(e,n)=>b(r,e,n)));return u.unshift(l("meridian_perps_read",{resource:{type:"string",enum:Object.keys($),description:"Official mainnet public GET route. Includes products, accounts, balances, orders, fills, risk, transfers, signers, points and configuration."},params:{type:"object",description:"Exact documented query/path parameters; API decimals are returned verbatim, while Oak action inputs use base-unit strings."}},[],"Omit resource to discover every parameter schema locally. Otherwise read one official Meridian perps API page. Use nextCursor while hasNext is true.",(r,e)=>be(t,r,e))),u.push(ne(t,(r,e,n,p)=>me(t,r,e,n,p))),u.push(l("meridian_perps_deposit",{subaccount:de,tokenId:O,amount:M("Deposit token native base units; use erc20Decimals from token metadata."),referralCode:{type:"string",pattern:"^0x[0-9a-fA-F]{64}$"}},["tokenId","amount"],`Preview an exact ERC-20 approval and exchange deposit. First deposit registers the subaccount. ${oe}`,async(r,e)=>{await s(),await R(t);let n=await W(t,r.tokenId),p=S(n.address);(n.depositEnabled!==!0||typeof n.erc20Decimals!="number"||!Number.isInteger(n.erc20Decimals)||n.erc20Decimals<0||n.erc20Decimals>36||typeof n.erc20Symbol!="string")&&i("The Meridian perps token is not enabled for ERC-20 deposits.");let o=C(r.amount,"the deposit amount",!0);Z(o,n.erc20Decimals)<v(n.minDeposit)&&i(`Meridian perps deposit is below the current minimum ${n.minDeposit} ${n.erc20Symbol}.`);let d=t.clientFor(f),[y,c]=await Promise.all([d.readContract({address:p,abi:se,functionName:"balanceOf",args:[e]}),d.readContract({address:p,abi:se,functionName:"decimals"})]);(c!==n.erc20Decimals||y<BigInt(o))&&i("Meridian perps deposit token decimals or wallet balance do not match the requested deposit.");let q=[t.approval(p,z,o,f),t.unsignedTx({to:z,chainId:f,value:"0",data:ae({abi:L,functionName:"deposit",args:[F(r.subaccount),p,BigInt(o),r.referralCode===void 0?ge:G(r.referralCode)]}),description:`Deposit ${o} ${n.erc20Symbol} base units (${c} decimals) into Meridian perps.`})],T=await t.preview(q,e);return{txs:q,preview:T,token:{address:p,decimals:c,symbol:n.erc20Symbol,chainId:f},depositFee:n.depositFee,summary:`${T.summary} Approve exactly ${o} token base units and deposit. Sequencer registration and available margin must be checked separately. ${oe}`}})),u.push(l("meridian_perps_finalize",{...ue,withdrawDigest:{type:"string",pattern:"^0x[0-9a-fA-F]{64}$"}},["subaccountId","withdrawDigest"],"Preview same-chain withdrawal finalization for this owner after on-chain initiation. API acceptance alone does not permit finalization.",async(r,e)=>{await s(),await R(t);let n=await V(t,r.subaccountId,e,F(r.subaccount)),p=G(r.withdrawDigest),o=(await D(t,`/v1/token/withdraw?subaccountId=${k(n.id)}&order=desc`)).filter(q=>I(q.withdrawDigest,p));o.length!==1&&i("The withdrawal digest is not uniquely present in this subaccount history. Reconcile the request before retrying.");let d=o[0];(!I(d.subaccount,n.name)||d.finalizedBlockNumber!==void 0||typeof d.initiatedBlockNumber!="string"||d.lzDestinationEid!==0||!I(d.lzDestinationAddress,qe(e)))&&i("The withdrawal is not an initiated, unfinalized same-chain withdrawal to this wallet.");let y=[t.unsignedTx({to:z,chainId:f,value:"0",data:ae({abi:L,functionName:"finalizeWithdraw",args:[e,p]}),description:"Finalize the pending Meridian perps withdrawal to this wallet."})],c=await t.preview(y,e);return c.changes.some(q=>I(q.token.address,d.token)&&q.token.chainId===f&&BigInt(q.amount)>0n)||i("Meridian perps finalization preview did not show the token payout to this wallet."),{txs:y,preview:c,summary:`${c.summary} Finalize the same-chain withdrawal. Check the mined receipt and wallet balance; do not submit a digest twice.`}})),{tools:u,positions:async r=>{t.network==="testnet"&&i("Meridian perps positions require mainnet."),S(r);let e=await D(t,`/v1/subaccount?sender=${r}&order=asc`),n=[],p=new Set;for(let o of e){I(o.account,r)||i("Meridian perps returned another owner in the subaccount listing.");let d=k(o.id);for(let y of await D(t,`/v1/position?subaccountId=${d}&open=true`)){let c=v(y.size);if(c===0n)continue;let q=`perps:${d}:${k(y.id)}`,T=k(y.productId);(p.has(q)||y.side!==0&&y.side!==1)&&i("Meridian perps returned a repeated or invalid position."),p.add(q),n.push({module:"meridian",id:q,chainId:f,assets:[],description:`Meridian perps ${y.side===0?"long":"short"} product ${T}: ${c} D9 quantity base units (9 decimals), subaccount ${d}. Derivatives exposure; inspect perps account balances, funding and position fees separately.`})}}return n}}};export{be as a,oe as b,Ne as c};
|