perp-cli 0.12.15 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +278 -31
- package/dist/_stderr-filter.js +0 -1
- package/dist/agent-wallet/lighter-keystore.d.ts +11 -0
- package/dist/agent-wallet/lighter-keystore.js +92 -10
- package/dist/agent-wallet/passphrase.d.ts +1 -1
- package/dist/agent-wallet/passphrase.js +16 -3
- package/dist/agent-wallet/store.d.ts +37 -4
- package/dist/agent-wallet/store.js +132 -0
- package/dist/agent-wallet/venue-keystore.d.ts +14 -0
- package/dist/agent-wallet/venue-keystore.js +121 -0
- package/dist/api/public/hyperliquid.js +4 -4
- package/dist/api/public/lighter.js +5 -5
- package/dist/api/public/pacifica.d.ts +0 -1
- package/dist/api/public/pacifica.js +4 -13
- package/dist/api/public/urls.d.ts +9 -1
- package/dist/api/public/urls.js +35 -13
- package/dist/arb/file-lock.d.ts +11 -0
- package/dist/arb/file-lock.js +74 -0
- package/dist/arb/index.d.ts +2 -2
- package/dist/arb/index.js +2 -2
- package/dist/arb/pending-entry.d.ts +32 -0
- package/dist/arb/pending-entry.js +77 -0
- package/dist/arb/sizing.d.ts +6 -13
- package/dist/arb/sizing.js +12 -51
- package/dist/arb/state.d.ts +45 -12
- package/dist/arb/state.js +214 -42
- package/dist/arb/utils.d.ts +20 -6
- package/dist/arb/utils.js +43 -39
- package/dist/bot/conditions.d.ts +4 -4
- package/dist/bot/conditions.js +11 -6
- package/dist/bot/config.d.ts +17 -1
- package/dist/bot/config.js +48 -12
- package/dist/bot/engine.d.ts +61 -2
- package/dist/bot/engine.js +610 -144
- package/dist/bot/fill-size.d.ts +7 -0
- package/dist/bot/fill-size.js +18 -0
- package/dist/bot/index.d.ts +1 -1
- package/dist/bot/index.js +1 -1
- package/dist/bot/perp-order.d.ts +99 -0
- package/dist/bot/perp-order.js +299 -0
- package/dist/bot/presets.d.ts +7 -0
- package/dist/bot/presets.js +17 -0
- package/dist/bot/quarantine.d.ts +75 -0
- package/dist/bot/quarantine.js +190 -0
- package/dist/bot/quote-rules.d.ts +23 -0
- package/dist/bot/quote-rules.js +69 -0
- package/dist/bot/strategies/avellaneda-mm.d.ts +32 -2
- package/dist/bot/strategies/avellaneda-mm.js +72 -70
- package/dist/bot/strategies/basis-arb.js +2 -0
- package/dist/bot/strategies/dca-strategy.d.ts +2 -0
- package/dist/bot/strategies/dca-strategy.js +5 -0
- package/dist/bot/strategies/funding-arb-strategy.d.ts +43 -3
- package/dist/bot/strategies/funding-arb-strategy.js +571 -380
- package/dist/bot/strategies/funding-arb-utils.d.ts +48 -23
- package/dist/bot/strategies/funding-arb-utils.js +159 -195
- package/dist/bot/strategies/funding-arb-v2.d.ts +32 -0
- package/dist/bot/strategies/funding-arb-v2.js +258 -47
- package/dist/bot/strategies/funding-auto.js +215 -194
- package/dist/bot/strategies/spot-perp-arb-strategy.d.ts +14 -0
- package/dist/bot/strategies/spot-perp-arb-strategy.js +217 -50
- package/dist/bot/strategies/spot-perp-executor.d.ts +73 -19
- package/dist/bot/strategies/spot-perp-executor.js +319 -120
- package/dist/bot/strategies/spot-perp-state.d.ts +43 -0
- package/dist/bot/strategies/spot-perp-state.js +70 -0
- package/dist/bot/strategy-types.d.ts +6 -0
- package/dist/bot/tui/BotDashboard.d.ts +7 -2
- package/dist/bot/tui/BotDashboard.js +6 -3
- package/dist/bridge-engine.d.ts +120 -19
- package/dist/bridge-engine.js +710 -422
- package/dist/bridge-signers.d.ts +54 -0
- package/dist/bridge-signers.js +161 -0
- package/dist/cache.d.ts +4 -1
- package/dist/cache.js +11 -0
- package/dist/cli-flags.d.ts +50 -0
- package/dist/cli-flags.js +104 -0
- package/dist/cli-program.d.ts +35 -0
- package/dist/cli-program.js +286 -0
- package/dist/cli-spec.js +1 -1
- package/dist/client-id-tracker.js +11 -2
- package/dist/commands/account.d.ts +7 -1
- package/dist/commands/account.js +74 -84
- package/dist/commands/agent-import.d.ts +114 -0
- package/dist/commands/agent-import.js +794 -0
- package/dist/commands/agent.d.ts +232 -2
- package/dist/commands/agent.js +1858 -955
- package/dist/commands/alerts.d.ts +1 -0
- package/dist/commands/alerts.js +31 -28
- package/dist/commands/arb/index.d.ts +60 -1
- package/dist/commands/arb/index.js +381 -384
- package/dist/commands/arb-auto.d.ts +132 -4
- package/dist/commands/arb-auto.js +1474 -967
- package/dist/commands/arb.d.ts +3 -1
- package/dist/commands/arb.js +62 -30
- package/dist/commands/bot.js +127 -47
- package/dist/commands/bridge.d.ts +2 -1
- package/dist/commands/bridge.js +339 -192
- package/dist/commands/builder.d.ts +55 -0
- package/dist/commands/builder.js +387 -0
- package/dist/commands/funds-onchain.d.ts +32 -0
- package/dist/commands/funds-onchain.js +286 -0
- package/dist/commands/funds.d.ts +25 -0
- package/dist/commands/funds.js +939 -245
- package/dist/commands/history.js +72 -45
- package/dist/commands/init.d.ts +107 -15
- package/dist/commands/init.js +1116 -249
- package/dist/commands/jobs.d.ts +2 -1
- package/dist/commands/jobs.js +77 -15
- package/dist/commands/manage.js +136 -91
- package/dist/commands/market.d.ts +4 -1
- package/dist/commands/market.js +35 -32
- package/dist/commands/outcome.d.ts +10 -0
- package/dist/commands/outcome.js +396 -0
- package/dist/commands/plan.js +52 -12
- package/dist/commands/portfolio.d.ts +1 -0
- package/dist/commands/portfolio.js +60 -72
- package/dist/commands/rebalance.d.ts +2 -1
- package/dist/commands/rebalance.js +33 -43
- package/dist/commands/risk.js +46 -19
- package/dist/commands/settings.d.ts +1 -0
- package/dist/commands/settings.js +246 -51
- package/dist/commands/trade.d.ts +50 -0
- package/dist/commands/trade.js +1943 -695
- package/dist/commands/wallet.d.ts +30 -1
- package/dist/commands/wallet.js +316 -337
- package/dist/config.d.ts +60 -9
- package/dist/config.js +252 -82
- package/dist/constants.d.ts +29 -4
- package/dist/constants.js +62 -20
- package/dist/dashboard/server.d.ts +2 -0
- package/dist/dashboard/server.js +9 -6
- package/dist/dashboard/ui.js +6 -4
- package/dist/dashboard/ws-feeds.js +20 -8
- package/dist/dex-asset-map.js +5 -3
- package/dist/errors.d.ts +122 -0
- package/dist/errors.js +194 -0
- package/dist/event-stream.js +75 -19
- package/dist/evm-master-tx.d.ts +59 -0
- package/dist/evm-master-tx.js +154 -0
- package/dist/exchanges/adapter-network.d.ts +10 -0
- package/dist/exchanges/adapter-network.js +10 -0
- package/dist/exchanges/arcus/adapter.d.ts +196 -0
- package/dist/exchanges/arcus/adapter.js +1092 -0
- package/dist/exchanges/arcus/agent.d.ts +55 -0
- package/dist/exchanges/arcus/agent.js +188 -0
- package/dist/exchanges/arcus/client.d.ts +63 -0
- package/dist/exchanges/arcus/client.js +285 -0
- package/dist/exchanges/arcus/public.d.ts +65 -0
- package/dist/exchanges/arcus/public.js +138 -0
- package/dist/exchanges/arcus/signing.d.ts +176 -0
- package/dist/exchanges/arcus/signing.js +288 -0
- package/dist/exchanges/arcus/spot-chain.d.ts +60 -0
- package/dist/exchanges/arcus/spot-chain.js +241 -0
- package/dist/exchanges/arcus/spot-router.d.ts +177 -0
- package/dist/exchanges/arcus/spot-router.js +183 -0
- package/dist/exchanges/arcus/spot.d.ts +109 -0
- package/dist/exchanges/arcus/spot.js +645 -0
- package/dist/exchanges/aster-funds.d.ts +127 -0
- package/dist/exchanges/aster-funds.js +252 -0
- package/dist/exchanges/aster-nonce.d.ts +2 -0
- package/dist/exchanges/aster-nonce.js +107 -0
- package/dist/exchanges/aster-spot.d.ts +117 -0
- package/dist/exchanges/aster-spot.js +686 -0
- package/dist/exchanges/aster-typed-data.d.ts +133 -7
- package/dist/exchanges/aster-typed-data.js +121 -7
- package/dist/exchanges/aster.d.ts +219 -6
- package/dist/exchanges/aster.js +1023 -153
- package/dist/exchanges/builder-fee.d.ts +254 -0
- package/dist/exchanges/builder-fee.js +421 -0
- package/dist/exchanges/canonical-symbols.d.ts +32 -0
- package/dist/exchanges/canonical-symbols.js +96 -0
- package/dist/exchanges/capabilities.d.ts +7 -1
- package/dist/exchanges/capabilities.js +7 -0
- package/dist/exchanges/hl-signing.d.ts +165 -0
- package/dist/exchanges/hl-signing.js +158 -0
- package/dist/exchanges/hyperliquid-outcome.d.ts +211 -0
- package/dist/exchanges/hyperliquid-outcome.js +646 -0
- package/dist/exchanges/hyperliquid-spot.d.ts +44 -5
- package/dist/exchanges/hyperliquid-spot.js +308 -117
- package/dist/exchanges/hyperliquid.d.ts +462 -57
- package/dist/exchanges/hyperliquid.js +1575 -449
- package/dist/exchanges/index.d.ts +6 -0
- package/dist/exchanges/index.js +4 -0
- package/dist/exchanges/interface.d.ts +63 -10
- package/dist/exchanges/interface.js +18 -3
- package/dist/exchanges/ioc-outcome.d.ts +44 -0
- package/dist/exchanges/ioc-outcome.js +57 -0
- package/dist/exchanges/legacy-trading-v2.d.ts +39 -0
- package/dist/exchanges/legacy-trading-v2.js +940 -0
- package/dist/exchanges/lighter-public.d.ts +43 -0
- package/dist/exchanges/lighter-public.js +276 -0
- package/dist/exchanges/lighter-rh-deposit.d.ts +62 -0
- package/dist/exchanges/lighter-rh-deposit.js +185 -0
- package/dist/exchanges/lighter-signer.d.ts +123 -0
- package/dist/exchanges/lighter-signer.js +215 -0
- package/dist/exchanges/lighter-spot.d.ts +91 -13
- package/dist/exchanges/lighter-spot.js +595 -233
- package/dist/exchanges/lighter.d.ts +611 -39
- package/dist/exchanges/lighter.js +1890 -649
- package/dist/exchanges/ondo/adapter.d.ts +166 -0
- package/dist/exchanges/ondo/adapter.js +835 -0
- package/dist/exchanges/ondo/agent.d.ts +31 -0
- package/dist/exchanges/ondo/agent.js +101 -0
- package/dist/exchanges/ondo/client.d.ts +60 -0
- package/dist/exchanges/ondo/client.js +297 -0
- package/dist/exchanges/ondo/funds.d.ts +122 -0
- package/dist/exchanges/ondo/funds.js +290 -0
- package/dist/exchanges/ondo/public.d.ts +95 -0
- package/dist/exchanges/ondo/public.js +214 -0
- package/dist/exchanges/ondo/spot.d.ts +127 -0
- package/dist/exchanges/ondo/spot.js +392 -0
- package/dist/exchanges/outcome-interface.d.ts +140 -0
- package/dist/exchanges/outcome-interface.js +16 -0
- package/dist/exchanges/pacifica-spot.d.ts +83 -0
- package/dist/exchanges/pacifica-spot.js +324 -0
- package/dist/exchanges/pacifica-typed-data.d.ts +30 -13
- package/dist/exchanges/pacifica-typed-data.js +57 -9
- package/dist/exchanges/pacifica.d.ts +288 -4
- package/dist/exchanges/pacifica.js +1013 -76
- package/dist/exchanges/precision.d.ts +47 -0
- package/dist/exchanges/precision.js +209 -0
- package/dist/exchanges/qfex/adapter.d.ts +341 -0
- package/dist/exchanges/qfex/adapter.js +1383 -0
- package/dist/exchanges/qfex/agent.d.ts +58 -0
- package/dist/exchanges/qfex/agent.js +188 -0
- package/dist/exchanges/qfex/client.d.ts +54 -0
- package/dist/exchanges/qfex/client.js +138 -0
- package/dist/exchanges/qfex/errors.d.ts +70 -0
- package/dist/exchanges/qfex/errors.js +236 -0
- package/dist/exchanges/qfex/public.d.ts +122 -0
- package/dist/exchanges/qfex/public.js +268 -0
- package/dist/exchanges/qfex/signing.d.ts +160 -0
- package/dist/exchanges/qfex/signing.js +283 -0
- package/dist/exchanges/qfex/ws-transport.d.ts +294 -0
- package/dist/exchanges/qfex/ws-transport.js +798 -0
- package/dist/exchanges/rate-limiter.d.ts +12 -0
- package/dist/exchanges/rate-limiter.js +64 -0
- package/dist/exchanges/registry.d.ts +14 -2
- package/dist/exchanges/registry.js +20 -32
- package/dist/exchanges/slippage.d.ts +37 -0
- package/dist/exchanges/slippage.js +70 -0
- package/dist/exchanges/spot-factory.d.ts +166 -0
- package/dist/exchanges/spot-factory.js +431 -0
- package/dist/exchanges/spot-interface.d.ts +98 -4
- package/dist/exchanges/spot-interface.js +27 -1
- package/dist/exchanges/spot-result.d.ts +79 -0
- package/dist/exchanges/spot-result.js +273 -0
- package/dist/exchanges/trading-v2.d.ts +117 -0
- package/dist/exchanges/trading-v2.js +301 -0
- package/dist/exchanges/venue-types.d.ts +231 -0
- package/dist/exchanges/venue-types.js +87 -0
- package/dist/exchanges/venue.d.ts +211 -0
- package/dist/exchanges/venue.js +132 -0
- package/dist/exchanges/venues/arcus.d.ts +8 -0
- package/dist/exchanges/venues/arcus.js +109 -0
- package/dist/exchanges/venues/aster.d.ts +49 -0
- package/dist/exchanges/venues/aster.js +176 -0
- package/dist/exchanges/venues/create-helpers.d.ts +18 -0
- package/dist/exchanges/venues/create-helpers.js +199 -0
- package/dist/exchanges/venues/hyperliquid.d.ts +23 -0
- package/dist/exchanges/venues/hyperliquid.js +126 -0
- package/dist/exchanges/venues/index.d.ts +16 -0
- package/dist/exchanges/venues/index.js +26 -0
- package/dist/exchanges/venues/lighter-family.d.ts +92 -0
- package/dist/exchanges/venues/lighter-family.js +166 -0
- package/dist/exchanges/venues/lighter-rh.d.ts +7 -0
- package/dist/exchanges/venues/lighter-rh.js +58 -0
- package/dist/exchanges/venues/lighter.d.ts +6 -0
- package/dist/exchanges/venues/lighter.js +55 -0
- package/dist/exchanges/venues/ondo.d.ts +34 -0
- package/dist/exchanges/venues/ondo.js +140 -0
- package/dist/exchanges/venues/pacifica.d.ts +8 -0
- package/dist/exchanges/venues/pacifica.js +95 -0
- package/dist/exchanges/venues/qfex.d.ts +28 -0
- package/dist/exchanges/venues/qfex.js +132 -0
- package/dist/execution-log.js +10 -2
- package/dist/funding/legacy-public.d.ts +31 -0
- package/dist/funding/legacy-public.js +369 -0
- package/dist/funding/normalize.d.ts +28 -16
- package/dist/funding/normalize.js +61 -29
- package/dist/funding/rates.d.ts +46 -11
- package/dist/funding/rates.js +228 -277
- package/dist/guardrail/perp-guardrail.js +0 -0
- package/dist/index.js +157 -682
- package/dist/jobs.d.ts +84 -6
- package/dist/jobs.js +239 -41
- package/dist/landing.d.ts +14 -0
- package/dist/landing.js +36 -0
- package/dist/mcp-server.d.ts +14 -4
- package/dist/mcp-server.js +820 -402
- package/dist/mcp-trade-guard.d.ts +16 -0
- package/dist/mcp-trade-guard.js +59 -0
- package/dist/pacifica/client.d.ts +41 -10
- package/dist/pacifica/client.js +167 -63
- package/dist/pacifica/constants.d.ts +0 -1
- package/dist/pacifica/constants.js +0 -5
- package/dist/pacifica/deposit.d.ts +30 -3
- package/dist/pacifica/deposit.js +119 -2
- package/dist/pacifica/faucet.d.ts +29 -0
- package/dist/pacifica/faucet.js +100 -0
- package/dist/pacifica/sign-tx.d.ts +15 -0
- package/dist/pacifica/sign-tx.js +41 -0
- package/dist/pacifica/types/account.d.ts +28 -4
- package/dist/pacifica/types/lake.d.ts +20 -5
- package/dist/pacifica/types/lake.js +4 -0
- package/dist/pacifica/types/market.d.ts +5 -0
- package/dist/pacifica/types/order.d.ts +4 -1
- package/dist/pacifica/types/position.d.ts +9 -1
- package/dist/plan-executor.d.ts +10 -5
- package/dist/plan-executor.js +165 -54
- package/dist/position-history.js +13 -0
- package/dist/rebalance.d.ts +26 -2
- package/dist/rebalance.js +86 -7
- package/dist/relay-swap.d.ts +232 -0
- package/dist/relay-swap.js +630 -0
- package/dist/risk.js +5 -1
- package/dist/secret-env.d.ts +15 -0
- package/dist/secret-env.js +36 -0
- package/dist/settings.d.ts +169 -6
- package/dist/settings.js +219 -38
- package/dist/signer/ows-evm.d.ts +13 -0
- package/dist/signer/ows-evm.js +22 -0
- package/dist/smart-order.d.ts +9 -0
- package/dist/smart-order.js +53 -8
- package/dist/strategies/dca.d.ts +6 -2
- package/dist/strategies/dca.js +66 -26
- package/dist/strategies/funding-arb.d.ts +11 -1
- package/dist/strategies/funding-arb.js +202 -89
- package/dist/strategies/grid.d.ts +31 -0
- package/dist/strategies/grid.js +89 -11
- package/dist/strategies/pending-stop.d.ts +8 -0
- package/dist/strategies/pending-stop.js +12 -0
- package/dist/strategies/split-order.d.ts +45 -17
- package/dist/strategies/split-order.js +157 -91
- package/dist/strategies/trailing-stop.d.ts +2 -1
- package/dist/strategies/trailing-stop.js +52 -6
- package/dist/strategies/twap.d.ts +6 -1
- package/dist/strategies/twap.js +39 -11
- package/dist/trade-validator.d.ts +22 -0
- package/dist/trade-validator.js +119 -15
- package/dist/utils/numeric.d.ts +46 -0
- package/dist/utils/numeric.js +79 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.js +96 -19
- package/dist/withdraw-gate.d.ts +49 -0
- package/dist/withdraw-gate.js +131 -0
- package/package.json +15 -6
- package/skills/perp-cli/SKILL.md +338 -134
- package/skills/perp-cli/references/agent-operations.md +181 -92
- package/skills/perp-cli/references/commands.md +475 -132
- package/skills/perp-cli/references/strategies.md +44 -38
- package/skills/perp-cli/scripts/arb-monitor.sh +22 -17
- package/skills/perp-cli/scripts/funding-analysis.sh +20 -10
- package/skills/perp-cli/scripts/preflight.sh +21 -14
- package/skills/perp-cli/scripts/spot-perp-scan.sh +12 -7
- package/skills/perp-cli/scripts/validate-arb.sh +33 -16
- package/vendor/lighter-signer/SHA256SUMS +2 -0
- package/vendor/lighter-signer/VERSION +8 -0
- package/vendor/lighter-signer/lighter-signer.wasm +0 -0
- package/vendor/lighter-signer/wasm_exec.js +575 -0
- package/dist/bot/strategies/funding-arb-v2-strategy.d.ts +0 -42
- package/dist/bot/strategies/funding-arb-v2-strategy.js +0 -864
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relay cross-chain swaps (https://api.relay.link, docs https://docs.relay.link) with local
|
|
3
|
+
* verification of every quote before the master wallet signs anything.
|
|
4
|
+
*
|
|
5
|
+
* Flow: POST /quote (EXACT_INPUT, includeProtocolData) → verify → execute the EVM-origin steps
|
|
6
|
+
* (ERC-20 approve for the exact amount + depository deposit, signed by the OWS master) →
|
|
7
|
+
* poll GET /intents/status/v3 until success / failure (bounded; unknown → ORDER_PENDING with
|
|
8
|
+
* the request id).
|
|
9
|
+
*
|
|
10
|
+
* Verification follows Relay's "Input Validation" guide
|
|
11
|
+
* (docs.relay.link/references/api/api_core_concepts/input-validation):
|
|
12
|
+
* 1. the protocol order (`protocol.v2.orderData`) pays the expected recipient the expected
|
|
13
|
+
* currency on the expected chain, takes exactly the requested input, has no extra calls,
|
|
14
|
+
* refunds only to the sender / recipient and is not expired;
|
|
15
|
+
* 2. the order id is recomputed locally (EIP-712 struct hash of the order — a port of
|
|
16
|
+
* `getOrderId` from @relay-protocol/settlement-sdk) and must equal `protocol.v2.orderId`;
|
|
17
|
+
* 3. the deposit transaction pays Relay's canonical depository — PINNED below per chain, never
|
|
18
|
+
* taken from the quote — commits to that order id, credits the sender as depositor and moves
|
|
19
|
+
* exactly the order's input; an approve step may only approve that depository for the exact
|
|
20
|
+
* amount on the origin token. Any other step, target, spender, amount or chain id is refused.
|
|
21
|
+
*
|
|
22
|
+
* Mainnet only. Origin must be an EVM chain (the master EVM wallet signs); the destination may be
|
|
23
|
+
* EVM or Solana. The recipient is always the master wallet's own address — enforced by the CLI.
|
|
24
|
+
*/
|
|
25
|
+
import { type TxSigner } from "./evm-master-tx.js";
|
|
26
|
+
import type { Network } from "./exchanges/venue-types.js";
|
|
27
|
+
export declare const RELAY_API = "https://api.relay.link";
|
|
28
|
+
export interface RelayAsset {
|
|
29
|
+
/** Token address; native = zero address (EVM) / system program (Solana), per Relay docs. */
|
|
30
|
+
address: string;
|
|
31
|
+
/** Pinned decimals — cross-checked against the quote and, for an ERC-20 origin, the chain. */
|
|
32
|
+
decimals: number;
|
|
33
|
+
/** USD stablecoin or the chain's native gas token. */
|
|
34
|
+
kind: "stable" | "native";
|
|
35
|
+
}
|
|
36
|
+
export interface RelayChainDef {
|
|
37
|
+
/** Relay chain id (EVM chain id; Solana = 792703809). */
|
|
38
|
+
chainId: number;
|
|
39
|
+
/** `protocol.v2.chainId` of the chain in Relay orders. */
|
|
40
|
+
protocolChainId: string;
|
|
41
|
+
vm: "evm" | "svm";
|
|
42
|
+
label: string;
|
|
43
|
+
/** Public JSON-RPC (EVM origins). */
|
|
44
|
+
rpcUrl: string | null;
|
|
45
|
+
/** Relay depository (EVM origins) — GET /chains `protocol.v2.depository`. */
|
|
46
|
+
depository: string | null;
|
|
47
|
+
assets: Readonly<Record<string, RelayAsset>>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Chains + assets the CLI bridges with Relay. Chain ids, protocol chain ids, depository and token
|
|
51
|
+
* addresses verified 2026-10-05 against GET https://api.relay.link/chains (4663 "robinhood" with
|
|
52
|
+
* USDG, 792703809 "solana", 56 "bnb", 42161 "arbitrum", 8453 "base") and the token issuers'
|
|
53
|
+
* address lists (Circle USDC, Tether USDT, Paxos USDG on Robinhood Chain).
|
|
54
|
+
*/
|
|
55
|
+
export declare const RELAY_CHAINS: Readonly<Record<string, RelayChainDef>>;
|
|
56
|
+
/** Default slippage floor for same-value pairs: expected out ≥ amount in × (1 − 3 %). */
|
|
57
|
+
export declare const RELAY_MAX_SLIPPAGE_BPS = 300n;
|
|
58
|
+
/**
|
|
59
|
+
* Floor on the protocol-GUARANTEED minimum (docs.relay.link: "Compare `minimumAmount`, not
|
|
60
|
+
* `expectedAmount`"): the order's minimum may be at most this far below the amount in.
|
|
61
|
+
*/
|
|
62
|
+
export declare const RELAY_MAX_GUARANTEED_LOSS_BPS = 600n;
|
|
63
|
+
export declare const RELAY_STATUS_TIMEOUT_MS = 300000;
|
|
64
|
+
export declare const RELAY_STATUS_POLL_MS = 3000;
|
|
65
|
+
export declare function relayChain(name: string): RelayChainDef;
|
|
66
|
+
export declare function relayAsset(chain: string, symbol: string): RelayAsset;
|
|
67
|
+
interface RelayOrderData {
|
|
68
|
+
version: string;
|
|
69
|
+
solverChainId: string;
|
|
70
|
+
solver: string;
|
|
71
|
+
salt: string;
|
|
72
|
+
inputs: Array<{
|
|
73
|
+
payment: {
|
|
74
|
+
chainId: string;
|
|
75
|
+
currency: string;
|
|
76
|
+
amount: string;
|
|
77
|
+
weight: string;
|
|
78
|
+
};
|
|
79
|
+
refunds: Array<{
|
|
80
|
+
chainId: string;
|
|
81
|
+
recipient: string;
|
|
82
|
+
currency: string;
|
|
83
|
+
minimumAmount: string;
|
|
84
|
+
deadline: number;
|
|
85
|
+
extraData: string;
|
|
86
|
+
}>;
|
|
87
|
+
}>;
|
|
88
|
+
output: {
|
|
89
|
+
chainId: string;
|
|
90
|
+
deadline: number;
|
|
91
|
+
calls: string[];
|
|
92
|
+
extraData: string;
|
|
93
|
+
payments: Array<{
|
|
94
|
+
recipient: string;
|
|
95
|
+
currency: string;
|
|
96
|
+
minimumAmount: string;
|
|
97
|
+
expectedAmount: string;
|
|
98
|
+
}>;
|
|
99
|
+
};
|
|
100
|
+
fees: Array<{
|
|
101
|
+
recipientChainId: string;
|
|
102
|
+
recipient: string;
|
|
103
|
+
currencyChainId: string;
|
|
104
|
+
currency: string;
|
|
105
|
+
amount: string;
|
|
106
|
+
}>;
|
|
107
|
+
}
|
|
108
|
+
/** EIP-712 struct hash of a Relay v1 order — must equal `protocol.v2.orderId`. */
|
|
109
|
+
export declare function relayOrderId(o: RelayOrderData): string;
|
|
110
|
+
export interface RelaySwapRequest {
|
|
111
|
+
from: string;
|
|
112
|
+
to: string;
|
|
113
|
+
fromAsset: string;
|
|
114
|
+
toAsset: string;
|
|
115
|
+
/** Input amount in token units (decimal string). */
|
|
116
|
+
amount: string;
|
|
117
|
+
sender: string;
|
|
118
|
+
recipient: string;
|
|
119
|
+
}
|
|
120
|
+
/** One transaction of the quote, already checked against the order (see verifyRelaySteps). */
|
|
121
|
+
export interface RelayTx {
|
|
122
|
+
kind: "approve" | "deposit";
|
|
123
|
+
to: string;
|
|
124
|
+
data: string;
|
|
125
|
+
value: bigint;
|
|
126
|
+
chainId: number;
|
|
127
|
+
}
|
|
128
|
+
export interface RelaySwapQuote {
|
|
129
|
+
provider: "relay";
|
|
130
|
+
requestId: string;
|
|
131
|
+
orderId: string;
|
|
132
|
+
from: string;
|
|
133
|
+
to: string;
|
|
134
|
+
fromAsset: string;
|
|
135
|
+
toAsset: string;
|
|
136
|
+
sender: string;
|
|
137
|
+
recipient: string;
|
|
138
|
+
amountIn: string;
|
|
139
|
+
amountInRaw: string;
|
|
140
|
+
/** Quoted estimate (order `expectedAmount`). */
|
|
141
|
+
expectedOut: string;
|
|
142
|
+
expectedOutRaw: string;
|
|
143
|
+
/** Floor the protocol enforces at settlement (order `minimumAmount`). */
|
|
144
|
+
minimumOut: string;
|
|
145
|
+
minimumOutRaw: string;
|
|
146
|
+
amountInUsd: string | null;
|
|
147
|
+
expectedOutUsd: string | null;
|
|
148
|
+
fees: {
|
|
149
|
+
originGasUsd: string | null;
|
|
150
|
+
relayerUsd: string;
|
|
151
|
+
relayerGasUsd: string | null;
|
|
152
|
+
relayerServiceUsd: string | null;
|
|
153
|
+
appUsd: string | null;
|
|
154
|
+
};
|
|
155
|
+
/** Relay's `details.totalImpact.percent` (negative = cost). */
|
|
156
|
+
totalImpactPercent: string | null;
|
|
157
|
+
timeEstimateSec: number | null;
|
|
158
|
+
/** Unix seconds after which the order can no longer fill. */
|
|
159
|
+
deadline: number;
|
|
160
|
+
/** Verified transactions to send, in order. */
|
|
161
|
+
txs: RelayTx[];
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* The quote's transactions, each checked: chain id = origin, `from` = sender, the approve targets
|
|
165
|
+
* the origin token and approves only the pinned depository for exactly the input, the deposit pays
|
|
166
|
+
* the pinned depository, commits to the verified order id, credits the sender and moves exactly
|
|
167
|
+
* the input. Anything else → POLICY_DENIED.
|
|
168
|
+
*/
|
|
169
|
+
export declare function verifyRelaySteps(steps: unknown, ctx: {
|
|
170
|
+
origin: RelayChainDef;
|
|
171
|
+
asset: RelayAsset;
|
|
172
|
+
amountInRaw: bigint;
|
|
173
|
+
sender: string;
|
|
174
|
+
orderId: string;
|
|
175
|
+
}): RelayTx[];
|
|
176
|
+
/** Verify a raw POST /quote response against the request; returns the typed, checked quote. */
|
|
177
|
+
export declare function verifyRelayQuote(raw: unknown, req: RelaySwapRequest, nowSec: number): RelaySwapQuote;
|
|
178
|
+
/** POST /quote (a read) + local verification. */
|
|
179
|
+
export declare function quoteRelaySwap(req: RelaySwapRequest): Promise<RelaySwapQuote>;
|
|
180
|
+
export interface RelayMinOutVerdict {
|
|
181
|
+
ok: boolean;
|
|
182
|
+
/** "explicit" = --min-out against the protocol-enforced minimum; "default" = the 3 % rule against the expected output. */
|
|
183
|
+
rule: "explicit" | "default" | "required";
|
|
184
|
+
floor: string | null;
|
|
185
|
+
reason: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Output protection:
|
|
189
|
+
* --min-out given → the order's protocol-enforced `minimumAmount` must be ≥ it (Relay docs:
|
|
190
|
+
* "Compare minimumAmount, not expectedAmount");
|
|
191
|
+
* no --min-out, same-value pair (stable → stable, or the same native asset) → the expected
|
|
192
|
+
* output must be ≥ amount in × (1 − 3 %);
|
|
193
|
+
* no --min-out, any other pair (stable → native, …) → refused: an explicit --min-out is required.
|
|
194
|
+
*/
|
|
195
|
+
export declare function relayMinOutVerdict(q: RelaySwapQuote, minOut: string | null): RelayMinOutVerdict;
|
|
196
|
+
/** Throws when the quote does not satisfy the output protection (nothing was sent). */
|
|
197
|
+
export declare function assertRelayMinOut(q: RelaySwapQuote, minOut: string | null): RelayMinOutVerdict;
|
|
198
|
+
export interface RelaySwapResult {
|
|
199
|
+
provider: "relay";
|
|
200
|
+
requestId: string;
|
|
201
|
+
status: "success";
|
|
202
|
+
approveTxHash: string | null;
|
|
203
|
+
depositTxHash: string;
|
|
204
|
+
/** Destination transaction hashes reported by Relay. */
|
|
205
|
+
destinationTxHashes: string[];
|
|
206
|
+
from: string;
|
|
207
|
+
to: string;
|
|
208
|
+
fromAsset: string;
|
|
209
|
+
toAsset: string;
|
|
210
|
+
amountIn: string;
|
|
211
|
+
expectedOut: string;
|
|
212
|
+
minimumOut: string;
|
|
213
|
+
recipient: string;
|
|
214
|
+
}
|
|
215
|
+
export interface RelayPollTiming {
|
|
216
|
+
timeoutMs: number;
|
|
217
|
+
pollMs: number;
|
|
218
|
+
sleep: (ms: number) => Promise<void>;
|
|
219
|
+
now: () => number;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Poll GET /intents/status/v3 until the intent is terminal. success → destination tx hashes;
|
|
223
|
+
* failure / refund → ACTION_REJECTED (definite: Relay did not fill; a refund returns the input);
|
|
224
|
+
* anything else until the deadline → ORDER_PENDING with the request id and the deposit tx hash.
|
|
225
|
+
*/
|
|
226
|
+
export declare function awaitRelayFill(requestId: string, depositTxHash: string, timing: RelayPollTiming): Promise<string[]>;
|
|
227
|
+
/**
|
|
228
|
+
* Execute a verified quote: read-only origin checks (chain id, on-chain decimals, balance), the
|
|
229
|
+
* approve (when the quote has one) and the deposit, then wait for the fill.
|
|
230
|
+
*/
|
|
231
|
+
export declare function executeRelaySwap(network: Network, q: RelaySwapQuote, sign: TxSigner, timing?: RelayPollTiming): Promise<RelaySwapResult>;
|
|
232
|
+
export {};
|