@echoclaw/echo-0g 1.0.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 (371) hide show
  1. package/README.md +1175 -0
  2. package/dist/0g-compute/account.d.ts +36 -0
  3. package/dist/0g-compute/account.d.ts.map +1 -0
  4. package/dist/0g-compute/account.js +85 -0
  5. package/dist/0g-compute/account.js.map +1 -0
  6. package/dist/0g-compute/bridge.d.ts +16 -0
  7. package/dist/0g-compute/bridge.d.ts.map +1 -0
  8. package/dist/0g-compute/bridge.js +40 -0
  9. package/dist/0g-compute/bridge.js.map +1 -0
  10. package/dist/0g-compute/broker-factory.d.ts +19 -0
  11. package/dist/0g-compute/broker-factory.d.ts.map +1 -0
  12. package/dist/0g-compute/broker-factory.js +65 -0
  13. package/dist/0g-compute/broker-factory.js.map +1 -0
  14. package/dist/0g-compute/constants.d.ts +10 -0
  15. package/dist/0g-compute/constants.d.ts.map +1 -0
  16. package/dist/0g-compute/constants.js +12 -0
  17. package/dist/0g-compute/constants.js.map +1 -0
  18. package/dist/0g-compute/monitor.d.ts +43 -0
  19. package/dist/0g-compute/monitor.d.ts.map +1 -0
  20. package/dist/0g-compute/monitor.js +302 -0
  21. package/dist/0g-compute/monitor.js.map +1 -0
  22. package/dist/0g-compute/pricing.d.ts +43 -0
  23. package/dist/0g-compute/pricing.d.ts.map +1 -0
  24. package/dist/0g-compute/pricing.js +53 -0
  25. package/dist/0g-compute/pricing.js.map +1 -0
  26. package/dist/0g-compute/sdk-bridge.cjs +17 -0
  27. package/dist/0g-compute/sdk-bridge.cjs.map +1 -0
  28. package/dist/0g-compute/sdk-bridge.d.cts +9 -0
  29. package/dist/0g-compute/sdk-bridge.d.cts.map +1 -0
  30. package/dist/0g-compute/smoke-test.d.ts +11 -0
  31. package/dist/0g-compute/smoke-test.d.ts.map +1 -0
  32. package/dist/0g-compute/smoke-test.js +172 -0
  33. package/dist/0g-compute/smoke-test.js.map +1 -0
  34. package/dist/bot/daemon.d.ts +34 -0
  35. package/dist/bot/daemon.d.ts.map +1 -0
  36. package/dist/bot/daemon.js +386 -0
  37. package/dist/bot/daemon.js.map +1 -0
  38. package/dist/bot/executor.d.ts +14238 -0
  39. package/dist/bot/executor.d.ts.map +1 -0
  40. package/dist/bot/executor.js +183 -0
  41. package/dist/bot/executor.js.map +1 -0
  42. package/dist/bot/nonce-queue.d.ts +20 -0
  43. package/dist/bot/nonce-queue.d.ts.map +1 -0
  44. package/dist/bot/nonce-queue.js +41 -0
  45. package/dist/bot/nonce-queue.js.map +1 -0
  46. package/dist/bot/notify.d.ts +15 -0
  47. package/dist/bot/notify.d.ts.map +1 -0
  48. package/dist/bot/notify.js +98 -0
  49. package/dist/bot/notify.js.map +1 -0
  50. package/dist/bot/orders.d.ts +30 -0
  51. package/dist/bot/orders.d.ts.map +1 -0
  52. package/dist/bot/orders.js +172 -0
  53. package/dist/bot/orders.js.map +1 -0
  54. package/dist/bot/state.d.ts +14 -0
  55. package/dist/bot/state.d.ts.map +1 -0
  56. package/dist/bot/state.js +109 -0
  57. package/dist/bot/state.js.map +1 -0
  58. package/dist/bot/stream.d.ts +28 -0
  59. package/dist/bot/stream.d.ts.map +1 -0
  60. package/dist/bot/stream.js +96 -0
  61. package/dist/bot/stream.js.map +1 -0
  62. package/dist/bot/triggers.d.ts +17 -0
  63. package/dist/bot/triggers.d.ts.map +1 -0
  64. package/dist/bot/triggers.js +95 -0
  65. package/dist/bot/triggers.js.map +1 -0
  66. package/dist/bot/types.d.ts +199 -0
  67. package/dist/bot/types.d.ts.map +1 -0
  68. package/dist/bot/types.js +12 -0
  69. package/dist/bot/types.js.map +1 -0
  70. package/dist/chainscan/client.d.ts +28 -0
  71. package/dist/chainscan/client.d.ts.map +1 -0
  72. package/dist/chainscan/client.js +361 -0
  73. package/dist/chainscan/client.js.map +1 -0
  74. package/dist/chainscan/constants.d.ts +15 -0
  75. package/dist/chainscan/constants.d.ts.map +1 -0
  76. package/dist/chainscan/constants.js +15 -0
  77. package/dist/chainscan/constants.js.map +1 -0
  78. package/dist/chainscan/types.d.ts +148 -0
  79. package/dist/chainscan/types.d.ts.map +1 -0
  80. package/dist/chainscan/types.js +2 -0
  81. package/dist/chainscan/types.js.map +1 -0
  82. package/dist/chainscan/validation.d.ts +35 -0
  83. package/dist/chainscan/validation.d.ts.map +1 -0
  84. package/dist/chainscan/validation.js +97 -0
  85. package/dist/chainscan/validation.js.map +1 -0
  86. package/dist/cli.d.ts +7 -0
  87. package/dist/cli.d.ts.map +1 -0
  88. package/dist/cli.js +328 -0
  89. package/dist/cli.js.map +1 -0
  90. package/dist/commands/0g-compute.d.ts +21 -0
  91. package/dist/commands/0g-compute.d.ts.map +1 -0
  92. package/dist/commands/0g-compute.js +850 -0
  93. package/dist/commands/0g-compute.js.map +1 -0
  94. package/dist/commands/chainscan.d.ts +17 -0
  95. package/dist/commands/chainscan.d.ts.map +1 -0
  96. package/dist/commands/chainscan.js +605 -0
  97. package/dist/commands/chainscan.js.map +1 -0
  98. package/dist/commands/config.d.ts +3 -0
  99. package/dist/commands/config.d.ts.map +1 -0
  100. package/dist/commands/config.js +251 -0
  101. package/dist/commands/config.js.map +1 -0
  102. package/dist/commands/echobook.d.ts +17 -0
  103. package/dist/commands/echobook.d.ts.map +1 -0
  104. package/dist/commands/echobook.js +905 -0
  105. package/dist/commands/echobook.js.map +1 -0
  106. package/dist/commands/jaine-subgraph.d.ts +3 -0
  107. package/dist/commands/jaine-subgraph.d.ts.map +1 -0
  108. package/dist/commands/jaine-subgraph.js +565 -0
  109. package/dist/commands/jaine-subgraph.js.map +1 -0
  110. package/dist/commands/jaine.d.ts +3 -0
  111. package/dist/commands/jaine.d.ts.map +1 -0
  112. package/dist/commands/jaine.js +1415 -0
  113. package/dist/commands/jaine.js.map +1 -0
  114. package/dist/commands/marketmaker.d.ts +6 -0
  115. package/dist/commands/marketmaker.d.ts.map +1 -0
  116. package/dist/commands/marketmaker.js +451 -0
  117. package/dist/commands/marketmaker.js.map +1 -0
  118. package/dist/commands/send.d.ts +3 -0
  119. package/dist/commands/send.d.ts.map +1 -0
  120. package/dist/commands/send.js +229 -0
  121. package/dist/commands/send.js.map +1 -0
  122. package/dist/commands/setup.d.ts +3 -0
  123. package/dist/commands/setup.d.ts.map +1 -0
  124. package/dist/commands/setup.js +263 -0
  125. package/dist/commands/setup.js.map +1 -0
  126. package/dist/commands/slop-app.d.ts +9 -0
  127. package/dist/commands/slop-app.d.ts.map +1 -0
  128. package/dist/commands/slop-app.js +708 -0
  129. package/dist/commands/slop-app.js.map +1 -0
  130. package/dist/commands/slop-stream.d.ts +9 -0
  131. package/dist/commands/slop-stream.d.ts.map +1 -0
  132. package/dist/commands/slop-stream.js +99 -0
  133. package/dist/commands/slop-stream.js.map +1 -0
  134. package/dist/commands/slop.d.ts +3 -0
  135. package/dist/commands/slop.d.ts.map +1 -0
  136. package/dist/commands/slop.js +1053 -0
  137. package/dist/commands/slop.js.map +1 -0
  138. package/dist/commands/wallet.d.ts +13 -0
  139. package/dist/commands/wallet.d.ts.map +1 -0
  140. package/dist/commands/wallet.js +748 -0
  141. package/dist/commands/wallet.js.map +1 -0
  142. package/dist/config/paths.d.ts +13 -0
  143. package/dist/config/paths.d.ts.map +1 -0
  144. package/dist/config/paths.js +33 -0
  145. package/dist/config/paths.js.map +1 -0
  146. package/dist/config/store.d.ts +48 -0
  147. package/dist/config/store.d.ts.map +1 -0
  148. package/dist/config/store.js +113 -0
  149. package/dist/config/store.js.map +1 -0
  150. package/dist/constants/chain.d.ts +57 -0
  151. package/dist/constants/chain.d.ts.map +1 -0
  152. package/dist/constants/chain.js +51 -0
  153. package/dist/constants/chain.js.map +1 -0
  154. package/dist/echobook/api.d.ts +38 -0
  155. package/dist/echobook/api.d.ts.map +1 -0
  156. package/dist/echobook/api.js +86 -0
  157. package/dist/echobook/api.js.map +1 -0
  158. package/dist/echobook/auth.d.ts +31 -0
  159. package/dist/echobook/auth.d.ts.map +1 -0
  160. package/dist/echobook/auth.js +93 -0
  161. package/dist/echobook/auth.js.map +1 -0
  162. package/dist/echobook/comments.d.ts +26 -0
  163. package/dist/echobook/comments.d.ts.map +1 -0
  164. package/dist/echobook/comments.js +20 -0
  165. package/dist/echobook/comments.js.map +1 -0
  166. package/dist/echobook/follows.d.ts +19 -0
  167. package/dist/echobook/follows.d.ts.map +1 -0
  168. package/dist/echobook/follows.js +21 -0
  169. package/dist/echobook/follows.js.map +1 -0
  170. package/dist/echobook/jwtCache.d.ts +15 -0
  171. package/dist/echobook/jwtCache.d.ts.map +1 -0
  172. package/dist/echobook/jwtCache.js +63 -0
  173. package/dist/echobook/jwtCache.js.map +1 -0
  174. package/dist/echobook/notifications.d.ts +30 -0
  175. package/dist/echobook/notifications.d.ts.map +1 -0
  176. package/dist/echobook/notifications.js +26 -0
  177. package/dist/echobook/notifications.js.map +1 -0
  178. package/dist/echobook/points.d.ts +35 -0
  179. package/dist/echobook/points.d.ts.map +1 -0
  180. package/dist/echobook/points.js +20 -0
  181. package/dist/echobook/points.js.map +1 -0
  182. package/dist/echobook/posts.d.ts +46 -0
  183. package/dist/echobook/posts.d.ts.map +1 -0
  184. package/dist/echobook/posts.js +43 -0
  185. package/dist/echobook/posts.js.map +1 -0
  186. package/dist/echobook/profile.d.ts +29 -0
  187. package/dist/echobook/profile.d.ts.map +1 -0
  188. package/dist/echobook/profile.js +14 -0
  189. package/dist/echobook/profile.js.map +1 -0
  190. package/dist/echobook/submolts.d.ts +22 -0
  191. package/dist/echobook/submolts.d.ts.map +1 -0
  192. package/dist/echobook/submolts.js +24 -0
  193. package/dist/echobook/submolts.js.map +1 -0
  194. package/dist/echobook/tradeProof.d.ts +21 -0
  195. package/dist/echobook/tradeProof.d.ts.map +1 -0
  196. package/dist/echobook/tradeProof.js +14 -0
  197. package/dist/echobook/tradeProof.js.map +1 -0
  198. package/dist/echobook/votes.d.ts +17 -0
  199. package/dist/echobook/votes.d.ts.map +1 -0
  200. package/dist/echobook/votes.js +20 -0
  201. package/dist/echobook/votes.js.map +1 -0
  202. package/dist/errors.d.ts +125 -0
  203. package/dist/errors.d.ts.map +1 -0
  204. package/dist/errors.js +147 -0
  205. package/dist/errors.js.map +1 -0
  206. package/dist/intents/store.d.ts +22 -0
  207. package/dist/intents/store.d.ts.map +1 -0
  208. package/dist/intents/store.js +76 -0
  209. package/dist/intents/store.js.map +1 -0
  210. package/dist/intents/types.d.ts +21 -0
  211. package/dist/intents/types.d.ts.map +1 -0
  212. package/dist/intents/types.js +2 -0
  213. package/dist/intents/types.js.map +1 -0
  214. package/dist/jaine/abi/erc20.d.ts +90 -0
  215. package/dist/jaine/abi/erc20.d.ts.map +1 -0
  216. package/dist/jaine/abi/erc20.js +65 -0
  217. package/dist/jaine/abi/erc20.js.map +1 -0
  218. package/dist/jaine/abi/factory.d.ts +38 -0
  219. package/dist/jaine/abi/factory.d.ts.map +1 -0
  220. package/dist/jaine/abi/factory.js +26 -0
  221. package/dist/jaine/abi/factory.js.map +1 -0
  222. package/dist/jaine/abi/index.d.ts +11 -0
  223. package/dist/jaine/abi/index.d.ts.map +1 -0
  224. package/dist/jaine/abi/index.js +11 -0
  225. package/dist/jaine/abi/index.js.map +1 -0
  226. package/dist/jaine/abi/nftManager.d.ts +282 -0
  227. package/dist/jaine/abi/nftManager.d.ts.map +1 -0
  228. package/dist/jaine/abi/nftManager.js +182 -0
  229. package/dist/jaine/abi/nftManager.js.map +1 -0
  230. package/dist/jaine/abi/pool.d.ts +77 -0
  231. package/dist/jaine/abi/pool.d.ts.map +1 -0
  232. package/dist/jaine/abi/pool.js +56 -0
  233. package/dist/jaine/abi/pool.js.map +1 -0
  234. package/dist/jaine/abi/quoter.d.ts +84 -0
  235. package/dist/jaine/abi/quoter.d.ts.map +1 -0
  236. package/dist/jaine/abi/quoter.js +53 -0
  237. package/dist/jaine/abi/quoter.js.map +1 -0
  238. package/dist/jaine/abi/router.d.ts +135 -0
  239. package/dist/jaine/abi/router.d.ts.map +1 -0
  240. package/dist/jaine/abi/router.js +88 -0
  241. package/dist/jaine/abi/router.js.map +1 -0
  242. package/dist/jaine/abi/w0g.d.ts +41 -0
  243. package/dist/jaine/abi/w0g.d.ts.map +1 -0
  244. package/dist/jaine/abi/w0g.js +34 -0
  245. package/dist/jaine/abi/w0g.js.map +1 -0
  246. package/dist/jaine/allowance.d.ts +48 -0
  247. package/dist/jaine/allowance.d.ts.map +1 -0
  248. package/dist/jaine/allowance.js +192 -0
  249. package/dist/jaine/allowance.js.map +1 -0
  250. package/dist/jaine/coreTokens.d.ts +32 -0
  251. package/dist/jaine/coreTokens.d.ts.map +1 -0
  252. package/dist/jaine/coreTokens.js +91 -0
  253. package/dist/jaine/coreTokens.js.map +1 -0
  254. package/dist/jaine/pathEncoding.d.ts +39 -0
  255. package/dist/jaine/pathEncoding.d.ts.map +1 -0
  256. package/dist/jaine/pathEncoding.js +98 -0
  257. package/dist/jaine/pathEncoding.js.map +1 -0
  258. package/dist/jaine/paths.d.ts +11 -0
  259. package/dist/jaine/paths.d.ts.map +1 -0
  260. package/dist/jaine/paths.js +20 -0
  261. package/dist/jaine/paths.js.map +1 -0
  262. package/dist/jaine/poolCache.d.ts +47 -0
  263. package/dist/jaine/poolCache.d.ts.map +1 -0
  264. package/dist/jaine/poolCache.js +195 -0
  265. package/dist/jaine/poolCache.js.map +1 -0
  266. package/dist/jaine/routing.d.ts +41 -0
  267. package/dist/jaine/routing.d.ts.map +1 -0
  268. package/dist/jaine/routing.js +247 -0
  269. package/dist/jaine/routing.js.map +1 -0
  270. package/dist/jaine/subgraph/client.d.ts +26 -0
  271. package/dist/jaine/subgraph/client.d.ts.map +1 -0
  272. package/dist/jaine/subgraph/client.js +201 -0
  273. package/dist/jaine/subgraph/client.js.map +1 -0
  274. package/dist/jaine/subgraph/constants.d.ts +9 -0
  275. package/dist/jaine/subgraph/constants.d.ts.map +1 -0
  276. package/dist/jaine/subgraph/constants.js +9 -0
  277. package/dist/jaine/subgraph/constants.js.map +1 -0
  278. package/dist/jaine/subgraph/queries.d.ts +21 -0
  279. package/dist/jaine/subgraph/queries.d.ts.map +1 -0
  280. package/dist/jaine/subgraph/queries.js +304 -0
  281. package/dist/jaine/subgraph/queries.js.map +1 -0
  282. package/dist/jaine/subgraph/types.d.ts +209 -0
  283. package/dist/jaine/subgraph/types.d.ts.map +1 -0
  284. package/dist/jaine/subgraph/types.js +7 -0
  285. package/dist/jaine/subgraph/types.js.map +1 -0
  286. package/dist/jaine/userTokens.d.ts +27 -0
  287. package/dist/jaine/userTokens.d.ts.map +1 -0
  288. package/dist/jaine/userTokens.js +89 -0
  289. package/dist/jaine/userTokens.js.map +1 -0
  290. package/dist/openclaw/config.d.ts +43 -0
  291. package/dist/openclaw/config.d.ts.map +1 -0
  292. package/dist/openclaw/config.js +231 -0
  293. package/dist/openclaw/config.js.map +1 -0
  294. package/dist/openclaw/hooks-client.d.ts +24 -0
  295. package/dist/openclaw/hooks-client.d.ts.map +1 -0
  296. package/dist/openclaw/hooks-client.js +119 -0
  297. package/dist/openclaw/hooks-client.js.map +1 -0
  298. package/dist/slop/abi/factory.d.ts +128 -0
  299. package/dist/slop/abi/factory.d.ts.map +1 -0
  300. package/dist/slop/abi/factory.js +70 -0
  301. package/dist/slop/abi/factory.js.map +1 -0
  302. package/dist/slop/abi/feeCollector.d.ts +95 -0
  303. package/dist/slop/abi/feeCollector.d.ts.map +1 -0
  304. package/dist/slop/abi/feeCollector.js +71 -0
  305. package/dist/slop/abi/feeCollector.js.map +1 -0
  306. package/dist/slop/abi/index.d.ts +5 -0
  307. package/dist/slop/abi/index.d.ts.map +1 -0
  308. package/dist/slop/abi/index.js +5 -0
  309. package/dist/slop/abi/index.js.map +1 -0
  310. package/dist/slop/abi/registry.d.ts +135 -0
  311. package/dist/slop/abi/registry.d.ts.map +1 -0
  312. package/dist/slop/abi/registry.js +90 -0
  313. package/dist/slop/abi/registry.js.map +1 -0
  314. package/dist/slop/abi/token.d.ts +320 -0
  315. package/dist/slop/abi/token.d.ts.map +1 -0
  316. package/dist/slop/abi/token.js +251 -0
  317. package/dist/slop/abi/token.js.map +1 -0
  318. package/dist/slop/auth.d.ts +19 -0
  319. package/dist/slop/auth.d.ts.map +1 -0
  320. package/dist/slop/auth.js +92 -0
  321. package/dist/slop/auth.js.map +1 -0
  322. package/dist/slop/jwtCache.d.ts +27 -0
  323. package/dist/slop/jwtCache.d.ts.map +1 -0
  324. package/dist/slop/jwtCache.js +91 -0
  325. package/dist/slop/jwtCache.js.map +1 -0
  326. package/dist/slop/quote.d.ts +80 -0
  327. package/dist/slop/quote.d.ts.map +1 -0
  328. package/dist/slop/quote.js +174 -0
  329. package/dist/slop/quote.js.map +1 -0
  330. package/dist/utils/canonicalJson.d.ts +8 -0
  331. package/dist/utils/canonicalJson.d.ts.map +1 -0
  332. package/dist/utils/canonicalJson.js +20 -0
  333. package/dist/utils/canonicalJson.js.map +1 -0
  334. package/dist/utils/env.d.ts +11 -0
  335. package/dist/utils/env.d.ts.map +1 -0
  336. package/dist/utils/env.js +20 -0
  337. package/dist/utils/env.js.map +1 -0
  338. package/dist/utils/http.d.ts +19 -0
  339. package/dist/utils/http.d.ts.map +1 -0
  340. package/dist/utils/http.js +61 -0
  341. package/dist/utils/http.js.map +1 -0
  342. package/dist/utils/logger.d.ts +4 -0
  343. package/dist/utils/logger.d.ts.map +1 -0
  344. package/dist/utils/logger.js +21 -0
  345. package/dist/utils/logger.js.map +1 -0
  346. package/dist/utils/output.d.ts +29 -0
  347. package/dist/utils/output.d.ts.map +1 -0
  348. package/dist/utils/output.js +51 -0
  349. package/dist/utils/output.js.map +1 -0
  350. package/dist/utils/rateLimit.d.ts +22 -0
  351. package/dist/utils/rateLimit.d.ts.map +1 -0
  352. package/dist/utils/rateLimit.js +58 -0
  353. package/dist/utils/rateLimit.js.map +1 -0
  354. package/dist/utils/respond.d.ts +19 -0
  355. package/dist/utils/respond.d.ts.map +1 -0
  356. package/dist/utils/respond.js +25 -0
  357. package/dist/utils/respond.js.map +1 -0
  358. package/dist/utils/ui.d.ts +38 -0
  359. package/dist/utils/ui.d.ts.map +1 -0
  360. package/dist/utils/ui.js +126 -0
  361. package/dist/utils/ui.js.map +1 -0
  362. package/dist/wallet/client.d.ts +4 -0
  363. package/dist/wallet/client.d.ts.map +1 -0
  364. package/dist/wallet/client.js +53 -0
  365. package/dist/wallet/client.js.map +1 -0
  366. package/dist/wallet/keystore.d.ts +22 -0
  367. package/dist/wallet/keystore.d.ts.map +1 -0
  368. package/dist/wallet/keystore.js +111 -0
  369. package/dist/wallet/keystore.js.map +1 -0
  370. package/package.json +63 -0
  371. package/skills/echo/SKILL.md +1121 -0
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Subgraph response types.
3
+ * All BigInt/BigDecimal scalars come as strings from GraphQL JSON.
4
+ * Conversion to number/bigint happens in the mapping layer.
5
+ */
6
+ export interface GraphQLResponse<T> {
7
+ data?: T;
8
+ errors?: Array<{
9
+ message: string;
10
+ }>;
11
+ }
12
+ export interface SubgraphToken {
13
+ id: string;
14
+ symbol: string;
15
+ name: string;
16
+ decimals: string;
17
+ totalSupply: string;
18
+ volume: string;
19
+ volumeUSD: string;
20
+ untrackedVolumeUSD: string;
21
+ feesUSD: string;
22
+ txCount: string;
23
+ poolCount: string;
24
+ totalValueLocked: string;
25
+ totalValueLockedUSD: string;
26
+ totalValueLockedUSDUntracked: string;
27
+ derivedETH: string;
28
+ }
29
+ export interface SubgraphPool {
30
+ id: string;
31
+ createdAtTimestamp: string;
32
+ createdAtBlockNumber: string;
33
+ token0: {
34
+ id: string;
35
+ symbol: string;
36
+ name: string;
37
+ decimals: string;
38
+ };
39
+ token1: {
40
+ id: string;
41
+ symbol: string;
42
+ name: string;
43
+ decimals: string;
44
+ };
45
+ feeTier: string;
46
+ liquidity: string;
47
+ sqrtPrice: string;
48
+ token0Price: string;
49
+ token1Price: string;
50
+ tick: string | null;
51
+ observationIndex: string;
52
+ volumeToken0: string;
53
+ volumeToken1: string;
54
+ volumeUSD: string;
55
+ feesUSD: string;
56
+ txCount: string;
57
+ totalValueLockedToken0: string;
58
+ totalValueLockedToken1: string;
59
+ totalValueLockedUSD: string;
60
+ totalValueLockedETH: string;
61
+ liquidityProviderCount: string;
62
+ }
63
+ export interface SubgraphSwap {
64
+ id: string;
65
+ timestamp: string;
66
+ pool: {
67
+ id: string;
68
+ };
69
+ token0: {
70
+ id: string;
71
+ symbol: string;
72
+ };
73
+ token1: {
74
+ id: string;
75
+ symbol: string;
76
+ };
77
+ sender: string;
78
+ recipient: string;
79
+ origin: string;
80
+ amount0: string;
81
+ amount1: string;
82
+ amountUSD: string;
83
+ sqrtPriceX96: string;
84
+ tick: string;
85
+ }
86
+ export interface SubgraphMint {
87
+ id: string;
88
+ timestamp: string;
89
+ pool: {
90
+ id: string;
91
+ };
92
+ token0: {
93
+ id: string;
94
+ symbol: string;
95
+ };
96
+ token1: {
97
+ id: string;
98
+ symbol: string;
99
+ };
100
+ owner: string;
101
+ sender: string | null;
102
+ origin: string;
103
+ amount: string;
104
+ amount0: string;
105
+ amount1: string;
106
+ amountUSD: string | null;
107
+ tickLower: string;
108
+ tickUpper: string;
109
+ }
110
+ export interface SubgraphBurn {
111
+ id: string;
112
+ timestamp: string;
113
+ pool: {
114
+ id: string;
115
+ };
116
+ token0: {
117
+ id: string;
118
+ symbol: string;
119
+ };
120
+ token1: {
121
+ id: string;
122
+ symbol: string;
123
+ };
124
+ owner: string | null;
125
+ origin: string;
126
+ amount: string;
127
+ amount0: string;
128
+ amount1: string;
129
+ amountUSD: string | null;
130
+ tickLower: string;
131
+ tickUpper: string;
132
+ }
133
+ export interface SubgraphCollect {
134
+ id: string;
135
+ timestamp: string;
136
+ pool: {
137
+ id: string;
138
+ };
139
+ owner: string | null;
140
+ amount0: string;
141
+ amount1: string;
142
+ amountUSD: string | null;
143
+ tickLower: string;
144
+ tickUpper: string;
145
+ }
146
+ export interface SubgraphPoolDayData {
147
+ id: string;
148
+ date: number;
149
+ pool: {
150
+ id: string;
151
+ };
152
+ liquidity: string;
153
+ sqrtPrice: string;
154
+ token0Price: string;
155
+ token1Price: string;
156
+ tick: string | null;
157
+ tvlUSD: string;
158
+ volumeToken0: string;
159
+ volumeToken1: string;
160
+ volumeUSD: string;
161
+ feesUSD: string;
162
+ txCount: string;
163
+ open: string;
164
+ high: string;
165
+ low: string;
166
+ close: string;
167
+ }
168
+ export interface SubgraphPoolHourData {
169
+ id: string;
170
+ periodStartUnix: number;
171
+ pool: {
172
+ id: string;
173
+ };
174
+ liquidity: string;
175
+ sqrtPrice: string;
176
+ token0Price: string;
177
+ token1Price: string;
178
+ tick: string | null;
179
+ tvlUSD: string;
180
+ volumeToken0: string;
181
+ volumeToken1: string;
182
+ volumeUSD: string;
183
+ feesUSD: string;
184
+ txCount: string;
185
+ open: string;
186
+ high: string;
187
+ low: string;
188
+ close: string;
189
+ }
190
+ export interface SubgraphDexDayData {
191
+ id: string;
192
+ date: number;
193
+ volumeETH: string;
194
+ volumeUSD: string;
195
+ volumeUSDUntracked: string;
196
+ feesUSD: string;
197
+ txCount: string;
198
+ tvlUSD: string;
199
+ }
200
+ export interface SubgraphMeta {
201
+ block: {
202
+ number: number;
203
+ timestamp: number | null;
204
+ hash: string | null;
205
+ };
206
+ deployment: string;
207
+ hasIndexingErrors: boolean;
208
+ }
209
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/jaine/subgraph/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Subgraph response types.
3
+ * All BigInt/BigDecimal scalars come as strings from GraphQL JSON.
4
+ * Conversion to number/bigint happens in the mapping layer.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/jaine/subgraph/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,27 @@
1
+ import type { Address } from "viem";
2
+ export interface UserTokensConfig {
3
+ version: 1;
4
+ aliases: Record<string, Address>;
5
+ }
6
+ /**
7
+ * Load user token aliases from disk
8
+ */
9
+ export declare function loadUserTokens(): UserTokensConfig;
10
+ /**
11
+ * Save user token aliases to disk
12
+ */
13
+ export declare function saveUserTokens(config: UserTokensConfig): void;
14
+ /**
15
+ * Add or update a user token alias
16
+ */
17
+ export declare function addUserAlias(symbol: string, address: Address): void;
18
+ /**
19
+ * Remove a user token alias
20
+ */
21
+ export declare function removeUserAlias(symbol: string): boolean;
22
+ /**
23
+ * Get merged token list (user aliases + core tokens)
24
+ * User aliases have priority
25
+ */
26
+ export declare function getMergedTokens(): Record<string, Address>;
27
+ //# sourceMappingURL=userTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userTokens.d.ts","sourceRoot":"","sources":["../../src/jaine/userTokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMpC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,gBAAgB,CAmBjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoB7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAQnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzD"}
@@ -0,0 +1,89 @@
1
+ import { existsSync, readFileSync, writeFileSync, renameSync, unlinkSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { isAddress, getAddress } from "viem";
4
+ import { TOKENS_FILE, ensureJaineDir } from "./paths.js";
5
+ import { CORE_TOKENS } from "./coreTokens.js";
6
+ import logger from "../utils/logger.js";
7
+ /**
8
+ * Load user token aliases from disk
9
+ */
10
+ export function loadUserTokens() {
11
+ if (!existsSync(TOKENS_FILE)) {
12
+ return { version: 1, aliases: {} };
13
+ }
14
+ try {
15
+ const raw = readFileSync(TOKENS_FILE, "utf-8");
16
+ const parsed = JSON.parse(raw);
17
+ if (parsed.version !== 1) {
18
+ logger.warn(`Unknown user tokens version: ${parsed.version}`);
19
+ return { version: 1, aliases: {} };
20
+ }
21
+ return parsed;
22
+ }
23
+ catch (err) {
24
+ logger.error(`Failed to parse user tokens: ${err}`);
25
+ return { version: 1, aliases: {} };
26
+ }
27
+ }
28
+ /**
29
+ * Save user token aliases to disk
30
+ */
31
+ export function saveUserTokens(config) {
32
+ ensureJaineDir();
33
+ const dir = dirname(TOKENS_FILE);
34
+ const tmpFile = join(dir, `.tokens.tmp.${Date.now()}.json`);
35
+ try {
36
+ writeFileSync(tmpFile, JSON.stringify(config, null, 2), "utf-8");
37
+ renameSync(tmpFile, TOKENS_FILE);
38
+ logger.debug("User tokens saved");
39
+ }
40
+ catch (err) {
41
+ try {
42
+ if (existsSync(tmpFile)) {
43
+ unlinkSync(tmpFile);
44
+ }
45
+ }
46
+ catch {
47
+ // Ignore cleanup errors
48
+ }
49
+ throw err;
50
+ }
51
+ }
52
+ /**
53
+ * Add or update a user token alias
54
+ */
55
+ export function addUserAlias(symbol, address) {
56
+ if (!isAddress(address)) {
57
+ throw new Error(`Invalid address: ${address}`);
58
+ }
59
+ const config = loadUserTokens();
60
+ config.aliases[symbol] = getAddress(address);
61
+ saveUserTokens(config);
62
+ }
63
+ /**
64
+ * Remove a user token alias
65
+ */
66
+ export function removeUserAlias(symbol) {
67
+ const config = loadUserTokens();
68
+ if (!config.aliases[symbol]) {
69
+ return false;
70
+ }
71
+ delete config.aliases[symbol];
72
+ saveUserTokens(config);
73
+ return true;
74
+ }
75
+ /**
76
+ * Get merged token list (user aliases + core tokens)
77
+ * User aliases have priority
78
+ */
79
+ export function getMergedTokens() {
80
+ const userConfig = loadUserTokens();
81
+ // Start with core tokens
82
+ const merged = { ...CORE_TOKENS };
83
+ // Overlay user aliases (they take priority)
84
+ for (const [symbol, address] of Object.entries(userConfig.aliases)) {
85
+ merged[symbol] = address;
86
+ }
87
+ return merged;
88
+ }
89
+ //# sourceMappingURL=userTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userTokens.js","sourceRoot":"","sources":["../../src/jaine/userTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export interface PatchResult {
2
+ status: "created" | "updated" | "exists";
3
+ path: string;
4
+ keysSet: string[];
5
+ keysSkipped: string[];
6
+ }
7
+ /**
8
+ * Resolve the path to openclaw.json.
9
+ * Priority:
10
+ * 1. OPENCLAW_CONFIG_PATH (full path to file)
11
+ * 2. OPENCLAW_HOME → join(OPENCLAW_HOME, "openclaw.json")
12
+ * 3. fallback: ~/.openclaw/openclaw.json
13
+ */
14
+ export declare function getOpenclawConfigPath(): string;
15
+ /**
16
+ * Load openclaw.json (supports JSON5: comments, trailing commas).
17
+ * Returns null if file does not exist.
18
+ * Throws EchoError on parse failure.
19
+ */
20
+ export declare function loadOpenclawConfig(): Record<string, any> | null;
21
+ /**
22
+ * Patch env vars in openclaw.json at skills.entries.<skillKey>.env.
23
+ * Per-key: existing keys are skipped unless force=true.
24
+ * Writes standard JSON (JSON5 comments/formatting are lost — intentional).
25
+ */
26
+ export declare function patchOpenclawSkillEnv(skillKey: string, env: Record<string, string>, opts?: {
27
+ force?: boolean;
28
+ }): PatchResult;
29
+ /**
30
+ * Generic deep-set patcher for openclaw.json.
31
+ * Sets a value at an arbitrary dot-separated path (e.g. "models.providers.zg").
32
+ *
33
+ * Options:
34
+ * - force: overwrite existing value (default: false — skip if path already exists)
35
+ * - merge: shallow-merge object values at the target path (default: true for objects)
36
+ *
37
+ * JSON5 input → standard JSON output (comments/formatting lost — intentional).
38
+ */
39
+ export declare function patchOpenclawConfig(dotPath: string, value: unknown, opts?: {
40
+ force?: boolean;
41
+ merge?: boolean;
42
+ }): PatchResult;
43
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/openclaw/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAQ9C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgB/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,WAAW,CAkFb;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1C,WAAW,CAuGb"}
@@ -0,0 +1,231 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync, unlinkSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import JSON5 from "json5";
5
+ import { EchoError, ErrorCodes } from "../errors.js";
6
+ import logger from "../utils/logger.js";
7
+ /**
8
+ * Resolve the path to openclaw.json.
9
+ * Priority:
10
+ * 1. OPENCLAW_CONFIG_PATH (full path to file)
11
+ * 2. OPENCLAW_HOME → join(OPENCLAW_HOME, "openclaw.json")
12
+ * 3. fallback: ~/.openclaw/openclaw.json
13
+ */
14
+ export function getOpenclawConfigPath() {
15
+ if (process.env.OPENCLAW_CONFIG_PATH) {
16
+ return process.env.OPENCLAW_CONFIG_PATH;
17
+ }
18
+ if (process.env.OPENCLAW_HOME) {
19
+ return join(process.env.OPENCLAW_HOME, "openclaw.json");
20
+ }
21
+ return join(homedir(), ".openclaw", "openclaw.json");
22
+ }
23
+ /**
24
+ * Load openclaw.json (supports JSON5: comments, trailing commas).
25
+ * Returns null if file does not exist.
26
+ * Throws EchoError on parse failure.
27
+ */
28
+ export function loadOpenclawConfig() {
29
+ const configPath = getOpenclawConfigPath();
30
+ if (!existsSync(configPath)) {
31
+ return null;
32
+ }
33
+ try {
34
+ const raw = readFileSync(configPath, "utf-8");
35
+ return JSON5.parse(raw);
36
+ }
37
+ catch (err) {
38
+ throw new EchoError(ErrorCodes.OPENCLAW_CONFIG_PARSE_FAILED, `Failed to parse ${configPath}: ${err instanceof Error ? err.message : String(err)}`, "Check that openclaw.json is valid JSON or JSON5.");
39
+ }
40
+ }
41
+ /**
42
+ * Patch env vars in openclaw.json at skills.entries.<skillKey>.env.
43
+ * Per-key: existing keys are skipped unless force=true.
44
+ * Writes standard JSON (JSON5 comments/formatting are lost — intentional).
45
+ */
46
+ export function patchOpenclawSkillEnv(skillKey, env, opts) {
47
+ const configPath = getOpenclawConfigPath();
48
+ const fileExisted = existsSync(configPath);
49
+ const force = opts?.force ?? false;
50
+ // Load or start fresh
51
+ let data;
52
+ if (fileExisted) {
53
+ data = loadOpenclawConfig() ?? {};
54
+ }
55
+ else {
56
+ data = {};
57
+ }
58
+ // Ensure nested path: skills.entries.<skillKey>.env
59
+ if (!data.skills || typeof data.skills !== "object") {
60
+ data.skills = {};
61
+ }
62
+ if (!data.skills.entries || typeof data.skills.entries !== "object") {
63
+ data.skills.entries = {};
64
+ }
65
+ if (!data.skills.entries[skillKey] || typeof data.skills.entries[skillKey] !== "object") {
66
+ data.skills.entries[skillKey] = {};
67
+ }
68
+ if (!data.skills.entries[skillKey].env || typeof data.skills.entries[skillKey].env !== "object") {
69
+ data.skills.entries[skillKey].env = {};
70
+ }
71
+ const envTarget = data.skills.entries[skillKey].env;
72
+ const keysSet = [];
73
+ const keysSkipped = [];
74
+ for (const [key, value] of Object.entries(env)) {
75
+ if (key in envTarget && !force) {
76
+ keysSkipped.push(key);
77
+ }
78
+ else {
79
+ envTarget[key] = value;
80
+ keysSet.push(key);
81
+ }
82
+ }
83
+ // Log keys only (never values)
84
+ if (keysSet.length > 0) {
85
+ logger.debug(`OpenClaw config: setting keys [${keysSet.join(", ")}] for skill "${skillKey}"`);
86
+ }
87
+ if (keysSkipped.length > 0) {
88
+ logger.debug(`OpenClaw config: skipped existing keys [${keysSkipped.join(", ")}] (use --force to overwrite)`);
89
+ }
90
+ // Determine status before write
91
+ let status;
92
+ if (!fileExisted) {
93
+ status = "created";
94
+ }
95
+ else if (keysSet.length > 0) {
96
+ status = "updated";
97
+ }
98
+ else {
99
+ status = "exists";
100
+ }
101
+ // Only write if something changed
102
+ if (status !== "exists") {
103
+ const dir = dirname(configPath);
104
+ mkdirSync(dir, { recursive: true });
105
+ const tmpFile = join(dir, `.openclaw.tmp.${Date.now()}.json`);
106
+ try {
107
+ writeFileSync(tmpFile, JSON.stringify(data, null, 2), "utf-8");
108
+ renameSync(tmpFile, configPath);
109
+ }
110
+ catch (err) {
111
+ try {
112
+ if (existsSync(tmpFile))
113
+ unlinkSync(tmpFile);
114
+ }
115
+ catch {
116
+ // ignore cleanup
117
+ }
118
+ throw new EchoError(ErrorCodes.OPENCLAW_CONFIG_WRITE_FAILED, `Failed to write ${configPath}: ${err instanceof Error ? err.message : String(err)}`, "Check file permissions on the .openclaw directory.");
119
+ }
120
+ }
121
+ return { status, path: configPath, keysSet, keysSkipped };
122
+ }
123
+ /**
124
+ * Generic deep-set patcher for openclaw.json.
125
+ * Sets a value at an arbitrary dot-separated path (e.g. "models.providers.zg").
126
+ *
127
+ * Options:
128
+ * - force: overwrite existing value (default: false — skip if path already exists)
129
+ * - merge: shallow-merge object values at the target path (default: true for objects)
130
+ *
131
+ * JSON5 input → standard JSON output (comments/formatting lost — intentional).
132
+ */
133
+ export function patchOpenclawConfig(dotPath, value, opts) {
134
+ const configPath = getOpenclawConfigPath();
135
+ const fileExisted = existsSync(configPath);
136
+ const force = opts?.force ?? false;
137
+ const merge = opts?.merge ?? true;
138
+ let data;
139
+ if (fileExisted) {
140
+ data = loadOpenclawConfig() ?? {};
141
+ }
142
+ else {
143
+ data = {};
144
+ }
145
+ const segments = dotPath.split(".");
146
+ const lastKey = segments[segments.length - 1];
147
+ let cursor = data;
148
+ // Walk path, create intermediate objects as needed
149
+ for (let i = 0; i < segments.length - 1; i++) {
150
+ const seg = segments[i];
151
+ if (!cursor[seg] || typeof cursor[seg] !== "object") {
152
+ cursor[seg] = {};
153
+ }
154
+ cursor = cursor[seg];
155
+ }
156
+ const keysSet = [];
157
+ const keysSkipped = [];
158
+ const existing = cursor[lastKey];
159
+ const pathExists = lastKey in cursor;
160
+ if (pathExists && !force && !merge) {
161
+ keysSkipped.push(dotPath);
162
+ }
163
+ else if (pathExists &&
164
+ !force &&
165
+ merge &&
166
+ typeof existing === "object" &&
167
+ existing !== null &&
168
+ !Array.isArray(existing) &&
169
+ typeof value === "object" &&
170
+ value !== null &&
171
+ !Array.isArray(value)) {
172
+ // Shallow merge: only set keys that don't already exist
173
+ for (const [k, v] of Object.entries(value)) {
174
+ if (k in existing) {
175
+ keysSkipped.push(`${dotPath}.${k}`);
176
+ }
177
+ else {
178
+ existing[k] = v;
179
+ keysSet.push(`${dotPath}.${k}`);
180
+ }
181
+ }
182
+ }
183
+ else if (pathExists && force) {
184
+ cursor[lastKey] = value;
185
+ keysSet.push(dotPath);
186
+ }
187
+ else if (!pathExists) {
188
+ cursor[lastKey] = value;
189
+ keysSet.push(dotPath);
190
+ }
191
+ else {
192
+ keysSkipped.push(dotPath);
193
+ }
194
+ if (keysSet.length > 0) {
195
+ logger.debug(`OpenClaw config: set [${keysSet.join(", ")}] at "${dotPath}"`);
196
+ }
197
+ if (keysSkipped.length > 0) {
198
+ logger.debug(`OpenClaw config: skipped [${keysSkipped.join(", ")}] at "${dotPath}" (use --force to overwrite)`);
199
+ }
200
+ let status;
201
+ if (!fileExisted) {
202
+ status = "created";
203
+ }
204
+ else if (keysSet.length > 0) {
205
+ status = "updated";
206
+ }
207
+ else {
208
+ status = "exists";
209
+ }
210
+ if (status !== "exists") {
211
+ const dir = dirname(configPath);
212
+ mkdirSync(dir, { recursive: true });
213
+ const tmpFile = join(dir, `.openclaw.tmp.${Date.now()}.json`);
214
+ try {
215
+ writeFileSync(tmpFile, JSON.stringify(data, null, 2), "utf-8");
216
+ renameSync(tmpFile, configPath);
217
+ }
218
+ catch (err) {
219
+ try {
220
+ if (existsSync(tmpFile))
221
+ unlinkSync(tmpFile);
222
+ }
223
+ catch {
224
+ // ignore cleanup
225
+ }
226
+ throw new EchoError(ErrorCodes.OPENCLAW_CONFIG_WRITE_FAILED, `Failed to write ${configPath}: ${err instanceof Error ? err.message : String(err)}`, "Check file permissions on the .openclaw directory.");
227
+ }
228
+ }
229
+ return { status, path: configPath, keysSet, keysSkipped };
230
+ }
231
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/openclaw/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * OpenClaw webhook notification client.
3
+ *
4
+ * Sends trade events to OpenClaw Gateway (POST /hooks/agent) so the agent
5
+ * can deliver notifications to the user's messenger (WhatsApp, Telegram, etc.).
6
+ *
7
+ * Configuration via ENV vars — disabled when not set.
8
+ * Fire-and-forget: errors are logged but never thrown.
9
+ */
10
+ import type { BotNotification } from "../bot/types.js";
11
+ export interface OpenClawHooksConfig {
12
+ baseUrl: string;
13
+ token: string;
14
+ agentId?: string;
15
+ channel?: string;
16
+ to?: string;
17
+ includeGuardrail: boolean;
18
+ }
19
+ export declare function loadHooksConfig(): OpenClawHooksConfig | null;
20
+ /** Test-only: resets cached ENV config so next call re-reads process.env. */
21
+ export declare function _resetConfigCache(): void;
22
+ export declare function formatWebhookMessage(notification: BotNotification): string | null;
23
+ export declare function postWebhookNotification(notification: BotNotification): Promise<void>;
24
+ //# sourceMappingURL=hooks-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-client.d.ts","sourceRoot":"","sources":["../../src/openclaw/hooks-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,eAAe,IAAI,mBAAmB,GAAG,IAAI,CAoB5D;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAMD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAyBjF;AAID,wBAAsB,uBAAuB,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD1F"}