@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,49 @@
1
+ /**
2
+ * Chain Names — Human-Readable Display Names
3
+ *
4
+ * Static lookup map for well-known EVM chain IDs.
5
+ * Zero external dependencies — used across error messages and logging.
6
+ *
7
+ * Stage 3 — Phase G (Production Hardening)
8
+ */
9
+ /**
10
+ * Well-known EVM chain ID → human-readable name.
11
+ */
12
+ export const CHAIN_NAMES = {
13
+ // Mainnets
14
+ 1: "Ethereum",
15
+ 10: "Optimism",
16
+ 56: "BNB Chain",
17
+ 100: "Gnosis",
18
+ 137: "Polygon",
19
+ 250: "Fantom",
20
+ 324: "zkSync Era",
21
+ 8453: "Base",
22
+ 42161: "Arbitrum One",
23
+ 43114: "Avalanche",
24
+ 59144: "Linea",
25
+ 534352: "Scroll",
26
+ // Testnets
27
+ 5: "Goerli",
28
+ 1301: "Unichain Sepolia",
29
+ 11155111: "Sepolia",
30
+ 84532: "Base Sepolia",
31
+ 421614: "Arbitrum Sepolia",
32
+ 11155420: "Optimism Sepolia",
33
+ };
34
+ /**
35
+ * Get a human-readable display name for a chain ID.
36
+ *
37
+ * Returns `"Ethereum (1)"` for known chains or `"Unknown Chain (99999)"` for unknown.
38
+ *
39
+ * @param chainId - Numeric EVM chain ID
40
+ * @returns Display string like `"Arbitrum One (42161)"`
41
+ */
42
+ export function getChainDisplayName(chainId) {
43
+ const name = CHAIN_NAMES[chainId];
44
+ if (name) {
45
+ return `${name} (${chainId})`;
46
+ }
47
+ return `Unknown Chain (${chainId})`;
48
+ }
49
+ //# sourceMappingURL=chain-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-names.js","sourceRoot":"","sources":["../../../src/shared/chain-registry/chain-names.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2B;IAC/C,WAAW;IACX,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAEhB,WAAW;IACX,CAAC,EAAE,QAAQ;IACX,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,kBAAkB;IAC1B,QAAQ,EAAE,kBAAkB;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,kBAAkB,OAAO,GAAG,CAAC;AACxC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Arbitrum Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { ARBITRUM_SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=arbitrum-sepolia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrum-sepolia.d.ts","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/arbitrum-sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Arbitrum Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { ARBITRUM_SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=arbitrum-sepolia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrum-sepolia.js","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/arbitrum-sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Base Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { BASE_SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=base-sepolia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-sepolia.d.ts","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/base-sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Base Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { BASE_SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=base-sepolia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-sepolia.js","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/base-sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ethereum Chain Config
3
+ *
4
+ * Re-export from centralized chains config for convenience.
5
+ */
6
+ export { ETHEREUM_CONFIG } from "../../../config/chains";
7
+ //# sourceMappingURL=ethereum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.d.ts","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/ethereum.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ethereum Chain Config
3
+ *
4
+ * Re-export from centralized chains config for convenience.
5
+ */
6
+ export { ETHEREUM_CONFIG } from "../../../config/chains";
7
+ //# sourceMappingURL=ethereum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.js","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/ethereum.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Polygon Chain Config
3
+ *
4
+ * Re-export from centralized chains config for convenience.
5
+ */
6
+ export { POLYGON_CONFIG } from "../../../config/chains";
7
+ //# sourceMappingURL=polygon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/polygon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Polygon Chain Config
3
+ *
4
+ * Re-export from centralized chains config for convenience.
5
+ */
6
+ export { POLYGON_CONFIG } from "../../../config/chains";
7
+ //# sourceMappingURL=polygon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon.js","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/polygon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ethereum Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=sepolia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sepolia.d.ts","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ethereum Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=sepolia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sepolia.js","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Unichain Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { UNICHAIN_SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=unichain-sepolia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unichain-sepolia.d.ts","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/unichain-sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Unichain Sepolia Testnet Chain Config
3
+ *
4
+ * Re-export from centralized testnets config for convenience.
5
+ *
6
+ * Stage 3 — Live Integration
7
+ */
8
+ export { UNICHAIN_SEPOLIA_CONFIG } from "../../../config/testnets";
9
+ //# sourceMappingURL=unichain-sepolia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unichain-sepolia.js","sourceRoot":"","sources":["../../../../src/shared/chain-registry/configs/unichain-sepolia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Chain Registry
3
+ *
4
+ * Central registry for all supported EVM chain configurations.
5
+ * Singleton-like pattern — register once, lookup by chainId.
6
+ *
7
+ * USAGE:
8
+ * const registry = new ChainRegistry();
9
+ * registry.register(ETHEREUM_CONFIG);
10
+ * registry.register(POLYGON_CONFIG);
11
+ *
12
+ * const eth = registry.get(1);
13
+ * console.log(eth.name); // "Ethereum"
14
+ */
15
+ import type { ChainConfig } from "../../types/chain";
16
+ import type { ChainId } from "../../types/common";
17
+ export declare class ChainRegistry {
18
+ private chains;
19
+ /**
20
+ * Register a chain configuration.
21
+ * Throws if chain with same ID is already registered.
22
+ */
23
+ register(config: ChainConfig): void;
24
+ /**
25
+ * Register multiple chains at once.
26
+ */
27
+ registerAll(configs: ChainConfig[]): void;
28
+ /**
29
+ * Get chain config by ID.
30
+ * Throws if chain is not registered.
31
+ */
32
+ get(chainId: ChainId): ChainConfig;
33
+ /**
34
+ * Check if a chain is registered.
35
+ */
36
+ has(chainId: ChainId): boolean;
37
+ /**
38
+ * Get all registered chain configs.
39
+ */
40
+ list(): ChainConfig[];
41
+ /**
42
+ * Get all registered chain IDs.
43
+ */
44
+ listIds(): ChainId[];
45
+ /**
46
+ * Get number of registered chains.
47
+ */
48
+ get size(): number;
49
+ }
50
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/shared/chain-registry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAwC;IAEtD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IASnC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAMzC;;;OAGG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW;IAQlC;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAI9B;;OAEG;IACH,IAAI,IAAI,WAAW,EAAE;IAIrB;;OAEG;IACH,OAAO,IAAI,OAAO,EAAE;IAIpB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Chain Registry
3
+ *
4
+ * Central registry for all supported EVM chain configurations.
5
+ * Singleton-like pattern — register once, lookup by chainId.
6
+ *
7
+ * USAGE:
8
+ * const registry = new ChainRegistry();
9
+ * registry.register(ETHEREUM_CONFIG);
10
+ * registry.register(POLYGON_CONFIG);
11
+ *
12
+ * const eth = registry.get(1);
13
+ * console.log(eth.name); // "Ethereum"
14
+ */
15
+ import { getChainDisplayName } from "./chain-names";
16
+ export class ChainRegistry {
17
+ chains = new Map();
18
+ /**
19
+ * Register a chain configuration.
20
+ * Throws if chain with same ID is already registered.
21
+ */
22
+ register(config) {
23
+ if (this.chains.has(config.id)) {
24
+ throw new Error(`Chain ${config.id} (${config.name}) is already registered`);
25
+ }
26
+ this.chains.set(config.id, config);
27
+ }
28
+ /**
29
+ * Register multiple chains at once.
30
+ */
31
+ registerAll(configs) {
32
+ for (const config of configs) {
33
+ this.register(config);
34
+ }
35
+ }
36
+ /**
37
+ * Get chain config by ID.
38
+ * Throws if chain is not registered.
39
+ */
40
+ get(chainId) {
41
+ const config = this.chains.get(chainId);
42
+ if (!config) {
43
+ throw new Error(`Chain ${getChainDisplayName(chainId)} is not registered`);
44
+ }
45
+ return config;
46
+ }
47
+ /**
48
+ * Check if a chain is registered.
49
+ */
50
+ has(chainId) {
51
+ return this.chains.has(chainId);
52
+ }
53
+ /**
54
+ * Get all registered chain configs.
55
+ */
56
+ list() {
57
+ return Array.from(this.chains.values());
58
+ }
59
+ /**
60
+ * Get all registered chain IDs.
61
+ */
62
+ listIds() {
63
+ return Array.from(this.chains.keys());
64
+ }
65
+ /**
66
+ * Get number of registered chains.
67
+ */
68
+ get size() {
69
+ return this.chains.size;
70
+ }
71
+ }
72
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/shared/chain-registry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,OAAO,aAAa;IACd,MAAM,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEtD;;;OAGG;IACH,QAAQ,CAAC,MAAmB;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACX,SAAS,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,yBAAyB,CAC9D,CAAC;QACN,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAsB;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,OAAgB;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,SAAS,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAgB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI;QACA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,OAAO;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * RPC Provider Manager
3
+ *
4
+ * Manages JSON-RPC provider connections to multiple chains.
5
+ * Features: caching, fallback URLs, basic ERC20 balance queries.
6
+ *
7
+ * NOTE: Ini adalah lightweight abstraction.
8
+ * Provider-specific logic (ethers.JsonRpcProvider / viem publicClient)
9
+ * diinject via factory pattern.
10
+ *
11
+ * USAGE:
12
+ * const rpm = new RPCProviderManager(chainRegistry);
13
+ * const balance = await rpm.getTokenBalance(137, usdcAddr, walletAddr);
14
+ */
15
+ import type { ChainConfig } from "../../types/chain";
16
+ import type { Address, ChainId } from "../../types/common";
17
+ /**
18
+ * Abstract RPC Provider interface
19
+ *
20
+ * Abstraction atas JSON-RPC calls. Implement with ethers.js, viem, or fetch.
21
+ */
22
+ export interface IRPCProvider {
23
+ /** Chain ID this provider is connected to */
24
+ chainId: ChainId;
25
+ /** Call a contract view function */
26
+ call(to: Address, data: string): Promise<string>;
27
+ /** Get current block number */
28
+ getBlockNumber(): Promise<number>;
29
+ /** Get transaction receipt */
30
+ getTransactionReceipt(txHash: string): Promise<{
31
+ status: number;
32
+ blockNumber: number;
33
+ gasUsed: string;
34
+ } | null>;
35
+ /** Get gas price in wei */
36
+ getGasPrice(): Promise<string>;
37
+ /** Check if provider is healthy */
38
+ isHealthy(): Promise<boolean>;
39
+ /**
40
+ * Send a signed (serialized) transaction to the network.
41
+ * Returns the transaction hash.
42
+ *
43
+ * Stage 3 — Phase B addition
44
+ */
45
+ sendRawTransaction?(signedTx: `0x${string}`): Promise<string>;
46
+ /**
47
+ * Estimate gas required for a transaction.
48
+ *
49
+ * Stage 3 — Phase B addition
50
+ */
51
+ estimateGas?(tx: {
52
+ to: Address;
53
+ data?: string;
54
+ value?: bigint;
55
+ from?: Address;
56
+ }): Promise<bigint>;
57
+ }
58
+ /**
59
+ * Provider factory function type
60
+ *
61
+ * Given a chain config, create an IRPCProvider.
62
+ * Memungkinkan inject ethers.js atau viem tanpa hard dependency.
63
+ */
64
+ export type ProviderFactory = (config: ChainConfig) => IRPCProvider;
65
+ /**
66
+ * RPCProviderManager
67
+ *
68
+ * Central manager for all RPC providers across chains.
69
+ * Auto-creates and caches providers per chain.
70
+ */
71
+ export declare class RPCProviderManager {
72
+ private providers;
73
+ private chainConfigs;
74
+ private providerFactory?;
75
+ constructor(providerFactory?: ProviderFactory);
76
+ /**
77
+ * Set or update the provider factory after instantiation.
78
+ */
79
+ setProviderFactory(factory: ProviderFactory): void;
80
+ /**
81
+ * Register a chain config (called by initialization logic)
82
+ */
83
+ registerChain(config: ChainConfig): void;
84
+ /**
85
+ * Register multiple chain configs
86
+ */
87
+ registerChains(configs: ChainConfig[]): void;
88
+ /**
89
+ * Get or create a provider for a specific chain.
90
+ * Providers are cached after first creation.
91
+ *
92
+ * Throws if no provider factory is configured or chain is not registered.
93
+ */
94
+ getProvider(chainId: ChainId): IRPCProvider;
95
+ /**
96
+ * Get ERC20 token balance for a wallet on a specific chain.
97
+ *
98
+ * Calls balanceOf(address) on the token contract.
99
+ * Returns balance in token's smallest unit.
100
+ */
101
+ getTokenBalance(chainId: ChainId, tokenAddress: Address, walletAddress: Address): Promise<bigint>;
102
+ /**
103
+ * Check if all registered chains have healthy providers.
104
+ */
105
+ checkHealth(): Promise<Map<ChainId, boolean>>;
106
+ /**
107
+ * Clear all cached providers (for testing or reconnection).
108
+ */
109
+ clearProviders(): void;
110
+ }
111
+ //# sourceMappingURL=provider-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../src/shared/rpc/provider-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG3D;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjD,+BAA+B;IAC/B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC,8BAA8B;IAC9B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC,CAAC;IAEV,2BAA2B;IAC3B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B,mCAAmC;IACnC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9D;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE;QACb,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,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,YAAY,CAAC;AAEpE;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,eAAe,CAAC,EAAE,eAAe;IAI7C;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIlD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIxC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAM5C;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY;IAuB3C;;;;;OAKG;IACG,eAAe,CACjB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC;IAkBlB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAgBnD;;OAEG;IACH,cAAc,IAAI,IAAI;CAGzB"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * RPC Provider Manager
3
+ *
4
+ * Manages JSON-RPC provider connections to multiple chains.
5
+ * Features: caching, fallback URLs, basic ERC20 balance queries.
6
+ *
7
+ * NOTE: Ini adalah lightweight abstraction.
8
+ * Provider-specific logic (ethers.JsonRpcProvider / viem publicClient)
9
+ * diinject via factory pattern.
10
+ *
11
+ * USAGE:
12
+ * const rpm = new RPCProviderManager(chainRegistry);
13
+ * const balance = await rpm.getTokenBalance(137, usdcAddr, walletAddr);
14
+ */
15
+ import { getChainDisplayName } from "../chain-registry/chain-names";
16
+ /**
17
+ * RPCProviderManager
18
+ *
19
+ * Central manager for all RPC providers across chains.
20
+ * Auto-creates and caches providers per chain.
21
+ */
22
+ export class RPCProviderManager {
23
+ providers = new Map();
24
+ chainConfigs = new Map();
25
+ providerFactory;
26
+ constructor(providerFactory) {
27
+ this.providerFactory = providerFactory;
28
+ }
29
+ /**
30
+ * Set or update the provider factory after instantiation.
31
+ */
32
+ setProviderFactory(factory) {
33
+ this.providerFactory = factory;
34
+ }
35
+ /**
36
+ * Register a chain config (called by initialization logic)
37
+ */
38
+ registerChain(config) {
39
+ this.chainConfigs.set(config.id, config);
40
+ }
41
+ /**
42
+ * Register multiple chain configs
43
+ */
44
+ registerChains(configs) {
45
+ for (const config of configs) {
46
+ this.registerChain(config);
47
+ }
48
+ }
49
+ /**
50
+ * Get or create a provider for a specific chain.
51
+ * Providers are cached after first creation.
52
+ *
53
+ * Throws if no provider factory is configured or chain is not registered.
54
+ */
55
+ getProvider(chainId) {
56
+ // Return cached provider
57
+ const cached = this.providers.get(chainId);
58
+ if (cached)
59
+ return cached;
60
+ // Create new provider
61
+ const config = this.chainConfigs.get(chainId);
62
+ if (!config) {
63
+ throw new Error(`Chain ${getChainDisplayName(chainId)} is not registered in RPCProviderManager`);
64
+ }
65
+ if (!this.providerFactory) {
66
+ throw new Error("RPCProviderManager requires a providerFactory. " +
67
+ "Provide one via constructor.");
68
+ }
69
+ const provider = this.providerFactory(config);
70
+ this.providers.set(chainId, provider);
71
+ return provider;
72
+ }
73
+ /**
74
+ * Get ERC20 token balance for a wallet on a specific chain.
75
+ *
76
+ * Calls balanceOf(address) on the token contract.
77
+ * Returns balance in token's smallest unit.
78
+ */
79
+ async getTokenBalance(chainId, tokenAddress, walletAddress) {
80
+ const provider = this.getProvider(chainId);
81
+ // ERC20 balanceOf(address) selector = 0x70a08231
82
+ // ABI encode: selector + padded address
83
+ const data = "0x70a08231" +
84
+ walletAddress.slice(2).padStart(64, "0");
85
+ const result = await provider.call(tokenAddress, data);
86
+ // Parse hex result to bigint
87
+ if (!result || result === "0x" || result === "0x0") {
88
+ return 0n;
89
+ }
90
+ return BigInt(result);
91
+ }
92
+ /**
93
+ * Check if all registered chains have healthy providers.
94
+ */
95
+ async checkHealth() {
96
+ const results = new Map();
97
+ for (const chainId of this.chainConfigs.keys()) {
98
+ try {
99
+ const provider = this.getProvider(chainId);
100
+ const healthy = await provider.isHealthy();
101
+ results.set(chainId, healthy);
102
+ }
103
+ catch {
104
+ results.set(chainId, false);
105
+ }
106
+ }
107
+ return results;
108
+ }
109
+ /**
110
+ * Clear all cached providers (for testing or reconnection).
111
+ */
112
+ clearProviders() {
113
+ this.providers.clear();
114
+ }
115
+ }
116
+ //# sourceMappingURL=provider-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../src/shared/rpc/provider-manager.ts"],"names":[],"mappings":"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"}