@oracle-agent/oracle 0.11.0 → 0.13.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.
Files changed (487) hide show
  1. package/LICENSE +115 -201
  2. package/README.md +13 -516
  3. package/bin/oracle.mjs +19 -27
  4. package/package.json +15 -98
  5. package/CONTRIBUTING.md +0 -98
  6. package/SECURITY.md +0 -89
  7. package/SETUP.md +0 -381
  8. package/artifacts/inscription/oracle-was-here-preview.png +0 -0
  9. package/artifacts/inscription/oracle-was-here.svg +0 -1
  10. package/artifacts/specialist-packs/oracle-full-crypto.json +0 -295
  11. package/bin/desk-server.mjs +0 -440
  12. package/bin/oracle-data-mcp.mjs +0 -1019
  13. package/bin/oracle-init.mjs +0 -496
  14. package/bin/oracle-public-server.mjs +0 -36
  15. package/bin/oracle-route.mjs +0 -254
  16. package/bin/oracle-scan.mjs +0 -192
  17. package/bin/oracle-upgrade.mjs +0 -42
  18. package/docs/adding-a-chain.md +0 -229
  19. package/docs/architecture.md +0 -138
  20. package/docs/cli.md +0 -47
  21. package/docs/connectors.md +0 -13
  22. package/docs/oracle-pack-standard.md +0 -29
  23. package/docs/profiles.md +0 -151
  24. package/docs/public-surface.md +0 -133
  25. package/examples/add-a-chain.mjs +0 -65
  26. package/examples/oracle-pack-template.mjs +0 -38
  27. package/examples/research-a-token.mjs +0 -70
  28. package/plugins/oracle-owner-gate/__init__.py +0 -227
  29. package/plugins/oracle-owner-gate/plugin.yaml +0 -9
  30. package/profiles/_template/SOUL.md +0 -54
  31. package/profiles/_template/profile.json +0 -22
  32. package/profiles/bitcoin-agent/SOUL.md +0 -31
  33. package/profiles/bitcoin-agent/profile.json +0 -32
  34. package/profiles/hyperliquid-agent/SOUL.md +0 -34
  35. package/profiles/hyperliquid-agent/profile.json +0 -37
  36. package/profiles/oracle/SOUL.md +0 -107
  37. package/profiles/oracle/profile.json +0 -39
  38. package/profiles/polymarket-agent/SOUL.md +0 -35
  39. package/profiles/polymarket-agent/profile.json +0 -34
  40. package/profiles/profile.schema.json +0 -90
  41. package/profiles/protocol-builder/SOUL.md +0 -57
  42. package/profiles/protocol-builder/profile.json +0 -39
  43. package/profiles/robinhood-agent/SOUL.md +0 -53
  44. package/profiles/robinhood-agent/profile.json +0 -40
  45. package/profiles/solana-agent/SOUL.md +0 -37
  46. package/profiles/solana-agent/profile.json +0 -37
  47. package/profiles/stable-agent/SOUL.md +0 -43
  48. package/profiles/stable-agent/profile.json +0 -37
  49. package/protocols/templates/safe-erc20/SECURITY.md +0 -16
  50. package/protocols/templates/safe-erc20/foundry.toml +0 -12
  51. package/protocols/templates/safe-erc20/remappings.txt +0 -2
  52. package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
  53. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
  54. package/public/agent-connect/app.js +0 -84
  55. package/public/agent-connect/index.html +0 -83
  56. package/public/agent-connect/styles.css +0 -70
  57. package/public/index.html +0 -12
  58. package/public/oracle-console/app.js +0 -272
  59. package/public/oracle-console/bitcoin-wallets.js +0 -206
  60. package/public/oracle-console/index.html +0 -91
  61. package/public/oracle-console/styles.css +0 -239
  62. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  63. package/public/oracle-splash/assets/hero/orb.avif +0 -0
  64. package/public/oracle-splash/assets/hero/orb.webm +0 -0
  65. package/public/oracle-splash/assets/llms/claude.svg +0 -1
  66. package/public/oracle-splash/assets/llms/codex-icon.svg +0 -1
  67. package/public/oracle-splash/assets/llms/codex.svg +0 -1
  68. package/public/oracle-splash/assets/llms/cursor-icon.svg +0 -12
  69. package/public/oracle-splash/assets/llms/cursor.svg +0 -17
  70. package/public/oracle-splash/assets/llms/deepseek.svg +0 -1
  71. package/public/oracle-splash/assets/llms/gemini-icon.svg +0 -1
  72. package/public/oracle-splash/assets/llms/gemini.svg +0 -1
  73. package/public/oracle-splash/assets/llms/grok.svg +0 -8
  74. package/public/oracle-splash/assets/llms/hermes.png +0 -0
  75. package/public/oracle-splash/assets/llms/kimi-icon.svg +0 -1
  76. package/public/oracle-splash/assets/llms/kimi.svg +0 -1
  77. package/public/oracle-splash/assets/llms/manus.svg +0 -18
  78. package/public/oracle-splash/assets/llms/openclaw.svg +0 -22
  79. package/public/oracle-splash/assets/llms/perplexity.svg +0 -1
  80. package/public/oracle-splash/assets/llms/qwen.svg +0 -1
  81. package/public/oracle-splash/assets/llms/windsurf.svg +0 -1
  82. package/public/oracle-splash/assets/protocols/abcdex.png +0 -0
  83. package/public/oracle-splash/assets/protocols/across.png +0 -0
  84. package/public/oracle-splash/assets/protocols/aerodrome.png +0 -0
  85. package/public/oracle-splash/assets/protocols/balancer.png +0 -0
  86. package/public/oracle-splash/assets/protocols/cowswap.png +0 -0
  87. package/public/oracle-splash/assets/protocols/curve.png +0 -0
  88. package/public/oracle-splash/assets/protocols/dreamcash.png +0 -0
  89. package/public/oracle-splash/assets/protocols/felix.png +0 -0
  90. package/public/oracle-splash/assets/protocols/gmx.png +0 -0
  91. package/public/oracle-splash/assets/protocols/hyena.png +0 -0
  92. package/public/oracle-splash/assets/protocols/hyperbeat.png +0 -0
  93. package/public/oracle-splash/assets/protocols/hyperliquid.png +0 -0
  94. package/public/oracle-splash/assets/protocols/hyperswap.png +0 -0
  95. package/public/oracle-splash/assets/protocols/jupiter.png +0 -0
  96. package/public/oracle-splash/assets/protocols/kinetiq.png +0 -0
  97. package/public/oracle-splash/assets/protocols/lfj.png +0 -0
  98. package/public/oracle-splash/assets/protocols/lifi.png +0 -0
  99. package/public/oracle-splash/assets/protocols/magic-eden.png +0 -0
  100. package/public/oracle-splash/assets/protocols/morpho.png +0 -0
  101. package/public/oracle-splash/assets/protocols/odos.png +0 -0
  102. package/public/oracle-splash/assets/protocols/oneinch.png +0 -0
  103. package/public/oracle-splash/assets/protocols/opensea.png +0 -0
  104. package/public/oracle-splash/assets/protocols/pancakeswap.png +0 -0
  105. package/public/oracle-splash/assets/protocols/paragon.png +0 -0
  106. package/public/oracle-splash/assets/protocols/paraswap.png +0 -0
  107. package/public/oracle-splash/assets/protocols/pendle.png +0 -0
  108. package/public/oracle-splash/assets/protocols/polymarket.png +0 -0
  109. package/public/oracle-splash/assets/protocols/quickswap.png +0 -0
  110. package/public/oracle-splash/assets/protocols/relay.png +0 -0
  111. package/public/oracle-splash/assets/protocols/stargate.png +0 -0
  112. package/public/oracle-splash/assets/protocols/tradexyz.png +0 -0
  113. package/public/oracle-splash/assets/protocols/uniswap.png +0 -0
  114. package/public/oracle-splash/assets/protocols/velodrome.png +0 -0
  115. package/public/oracle-splash/assets/protocols/ventuals.png +0 -0
  116. package/public/oracle-splash/assets/wordmarks/across-icon.webp +0 -0
  117. package/public/oracle-splash/assets/wordmarks/across.svg +0 -4
  118. package/public/oracle-splash/assets/wordmarks/aerodrome.svg +0 -23
  119. package/public/oracle-splash/assets/wordmarks/balancer.svg +0 -3
  120. package/public/oracle-splash/assets/wordmarks/cowswap.svg +0 -1
  121. package/public/oracle-splash/assets/wordmarks/curve.png +0 -0
  122. package/public/oracle-splash/assets/wordmarks/gmx.svg +0 -13
  123. package/public/oracle-splash/assets/wordmarks/hop-icon.webp +0 -0
  124. package/public/oracle-splash/assets/wordmarks/hyena.svg +0 -7
  125. package/public/oracle-splash/assets/wordmarks/hyperliquid.svg +0 -21
  126. package/public/oracle-splash/assets/wordmarks/hyperswap.svg +0 -13
  127. package/public/oracle-splash/assets/wordmarks/jupiter.svg +0 -35
  128. package/public/oracle-splash/assets/wordmarks/kinetiq.svg +0 -1
  129. package/public/oracle-splash/assets/wordmarks/lfj.webp +0 -0
  130. package/public/oracle-splash/assets/wordmarks/lifi.png +0 -0
  131. package/public/oracle-splash/assets/wordmarks/magic-eden.svg +0 -1
  132. package/public/oracle-splash/assets/wordmarks/markets.svg +0 -1
  133. package/public/oracle-splash/assets/wordmarks/morpho.svg +0 -1
  134. package/public/oracle-splash/assets/wordmarks/odos.svg +0 -3
  135. package/public/oracle-splash/assets/wordmarks/oneinch-icon.webp +0 -0
  136. package/public/oracle-splash/assets/wordmarks/oneinch.svg +0 -6
  137. package/public/oracle-splash/assets/wordmarks/opensea-icon.svg +0 -17
  138. package/public/oracle-splash/assets/wordmarks/opensea.svg +0 -1
  139. package/public/oracle-splash/assets/wordmarks/outcome.svg +0 -16
  140. package/public/oracle-splash/assets/wordmarks/pancakeswap.svg +0 -18
  141. package/public/oracle-splash/assets/wordmarks/paragon.svg +0 -9
  142. package/public/oracle-splash/assets/wordmarks/paraswap.svg +0 -16
  143. package/public/oracle-splash/assets/wordmarks/pendle.png +0 -0
  144. package/public/oracle-splash/assets/wordmarks/polymarket.png +0 -0
  145. package/public/oracle-splash/assets/wordmarks/quickswap.png +0 -0
  146. package/public/oracle-splash/assets/wordmarks/relay.svg +0 -8
  147. package/public/oracle-splash/assets/wordmarks/satflow-icon.png +0 -0
  148. package/public/oracle-splash/assets/wordmarks/stargate-icon.webp +0 -0
  149. package/public/oracle-splash/assets/wordmarks/stargate.svg +0 -15
  150. package/public/oracle-splash/assets/wordmarks/uniswap.svg +0 -18
  151. package/public/oracle-splash/assets/wordmarks/velodrome.svg +0 -84
  152. package/public/oracle-splash/assets/wordmarks/xyz.svg +0 -12
  153. package/public/oracle-splash/assets/wordmarks/zerox-icon.webp +0 -0
  154. package/public/oracle-splash/brand/aave.webp +0 -0
  155. package/public/oracle-splash/brand/aavev2.webp +0 -0
  156. package/public/oracle-splash/brand/aborean.webp +0 -0
  157. package/public/oracle-splash/brand/across.webp +0 -0
  158. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  159. package/public/oracle-splash/brand/afi.webp +0 -0
  160. package/public/oracle-splash/brand/arcus.webp +0 -0
  161. package/public/oracle-splash/brand/aster.webp +0 -0
  162. package/public/oracle-splash/brand/avant.webp +0 -0
  163. package/public/oracle-splash/brand/balancer.webp +0 -0
  164. package/public/oracle-splash/brand/beefy.webp +0 -0
  165. package/public/oracle-splash/brand/benqi.webp +0 -0
  166. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  167. package/public/oracle-splash/brand/bitfi.webp +0 -0
  168. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  169. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  170. package/public/oracle-splash/brand/camelot.webp +0 -0
  171. package/public/oracle-splash/brand/compound.webp +0 -0
  172. package/public/oracle-splash/brand/concrete.webp +0 -0
  173. package/public/oracle-splash/brand/cow.webp +0 -0
  174. package/public/oracle-splash/brand/curve.webp +0 -0
  175. package/public/oracle-splash/brand/derive.webp +0 -0
  176. package/public/oracle-splash/brand/dolomite.webp +0 -0
  177. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  178. package/public/oracle-splash/brand/ekubo.webp +0 -0
  179. package/public/oracle-splash/brand/ethena.webp +0 -0
  180. package/public/oracle-splash/brand/etherfi.webp +0 -0
  181. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  182. package/public/oracle-splash/brand/felix.webp +0 -0
  183. package/public/oracle-splash/brand/fluid.webp +0 -0
  184. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  185. package/public/oracle-splash/brand/folks.webp +0 -0
  186. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  187. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  188. package/public/oracle-splash/brand/gassss.webp +0 -0
  189. package/public/oracle-splash/brand/gmx.webp +0 -0
  190. package/public/oracle-splash/brand/harmonix.webp +0 -0
  191. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  192. package/public/oracle-splash/brand/hlp.webp +0 -0
  193. package/public/oracle-splash/brand/hop.webp +0 -0
  194. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  195. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  196. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  197. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  198. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  199. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  200. package/public/oracle-splash/brand/hypha.webp +0 -0
  201. package/public/oracle-splash/brand/joedex.webp +0 -0
  202. package/public/oracle-splash/brand/jupiter.webp +0 -0
  203. package/public/oracle-splash/brand/kelp.webp +0 -0
  204. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  205. package/public/oracle-splash/brand/kmhype.webp +0 -0
  206. package/public/oracle-splash/brand/kona.webp +0 -0
  207. package/public/oracle-splash/brand/konalend.webp +0 -0
  208. package/public/oracle-splash/brand/lfj.webp +0 -0
  209. package/public/oracle-splash/brand/lido.webp +0 -0
  210. package/public/oracle-splash/brand/lifi.webp +0 -0
  211. package/public/oracle-splash/brand/lighter.webp +0 -0
  212. package/public/oracle-splash/brand/lista.webp +0 -0
  213. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  214. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  215. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  216. package/public/oracle-splash/brand/magiceden.webp +0 -0
  217. package/public/oracle-splash/brand/mempool.png +0 -0
  218. package/public/oracle-splash/brand/meteora.webp +0 -0
  219. package/public/oracle-splash/brand/morpho.webp +0 -0
  220. package/public/oracle-splash/brand/myriad.webp +0 -0
  221. package/public/oracle-splash/brand/noxa.webp +0 -0
  222. package/public/oracle-splash/brand/odos.webp +0 -0
  223. package/public/oracle-splash/brand/oneinch.webp +0 -0
  224. package/public/oracle-splash/brand/openbook.webp +0 -0
  225. package/public/oracle-splash/brand/opensea.webp +0 -0
  226. package/public/oracle-splash/brand/orca.webp +0 -0
  227. package/public/oracle-splash/brand/ordinals.png +0 -0
  228. package/public/oracle-splash/brand/ostium.webp +0 -0
  229. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  230. package/public/oracle-splash/brand/pendle.webp +0 -0
  231. package/public/oracle-splash/brand/perena.webp +0 -0
  232. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  233. package/public/oracle-splash/brand/phoenix.webp +0 -0
  234. package/public/oracle-splash/brand/polymarket.webp +0 -0
  235. package/public/oracle-splash/brand/polynomial.webp +0 -0
  236. package/public/oracle-splash/brand/projectx.webp +0 -0
  237. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  238. package/public/oracle-splash/brand/quickswap.webp +0 -0
  239. package/public/oracle-splash/brand/rain.webp +0 -0
  240. package/public/oracle-splash/brand/raydium.webp +0 -0
  241. package/public/oracle-splash/brand/relay.webp +0 -0
  242. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  243. package/public/oracle-splash/brand/saber.webp +0 -0
  244. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  245. package/public/oracle-splash/brand/sanctum.webp +0 -0
  246. package/public/oracle-splash/brand/satflow.png +0 -0
  247. package/public/oracle-splash/brand/sierra.webp +0 -0
  248. package/public/oracle-splash/brand/sky.webp +0 -0
  249. package/public/oracle-splash/brand/solv.webp +0 -0
  250. package/public/oracle-splash/brand/spark.webp +0 -0
  251. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  252. package/public/oracle-splash/brand/sphere.webp +0 -0
  253. package/public/oracle-splash/brand/ssv.webp +0 -0
  254. package/public/oracle-splash/brand/stabble.webp +0 -0
  255. package/public/oracle-splash/brand/stableswap.webp +0 -0
  256. package/public/oracle-splash/brand/stakewise.webp +0 -0
  257. package/public/oracle-splash/brand/stargate.webp +0 -0
  258. package/public/oracle-splash/brand/sthype.webp +0 -0
  259. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  260. package/public/oracle-splash/brand/unisat.png +0 -0
  261. package/public/oracle-splash/brand/uniswap.webp +0 -0
  262. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  263. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  264. package/public/oracle-splash/brand/unit.webp +0 -0
  265. package/public/oracle-splash/brand/velodrome.webp +0 -0
  266. package/public/oracle-splash/brand/velora.webp +0 -0
  267. package/public/oracle-splash/brand/venus.webp +0 -0
  268. package/public/oracle-splash/brand/wbeth.webp +0 -0
  269. package/public/oracle-splash/brand/xsy.webp +0 -0
  270. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  271. package/public/oracle-splash/brand/zerobase.webp +0 -0
  272. package/public/oracle-splash/brand/zerox.webp +0 -0
  273. package/public/oracle-splash/favicon.ico +0 -0
  274. package/public/oracle-splash/favicon.svg +0 -6
  275. package/public/oracle-splash/index.html +0 -1558
  276. package/public/oracle-splash/mesh-graph.png +0 -0
  277. package/public/oracle-splash/mesh-graph.svg +0 -216
  278. package/scripts/adversarial-bench.mjs +0 -114
  279. package/scripts/build-inscription.py +0 -230
  280. package/scripts/check-doc-drift.mjs +0 -123
  281. package/scripts/check-test-count.mjs +0 -105
  282. package/scripts/e2e-hl-markets.mjs +0 -21
  283. package/scripts/e2e-hl-perps.mjs +0 -48
  284. package/scripts/e2e-hypercore-staking.mjs +0 -128
  285. package/scripts/e2e-solana-bitcoin.mjs +0 -183
  286. package/scripts/protocol-template-gate.mjs +0 -15
  287. package/scripts/public-api-scan.mjs +0 -23
  288. package/scripts/secret-scan.mjs +0 -181
  289. package/scripts/verify-v3-venues.mjs +0 -192
  290. package/skills/balance/SKILL.md +0 -176
  291. package/skills/oracle-action-semantics/SKILL.md +0 -40
  292. package/skills/oracle-best-execution/SKILL.md +0 -127
  293. package/skills/oracle-bitcoin/SKILL.md +0 -53
  294. package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +0 -59
  295. package/skills/oracle-chat/SKILL.md +0 -61
  296. package/skills/oracle-chat/chain.SKILL.md +0 -31
  297. package/skills/oracle-chat/setup.SKILL.md +0 -37
  298. package/skills/oracle-circuit-breaker/SKILL.md +0 -51
  299. package/skills/oracle-contract-research/SKILL.md +0 -55
  300. package/skills/oracle-desk/SKILL.md +0 -58
  301. package/skills/oracle-dex-launch/SKILL.md +0 -38
  302. package/skills/oracle-grants/SKILL.md +0 -69
  303. package/skills/oracle-hypercore-staking/SKILL.md +0 -57
  304. package/skills/oracle-hyperliquid/SKILL.md +0 -56
  305. package/skills/oracle-meme-token-sniper/SKILL.md +0 -73
  306. package/skills/oracle-multichain-nft-launch/SKILL.md +0 -338
  307. package/skills/oracle-multichain-token-launch/SKILL.md +0 -300
  308. package/skills/oracle-nft-gacha-launch/SKILL.md +0 -48
  309. package/skills/oracle-nft-mint-gas-war/SKILL.md +0 -63
  310. package/skills/oracle-polymarket/SKILL.md +0 -60
  311. package/skills/oracle-protocol-builder/SKILL.md +0 -59
  312. package/skills/oracle-protocol-security/SKILL.md +0 -60
  313. package/skills/oracle-public-product/SKILL.md +0 -44
  314. package/skills/oracle-receipts/SKILL.md +0 -52
  315. package/skills/oracle-rfq-tokenized-assets/SKILL.md +0 -69
  316. package/skills/oracle-smart-wallet-scanner/SKILL.md +0 -49
  317. package/skills/oracle-solana/SKILL.md +0 -65
  318. package/skills/oracle-solana-nft/SKILL.md +0 -54
  319. package/skills/oracle-token-research/SKILL.md +0 -67
  320. package/skins/oracle.yaml +0 -56
  321. package/src/action-receipts.mjs +0 -265
  322. package/src/action-semantics.mjs +0 -62
  323. package/src/address-book.mjs +0 -208
  324. package/src/agent-auth.mjs +0 -206
  325. package/src/approval-guard.mjs +0 -282
  326. package/src/attestation-secret.mjs +0 -88
  327. package/src/audit-log.mjs +0 -196
  328. package/src/auth/oauth.mjs +0 -672
  329. package/src/auto-slippage.mjs +0 -378
  330. package/src/capability-posture.mjs +0 -125
  331. package/src/chains.mjs +0 -62
  332. package/src/cli/chain-catalog.mjs +0 -215
  333. package/src/cli/chain-state.mjs +0 -74
  334. package/src/cli/commands/auth.mjs +0 -193
  335. package/src/cli/commands/bootstrap.mjs +0 -87
  336. package/src/cli/commands/chain.mjs +0 -143
  337. package/src/cli/commands/chat.mjs +0 -434
  338. package/src/cli/commands/credential.mjs +0 -9
  339. package/src/cli/commands/data-mcp.mjs +0 -18
  340. package/src/cli/commands/data.mjs +0 -75
  341. package/src/cli/commands/doctor.mjs +0 -136
  342. package/src/cli/commands/help.mjs +0 -7
  343. package/src/cli/commands/init.mjs +0 -27
  344. package/src/cli/commands/mcp.mjs +0 -142
  345. package/src/cli/commands/model.mjs +0 -99
  346. package/src/cli/commands/prepare.mjs +0 -12
  347. package/src/cli/commands/public.mjs +0 -20
  348. package/src/cli/commands/route.mjs +0 -12
  349. package/src/cli/commands/runner.mjs +0 -9
  350. package/src/cli/commands/scan.mjs +0 -12
  351. package/src/cli/commands/setup.mjs +0 -275
  352. package/src/cli/commands/sign.mjs +0 -21
  353. package/src/cli/commands/signer.mjs +0 -9
  354. package/src/cli/commands/upgrade.mjs +0 -12
  355. package/src/cli/commands/vault.mjs +0 -9
  356. package/src/cli/commands/version.mjs +0 -22
  357. package/src/cli/first-run.mjs +0 -23
  358. package/src/cli/kernel.mjs +0 -239
  359. package/src/cli/mcp-targets/chatgpt.mjs +0 -51
  360. package/src/cli/mcp-targets/claude-code.mjs +0 -39
  361. package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
  362. package/src/cli/mcp-targets/codex.mjs +0 -41
  363. package/src/cli/mcp-targets/shared.mjs +0 -61
  364. package/src/cli/messaging-platforms.mjs +0 -209
  365. package/src/cli/model-config.mjs +0 -70
  366. package/src/cli/operator-dispatch.mjs +0 -258
  367. package/src/cli/oracle-harness.py +0 -415
  368. package/src/cli/paths.mjs +0 -83
  369. package/src/cli/runtime.mjs +0 -351
  370. package/src/cli/setup-state.mjs +0 -168
  371. package/src/cli/spawn-child.mjs +0 -43
  372. package/src/data/catalog.mjs +0 -585
  373. package/src/data/desk-data.mjs +0 -695
  374. package/src/data/http.mjs +0 -253
  375. package/src/data/provider-endpoint.mjs +0 -94
  376. package/src/data/providers/aerodrome.mjs +0 -245
  377. package/src/data/providers/balancer.mjs +0 -209
  378. package/src/data/providers/bitcoin-esplora.mjs +0 -216
  379. package/src/data/providers/bitcoin-meta.mjs +0 -378
  380. package/src/data/providers/blockscout.mjs +0 -14
  381. package/src/data/providers/bridges.mjs +0 -242
  382. package/src/data/providers/cowswap.mjs +0 -415
  383. package/src/data/providers/curve.mjs +0 -201
  384. package/src/data/providers/defillama.mjs +0 -88
  385. package/src/data/providers/dexscreener.mjs +0 -43
  386. package/src/data/providers/evm-rpc.mjs +0 -225
  387. package/src/data/providers/geckoterminal.mjs +0 -34
  388. package/src/data/providers/gmx.mjs +0 -496
  389. package/src/data/providers/hl-assets.mjs +0 -165
  390. package/src/data/providers/hl-info.mjs +0 -108
  391. package/src/data/providers/hl-markets.mjs +0 -210
  392. package/src/data/providers/hl-outcome.mjs +0 -61
  393. package/src/data/providers/hl-perps.mjs +0 -387
  394. package/src/data/providers/hl-staking.mjs +0 -353
  395. package/src/data/providers/hl-ws.mjs +0 -119
  396. package/src/data/providers/hyperevm-dex.mjs +0 -49
  397. package/src/data/providers/jupiter-venues.mjs +0 -119
  398. package/src/data/providers/jupiter.mjs +0 -315
  399. package/src/data/providers/lifi.mjs +0 -151
  400. package/src/data/providers/magiceden-sol.mjs +0 -406
  401. package/src/data/providers/morpho.mjs +0 -177
  402. package/src/data/providers/nft-gallery.mjs +0 -163
  403. package/src/data/providers/nft-portfolio.mjs +0 -494
  404. package/src/data/providers/odos.mjs +0 -156
  405. package/src/data/providers/oneinch.mjs +0 -174
  406. package/src/data/providers/opensea-multichain.mjs +0 -136
  407. package/src/data/providers/opensea-nft.mjs +0 -371
  408. package/src/data/providers/paraswap.mjs +0 -118
  409. package/src/data/providers/pendle.mjs +0 -188
  410. package/src/data/providers/poly-clob.mjs +0 -283
  411. package/src/data/providers/poly-public.mjs +0 -96
  412. package/src/data/providers/poly-ws.mjs +0 -103
  413. package/src/data/providers/portfolio-history.mjs +0 -394
  414. package/src/data/providers/portfolio.mjs +0 -594
  415. package/src/data/providers/rfq.mjs +0 -15
  416. package/src/data/providers/rh-agent.mjs +0 -59
  417. package/src/data/providers/satflow.mjs +0 -341
  418. package/src/data/providers/signed-material-guard.mjs +0 -108
  419. package/src/data/providers/solana-rpc.mjs +0 -197
  420. package/src/data/providers/uniswap-v3.mjs +0 -349
  421. package/src/data/providers/uniswap-v4.mjs +0 -414
  422. package/src/data/providers/zerox.mjs +0 -167
  423. package/src/data/public-api-scan.mjs +0 -61
  424. package/src/data/quote-placeholder.mjs +0 -31
  425. package/src/exact-integer.mjs +0 -72
  426. package/src/exec-policy.mjs +0 -455
  427. package/src/flags.mjs +0 -15
  428. package/src/fresh-window.mjs +0 -76
  429. package/src/gmx-attestation.mjs +0 -176
  430. package/src/index.mjs +0 -100
  431. package/src/nft-gas-war-guard.mjs +0 -139
  432. package/src/onboarding/agent-keys.mjs +0 -161
  433. package/src/onboarding/harness-configs.mjs +0 -102
  434. package/src/onboarding/index.mjs +0 -18
  435. package/src/onboarding/tiers.mjs +0 -139
  436. package/src/oracle-env.mjs +0 -47
  437. package/src/portfolio-risk.mjs +0 -170
  438. package/src/prepare-envelope.mjs +0 -204
  439. package/src/profile-upgrade.mjs +0 -277
  440. package/src/protocol-execution.mjs +0 -84
  441. package/src/protocol-templates/gate.mjs +0 -179
  442. package/src/protocol-templates/prepare-deploy.mjs +0 -81
  443. package/src/public-api/buzz-integration.mjs +0 -256
  444. package/src/public-api/connect-agent.mjs +0 -416
  445. package/src/public-api/grants.mjs +0 -142
  446. package/src/public-api/http.mjs +0 -389
  447. package/src/public-control/aa-adapter.mjs +0 -402
  448. package/src/public-control/build-registry.mjs +0 -227
  449. package/src/public-control/bundler-client.mjs +0 -357
  450. package/src/public-control/grant-indexer.mjs +0 -296
  451. package/src/public-control/policy-render.mjs +0 -69
  452. package/src/public-control/policy-schema.mjs +0 -318
  453. package/src/public-control/runtime-config.mjs +0 -275
  454. package/src/public-control/session-key-model.mjs +0 -374
  455. package/src/public-control/session-orchestrator.mjs +0 -412
  456. package/src/rfq/intent.mjs +0 -180
  457. package/src/rfq/sources.mjs +0 -181
  458. package/src/route-attestation.mjs +0 -132
  459. package/src/router/best-execution.mjs +0 -326
  460. package/src/router/index.mjs +0 -226
  461. package/src/router/prepare-bridge.mjs +0 -289
  462. package/src/router/prepare-route.mjs +0 -398
  463. package/src/router/proposal.mjs +0 -311
  464. package/src/router/risk-classifier.mjs +0 -119
  465. package/src/router/route-sources.mjs +0 -364
  466. package/src/scanner/chains.config.mjs +0 -430
  467. package/src/scanner/contract.mjs +0 -270
  468. package/src/scanner/evm-scanner.mjs +0 -394
  469. package/src/scanner/index.mjs +0 -9
  470. package/src/scanner/v2-venue.mjs +0 -335
  471. package/src/scanner/v3-venue.mjs +0 -290
  472. package/src/scopes.mjs +0 -44
  473. package/src/sell-simulation.mjs +0 -167
  474. package/src/signals/engine.mjs +0 -146
  475. package/src/signals/index.mjs +0 -1
  476. package/src/token-transfer-guard.mjs +0 -188
  477. package/src/tui/app.mjs +0 -438
  478. package/src/tui/backend.mjs +0 -145
  479. package/src/tui/format.mjs +0 -272
  480. package/src/tui/gateway-client.mjs +0 -177
  481. package/src/tui/input.mjs +0 -501
  482. package/src/tui/renderer.mjs +0 -443
  483. package/src/tui/standalone-client.mjs +0 -666
  484. package/src/tui/theme.mjs +0 -81
  485. package/src/vault-attestation.mjs +0 -146
  486. package/src/venues.mjs +0 -206
  487. package/src/watch-preferences.mjs +0 -85
@@ -1,695 +0,0 @@
1
- // desk.data — unified read-only facade. Never touches wallet keys.
2
-
3
- import { listProviders, getProvider } from "./catalog.mjs";
4
- import { timed, mapLimit } from "./http.mjs";
5
- import * as hl from "./providers/hl-info.mjs";
6
- import * as poly from "./providers/poly-public.mjs";
7
- import * as rh from "./providers/rh-agent.mjs";
8
- import * as rpc from "./providers/evm-rpc.mjs";
9
- import * as solana from "./providers/solana-rpc.mjs";
10
- import * as bitcoin from "./providers/bitcoin-esplora.mjs";
11
- import * as bitcoinMeta from "./providers/bitcoin-meta.mjs";
12
- import * as satflow from "./providers/satflow.mjs";
13
- import * as jupiter from "./providers/jupiter.mjs";
14
- import * as llama from "./providers/defillama.mjs";
15
- import * as lifi from "./providers/lifi.mjs";
16
- import * as dxs from "./providers/dexscreener.mjs";
17
- import * as uni from "./providers/uniswap-v3.mjs";
18
- import * as univ4 from "./providers/uniswap-v4.mjs";
19
- import * as aerodrome from "./providers/aerodrome.mjs";
20
- import * as zerox from "./providers/zerox.mjs";
21
- import * as bridges from "./providers/bridges.mjs";
22
- import * as cow from "./providers/cowswap.mjs";
23
- import * as oneinch from "./providers/oneinch.mjs";
24
- import * as hlws from "./providers/hl-ws.mjs";
25
- import * as polyws from "./providers/poly-ws.mjs";
26
- import * as osnft from "./providers/opensea-nft.mjs";
27
- import * as hevm from "./providers/hyperevm-dex.mjs";
28
- import * as mesol from "./providers/magiceden-sol.mjs";
29
- import * as hlstake from "./providers/hl-staking.mjs";
30
- import * as hlmarkets from "./providers/hl-markets.mjs";
31
- import * as hloutcome from "./providers/hl-outcome.mjs";
32
- import * as polyclob from "./providers/poly-clob.mjs";
33
- import * as protoTpl from "../protocol-templates/prepare-deploy.mjs";
34
- import { listProtocolTemplates, runProtocolTemplateGate } from "../protocol-templates/gate.mjs";
35
- import * as hlperps from "./providers/hl-perps.mjs";
36
- import * as gecko from "./providers/geckoterminal.mjs";
37
- import * as curve from "./providers/curve.mjs";
38
- import * as gmx from "./providers/gmx.mjs";
39
- import * as morpho from "./providers/morpho.mjs";
40
- import * as balancer from "./providers/balancer.mjs";
41
- import * as pendle from "./providers/pendle.mjs";
42
- import * as odos from "./providers/odos.mjs";
43
- import * as blockscout from "./providers/blockscout.mjs";
44
- import * as portfolio from "./providers/portfolio.mjs";
45
- import * as portfolioHistory from "./providers/portfolio-history.mjs";
46
- import * as nftPortfolio from "./providers/nft-portfolio.mjs";
47
- import * as paraswap from "./providers/paraswap.mjs";
48
- import * as rfq from "./providers/rfq.mjs";
49
-
50
- const OPS = {
51
- "hl-info": {
52
- health: (o) => hl.hlHealth(o),
53
- allMids: (o) => hl.hlAllMids(o),
54
- l2Book: (o, a = {}) => hl.hlL2Book(a.coin, o),
55
- outcomeMeta: (o) => hl.hlOutcomeMeta(o),
56
- clearinghouse: (o, a = {}) => hl.hlClearinghouse(a.user, o),
57
- userFills: (o, a = {}) => hl.hlUserFills(a.user, o),
58
- meta: (o) => hl.hlMeta(o),
59
- metaAndAssetCtxs: (o) => hl.hlMetaAndAssetCtxs(o),
60
- candleSnapshot: (o, a = {}) => hl.hlCandleSnapshot(a, o),
61
- openOrders: (o, a = {}) => hl.hlOpenOrders(a.user, o),
62
- frontendOpenOrders: (o, a = {}) => hl.hlFrontendOpenOrders(a.user, o),
63
- userState: (o, a = {}) => hl.hlUserState(a.user, o),
64
- spotMeta: (o) => hl.hlSpotMeta(o),
65
- },
66
- "poly-public": {
67
- health: (o) => poly.polyHealth(o),
68
- time: (o) => poly.polyTime(o),
69
- markets: (o, a = {}) => poly.polyMarkets(a, o),
70
- book: (o, a = {}) => poly.polyBook(a.tokenId, o),
71
- midpoint: (o, a = {}) => poly.polyMidpoint(a.tokenId, o),
72
- spread: (o, a = {}) => poly.polySpread(a.tokenId, o),
73
- price: (o, a = {}) => poly.polyPrice(a.tokenId, { side: a.side }, o),
74
- events: (o, a = {}) => poly.polyEvents(a, o),
75
- },
76
- "rh-agent": {
77
- health: (o) => rh.rhHealth(o),
78
- policy: (o) => rh.rhPolicy(o),
79
- chainConfig: (o) => rh.rhChainConfig(o),
80
- chainGas: (o) => rh.rhChainGas(o),
81
- swapsConfig: (o) => rh.rhSwapsConfig(o),
82
- swapsPresets: (o) => rh.rhSwapsPresets(o),
83
- tradingStatus: (o) => rh.rhTradingStatus(o),
84
- nftDrops: (o) => rh.rhNftDrops(o),
85
- feeEstimate: (o) => rh.rhFeeEstimate(o),
86
- },
87
- "evm-rpc": {
88
- health: (o, a = {}) => rpc.rpcHealth(a.chainId ?? 1, o),
89
- healthAll: (o, a = {}) => rpc.rpcHealthAll({ ...o, chainIds: a.chainIds }),
90
- blockNumber: (o, a = {}) => rpc.rpcBlockNumber(a.chainId ?? 1, o),
91
- chainId: (o, a = {}) => rpc.rpcChainId(a.chainId ?? 1, o),
92
- getBalance: (o, a = {}) => rpc.rpcGetBalance(a.chainId ?? 1, a.address, o),
93
- call: (o, a = {}) => rpc.rpcCall(a.chainId ?? 1, a.method, a.params || [], o),
94
- erc20Allowance: (o, a = {}) => rpc.erc20Allowance(a, o),
95
- erc20Balance: (o, a = {}) => rpc.erc20BalanceOf(a, o),
96
- transactionReceipt: (o, a = {}) => rpc.transactionReceipt(a, o),
97
- },
98
- portfolio: {
99
- health: (o) => portfolio.portfolioHealth(o),
100
- balances: (o, a = {}) => portfolio.portfolioBalance(a, o),
101
- snapshot: (o, a = {}) => portfolioHistory.portfolioSnapshot(a, o),
102
- history: (o, a = {}) => portfolioHistory.portfolioHistory(a, o),
103
- valueGraph: (o, a = {}) => portfolioHistory.portfolioValueGraph(a, o),
104
- },
105
- "nft-portfolio": {
106
- health: (o) => nftPortfolio.nftHealth(o),
107
- inventory: (o, a = {}) => nftPortfolio.nftInventory(a, o),
108
- gallery: (o, a = {}) => nftPortfolio.nftPortfolioGallery(a, o),
109
- pnl: (o, a = {}) => nftPortfolio.nftPnl(a, o),
110
- prepareList: (o, a = {}) => nftPortfolio.nftPrepareList(a, o),
111
- },
112
- "solana-rpc": {
113
- health: (o) => solana.solanaHealth(o),
114
- latestBlockhash: (o, a = {}) => solana.solanaLatestBlockhash(a, o),
115
- getBalance: (o, a = {}) => solana.solanaGetBalance(a, o),
116
- tokenAccounts: (o, a = {}) => solana.solanaTokenAccounts(a, o),
117
- simulate: (o, a = {}) => solana.solanaSimulateTransaction(a, o),
118
- },
119
- "bitcoin-esplora": {
120
- health: (o) => bitcoin.btcHealth(o),
121
- tipHeight: (o) => bitcoin.btcTipHeight(o),
122
- fees: (o) => bitcoin.btcFees(o),
123
- address: (o, a = {}) => bitcoin.btcAddressInfo(a, o),
124
- utxos: (o, a = {}) => bitcoin.btcUtxos(a, o),
125
- tx: (o, a = {}) => bitcoin.btcTx(a, o),
126
- decode: (o, a = {}) => bitcoin.btcDecodeTxHex(a, o),
127
- },
128
- "bitcoin-meta": {
129
- health: (o) => bitcoinMeta.btcMetaHealth(o),
130
- runeBalances: (o, a = {}) => bitcoinMeta.btcRuneBalances(a, o),
131
- inscriptions: (o, a = {}) => bitcoinMeta.btcInscriptions(a, o),
132
- inscriptionInfo: (o, a = {}) => bitcoinMeta.btcInscriptionInfo(a, o),
133
- inscriptionChildren: (o, a = {}) => bitcoinMeta.btcInscriptionChildren(a, o),
134
- ordBlockInfo: (o, a = {}) => bitcoinMeta.btcOrdBlockInfo(a, o),
135
- },
136
- satflow: {
137
- health: (o) => satflow.satflowHealth(o),
138
- collectionFloors: (o, a = {}) => satflow.satflowCollectionFloors(a, o),
139
- collectionStats: (o, a = {}) => satflow.satflowCollectionStats(a, o),
140
- item: (o, a = {}) => satflow.satflowItem(a, o),
141
- walletContents: (o, a = {}) => satflow.satflowWalletContents(a, o),
142
- floorListings: (o, a = {}) => satflow.satflowFloorListings(a, o),
143
- preparePurchase: (o, a = {}) => satflow.satflowPreparePurchase(a, o),
144
- prepareList: (o, a = {}) => satflow.satflowPrepareList(a, o),
145
- },
146
- jupiter: {
147
- health: (o) => jupiter.jupiterHealth(o),
148
- venues: (o, a = {}) => jupiter.jupiterVenues(a, o),
149
- quote: (o, a = {}) => jupiter.jupiterQuote(a, o),
150
- prepare: (o, a = {}) => jupiter.jupiterPrepareSwap(a, o),
151
- },
152
- defillama: {
153
- health: (o) => llama.llamaHealth(o),
154
- prices: (o, a = {}) => llama.llamaPrices(a.coins || [], o),
155
- pricesBySymbol: (o, a = {}) => llama.llamaPricesBySymbol(a.symbols, o),
156
- protocols: (o) => llama.llamaProtocols(o),
157
- yields: (o, a = {}) => llama.llamaYields(a, o),
158
- stablecoins: (o, a = {}) => llama.llamaStablecoins(a, o),
159
- dexVolumes: (o, a = {}) => llama.llamaDexVolumes(a, o),
160
- },
161
- lifi: {
162
- health: (o) => lifi.lifiHealth(o),
163
- quote: (o, a = {}) => lifi.lifiQuote(a, o),
164
- prepare: (o, a = {}) => lifi.lifiPrepare(a, o),
165
- chains: (o) => lifi.lifiChains(o),
166
- },
167
- dexscreener: {
168
- health: (o) => dxs.dexscreenerHealth(o),
169
- token: (o, a = {}) => dxs.dexscreenerToken(a.address || a.tokenAddress, o),
170
- search: (o, a = {}) => dxs.dexscreenerSearch(a.q || a.query, o),
171
- pair: (o, a = {}) => dxs.dexscreenerPair(a.chainId, a.pairAddress, o),
172
- },
173
- "uniswap-v3": {
174
- health: (o, a = {}) => uni.uniV3Health({ ...o, chainId: a.chainId ?? 8453 }),
175
- quote: (o, a = {}) => uni.uniV3QuoteExactIn(a, o),
176
- prepare: (o, a = {}) => uni.uniV3PrepareExactIn(a, o),
177
- quotePath: (o, a = {}) => uni.uniV3QuoteExactInPath(a, o),
178
- ethUsdc: (o, a = {}) => uni.uniV3EthUsdc(a, o),
179
- chains: () => uni.uniV3Chains(),
180
- },
181
- "uniswap-v4": {
182
- health: (o, a = {}) => univ4.uniV4Health({ ...o, chainId: a.chainId ?? 8453 }),
183
- quote: (o, a = {}) => univ4.uniV4QuoteExactIn(a, o),
184
- chains: () => univ4.uniV4Chains(),
185
- },
186
- aerodrome: {
187
- health: (o, a = {}) => aerodrome.aerodromeHealth({ ...o, chainId: a.chainId ?? 8453 }),
188
- quote: (o, a = {}) => aerodrome.aerodromeQuoteExactIn(a, o),
189
- prepare: (o, a = {}) => aerodrome.aerodromePrepareExactIn(a, o),
190
- chains: () => aerodrome.aerodromeChains(),
191
- },
192
- zerox: {
193
- health: (o) => zerox.zeroxHealth(o),
194
- price: (o, a = {}) => zerox.zeroxPrice(a, o),
195
- quote: (o, a = {}) => zerox.zeroxQuote(a, o),
196
- prepare: (o, a = {}) => zerox.zeroxPrepare(a, o),
197
- },
198
- across: {
199
- health: (o) => bridges.acrossHealth(o),
200
- suggestedFees: (o, a = {}) => bridges.acrossSuggestedFees(a, o),
201
- },
202
- hop: {
203
- health: (o) => bridges.hopHealth(o),
204
- quote: (o, a = {}) => bridges.hopQuote(a, o),
205
- },
206
- relay: {
207
- health: (o) => bridges.relayHealth(o),
208
- quote: (o, a = {}) => bridges.relayQuote(a, o),
209
- prepare: (o, a = {}) => bridges.relayPrepare(a, o),
210
- },
211
- cowswap: {
212
- health: (o) => cow.cowHealth(o),
213
- quote: (o, a = {}) => cow.cowQuote(a, o),
214
- prepareOrder: (o, a = {}) => cow.cowPrepareOrder(a, o),
215
- order: (o, a = {}) => cow.cowOrder(a, o),
216
- status: (o, a = {}) => cow.cowOrderStatus(a, o),
217
- chains: () => cow.cowChains(),
218
- },
219
- oneinch: {
220
- health: (o) => oneinch.oneinchHealth(o),
221
- quote: (o, a = {}) => oneinch.oneinchQuote(a, o),
222
- prepare: (o, a = {}) => oneinch.oneinchPrepare(a, o),
223
- approveSpender: (o, a = {}) => oneinch.oneinchApproveSpender(a, o),
224
- },
225
- "hl-ws": {
226
- health: (o) => hlws.hlWsHealth(o),
227
- allMids: (o) => hlws.hlWsAllMids(o),
228
- l2Book: (o, a = {}) => hlws.hlWsL2Book(a.coin, o),
229
- snapshot: (o, a = {}) => hlws.hlWsSnapshot(a.subscription || a, o),
230
- },
231
- "poly-ws": {
232
- health: (o, a = {}) => polyws.polyWsHealth({ ...o, assetId: a.assetId }),
233
- book: (o, a = {}) => polyws.polyWsBook(a.assetId || a.tokenId, o),
234
- snapshot: (o, a = {}) =>
235
- polyws.polyWsSnapshot(a.assetIds || a.assets_ids || [a.assetId], o),
236
- },
237
- "opensea-nft": {
238
- health: (o) => osnft.openseaHealth(o),
239
- collection: (o, a = {}) => osnft.openseaCollection(a.slug, o),
240
- floor: (o, a = {}) => osnft.openseaFloor(a.slug, o),
241
- accountNfts: (o, a = {}) => osnft.openseaAccountNfts(a, o),
242
- accountPnl: (o, a = {}) => osnft.openseaAccountPnl(a, o),
243
- prepareList: (o, a = {}) => osnft.openseaPrepareList(a, o),
244
- },
245
-
246
- "hl-outcome": {
247
- list: (o) => hloutcome.hlOutcomeList(o),
248
- prepareOrder: (o, a = {}) => hloutcome.hlPrepareOutcomeOrder(a, o),
249
- prepareCancel: (o, a = {}) => hloutcome.hlPrepareOutcomeCancel(a, o),
250
- },
251
- "protocol-templates": {
252
- health: () => ({ ok: true, templates: listProtocolTemplates().map((t) => t.id), firmAudit: false }),
253
- list: () => listProtocolTemplates(),
254
- gate: (o, a = {}) => runProtocolTemplateGate(a.templateId || a.id, o),
255
- prepareDeploy: (o, a = {}) => protoTpl.prepareTemplateDeploy(a, o),
256
- },
257
- "poly-clob": {
258
- prepareOrder: (o, a = {}) => {
259
- // prepare is sync; wrap for dataCall
260
- return polyclob.polyPrepareOrder(a || {});
261
- },
262
- },
263
- "hl-perps": {
264
- health: (o) => hlmarkets.hlMarketsHealth(o),
265
- assetInfo: (o, a = {}) => hlperps.hlPerpAssetInfo(a, o),
266
- prepareOrder: (o, a = {}) => hlperps.hlPreparePerpOrder(a, o),
267
- prepareCancel: (o, a = {}) => hlperps.hlPrepareCancelOrder(a, o),
268
- prepareLeverage: (o, a = {}) => hlperps.hlPrepareUpdateLeverage(a, o),
269
- prepareIsolatedMargin: (o, a = {}) => hlperps.hlPrepareUpdateIsolatedMargin(a, o),
270
- prepareBracket: (o, a = {}) => hlperps.hlPrepareBracketOrder(a, o),
271
- },
272
- "hl-markets": {
273
- health: (o) => hlmarkets.hlMarketsHealth(o),
274
- markets: (o, a = {}) => hlmarkets.hlMarketDatapoints(a, o),
275
- leaderboards: (o, a = {}) => hlmarkets.hlLeaderboards(a, o),
276
- coin: (o, a = {}) => hlmarkets.hlCoinDatapoints(a, o),
277
- spot: (o, a = {}) => hlmarkets.hlSpotDatapoints(a, o),
278
- },
279
- "magiceden-sol": {
280
- health: (o) => mesol.magicEdenSolHealth(o),
281
- stats: (o, a = {}) => mesol.magicEdenSolStats(a, o),
282
- listings: (o, a = {}) => mesol.magicEdenSolListings(a, o),
283
- tokenListings: (o, a = {}) => mesol.magicEdenSolTokenListing(a, o),
284
- prepareBuy: (o, a = {}) => mesol.magicEdenSolPrepareBuy(a, o),
285
- prepareList: (o, a = {}) => mesol.magicEdenSolPrepareList(a, o),
286
- prepareMint: (o, a = {}) => mesol.magicEdenSolPrepareMint(a, o),
287
- },
288
- "hl-staking": {
289
- health: (o) => hlstake.hlStakingHealth(o),
290
- validators: (o) => hlstake.hlValidatorSummaries(o),
291
- delegatorSummary: (o, a = {}) => hlstake.hlDelegatorSummary(a, o),
292
- delegations: (o, a = {}) => hlstake.hlDelegations(a, o),
293
- rewards: (o, a = {}) => hlstake.hlDelegatorRewards(a, o),
294
- history: (o, a = {}) => hlstake.hlDelegatorHistory(a, o),
295
- preflight: (o, a = {}) => hlstake.hlStakingPreflight(a, o),
296
- prepareStakeDeposit: (o, a = {}) => hlstake.hlPrepareStakeDeposit(a, o),
297
- prepareStakeWithdraw: (o, a = {}) => hlstake.hlPrepareStakeWithdraw(a, o),
298
- prepareDelegate: (o, a = {}) => hlstake.hlPrepareDelegate(a, o),
299
- },
300
- "hyperevm-dex": {
301
- health: (o) => hevm.hyperevmHealth(o),
302
- search: (o, a = {}) => hevm.hyperevmSearch(a.q || a.query || "HYPE", o),
303
- token: (o, a = {}) => hevm.hyperevmToken(a.address || a.tokenAddress, o),
304
- },
305
- geckoterminal: {
306
- health: (o) => gecko.geckoHealth(o),
307
- networks: (o, a = {}) => gecko.geckoNetworks(a, o),
308
- pool: (o, a = {}) => gecko.geckoPool(a, o),
309
- token: (o, a = {}) => gecko.geckoToken(a, o),
310
- ohlcv: (o, a = {}) => gecko.geckoPoolOhlcv(a, o),
311
- },
312
- curve: {
313
- health: (o) => curve.curveHealth(o),
314
- openapi: (o) => curve.curveOpenApi(o),
315
- pools: (o, a = {}) => curve.curvePools(a, o),
316
- quote: (o, a = {}) => curve.curveQuote(a, o),
317
- prepare: (o, a = {}) => curve.curvePrepare(a, o),
318
- },
319
- gmx: {
320
- health: (o) => gmx.gmxHealth(o),
321
- tickers: (o, a = {}) => gmx.gmxTickers(a, o),
322
- markets: (o, a = {}) => gmx.gmxMarkets(a, o),
323
- marketsInfo: (o, a = {}) => gmx.gmxMarketsInfo(a, o),
324
- tokens: (o, a = {}) => gmx.gmxTokens(a, o),
325
- prepareOrder: (o, a = {}) => gmx.gmxPrepareOrder(a, o),
326
- positions: (o, a = {}) => gmx.gmxPositions(a, o),
327
- orderStatus: (o, a = {}) => gmx.gmxOrderStatus(a, o),
328
- verifyOrder: (o, a = {}) => gmx.gmxVerifyOrderReceipt(a, o),
329
- },
330
- morpho: {
331
- health: (o) => morpho.morphoHealth(o),
332
- markets: (o, a = {}) => morpho.morphoMarkets(a, o),
333
- vaults: (o, a = {}) => morpho.morphoVaults(a, o),
334
- prepareVault: (o, a = {}) => morpho.morphoPrepareVault(a, o),
335
- },
336
- balancer: {
337
- health: (o) => balancer.balancerHealth(o),
338
- pools: (o, a = {}) => balancer.balancerPools(a, o),
339
- quote: (o, a = {}) => balancer.balancerQuote(a, o),
340
- prepare: (o, a = {}) => balancer.balancerPrepare(a, o),
341
- },
342
- pendle: {
343
- health: (o) => pendle.pendleHealth(o),
344
- markets: (o, a = {}) => pendle.pendleMarkets(a, o),
345
- quote: (o, a = {}) => pendle.pendleQuote(a, o),
346
- prepare: (o, a = {}) => pendle.pendlePrepare(a, o),
347
- },
348
- odos: {
349
- health: (o) => odos.odosHealth(o),
350
- chains: (o) => odos.odosChains(o),
351
- quote: (o, a = {}) => odos.odosQuote(a, o),
352
- prepare: (o, a = {}) => odos.odosPrepare(a, o),
353
- },
354
- blockscout: {
355
- health: (o) => blockscout.blockscoutHealth(o),
356
- stats: (o, a = {}) => blockscout.blockscoutStats(a, o),
357
- address: (o, a = {}) => blockscout.blockscoutAddress(a, o),
358
- token: (o, a = {}) => blockscout.blockscoutToken(a, o),
359
- },
360
- paraswap: {
361
- health: (o) => paraswap.paraswapHealth(o),
362
- tokens: (o, a = {}) => paraswap.paraswapTokens(a, o),
363
- price: (o, a = {}) => paraswap.paraswapPrice(a, o),
364
- quote: (o, a = {}) => paraswap.paraswapPrice(a, o),
365
- prepare: (o, a = {}) => paraswap.paraswapPrepare(a, o),
366
- },
367
- rfq: {
368
- health: (o) => rfq.rfqHealth(o),
369
- intent: (o, a = {}) => rfq.rfqIntent(a, o),
370
- quote: (o, a = {}) => rfq.rfqQuote(a, o),
371
- },
372
- };
373
-
374
- /**
375
- * Ops that create state at a third-party venue or produce a signable
376
- * authorization. They are NOT reads, and naming them `prepare*` does not make
377
- * them harmless — a prepared purchase intent is a real object at a real
378
- * marketplace, and a prepared EIP-712 action is one signature from settlement.
379
- */
380
- const STATE_CREATING_OPS = new Set([
381
- "prepareBracket",
382
- "prepareIsolatedMargin",
383
- "prepareLeverage",
384
- "prepareCancel",
385
- "prepareOrder",
386
- "preparePurchase",
387
- "prepareList",
388
- "prepareSell",
389
- "prepareBuy",
390
- "prepareMint",
391
- "prepare",
392
- "prepareStakeDeposit",
393
- "prepareStakeWithdraw",
394
- "prepareDelegate",
395
- "prepareSwap",
396
- "prepareTransfer",
397
- "createOrder",
398
- "cancelOrder",
399
- ]);
400
-
401
- /**
402
- * Is this op allowed on the read/prepare data plane?
403
- *
404
- * The previous implementation was a NAME regex, which is not a boundary: it
405
- * blocked `sendFoo` but allowed `txBroadcast`, `doSend`, `rawSign`,
406
- * `orderSubmit` and `forceExecute`, while blocking nothing that actually
407
- * mattered because every money-moving op here is named `prepare*`. The real
408
- * control is the catalog: a provider may only be asked for an op it declares.
409
- */
410
- /**
411
- * Providers that SIGN and SUBMIT. These are not data-plane providers: the
412
- * read-only server must refuse them at the provider level, because a name-based
413
- * verb filter is not a boundary (`op:"trade"` matches no exec-sounding word).
414
- */
415
- export const EXECUTION_PROVIDERS = new Set(["hl-exec"]);
416
-
417
- /** True when the provider signs/submits and must never be served read-only. */
418
- export function isExecutionProvider(providerId) {
419
- return EXECUTION_PROVIDERS.has(String(providerId || ""));
420
- }
421
-
422
- export function assertDataOpAllowed(providerId, op, args = {}) {
423
- const name = String(op || "");
424
- const key = `${providerId}.${name}`;
425
-
426
- if (EXECUTION_PROVIDERS.has(providerId)) {
427
- throw new Error(`data plane forbidden execution provider: ${providerId}`);
428
- }
429
-
430
- // 1. The op must be declared by the provider. This is the actual boundary —
431
- // an undeclared op cannot be reached regardless of what it is called.
432
- // Checked SECOND so that a write-shaped name gets the "forbidden" error
433
- // rather than "not declared": callers (and tests) distinguish the two.
434
- const declared = listProviders().find((p) => p.id === providerId);
435
-
436
- // 2. Reject anything that reads as a settlement verb. Substring matching, so
437
- // txBroadcast / doSend / orderSubmit / forceExecute cannot slip past word
438
- // boundaries the way they did under the old anchored regex.
439
- if (/sign|execute|broadcast|submit|send|write|place/i.test(name) && !STATE_CREATING_OPS.has(name)) {
440
- throw new Error(`data plane forbidden op: ${key}`);
441
- }
442
-
443
- if (declared && Array.isArray(declared.ops) && declared.ops.length > 0) {
444
- if (!declared.ops.includes(name)) {
445
- throw new Error(`data plane: provider ${providerId} does not support op ${name}`);
446
- }
447
- }
448
-
449
- // 3. State-creating prepares are permitted on the data plane (that is its
450
- // job) but must be visible as such to callers auditing behaviour.
451
- if (STATE_CREATING_OPS.has(name) && args && typeof args === "object") {
452
- Object.defineProperty(args, "__oracleStateCreating", { value: true, enumerable: false, configurable: true });
453
- }
454
-
455
- if (providerId === "evm-rpc" && name === "call") {
456
- const method = String(args?.method || "").trim();
457
- const allowed = new Set([
458
- "eth_call",
459
- "eth_getBalance",
460
- "eth_blockNumber",
461
- "eth_chainId",
462
- "eth_getCode",
463
- "eth_getLogs",
464
- "eth_getTransactionByHash",
465
- "eth_getTransactionReceipt",
466
- "eth_getBlockByNumber",
467
- "eth_getBlockByHash",
468
- "eth_feeHistory",
469
- "eth_gasPrice",
470
- "eth_maxPriorityFeePerGas",
471
- "net_version",
472
- "web3_clientVersion",
473
- ]);
474
- if (!allowed.has(method)) {
475
- throw new Error(`data plane allows only read-only JSON-RPC methods through evm-rpc.call: ${method || "<missing>"}`);
476
- }
477
- }
478
- }
479
-
480
- export async function dataCall(providerId, op, args = {}, opts = {}) {
481
- // dataCall is the READ plane, and it is what the package root exports. An
482
- // execution provider reached through here signs with a real key and submits
483
- // to a venue — with no grant check, no policy, no cap and no user-intent
484
- // proof. Blocking it only in the HTTP server left every package consumer and
485
- // agent wrapper calling root dataCall wide open.
486
- //
487
- if (isExecutionProvider(providerId)) {
488
- throw new Error(
489
- `${providerId} is an execution provider: it signs and submits with a real key. ` +
490
- "dataCall() is the public read plane and will not route to it."
491
- );
492
- }
493
- assertDataOpAllowed(providerId, op, args);
494
- const meta = getProvider(providerId);
495
- if (!meta) throw new Error(`Unknown data provider: ${providerId}`);
496
- if (!meta.ops.includes(op)) {
497
- throw new Error(`Provider ${providerId} does not support op '${op}' (has: ${meta.ops.join(", ")})`);
498
- }
499
- const table = OPS[providerId];
500
- if (!table || typeof table[op] !== "function") {
501
- throw new Error(`No client implementation for ${providerId}.${op}`);
502
- }
503
- return table[op](opts, args);
504
- }
505
-
506
- export async function dataHealth({ providers, fetchImpl, timeoutMs, includeRpc, includeWs, concurrency } = {}) {
507
- let ids = providers || listProviders().map((p) => p.id);
508
- // healthAll on evm-rpc is slow; default health uses ethereum only via "health"
509
- if (!includeRpc && !providers) {
510
- // keep evm-rpc but its health is chain 1 only — fine
511
- }
512
- // WS health opens sockets — opt-in unless explicit provider list
513
- if (!includeWs && !providers) {
514
- ids = ids.filter((id) => id !== "hl-ws" && id !== "poly-ws");
515
- }
516
- const opts = { fetchImpl, timeoutMs: timeoutMs ?? 8_000 };
517
- const out = {};
518
- // Bounded fan-out: an unbounded Promise.all across every provider trips public
519
- // rate limits (and makes one slow venue look like a global outage).
520
- await mapLimit(ids, concurrency ?? 8, async (id) => {
521
- if (!getProvider(id)) {
522
- out[id] = { ok: false, ms: 0, error: "unknown provider" };
523
- return;
524
- }
525
- const args = id === "evm-rpc" ? { chainId: 1 } : {};
526
- const result = await timed(() => dataCall(id, "health", args, opts));
527
- out[id] = result.ok
528
- ? { ok: true, ms: result.ms, detail: result.data }
529
- : { ok: false, ms: result.ms, error: result.error };
530
- });
531
- return { when: new Date().toISOString(), plane: "data", exec: false, providers: out };
532
- }
533
-
534
- export function dataCatalog() {
535
- return listProviders().map((p) => ({
536
- id: p.id,
537
- venue: p.venue,
538
- chainIds: p.chainIds,
539
- auth: p.auth,
540
- ops: p.ops,
541
- execution: p.execution || "read-only",
542
- description: p.description,
543
- }));
544
- }
545
-
546
- export const data = {
547
- catalog: dataCatalog,
548
- health: dataHealth,
549
- call: dataCall,
550
- hl: {
551
- health: (o) => dataCall("hl-info", "health", {}, o),
552
- allMids: (o) => dataCall("hl-info", "allMids", {}, o),
553
- l2Book: (coin, o) => dataCall("hl-info", "l2Book", { coin }, o),
554
- outcomeMeta: (o) => dataCall("hl-info", "outcomeMeta", {}, o),
555
- clearinghouse: (user, o) => dataCall("hl-info", "clearinghouse", { user }, o),
556
- userFills: (user, o) => dataCall("hl-info", "userFills", { user }, o),
557
- meta: (o) => dataCall("hl-info", "meta", {}, o),
558
- metaAndAssetCtxs: (o) => dataCall("hl-info", "metaAndAssetCtxs", {}, o),
559
- candleSnapshot: (a, o) => dataCall("hl-info", "candleSnapshot", a || {}, o),
560
- openOrders: (user, o) => dataCall("hl-info", "openOrders", { user }, o),
561
- userState: (user, o) => dataCall("hl-info", "userState", { user }, o),
562
- spotMeta: (o) => dataCall("hl-info", "spotMeta", {}, o),
563
- staking: {
564
- health: (o) => dataCall("hl-staking", "health", {}, o),
565
- validators: (o) => dataCall("hl-staking", "validators", {}, o),
566
- summary: (user, o) => dataCall("hl-staking", "delegatorSummary", { user }, o),
567
- delegations: (user, o) => dataCall("hl-staking", "delegations", { user }, o),
568
- rewards: (user, o) => dataCall("hl-staking", "rewards", { user }, o),
569
- history: (user, o) => dataCall("hl-staking", "history", { user }, o),
570
- preflight: (user, o) => dataCall("hl-staking", "preflight", { user }, o),
571
- prepareStake: (a, o) => dataCall("hl-staking", "prepareStakeDeposit", a || {}, o),
572
- prepareUnstake: (a, o) => dataCall("hl-staking", "prepareStakeWithdraw", a || {}, o),
573
- prepareDelegate: (a, o) => dataCall("hl-staking", "prepareDelegate", a || {}, o),
574
- },
575
- },
576
- poly: {
577
- health: (o) => dataCall("poly-public", "health", {}, o),
578
- time: (o) => dataCall("poly-public", "time", {}, o),
579
- markets: (a, o) => dataCall("poly-public", "markets", a || {}, o),
580
- book: (tokenId, o) => dataCall("poly-public", "book", { tokenId }, o),
581
- midpoint: (tokenId, o) => dataCall("poly-public", "midpoint", { tokenId }, o),
582
- spread: (tokenId, o) => dataCall("poly-public", "spread", { tokenId }, o),
583
- price: (tokenId, side, o) => dataCall("poly-public", "price", { tokenId, side }, o),
584
- events: (a, o) => dataCall("poly-public", "events", a || {}, o),
585
- },
586
- polyClob: {
587
- prepareOrder: (a, o) => dataCall("poly-clob", "prepareOrder", a || {}, o),
588
- },
589
- rh: {
590
- health: (o) => dataCall("rh-agent", "health", {}, o),
591
- policy: (o) => dataCall("rh-agent", "policy", {}, o),
592
- chainConfig: (o) => dataCall("rh-agent", "chainConfig", {}, o),
593
- chainGas: (o) => dataCall("rh-agent", "chainGas", {}, o),
594
- swapsConfig: (o) => dataCall("rh-agent", "swapsConfig", {}, o),
595
- tradingStatus: (o) => dataCall("rh-agent", "tradingStatus", {}, o),
596
- nftDrops: (o) => dataCall("rh-agent", "nftDrops", {}, o),
597
- },
598
- rpc: {
599
- health: (chainId, o) => dataCall("evm-rpc", "health", { chainId }, o),
600
- healthAll: (a, o) => dataCall("evm-rpc", "healthAll", a || {}, o),
601
- blockNumber: (chainId, o) => dataCall("evm-rpc", "blockNumber", { chainId }, o),
602
- getBalance: (chainId, address, o) => dataCall("evm-rpc", "getBalance", { chainId, address }, o),
603
- call: (chainId, method, params, o) =>
604
- dataCall("evm-rpc", "call", { chainId, method, params }, o),
605
- },
606
- portfolio: {
607
- balance: (a, o) => dataCall("portfolio", "balances", a || {}, o),
608
- snapshot: (a, o) => dataCall("portfolio", "snapshot", a || {}, o),
609
- history: (a, o) => dataCall("portfolio", "history", a || {}, o),
610
- valueGraph: (a, o) => dataCall("portfolio", "valueGraph", a || {}, o),
611
- },
612
- nft: {
613
- inventory: (a, o) => dataCall("nft-portfolio", "inventory", a || {}, o),
614
- gallery: (a, o) => dataCall("nft-portfolio", "gallery", a || {}, o),
615
- pnl: (a, o) => dataCall("nft-portfolio", "pnl", a || {}, o),
616
- prepareList: (a, o) => dataCall("nft-portfolio", "prepareList", a || {}, o),
617
- floor: (slug, o) => dataCall("opensea-nft", "floor", { slug }, o),
618
- collection: (slug, o) => dataCall("opensea-nft", "collection", { slug }, o),
619
- },
620
- solana: {
621
- health: (o) => dataCall("solana-rpc", "health", {}, o),
622
- latestBlockhash: (a, o) => dataCall("solana-rpc", "latestBlockhash", a || {}, o),
623
- balance: (address, o) => dataCall("solana-rpc", "getBalance", { address }, o),
624
- tokenAccounts: (a, o) => dataCall("solana-rpc", "tokenAccounts", a || {}, o),
625
- simulate: (a, o) => dataCall("solana-rpc", "simulate", a || {}, o),
626
- jupiterQuote: (a, o) => dataCall("jupiter", "quote", a || {}, o),
627
- jupiterPrepare: (a, o) => dataCall("jupiter", "prepare", a || {}, o),
628
- nftStats: (a, o) => dataCall("magiceden-sol", "stats", a || {}, o),
629
- nftListings: (a, o) => dataCall("magiceden-sol", "listings", a || {}, o),
630
- nftTokenListings: (a, o) => dataCall("magiceden-sol", "tokenListings", a || {}, o),
631
- nftPrepareBuy: (a, o) => dataCall("magiceden-sol", "prepareBuy", a || {}, o),
632
- nftPrepareList: (a, o) => dataCall("magiceden-sol", "prepareList", a || {}, o),
633
- nftPrepareMint: (a, o) => dataCall("magiceden-sol", "prepareMint", a || {}, o),
634
- },
635
- bitcoin: {
636
- health: (o) => dataCall("bitcoin-esplora", "health", {}, o),
637
- tipHeight: (o) => dataCall("bitcoin-esplora", "tipHeight", {}, o),
638
- fees: (o) => dataCall("bitcoin-esplora", "fees", {}, o),
639
- address: (address, o) => dataCall("bitcoin-esplora", "address", { address }, o),
640
- utxos: (address, o) => dataCall("bitcoin-esplora", "utxos", { address }, o),
641
- tx: (txid, o) => dataCall("bitcoin-esplora", "tx", { txid }, o),
642
- decode: (a, o) => dataCall("bitcoin-esplora", "decode", a || {}, o),
643
- metaHealth: (o) => dataCall("bitcoin-meta", "health", {}, o),
644
- runeBalances: (address, o) => dataCall("bitcoin-meta", "runeBalances", { address }, o),
645
- inscriptions: (address, o) => dataCall("bitcoin-meta", "inscriptions", { address }, o),
646
- satflowHealth: (o) => dataCall("satflow", "health", {}, o),
647
- satflowFloors: (a, o) => dataCall("satflow", "collectionFloors", a || {}, o),
648
- satflowWallet: (address, o) => dataCall("satflow", "walletContents", { address }, o),
649
- },
650
- prices: {
651
- health: (o) => dataCall("defillama", "health", {}, o),
652
- current: (coins, o) => dataCall("defillama", "prices", { coins }, o),
653
- bySymbol: (symbols, o) => dataCall("defillama", "pricesBySymbol", { symbols }, o),
654
- protocols: (o) => dataCall("defillama", "protocols", {}, o),
655
- },
656
- lifi: {
657
- health: (o) => dataCall("lifi", "health", {}, o),
658
- quote: (a, o) => dataCall("lifi", "quote", a || {}, o),
659
- chains: (o) => dataCall("lifi", "chains", {}, o),
660
- },
661
- dex: {
662
- health: (o) => dataCall("dexscreener", "health", {}, o),
663
- token: (address, o) => dataCall("dexscreener", "token", { address }, o),
664
- search: (q, o) => dataCall("dexscreener", "search", { q }, o),
665
- pair: (chainId, pairAddress, o) =>
666
- dataCall("dexscreener", "pair", { chainId, pairAddress }, o),
667
- },
668
- uni: {
669
- health: (a, o) => dataCall("uniswap-v3", "health", a || {}, o),
670
- quote: (a, o) => dataCall("uniswap-v3", "quote", a || {}, o),
671
- quotePath: (a, o) => dataCall("uniswap-v3", "quotePath", a || {}, o),
672
- ethUsdc: (a, o) => dataCall("uniswap-v3", "ethUsdc", a || {}, o),
673
- chains: (o) => dataCall("uniswap-v3", "chains", {}, o),
674
- },
675
- univ4: {
676
- health: (a, o) => dataCall("uniswap-v4", "health", a || {}, o),
677
- quote: (a, o) => dataCall("uniswap-v4", "quote", a || {}, o),
678
- chains: (o) => dataCall("uniswap-v4", "chains", {}, o),
679
- },
680
- bridges: {
681
- across: (a, o) => dataCall("across", "suggestedFees", a || {}, o),
682
- hop: (a, o) => dataCall("hop", "quote", a || {}, o),
683
- relay: (a, o) => dataCall("relay", "quote", a || {}, o),
684
- },
685
- cow: {
686
- quote: (a, o) => dataCall("cowswap", "quote", a || {}, o),
687
- },
688
- hlWs: {
689
- allMids: (o) => dataCall("hl-ws", "allMids", {}, o),
690
- l2Book: (coin, o) => dataCall("hl-ws", "l2Book", { coin }, o),
691
- },
692
- polyWs: {
693
- book: (assetId, o) => dataCall("poly-ws", "book", { assetId }, o),
694
- },
695
- };