@terkoizmy/intent-sdk 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/LICENSE +21 -0
  2. package/README.md +258 -0
  3. package/dist/config/chains.d.ts +25 -0
  4. package/dist/config/chains.d.ts.map +1 -0
  5. package/dist/config/chains.js +85 -0
  6. package/dist/config/chains.js.map +1 -0
  7. package/dist/config/default.d.ts +39 -0
  8. package/dist/config/default.d.ts.map +1 -0
  9. package/dist/config/default.js +46 -0
  10. package/dist/config/default.js.map +1 -0
  11. package/dist/config/testnets.d.ts +31 -0
  12. package/dist/config/testnets.d.ts.map +1 -0
  13. package/dist/config/testnets.js +99 -0
  14. package/dist/config/testnets.js.map +1 -0
  15. package/dist/errors/inventory-errors.d.ts +31 -0
  16. package/dist/errors/inventory-errors.d.ts.map +1 -0
  17. package/dist/errors/inventory-errors.js +45 -0
  18. package/dist/errors/inventory-errors.js.map +1 -0
  19. package/dist/errors/settlement-errors.d.ts +27 -0
  20. package/dist/errors/settlement-errors.d.ts.map +1 -0
  21. package/dist/errors/settlement-errors.js +39 -0
  22. package/dist/errors/settlement-errors.js.map +1 -0
  23. package/dist/errors/solver-errors.d.ts +45 -0
  24. package/dist/errors/solver-errors.d.ts.map +1 -0
  25. package/dist/errors/solver-errors.js +66 -0
  26. package/dist/errors/solver-errors.js.map +1 -0
  27. package/dist/index.d.ts +34 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +28 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/parser/classifiers/intent-classifier.d.ts +40 -0
  32. package/dist/parser/classifiers/intent-classifier.d.ts.map +1 -0
  33. package/dist/parser/classifiers/intent-classifier.js +72 -0
  34. package/dist/parser/classifiers/intent-classifier.js.map +1 -0
  35. package/dist/parser/extractors/action.d.ts +32 -0
  36. package/dist/parser/extractors/action.d.ts.map +1 -0
  37. package/dist/parser/extractors/action.js +72 -0
  38. package/dist/parser/extractors/action.js.map +1 -0
  39. package/dist/parser/extractors/amount.d.ts +39 -0
  40. package/dist/parser/extractors/amount.d.ts.map +1 -0
  41. package/dist/parser/extractors/amount.js +113 -0
  42. package/dist/parser/extractors/amount.js.map +1 -0
  43. package/dist/parser/extractors/constraints.d.ts +37 -0
  44. package/dist/parser/extractors/constraints.d.ts.map +1 -0
  45. package/dist/parser/extractors/constraints.js +119 -0
  46. package/dist/parser/extractors/constraints.js.map +1 -0
  47. package/dist/parser/extractors/index.d.ts +5 -0
  48. package/dist/parser/extractors/index.d.ts.map +1 -0
  49. package/dist/parser/extractors/index.js +5 -0
  50. package/dist/parser/extractors/index.js.map +1 -0
  51. package/dist/parser/extractors/token.d.ts +24 -0
  52. package/dist/parser/extractors/token.d.ts.map +1 -0
  53. package/dist/parser/extractors/token.js +124 -0
  54. package/dist/parser/extractors/token.js.map +1 -0
  55. package/dist/parser/index.d.ts +125 -0
  56. package/dist/parser/index.d.ts.map +1 -0
  57. package/dist/parser/index.js +293 -0
  58. package/dist/parser/index.js.map +1 -0
  59. package/dist/parser/template/bridge.d.ts +37 -0
  60. package/dist/parser/template/bridge.d.ts.map +1 -0
  61. package/dist/parser/template/bridge.js +80 -0
  62. package/dist/parser/template/bridge.js.map +1 -0
  63. package/dist/parser/template/claim.d.ts +15 -0
  64. package/dist/parser/template/claim.d.ts.map +1 -0
  65. package/dist/parser/template/claim.js +36 -0
  66. package/dist/parser/template/claim.js.map +1 -0
  67. package/dist/parser/template/index.d.ts +28 -0
  68. package/dist/parser/template/index.d.ts.map +1 -0
  69. package/dist/parser/template/index.js +50 -0
  70. package/dist/parser/template/index.js.map +1 -0
  71. package/dist/parser/template/nft.d.ts +3 -0
  72. package/dist/parser/template/nft.d.ts.map +1 -0
  73. package/dist/parser/template/nft.js +19 -0
  74. package/dist/parser/template/nft.js.map +1 -0
  75. package/dist/parser/template/send.d.ts +24 -0
  76. package/dist/parser/template/send.d.ts.map +1 -0
  77. package/dist/parser/template/send.js +61 -0
  78. package/dist/parser/template/send.js.map +1 -0
  79. package/dist/parser/template/swap.d.ts +3 -0
  80. package/dist/parser/template/swap.d.ts.map +1 -0
  81. package/dist/parser/template/swap.js +21 -0
  82. package/dist/parser/template/swap.js.map +1 -0
  83. package/dist/parser/template/unknown.d.ts +3 -0
  84. package/dist/parser/template/unknown.d.ts.map +1 -0
  85. package/dist/parser/template/unknown.js +11 -0
  86. package/dist/parser/template/unknown.js.map +1 -0
  87. package/dist/parser/template/yield.d.ts +3 -0
  88. package/dist/parser/template/yield.d.ts.map +1 -0
  89. package/dist/parser/template/yield.js +25 -0
  90. package/dist/parser/template/yield.js.map +1 -0
  91. package/dist/parser/utils/normalize.d.ts +41 -0
  92. package/dist/parser/utils/normalize.d.ts.map +1 -0
  93. package/dist/parser/utils/normalize.js +71 -0
  94. package/dist/parser/utils/normalize.js.map +1 -0
  95. package/dist/parser/utils/parser-helpers.d.ts +20 -0
  96. package/dist/parser/utils/parser-helpers.d.ts.map +1 -0
  97. package/dist/parser/utils/parser-helpers.js +282 -0
  98. package/dist/parser/utils/parser-helpers.js.map +1 -0
  99. package/dist/parser/validators/schema.d.ts +14 -0
  100. package/dist/parser/validators/schema.d.ts.map +1 -0
  101. package/dist/parser/validators/schema.js +81 -0
  102. package/dist/parser/validators/schema.js.map +1 -0
  103. package/dist/sdk-factory.d.ts +55 -0
  104. package/dist/sdk-factory.d.ts.map +1 -0
  105. package/dist/sdk-factory.js +49 -0
  106. package/dist/sdk-factory.js.map +1 -0
  107. package/dist/services/token-resolver.d.ts +142 -0
  108. package/dist/services/token-resolver.d.ts.map +1 -0
  109. package/dist/services/token-resolver.js +254 -0
  110. package/dist/services/token-resolver.js.map +1 -0
  111. package/dist/shared/chain-registry/chain-names.d.ts +22 -0
  112. package/dist/shared/chain-registry/chain-names.d.ts.map +1 -0
  113. package/dist/shared/chain-registry/chain-names.js +49 -0
  114. package/dist/shared/chain-registry/chain-names.js.map +1 -0
  115. package/dist/shared/chain-registry/configs/arbitrum-sepolia.d.ts +9 -0
  116. package/dist/shared/chain-registry/configs/arbitrum-sepolia.d.ts.map +1 -0
  117. package/dist/shared/chain-registry/configs/arbitrum-sepolia.js +9 -0
  118. package/dist/shared/chain-registry/configs/arbitrum-sepolia.js.map +1 -0
  119. package/dist/shared/chain-registry/configs/base-sepolia.d.ts +9 -0
  120. package/dist/shared/chain-registry/configs/base-sepolia.d.ts.map +1 -0
  121. package/dist/shared/chain-registry/configs/base-sepolia.js +9 -0
  122. package/dist/shared/chain-registry/configs/base-sepolia.js.map +1 -0
  123. package/dist/shared/chain-registry/configs/ethereum.d.ts +7 -0
  124. package/dist/shared/chain-registry/configs/ethereum.d.ts.map +1 -0
  125. package/dist/shared/chain-registry/configs/ethereum.js +7 -0
  126. package/dist/shared/chain-registry/configs/ethereum.js.map +1 -0
  127. package/dist/shared/chain-registry/configs/polygon.d.ts +7 -0
  128. package/dist/shared/chain-registry/configs/polygon.d.ts.map +1 -0
  129. package/dist/shared/chain-registry/configs/polygon.js +7 -0
  130. package/dist/shared/chain-registry/configs/polygon.js.map +1 -0
  131. package/dist/shared/chain-registry/configs/sepolia.d.ts +9 -0
  132. package/dist/shared/chain-registry/configs/sepolia.d.ts.map +1 -0
  133. package/dist/shared/chain-registry/configs/sepolia.js +9 -0
  134. package/dist/shared/chain-registry/configs/sepolia.js.map +1 -0
  135. package/dist/shared/chain-registry/configs/unichain-sepolia.d.ts +9 -0
  136. package/dist/shared/chain-registry/configs/unichain-sepolia.d.ts.map +1 -0
  137. package/dist/shared/chain-registry/configs/unichain-sepolia.js +9 -0
  138. package/dist/shared/chain-registry/configs/unichain-sepolia.js.map +1 -0
  139. package/dist/shared/chain-registry/registry.d.ts +50 -0
  140. package/dist/shared/chain-registry/registry.d.ts.map +1 -0
  141. package/dist/shared/chain-registry/registry.js +72 -0
  142. package/dist/shared/chain-registry/registry.js.map +1 -0
  143. package/dist/shared/rpc/provider-manager.d.ts +111 -0
  144. package/dist/shared/rpc/provider-manager.d.ts.map +1 -0
  145. package/dist/shared/rpc/provider-manager.js +116 -0
  146. package/dist/shared/rpc/provider-manager.js.map +1 -0
  147. package/dist/shared/rpc/viem-provider.d.ts +78 -0
  148. package/dist/shared/rpc/viem-provider.d.ts.map +1 -0
  149. package/dist/shared/rpc/viem-provider.js +187 -0
  150. package/dist/shared/rpc/viem-provider.js.map +1 -0
  151. package/dist/shared/token-registry/enrichment.d.ts +48 -0
  152. package/dist/shared/token-registry/enrichment.d.ts.map +1 -0
  153. package/dist/shared/token-registry/enrichment.js +69 -0
  154. package/dist/shared/token-registry/enrichment.js.map +1 -0
  155. package/dist/shared/token-registry/registry.d.ts +119 -0
  156. package/dist/shared/token-registry/registry.d.ts.map +1 -0
  157. package/dist/shared/token-registry/registry.js +200 -0
  158. package/dist/shared/token-registry/registry.js.map +1 -0
  159. package/dist/shared/utils/erc20-utils.d.ts +24 -0
  160. package/dist/shared/utils/erc20-utils.d.ts.map +1 -0
  161. package/dist/shared/utils/erc20-utils.js +31 -0
  162. package/dist/shared/utils/erc20-utils.js.map +1 -0
  163. package/dist/shared/utils/retry.d.ts +57 -0
  164. package/dist/shared/utils/retry.d.ts.map +1 -0
  165. package/dist/shared/utils/retry.js +104 -0
  166. package/dist/shared/utils/retry.js.map +1 -0
  167. package/dist/shared/wallet-manager/viem-signer.d.ts +68 -0
  168. package/dist/shared/wallet-manager/viem-signer.d.ts.map +1 -0
  169. package/dist/shared/wallet-manager/viem-signer.js +116 -0
  170. package/dist/shared/wallet-manager/viem-signer.js.map +1 -0
  171. package/dist/shared/wallet-manager/wallet-manager.d.ts +96 -0
  172. package/dist/shared/wallet-manager/wallet-manager.d.ts.map +1 -0
  173. package/dist/shared/wallet-manager/wallet-manager.js +104 -0
  174. package/dist/shared/wallet-manager/wallet-manager.js.map +1 -0
  175. package/dist/solver/agent/agent-config.d.ts +62 -0
  176. package/dist/solver/agent/agent-config.d.ts.map +1 -0
  177. package/dist/solver/agent/agent-config.js +59 -0
  178. package/dist/solver/agent/agent-config.js.map +1 -0
  179. package/dist/solver/agent/index.d.ts +6 -0
  180. package/dist/solver/agent/index.d.ts.map +1 -0
  181. package/dist/solver/agent/index.js +6 -0
  182. package/dist/solver/agent/index.js.map +1 -0
  183. package/dist/solver/agent/liquidity-agent.d.ts +118 -0
  184. package/dist/solver/agent/liquidity-agent.d.ts.map +1 -0
  185. package/dist/solver/agent/liquidity-agent.js +285 -0
  186. package/dist/solver/agent/liquidity-agent.js.map +1 -0
  187. package/dist/solver/contracts/intent-settlement/index.d.ts +2 -0
  188. package/dist/solver/contracts/intent-settlement/index.d.ts.map +1 -0
  189. package/dist/solver/contracts/intent-settlement/index.js +2 -0
  190. package/dist/solver/contracts/intent-settlement/index.js.map +1 -0
  191. package/dist/solver/contracts/intent-settlement/intent-settlement.d.ts +22 -0
  192. package/dist/solver/contracts/intent-settlement/intent-settlement.d.ts.map +1 -0
  193. package/dist/solver/contracts/intent-settlement/intent-settlement.js +58 -0
  194. package/dist/solver/contracts/intent-settlement/intent-settlement.js.map +1 -0
  195. package/dist/solver/contracts/intent-settlement/viem-settlement-contract.d.ts +226 -0
  196. package/dist/solver/contracts/intent-settlement/viem-settlement-contract.d.ts.map +1 -0
  197. package/dist/solver/contracts/intent-settlement/viem-settlement-contract.js +204 -0
  198. package/dist/solver/contracts/intent-settlement/viem-settlement-contract.js.map +1 -0
  199. package/dist/solver/index.d.ts +87 -0
  200. package/dist/solver/index.d.ts.map +1 -0
  201. package/dist/solver/index.js +167 -0
  202. package/dist/solver/index.js.map +1 -0
  203. package/dist/solver/inventory/index.d.ts +7 -0
  204. package/dist/solver/inventory/index.d.ts.map +1 -0
  205. package/dist/solver/inventory/index.js +7 -0
  206. package/dist/solver/inventory/index.js.map +1 -0
  207. package/dist/solver/inventory/inventory-manager.d.ts +135 -0
  208. package/dist/solver/inventory/inventory-manager.d.ts.map +1 -0
  209. package/dist/solver/inventory/inventory-manager.js +323 -0
  210. package/dist/solver/inventory/inventory-manager.js.map +1 -0
  211. package/dist/solver/inventory/inventory-monitor.d.ts +72 -0
  212. package/dist/solver/inventory/inventory-monitor.d.ts.map +1 -0
  213. package/dist/solver/inventory/inventory-monitor.js +123 -0
  214. package/dist/solver/inventory/inventory-monitor.js.map +1 -0
  215. package/dist/solver/inventory/rebalancer.d.ts +78 -0
  216. package/dist/solver/inventory/rebalancer.d.ts.map +1 -0
  217. package/dist/solver/inventory/rebalancer.js +210 -0
  218. package/dist/solver/inventory/rebalancer.js.map +1 -0
  219. package/dist/solver/mempool/index.d.ts +8 -0
  220. package/dist/solver/mempool/index.d.ts.map +1 -0
  221. package/dist/solver/mempool/index.js +8 -0
  222. package/dist/solver/mempool/index.js.map +1 -0
  223. package/dist/solver/mempool/intent-filter.d.ts +49 -0
  224. package/dist/solver/mempool/intent-filter.d.ts.map +1 -0
  225. package/dist/solver/mempool/intent-filter.js +75 -0
  226. package/dist/solver/mempool/intent-filter.js.map +1 -0
  227. package/dist/solver/mempool/mempool-client.d.ts +105 -0
  228. package/dist/solver/mempool/mempool-client.d.ts.map +1 -0
  229. package/dist/solver/mempool/mempool-client.js +161 -0
  230. package/dist/solver/mempool/mempool-client.js.map +1 -0
  231. package/dist/solver/mempool/mempool-monitor.d.ts +71 -0
  232. package/dist/solver/mempool/mempool-monitor.d.ts.map +1 -0
  233. package/dist/solver/mempool/mempool-monitor.js +127 -0
  234. package/dist/solver/mempool/mempool-monitor.js.map +1 -0
  235. package/dist/solver/mempool/solution-submitter.d.ts +41 -0
  236. package/dist/solver/mempool/solution-submitter.d.ts.map +1 -0
  237. package/dist/solver/mempool/solution-submitter.js +71 -0
  238. package/dist/solver/mempool/solution-submitter.js.map +1 -0
  239. package/dist/solver/monitoring/alert-manager.d.ts +43 -0
  240. package/dist/solver/monitoring/alert-manager.d.ts.map +1 -0
  241. package/dist/solver/monitoring/alert-manager.js +69 -0
  242. package/dist/solver/monitoring/alert-manager.js.map +1 -0
  243. package/dist/solver/monitoring/health-checker.d.ts +53 -0
  244. package/dist/solver/monitoring/health-checker.d.ts.map +1 -0
  245. package/dist/solver/monitoring/health-checker.js +94 -0
  246. package/dist/solver/monitoring/health-checker.js.map +1 -0
  247. package/dist/solver/monitoring/index.d.ts +7 -0
  248. package/dist/solver/monitoring/index.d.ts.map +1 -0
  249. package/dist/solver/monitoring/index.js +7 -0
  250. package/dist/solver/monitoring/index.js.map +1 -0
  251. package/dist/solver/monitoring/profit-tracker.d.ts +47 -0
  252. package/dist/solver/monitoring/profit-tracker.d.ts.map +1 -0
  253. package/dist/solver/monitoring/profit-tracker.js +112 -0
  254. package/dist/solver/monitoring/profit-tracker.js.map +1 -0
  255. package/dist/solver/pricing/dynamic-pricing.d.ts +86 -0
  256. package/dist/solver/pricing/dynamic-pricing.d.ts.map +1 -0
  257. package/dist/solver/pricing/dynamic-pricing.js +189 -0
  258. package/dist/solver/pricing/dynamic-pricing.js.map +1 -0
  259. package/dist/solver/pricing/fee-calculator.d.ts +101 -0
  260. package/dist/solver/pricing/fee-calculator.d.ts.map +1 -0
  261. package/dist/solver/pricing/fee-calculator.js +149 -0
  262. package/dist/solver/pricing/fee-calculator.js.map +1 -0
  263. package/dist/solver/pricing/index.d.ts +7 -0
  264. package/dist/solver/pricing/index.d.ts.map +1 -0
  265. package/dist/solver/pricing/index.js +7 -0
  266. package/dist/solver/pricing/index.js.map +1 -0
  267. package/dist/solver/pricing/slippage-capture.d.ts +47 -0
  268. package/dist/solver/pricing/slippage-capture.d.ts.map +1 -0
  269. package/dist/solver/pricing/slippage-capture.js +63 -0
  270. package/dist/solver/pricing/slippage-capture.js.map +1 -0
  271. package/dist/solver/protocols/aggregators/lifi.d.ts +109 -0
  272. package/dist/solver/protocols/aggregators/lifi.d.ts.map +1 -0
  273. package/dist/solver/protocols/aggregators/lifi.js +110 -0
  274. package/dist/solver/protocols/aggregators/lifi.js.map +1 -0
  275. package/dist/solver/protocols/aggregators/swing.d.ts +67 -0
  276. package/dist/solver/protocols/aggregators/swing.d.ts.map +1 -0
  277. package/dist/solver/protocols/aggregators/swing.js +212 -0
  278. package/dist/solver/protocols/aggregators/swing.js.map +1 -0
  279. package/dist/solver/protocols/base-protocol.d.ts +42 -0
  280. package/dist/solver/protocols/base-protocol.d.ts.map +1 -0
  281. package/dist/solver/protocols/base-protocol.js +16 -0
  282. package/dist/solver/protocols/base-protocol.js.map +1 -0
  283. package/dist/solver/protocols/index.d.ts +10 -0
  284. package/dist/solver/protocols/index.d.ts.map +1 -0
  285. package/dist/solver/protocols/index.js +10 -0
  286. package/dist/solver/protocols/index.js.map +1 -0
  287. package/dist/solver/protocols/lending/aave.d.ts +51 -0
  288. package/dist/solver/protocols/lending/aave.d.ts.map +1 -0
  289. package/dist/solver/protocols/lending/aave.js +172 -0
  290. package/dist/solver/protocols/lending/aave.js.map +1 -0
  291. package/dist/solver/protocols/protocol-registry.d.ts +28 -0
  292. package/dist/solver/protocols/protocol-registry.d.ts.map +1 -0
  293. package/dist/solver/protocols/protocol-registry.js +40 -0
  294. package/dist/solver/protocols/protocol-registry.js.map +1 -0
  295. package/dist/solver/settlement/index.d.ts +7 -0
  296. package/dist/solver/settlement/index.d.ts.map +1 -0
  297. package/dist/solver/settlement/index.js +7 -0
  298. package/dist/solver/settlement/index.js.map +1 -0
  299. package/dist/solver/settlement/live-settlement-manager.d.ts +62 -0
  300. package/dist/solver/settlement/live-settlement-manager.d.ts.map +1 -0
  301. package/dist/solver/settlement/live-settlement-manager.js +68 -0
  302. package/dist/solver/settlement/live-settlement-manager.js.map +1 -0
  303. package/dist/solver/settlement/proof-generator.d.ts +48 -0
  304. package/dist/solver/settlement/proof-generator.d.ts.map +1 -0
  305. package/dist/solver/settlement/proof-generator.js +100 -0
  306. package/dist/solver/settlement/proof-generator.js.map +1 -0
  307. package/dist/solver/settlement/proof-verifier.d.ts +31 -0
  308. package/dist/solver/settlement/proof-verifier.d.ts.map +1 -0
  309. package/dist/solver/settlement/proof-verifier.js +46 -0
  310. package/dist/solver/settlement/proof-verifier.js.map +1 -0
  311. package/dist/solver/settlement/settlement-manager.d.ts +97 -0
  312. package/dist/solver/settlement/settlement-manager.d.ts.map +1 -0
  313. package/dist/solver/settlement/settlement-manager.js +220 -0
  314. package/dist/solver/settlement/settlement-manager.js.map +1 -0
  315. package/dist/solver/types/agent.d.ts +92 -0
  316. package/dist/solver/types/agent.d.ts.map +1 -0
  317. package/dist/solver/types/agent.js +8 -0
  318. package/dist/solver/types/agent.js.map +1 -0
  319. package/dist/solver/types/execution.d.ts +70 -0
  320. package/dist/solver/types/execution.d.ts.map +1 -0
  321. package/dist/solver/types/execution.js +7 -0
  322. package/dist/solver/types/execution.js.map +1 -0
  323. package/dist/solver/types/index.d.ts +13 -0
  324. package/dist/solver/types/index.d.ts.map +1 -0
  325. package/dist/solver/types/index.js +13 -0
  326. package/dist/solver/types/index.js.map +1 -0
  327. package/dist/solver/types/intent.d.ts +82 -0
  328. package/dist/solver/types/intent.d.ts.map +1 -0
  329. package/dist/solver/types/intent.js +33 -0
  330. package/dist/solver/types/intent.js.map +1 -0
  331. package/dist/solver/types/inventory.d.ts +83 -0
  332. package/dist/solver/types/inventory.d.ts.map +1 -0
  333. package/dist/solver/types/inventory.js +8 -0
  334. package/dist/solver/types/inventory.js.map +1 -0
  335. package/dist/solver/types/pricing.d.ts +59 -0
  336. package/dist/solver/types/pricing.d.ts.map +1 -0
  337. package/dist/solver/types/pricing.js +8 -0
  338. package/dist/solver/types/pricing.js.map +1 -0
  339. package/dist/solver/types/settlement.d.ts +98 -0
  340. package/dist/solver/types/settlement.d.ts.map +1 -0
  341. package/dist/solver/types/settlement.js +9 -0
  342. package/dist/solver/types/settlement.js.map +1 -0
  343. package/dist/types/chain.d.ts +66 -0
  344. package/dist/types/chain.d.ts.map +1 -0
  345. package/dist/types/chain.js +7 -0
  346. package/dist/types/chain.js.map +1 -0
  347. package/dist/types/common.d.ts +44 -0
  348. package/dist/types/common.d.ts.map +1 -0
  349. package/dist/types/common.js +8 -0
  350. package/dist/types/common.js.map +1 -0
  351. package/dist/types/entities.d.ts +61 -0
  352. package/dist/types/entities.d.ts.map +1 -0
  353. package/dist/types/entities.js +2 -0
  354. package/dist/types/entities.js.map +1 -0
  355. package/dist/types/index.d.ts +44 -0
  356. package/dist/types/index.d.ts.map +1 -0
  357. package/dist/types/index.js +8 -0
  358. package/dist/types/index.js.map +1 -0
  359. package/dist/types/intent.d.ts +70 -0
  360. package/dist/types/intent.d.ts.map +1 -0
  361. package/dist/types/intent.js +2 -0
  362. package/dist/types/intent.js.map +1 -0
  363. package/dist/types/templates.d.ts +18 -0
  364. package/dist/types/templates.d.ts.map +1 -0
  365. package/dist/types/templates.js +2 -0
  366. package/dist/types/templates.js.map +1 -0
  367. package/dist/types/token.d.ts +132 -0
  368. package/dist/types/token.d.ts.map +1 -0
  369. package/dist/types/token.js +8 -0
  370. package/dist/types/token.js.map +1 -0
  371. package/package.json +62 -0
@@ -0,0 +1,78 @@
1
+ /**
2
+ * viem RPC Provider
3
+ *
4
+ * Implements IRPCProvider using viem's createPublicClient + http transport.
5
+ * Provides real JSON-RPC calls to EVM chains.
6
+ *
7
+ * Stage 3 — Live Integration (Phase B)
8
+ * Updated Phase G — Retry with exponential backoff for transient errors
9
+ *
10
+ * USAGE:
11
+ * import { createViemProviderFactory } from "./viem-provider";
12
+ * const rpm = new RPCProviderManager(createViemProviderFactory());
13
+ * rpm.registerChain(SEPOLIA_CONFIG);
14
+ * const provider = rpm.getProvider(11155111);
15
+ * const blockNumber = await provider.getBlockNumber();
16
+ */
17
+ import type { ChainConfig } from "../../types/chain";
18
+ import type { Address, ChainId } from "../../types/common";
19
+ import type { IRPCProvider, ProviderFactory } from "./provider-manager";
20
+ /**
21
+ * IRPCProvider implementation backed by viem's PublicClient.
22
+ *
23
+ * All RPC calls are wrapped with exponential-backoff retry for
24
+ * transient network errors (timeouts, 429, 502/503/504).
25
+ */
26
+ export declare class ViemProvider implements IRPCProvider {
27
+ readonly chainId: ChainId;
28
+ private readonly chainName;
29
+ private client;
30
+ constructor(config: ChainConfig);
31
+ /**
32
+ * Call a contract view function (eth_call).
33
+ */
34
+ call(to: Address, data: string): Promise<string>;
35
+ /**
36
+ * Get current block number.
37
+ */
38
+ getBlockNumber(): Promise<number>;
39
+ /**
40
+ * Get transaction receipt by hash.
41
+ */
42
+ getTransactionReceipt(txHash: string): Promise<{
43
+ status: number;
44
+ blockNumber: number;
45
+ gasUsed: string;
46
+ } | null>;
47
+ /**
48
+ * Get current gas price in wei.
49
+ */
50
+ getGasPrice(): Promise<string>;
51
+ /**
52
+ * Health check — try getBlockNumber and see if it succeeds.
53
+ */
54
+ isHealthy(): Promise<boolean>;
55
+ /**
56
+ * Send a signed transaction to the network.
57
+ */
58
+ sendRawTransaction(signedTx: `0x${string}`): Promise<string>;
59
+ /**
60
+ * Estimate gas for a transaction.
61
+ */
62
+ estimateGas(tx: {
63
+ to: Address;
64
+ data?: string;
65
+ value?: bigint;
66
+ from?: Address;
67
+ }): Promise<bigint>;
68
+ }
69
+ /**
70
+ * Factory function that creates ViemProvider instances.
71
+ *
72
+ * Pass this to RPCProviderManager constructor to wire real RPC connections.
73
+ *
74
+ * USAGE:
75
+ * const rpm = new RPCProviderManager(createViemProviderFactory());
76
+ */
77
+ export declare function createViemProviderFactory(): ProviderFactory;
78
+ //# sourceMappingURL=viem-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viem-provider.d.ts","sourceRoot":"","sources":["../../../src/shared/rpc/viem-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA8BxE;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC7C,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,MAAM,CAAmC;gBAErC,MAAM,EAAE,WAAW;IAU/B;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAYvC;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACjD,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IAqBT;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAYpC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IASnC;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAWlE;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE;QAClB,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;CAgBtB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAI3D"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * viem RPC Provider
3
+ *
4
+ * Implements IRPCProvider using viem's createPublicClient + http transport.
5
+ * Provides real JSON-RPC calls to EVM chains.
6
+ *
7
+ * Stage 3 — Live Integration (Phase B)
8
+ * Updated Phase G — Retry with exponential backoff for transient errors
9
+ *
10
+ * USAGE:
11
+ * import { createViemProviderFactory } from "./viem-provider";
12
+ * const rpm = new RPCProviderManager(createViemProviderFactory());
13
+ * rpm.registerChain(SEPOLIA_CONFIG);
14
+ * const provider = rpm.getProvider(11155111);
15
+ * const blockNumber = await provider.getBlockNumber();
16
+ */
17
+ import { createPublicClient, http } from "viem";
18
+ import { withRetry, isTransientNetworkError } from "../utils/retry";
19
+ import { getChainDisplayName } from "../chain-registry/chain-names";
20
+ /** Retry options tuned for RPC calls */
21
+ const RPC_RETRY_OPTIONS = {
22
+ maxRetries: 3,
23
+ baseDelayMs: 500,
24
+ maxDelayMs: 5_000,
25
+ isRetryable: isTransientNetworkError,
26
+ };
27
+ /**
28
+ * Convert our ChainConfig into a viem-compatible Chain definition.
29
+ */
30
+ function toViemChain(config) {
31
+ return {
32
+ id: config.id,
33
+ name: config.name,
34
+ nativeCurrency: config.nativeCurrency,
35
+ rpcUrls: {
36
+ default: { http: [config.rpcUrl, ...config.fallbackRpcUrls].filter(Boolean) },
37
+ public: { http: [config.rpcUrl, ...config.fallbackRpcUrls].filter(Boolean) },
38
+ },
39
+ blockExplorers: {
40
+ default: { name: "Explorer", url: config.explorer },
41
+ },
42
+ };
43
+ }
44
+ /**
45
+ * IRPCProvider implementation backed by viem's PublicClient.
46
+ *
47
+ * All RPC calls are wrapped with exponential-backoff retry for
48
+ * transient network errors (timeouts, 429, 502/503/504).
49
+ */
50
+ export class ViemProvider {
51
+ chainId;
52
+ chainName;
53
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
+ client;
55
+ constructor(config) {
56
+ this.chainId = config.id;
57
+ this.chainName = getChainDisplayName(config.id);
58
+ this.client = createPublicClient({
59
+ chain: toViemChain(config),
60
+ transport: http(config.rpcUrl),
61
+ });
62
+ }
63
+ /**
64
+ * Call a contract view function (eth_call).
65
+ */
66
+ async call(to, data) {
67
+ return withRetry(async () => {
68
+ const result = await this.client.call({ to, data: data });
69
+ return result.data || "0x";
70
+ }, {
71
+ ...RPC_RETRY_OPTIONS,
72
+ onRetry: (err, attempt) => {
73
+ console.warn(`[ViemProvider] ${this.chainName} call() retry ${attempt}: ${err.message}`);
74
+ },
75
+ });
76
+ }
77
+ /**
78
+ * Get current block number.
79
+ */
80
+ async getBlockNumber() {
81
+ return withRetry(async () => {
82
+ const blockNumber = await this.client.getBlockNumber();
83
+ return Number(blockNumber);
84
+ }, {
85
+ ...RPC_RETRY_OPTIONS,
86
+ onRetry: (err, attempt) => {
87
+ console.warn(`[ViemProvider] ${this.chainName} getBlockNumber() retry ${attempt}: ${err.message}`);
88
+ },
89
+ });
90
+ }
91
+ /**
92
+ * Get transaction receipt by hash.
93
+ */
94
+ async getTransactionReceipt(txHash) {
95
+ try {
96
+ return await withRetry(async () => {
97
+ const receipt = await this.client.getTransactionReceipt({ hash: txHash });
98
+ return {
99
+ status: receipt.status === "success" ? 1 : 0,
100
+ blockNumber: Number(receipt.blockNumber),
101
+ gasUsed: receipt.gasUsed.toString(),
102
+ };
103
+ }, {
104
+ ...RPC_RETRY_OPTIONS,
105
+ onRetry: (err, attempt) => {
106
+ console.warn(`[ViemProvider] ${this.chainName} getTransactionReceipt() retry ${attempt}: ${err.message}`);
107
+ },
108
+ });
109
+ }
110
+ catch (error) {
111
+ // Receipt not found throws in viem, so we return null
112
+ return null;
113
+ }
114
+ }
115
+ /**
116
+ * Get current gas price in wei.
117
+ */
118
+ async getGasPrice() {
119
+ return withRetry(async () => {
120
+ const gasPrice = await this.client.getGasPrice();
121
+ return gasPrice.toString();
122
+ }, {
123
+ ...RPC_RETRY_OPTIONS,
124
+ onRetry: (err, attempt) => {
125
+ console.warn(`[ViemProvider] ${this.chainName} getGasPrice() retry ${attempt}: ${err.message}`);
126
+ },
127
+ });
128
+ }
129
+ /**
130
+ * Health check — try getBlockNumber and see if it succeeds.
131
+ */
132
+ async isHealthy() {
133
+ try {
134
+ await this.client.getBlockNumber();
135
+ return true;
136
+ }
137
+ catch (error) {
138
+ return false;
139
+ }
140
+ }
141
+ /**
142
+ * Send a signed transaction to the network.
143
+ */
144
+ async sendRawTransaction(signedTx) {
145
+ return withRetry(async () => {
146
+ return await this.client.sendRawTransaction({ serializedTransaction: signedTx });
147
+ }, {
148
+ ...RPC_RETRY_OPTIONS,
149
+ onRetry: (err, attempt) => {
150
+ console.warn(`[ViemProvider] ${this.chainName} sendRawTransaction() retry ${attempt}: ${err.message}`);
151
+ },
152
+ });
153
+ }
154
+ /**
155
+ * Estimate gas for a transaction.
156
+ */
157
+ async estimateGas(tx) {
158
+ return withRetry(async () => {
159
+ const gas = await this.client.estimateGas({
160
+ to: tx.to,
161
+ data: tx.data,
162
+ value: tx.value,
163
+ account: tx.from,
164
+ });
165
+ return gas;
166
+ }, {
167
+ ...RPC_RETRY_OPTIONS,
168
+ onRetry: (err, attempt) => {
169
+ console.warn(`[ViemProvider] ${this.chainName} estimateGas() retry ${attempt}: ${err.message}`);
170
+ },
171
+ });
172
+ }
173
+ }
174
+ /**
175
+ * Factory function that creates ViemProvider instances.
176
+ *
177
+ * Pass this to RPCProviderManager constructor to wire real RPC connections.
178
+ *
179
+ * USAGE:
180
+ * const rpm = new RPCProviderManager(createViemProviderFactory());
181
+ */
182
+ export function createViemProviderFactory() {
183
+ return (config) => {
184
+ return new ViemProvider(config);
185
+ };
186
+ }
187
+ //# sourceMappingURL=viem-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viem-provider.js","sourceRoot":"","sources":["../../../src/shared/rpc/viem-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Token Enrichment Layer
3
+ *
4
+ * Bridges the gap between the IntentParser output (which has token symbols)
5
+ * and the IntentSolver input (which needs contract addresses).
6
+ *
7
+ * Takes a parsed StructuredIntent and enriches it with resolved token addresses
8
+ * from the TokenRegistry.
9
+ *
10
+ * Stage 3 — Live Integration
11
+ *
12
+ * USAGE:
13
+ * const registry = new TokenRegistry();
14
+ * registry.registerAll([...DEFAULT_TOKENS, ...TESTNET_TOKENS]);
15
+ *
16
+ * const parsed = parser.parse("Bridge 100 USDC to Arbitrum");
17
+ * const enriched = enrichIntent(parsed, registry, 1, 42161);
18
+ * // enriched.parameters.inputTokenAddress → "0xA0b86991..."
19
+ * // enriched.parameters.outputTokenAddress → "0xaf88d065..."
20
+ */
21
+ import type { StructuredIntent } from "../../types/intent";
22
+ import type { ChainId } from "../../types/common";
23
+ import type { TokenRegistry } from "./registry";
24
+ /**
25
+ * Result of intent enrichment
26
+ */
27
+ export interface EnrichedIntent extends StructuredIntent {
28
+ /** Whether token addresses were successfully resolved */
29
+ enriched: boolean;
30
+ /** Enrichment warnings (e.g., token not found, fallback used) */
31
+ enrichmentWarnings: string[];
32
+ }
33
+ /**
34
+ * Enrich a parsed intent with token contract addresses.
35
+ *
36
+ * Resolves `inputToken` symbol → `inputTokenAddress` on sourceChainId
37
+ * Resolves `outputToken` symbol → `outputTokenAddress` on targetChainId
38
+ *
39
+ * If a token cannot be resolved, it adds a warning and leaves the address field empty.
40
+ *
41
+ * @param intent - The parsed StructuredIntent from IntentParser
42
+ * @param registry - TokenRegistry instance with registered tokens
43
+ * @param sourceChainId - Chain ID for the input token (source chain)
44
+ * @param targetChainId - Chain ID for the output token (target chain), defaults to sourceChainId
45
+ * @returns EnrichedIntent with resolved addresses
46
+ */
47
+ export declare function enrichIntent(intent: StructuredIntent, registry: TokenRegistry, sourceChainId: ChainId, targetChainId?: ChainId): EnrichedIntent;
48
+ //# sourceMappingURL=enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../../src/shared/token-registry/enrichment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACpD,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;IAElB,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CACxB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,OAAO,EACtB,aAAa,CAAC,EAAE,OAAO,GACxB,cAAc,CAuChB"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Token Enrichment Layer
3
+ *
4
+ * Bridges the gap between the IntentParser output (which has token symbols)
5
+ * and the IntentSolver input (which needs contract addresses).
6
+ *
7
+ * Takes a parsed StructuredIntent and enriches it with resolved token addresses
8
+ * from the TokenRegistry.
9
+ *
10
+ * Stage 3 — Live Integration
11
+ *
12
+ * USAGE:
13
+ * const registry = new TokenRegistry();
14
+ * registry.registerAll([...DEFAULT_TOKENS, ...TESTNET_TOKENS]);
15
+ *
16
+ * const parsed = parser.parse("Bridge 100 USDC to Arbitrum");
17
+ * const enriched = enrichIntent(parsed, registry, 1, 42161);
18
+ * // enriched.parameters.inputTokenAddress → "0xA0b86991..."
19
+ * // enriched.parameters.outputTokenAddress → "0xaf88d065..."
20
+ */
21
+ /**
22
+ * Enrich a parsed intent with token contract addresses.
23
+ *
24
+ * Resolves `inputToken` symbol → `inputTokenAddress` on sourceChainId
25
+ * Resolves `outputToken` symbol → `outputTokenAddress` on targetChainId
26
+ *
27
+ * If a token cannot be resolved, it adds a warning and leaves the address field empty.
28
+ *
29
+ * @param intent - The parsed StructuredIntent from IntentParser
30
+ * @param registry - TokenRegistry instance with registered tokens
31
+ * @param sourceChainId - Chain ID for the input token (source chain)
32
+ * @param targetChainId - Chain ID for the output token (target chain), defaults to sourceChainId
33
+ * @returns EnrichedIntent with resolved addresses
34
+ */
35
+ export function enrichIntent(intent, registry, sourceChainId, targetChainId) {
36
+ const enrichedIntent = {
37
+ ...intent,
38
+ parameters: { ...intent.parameters },
39
+ enriched: false,
40
+ enrichmentWarnings: [],
41
+ };
42
+ const actualTargetChainId = targetChainId ?? sourceChainId;
43
+ let anySuccess = false;
44
+ // Resolve input token
45
+ if (enrichedIntent.parameters.inputToken) {
46
+ const inputToken = registry.get(enrichedIntent.parameters.inputToken.toUpperCase(), sourceChainId);
47
+ if (inputToken) {
48
+ enrichedIntent.parameters.inputTokenAddress = inputToken.address;
49
+ anySuccess = true;
50
+ }
51
+ else {
52
+ enrichedIntent.enrichmentWarnings.push(`Failed to resolve input token ${enrichedIntent.parameters.inputToken} on chain ${sourceChainId}`);
53
+ }
54
+ }
55
+ // Resolve output token
56
+ if (enrichedIntent.parameters.outputToken) {
57
+ const outputToken = registry.get(enrichedIntent.parameters.outputToken.toUpperCase(), actualTargetChainId);
58
+ if (outputToken) {
59
+ enrichedIntent.parameters.outputTokenAddress = outputToken.address;
60
+ anySuccess = true;
61
+ }
62
+ else {
63
+ enrichedIntent.enrichmentWarnings.push(`Failed to resolve output token ${enrichedIntent.parameters.outputToken} on chain ${actualTargetChainId}`);
64
+ }
65
+ }
66
+ enrichedIntent.enriched = anySuccess;
67
+ return enrichedIntent;
68
+ }
69
+ //# sourceMappingURL=enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichment.js","sourceRoot":"","sources":["../../../src/shared/token-registry/enrichment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAiBH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CACxB,MAAwB,EACxB,QAAuB,EACvB,aAAsB,EACtB,aAAuB;IAEvB,MAAM,cAAc,GAAmB;QACnC,GAAG,MAAM;QACT,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;QACpC,QAAQ,EAAE,KAAK;QACf,kBAAkB,EAAE,EAAE;KACzB,CAAC;IAEF,MAAM,mBAAmB,GAAG,aAAa,IAAI,aAAa,CAAC;IAC3D,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,sBAAsB;IACtB,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QACnG,IAAI,UAAU,EAAE,CAAC;YACb,cAAc,CAAC,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC;YACjE,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAClC,iCAAiC,cAAc,CAAC,UAAU,CAAC,UAAU,aAAa,aAAa,EAAE,CACpG,CAAC;QACN,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC3G,IAAI,WAAW,EAAE,CAAC;YACd,cAAc,CAAC,UAAU,CAAC,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC;YACnE,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAClC,kCAAkC,cAAc,CAAC,UAAU,CAAC,WAAW,aAAa,mBAAmB,EAAE,CAC5G,CAAC;QACN,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAQ,GAAG,UAAU,CAAC;IACrC,OAAO,cAAc,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Token Registry
3
+ *
4
+ * Central registry untuk token info (address, decimals, etc) per chain.
5
+ * Pre-registers common tokens (USDC) untuk supported chains.
6
+ *
7
+ * USAGE:
8
+ * const registry = new TokenRegistry();
9
+ * registry.register({ address: "0xA0b8...", symbol: "USDC", decimals: 6, chainId: 1, name: "USD Coin" });
10
+ *
11
+ * const usdc = registry.get("USDC", 1);
12
+ * const usdcByAddr = registry.getByAddress("0xA0b8...", 1);
13
+ */
14
+ import type { Address, ChainId } from "../../types/common";
15
+ /**
16
+ * Token info in the registry
17
+ */
18
+ export interface TokenInfo {
19
+ /** Contract address on specific chain */
20
+ address: Address;
21
+ /** Token symbol (e.g., "USDC", "USDT") */
22
+ symbol: string;
23
+ /** Token decimals (e.g., 6 for USDC, 18 for ETH) */
24
+ decimals: number;
25
+ /** Chain ID where this token lives */
26
+ chainId: ChainId;
27
+ /** Full token name (e.g., "USD Coin") */
28
+ name: string;
29
+ }
30
+ /**
31
+ * TokenRegistry
32
+ *
33
+ * Manages token info indexed by (symbol, chainId) and (address, chainId).
34
+ */
35
+ export declare class TokenRegistry {
36
+ /** symbol:chainId → TokenInfo */
37
+ private bySymbol;
38
+ /** address:chainId → TokenInfo */
39
+ private byAddress;
40
+ /**
41
+ * Generate composite key for maps
42
+ */
43
+ private symbolKey;
44
+ private addressKey;
45
+ /**
46
+ * Register a token.
47
+ * Updates existing entry if same (symbol, chainId) already registered.
48
+ */
49
+ register(token: TokenInfo): void;
50
+ /**
51
+ * Register multiple tokens at once.
52
+ */
53
+ registerAll(tokens: TokenInfo[]): void;
54
+ /**
55
+ * Get token by symbol and chain ID.
56
+ * Returns undefined if not found.
57
+ */
58
+ get(symbol: string, chainId: ChainId): TokenInfo | undefined;
59
+ /**
60
+ * Get token by contract address and chain ID.
61
+ * Returns undefined if not found.
62
+ */
63
+ getByAddress(address: string, chainId: ChainId): TokenInfo | undefined;
64
+ /**
65
+ * Check if a token is registered.
66
+ */
67
+ has(symbol: string, chainId: ChainId): boolean;
68
+ /**
69
+ * List all tokens on a specific chain.
70
+ */
71
+ listByChain(chainId: ChainId): TokenInfo[];
72
+ /**
73
+ * List all registered tokens.
74
+ */
75
+ listAll(): TokenInfo[];
76
+ /**
77
+ * Get number of registered tokens.
78
+ */
79
+ get size(): number;
80
+ }
81
+ /**
82
+ * Pre-configured USDC token info for common chains.
83
+ * Register these via registry.registerAll(DEFAULT_TOKENS).
84
+ */
85
+ export declare const DEFAULT_TOKENS: TokenInfo[];
86
+ /**
87
+ * Testnet USDC token info for supported testnet chains.
88
+ * Register these via registry.registerAll(TESTNET_TOKENS).
89
+ *
90
+ * Stage 3 — Live Integration
91
+ *
92
+ * Chains: Sepolia, Arbitrum Sepolia, Unichain Sepolia, Base Sepolia
93
+ */
94
+ export declare const TESTNET_TOKENS: TokenInfo[];
95
+ /**
96
+ * Additional mainnet tokens beyond USDC.
97
+ * Register these via registry.registerAll(MAINNET_TOKENS).
98
+ *
99
+ * Stage 3 — Live Integration
100
+ *
101
+ * Tokens: USDT, WETH, WBTC, DAI on Ethereum/Arbitrum/Optimism
102
+ */
103
+ export declare const MAINNET_TOKENS: TokenInfo[];
104
+ /**
105
+ * Resolve a token address from symbol + chainId.
106
+ *
107
+ * Looks up the token in the provided registry instance.
108
+ * Throws if the token is not found.
109
+ *
110
+ * Stage 3 — Live Integration
111
+ *
112
+ * @param registry - TokenRegistry instance to search in
113
+ * @param symbol - Token symbol (e.g., "USDC")
114
+ * @param chainId - Target chain ID
115
+ * @returns The token's contract address
116
+ * @throws Error if token not found for the given symbol + chainId
117
+ */
118
+ export declare function resolveFromSymbol(registry: TokenRegistry, symbol: string, chainId: ChainId): Address;
119
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/shared/token-registry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IAEjB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACtB,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAqC;IAErD,kCAAkC;IAClC,OAAO,CAAC,SAAS,CAAqC;IAEtD;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQhC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;IAMtC;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IAI5D;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IAItE;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAI9C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE;IAM1C;;OAEG;IACH,OAAO,IAAI,SAAS,EAAE;IAItB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,EAsBrC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,EA6BrC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,EAkBrC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACjB,OAAO,CAMT"}