@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,204 @@
1
+ /**
2
+ * IntentSettlement Viem Contract Wrapper
3
+ *
4
+ * Phase E: Contract Deployment & Live Settlement
5
+ *
6
+ * A viem-native interface to the deployed `IntentSettlement.sol` contract.
7
+ * Replaces the old ethers.js-based `IntentSettlementContract` for live
8
+ * on-chain settlement calls.
9
+ *
10
+ * Unlike the ethers wrapper, this implementation:
11
+ * - Uses `viem`'s `getContract` + `walletClient` for signing and broadcasting
12
+ * - Parses `IntentFilled` events directly from transaction receipts
13
+ * - Returns tx hash as a plain string for easy tracking
14
+ *
15
+ * Stage 3 — Phase E
16
+ */
17
+ // ─────────────────────────────────────────────────────────────────────────────
18
+ // ABI
19
+ // ─────────────────────────────────────────────────────────────────────────────
20
+ export const INTENT_SETTLEMENT_ABI = [
21
+ // open() - called by swapper to lock funds intent
22
+ {
23
+ type: "function",
24
+ name: "open",
25
+ stateMutability: "nonpayable",
26
+ inputs: [
27
+ {
28
+ name: "order",
29
+ type: "tuple",
30
+ components: [
31
+ { name: "settlementContract", type: "address" },
32
+ { name: "swapper", type: "address" },
33
+ { name: "nonce", type: "uint256" },
34
+ { name: "originChainId", type: "uint32" },
35
+ { name: "initiateDeadline", type: "uint32" },
36
+ { name: "fillDeadline", type: "uint32" },
37
+ { name: "orderData", type: "bytes" },
38
+ ],
39
+ },
40
+ { name: "signature", type: "bytes" },
41
+ { name: "orderData", type: "bytes" },
42
+ ],
43
+ outputs: [],
44
+ },
45
+ // claim() - alternative to fill(), called by solver after target-chain proof
46
+ {
47
+ type: "function",
48
+ name: "claim",
49
+ stateMutability: "nonpayable",
50
+ inputs: [
51
+ {
52
+ name: "order",
53
+ type: "tuple",
54
+ components: [
55
+ { name: "settlementContract", type: "address" },
56
+ { name: "swapper", type: "address" },
57
+ { name: "nonce", type: "uint256" },
58
+ { name: "originChainId", type: "uint32" },
59
+ { name: "initiateDeadline", type: "uint32" },
60
+ { name: "fillDeadline", type: "uint32" },
61
+ { name: "orderData", type: "bytes" },
62
+ ],
63
+ },
64
+ { name: "signature", type: "bytes" },
65
+ ],
66
+ outputs: [],
67
+ },
68
+ // refund() - returns locked funds to swapper after fillDeadline expires
69
+ {
70
+ type: "function",
71
+ name: "refund",
72
+ stateMutability: "nonpayable",
73
+ inputs: [
74
+ {
75
+ name: "order",
76
+ type: "tuple",
77
+ components: [
78
+ { name: "settlementContract", type: "address" },
79
+ { name: "swapper", type: "address" },
80
+ { name: "nonce", type: "uint256" },
81
+ { name: "originChainId", type: "uint32" },
82
+ { name: "initiateDeadline", type: "uint32" },
83
+ { name: "fillDeadline", type: "uint32" },
84
+ { name: "orderData", type: "bytes" },
85
+ ],
86
+ },
87
+ ],
88
+ outputs: [],
89
+ },
90
+ // isIntentSettled()
91
+ {
92
+ type: "function",
93
+ name: "isIntentSettled",
94
+ stateMutability: "view",
95
+ inputs: [{ name: "intentId", type: "bytes32" }],
96
+ outputs: [{ name: "", type: "bool" }],
97
+ },
98
+ // Events
99
+ {
100
+ type: "event",
101
+ name: "FundsLocked",
102
+ inputs: [
103
+ { name: "intentId", type: "bytes32", indexed: true },
104
+ { name: "swapper", type: "address", indexed: true },
105
+ { name: "token", type: "address", indexed: false },
106
+ { name: "amount", type: "uint256", indexed: false },
107
+ ],
108
+ },
109
+ {
110
+ type: "event",
111
+ name: "FundsClaimed",
112
+ inputs: [
113
+ { name: "intentId", type: "bytes32", indexed: true },
114
+ { name: "solver", type: "address", indexed: true },
115
+ { name: "amount", type: "uint256", indexed: false },
116
+ ],
117
+ },
118
+ {
119
+ type: "event",
120
+ name: "IntentFilled",
121
+ inputs: [
122
+ { name: "orderId", type: "bytes32", indexed: true },
123
+ { name: "filler", type: "address", indexed: true },
124
+ { name: "originData", type: "bytes", indexed: false },
125
+ { name: "fillerData", type: "bytes", indexed: false },
126
+ ],
127
+ },
128
+ ];
129
+ // ─────────────────────────────────────────────────────────────────────────────
130
+ // ViemSettlementContract
131
+ // ─────────────────────────────────────────────────────────────────────────────
132
+ /**
133
+ * Viem-native wrapper around the deployed `IntentSettlement.sol`.
134
+ *
135
+ * Usage:
136
+ * const settlement = new ViemSettlementContract(contractAddress, publicClient, walletClient);
137
+ * const result = await settlement.claim(order, solverSignature);
138
+ * console.log("Settled intent in tx:", result.txHash);
139
+ */
140
+ export class ViemSettlementContract {
141
+ address;
142
+ publicClient;
143
+ walletClient;
144
+ constructor(address, publicClient, walletClient) {
145
+ this.address = address;
146
+ this.publicClient = publicClient;
147
+ this.walletClient = walletClient;
148
+ }
149
+ /**
150
+ * Check if a specific intent ID has already been settled on this contract.
151
+ */
152
+ async isSettled(intentId) {
153
+ return await this.publicClient.readContract({
154
+ address: this.address,
155
+ abi: INTENT_SETTLEMENT_ABI,
156
+ functionName: "isIntentSettled",
157
+ args: [intentId],
158
+ });
159
+ }
160
+ /**
161
+ * Call `claim()` using a solver signature as proof.
162
+ * Alternative to fill() for the claim-based settlement flow.
163
+ */
164
+ async claim(order, solverSignature) {
165
+ console.log("claim log 1");
166
+ if (!this.walletClient.account) {
167
+ throw new Error("WalletClient has no account attached");
168
+ }
169
+ // Step 1: Simulate the tx first to catch reverts early
170
+ try {
171
+ await this.publicClient.simulateContract({
172
+ address: this.address,
173
+ abi: INTENT_SETTLEMENT_ABI,
174
+ functionName: "claim",
175
+ args: [order, solverSignature],
176
+ account: this.walletClient.account,
177
+ });
178
+ }
179
+ catch (error) {
180
+ console.error(`[Settlement] Simulation failed for claim():`);
181
+ const fs = require('fs');
182
+ fs.writeFileSync('debug.json', JSON.stringify(error, (key, value) => typeof value === 'bigint' ? value.toString() : value, 2));
183
+ throw new Error(`Simulation failed: ${error.message}`);
184
+ }
185
+ const txHash = await this.walletClient.writeContract({
186
+ chain: this.walletClient.chain,
187
+ address: this.address,
188
+ abi: INTENT_SETTLEMENT_ABI,
189
+ functionName: "claim",
190
+ args: [order, solverSignature],
191
+ account: this.walletClient.account,
192
+ });
193
+ console.log(`[Settlement] Broadcasted claim() tx: ${txHash}`);
194
+ const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
195
+ if (receipt.status !== "success") {
196
+ throw new Error(`Claim transaction reverted: ${txHash}`);
197
+ }
198
+ return { txHash, blockNumber: receipt.blockNumber };
199
+ }
200
+ getAddress() {
201
+ return this.address;
202
+ }
203
+ }
204
+ //# sourceMappingURL=viem-settlement-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viem-settlement-contract.js","sourceRoot":"","sources":["../../../../src/solver/contracts/intent-settlement/viem-settlement-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * IntentSolver — Phase K
3
+ *
4
+ * Public-facing wrapper class that encapsulates all solver subsystems
5
+ * into a single, easy-to-use interface.
6
+ */
7
+ import { LiquidityAgent } from "./agent/liquidity-agent";
8
+ import { type LiquidityAgentConfig } from "./agent/agent-config";
9
+ import { InventoryManager } from "./inventory/inventory-manager";
10
+ import { DynamicPricing } from "./pricing/dynamic-pricing";
11
+ import { SettlementManager } from "./settlement/settlement-manager";
12
+ import { ProofGenerator } from "./settlement/proof-generator";
13
+ import { ProofVerifier } from "./settlement/proof-verifier";
14
+ import { IntentSettlementContract } from "./contracts/intent-settlement/intent-settlement";
15
+ import { WalletManager } from "../shared/wallet-manager/wallet-manager";
16
+ import { RPCProviderManager } from "../shared/rpc/provider-manager";
17
+ import { ChainRegistry } from "../shared/chain-registry/registry";
18
+ import { TokenRegistry } from "../shared/token-registry/registry";
19
+ import { MempoolMonitor } from "./mempool/mempool-monitor";
20
+ import { MempoolClient } from "./mempool/mempool-client";
21
+ import { IntentFilter } from "./mempool/intent-filter";
22
+ import { SolutionSubmitter } from "./mempool/solution-submitter";
23
+ import { ProfitTracker } from "./monitoring/profit-tracker";
24
+ import type { SolverIntent } from "./types/intent";
25
+ import type { SolutionResult } from "./types/agent";
26
+ import type { PricingResult } from "./types/pricing";
27
+ export declare class IntentSolver {
28
+ readonly config: LiquidityAgentConfig;
29
+ readonly chainRegistry: ChainRegistry;
30
+ readonly tokenRegistry: TokenRegistry;
31
+ readonly rpcProviderManager: RPCProviderManager;
32
+ readonly walletManager: WalletManager;
33
+ readonly inventoryManager: InventoryManager;
34
+ readonly dynamicPricing: DynamicPricing;
35
+ readonly proofGenerator: ProofGenerator;
36
+ readonly proofVerifier: ProofVerifier;
37
+ readonly settlementContract: IntentSettlementContract;
38
+ readonly settlementManager: SettlementManager;
39
+ readonly agent: LiquidityAgent;
40
+ readonly mempoolClient: MempoolClient;
41
+ readonly intentFilter: IntentFilter;
42
+ readonly solutionSubmitter: SolutionSubmitter;
43
+ readonly profitTracker: ProfitTracker;
44
+ readonly mempoolMonitor: MempoolMonitor;
45
+ constructor(userConfig: Partial<LiquidityAgentConfig> & {
46
+ agent: {
47
+ privateKey: string;
48
+ };
49
+ });
50
+ /**
51
+ * Initialize non-blocking resources (e.g. fetch initial balances, derive address)
52
+ * Must be called before `solve` or `start`.
53
+ */
54
+ initialize(): Promise<void>;
55
+ /**
56
+ * Start the background mempool listener to automatically process intents
57
+ */
58
+ start(mempoolUrl: string): void;
59
+ /**
60
+ * Stop background processes and disconnect WebSockets
61
+ */
62
+ stop(): void;
63
+ /**
64
+ * Get a quote for a bridge intent
65
+ */
66
+ getQuote(intent: SolverIntent): PricingResult;
67
+ /**
68
+ * Check if the agent wants and can solve this intent
69
+ */
70
+ canSolve(intent: SolverIntent): boolean;
71
+ /**
72
+ * Attempt to solve an intent directly (bypasses mempool listener)
73
+ */
74
+ solve(intent: SolverIntent): Promise<SolutionResult>;
75
+ /**
76
+ * Check the current state of the agent
77
+ */
78
+ getStatus(): import("..").AgentStatus;
79
+ /**
80
+ * Fetch profit and operational metrics
81
+ */
82
+ getStats(): {
83
+ profitStats: import("./monitoring").ProfitStats;
84
+ mempoolStats: import("./mempool").MempoolStats;
85
+ };
86
+ }
87
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/solver/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,qBAAa,YAAY;IACrB,SAAgB,MAAM,EAAE,oBAAoB,CAAC;IAG7C,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,kBAAkB,EAAE,kBAAkB,CAAC;IACvD,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IACnD,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7D,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,SAAgB,KAAK,EAAE,cAAc,CAAC;IAGtC,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,YAAY,EAAE,YAAY,CAAC;IAC3C,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,cAAc,EAAE,cAAc,CAAC;gBAEnC,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;QAAE,KAAK,EAAE;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;IAwFzF;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK/B;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa;IAI7C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAIvC;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAe1D;;OAEG;IACH,SAAS;IAIT;;OAEG;IACH,QAAQ;;;;CAMX"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * IntentSolver — Phase K
3
+ *
4
+ * Public-facing wrapper class that encapsulates all solver subsystems
5
+ * into a single, easy-to-use interface.
6
+ */
7
+ import { LiquidityAgent } from "./agent/liquidity-agent";
8
+ import { buildAgentConfig } from "./agent/agent-config";
9
+ import { InventoryManager } from "./inventory/inventory-manager";
10
+ import { DynamicPricing } from "./pricing/dynamic-pricing";
11
+ import { SettlementManager } from "./settlement/settlement-manager";
12
+ import { ProofGenerator } from "./settlement/proof-generator";
13
+ import { ProofVerifier } from "./settlement/proof-verifier";
14
+ import { IntentSettlementContract } from "./contracts/intent-settlement/intent-settlement";
15
+ import { WalletManager } from "../shared/wallet-manager/wallet-manager";
16
+ import { RPCProviderManager } from "../shared/rpc/provider-manager";
17
+ import { ChainRegistry } from "../shared/chain-registry/registry";
18
+ import { SUPPORTED_CHAINS } from "../config/chains";
19
+ import { TokenRegistry } from "../shared/token-registry/registry";
20
+ import { MempoolMonitor } from "./mempool/mempool-monitor";
21
+ import { MempoolClient } from "./mempool/mempool-client";
22
+ import { IntentFilter } from "./mempool/intent-filter";
23
+ import { SolutionSubmitter } from "./mempool/solution-submitter";
24
+ import { ProfitTracker } from "./monitoring/profit-tracker";
25
+ import { ethers } from "ethers";
26
+ export class IntentSolver {
27
+ config;
28
+ // Core Subsystems exposed if advanced users need them
29
+ chainRegistry;
30
+ tokenRegistry;
31
+ rpcProviderManager;
32
+ walletManager;
33
+ inventoryManager;
34
+ dynamicPricing;
35
+ proofGenerator;
36
+ proofVerifier;
37
+ settlementContract;
38
+ settlementManager;
39
+ agent;
40
+ // Mempool & Monitoring
41
+ mempoolClient;
42
+ intentFilter;
43
+ solutionSubmitter;
44
+ profitTracker;
45
+ mempoolMonitor;
46
+ constructor(userConfig) {
47
+ // Deep merge user config with SDK defaults
48
+ this.config = buildAgentConfig(userConfig);
49
+ // 1. Foundation layer
50
+ this.chainRegistry = new ChainRegistry();
51
+ this.chainRegistry.registerAll(SUPPORTED_CHAINS);
52
+ this.tokenRegistry = new TokenRegistry();
53
+ this.rpcProviderManager = new RPCProviderManager();
54
+ const signerFactory = (privateKey, chainId) => {
55
+ // Provide a basic wrapper compatible with both ethers and our WalletSigner interface
56
+ const wallet = new ethers.Wallet(privateKey);
57
+ return {
58
+ getAddress: () => wallet.address,
59
+ signMessage: async (msg) => wallet.signMessage(msg),
60
+ signTypedData: async (domain, types, value) => wallet.signTypedData(domain, types, value)
61
+ };
62
+ };
63
+ this.walletManager = new WalletManager(this.config.agent.privateKey, signerFactory);
64
+ // 2. Inventory & Pricing
65
+ this.inventoryManager = new InventoryManager(this.walletManager, this.tokenRegistry, this.chainRegistry, this.rpcProviderManager, this.config.inventory);
66
+ this.dynamicPricing = new DynamicPricing(this.config.pricing, this.inventoryManager);
67
+ // 3. Settlement
68
+ // Create an adapter for IProviderForProof
69
+ const providerForProof = {
70
+ getTransactionReceipt: async (chainId, txHash) => {
71
+ const provider = this.rpcProviderManager.getProvider(chainId);
72
+ return provider.getTransactionReceipt(txHash);
73
+ },
74
+ getBlockNumber: async (chainId) => {
75
+ return this.rpcProviderManager.getProvider(chainId).getBlockNumber();
76
+ }
77
+ };
78
+ // Use the primary chain signer as the proof signer
79
+ const primaryChain = this.config.agent.supportedChains[0] || 1;
80
+ const proofSigner = this.walletManager.getSigner(primaryChain);
81
+ this.proofGenerator = new ProofGenerator(proofSigner, providerForProof);
82
+ this.proofVerifier = new ProofVerifier();
83
+ // Initialize the contract wrapper with ethers.Wallet for proper signing
84
+ const settlementSigner = new ethers.Wallet(this.config.agent.privateKey);
85
+ this.settlementContract = new IntentSettlementContract(this.config.contractAddress, settlementSigner);
86
+ this.settlementManager = new SettlementManager(this.proofGenerator, this.proofVerifier, this.settlementContract, this.config.settlement);
87
+ // 4. Core Agent Orchestrator
88
+ this.agent = new LiquidityAgent(this.inventoryManager, this.dynamicPricing, this.settlementManager, this.walletManager, this.config);
89
+ // 5. Monitoring
90
+ this.profitTracker = new ProfitTracker();
91
+ // 6. Mempool integration
92
+ this.mempoolClient = new MempoolClient();
93
+ this.intentFilter = new IntentFilter(this.agent);
94
+ this.solutionSubmitter = new SolutionSubmitter(this.mempoolClient);
95
+ this.mempoolMonitor = new MempoolMonitor(this.mempoolClient, this.intentFilter, this.agent, this.solutionSubmitter);
96
+ }
97
+ /**
98
+ * Initialize non-blocking resources (e.g. fetch initial balances, derive address)
99
+ * Must be called before `solve` or `start`.
100
+ */
101
+ async initialize() {
102
+ // Inject provider into settlement signer
103
+ const primaryChain = this.config.agent.supportedChains[0] || 1;
104
+ const config = this.chainRegistry.get(primaryChain);
105
+ if (config && config.rpcUrl) {
106
+ const provider = new ethers.JsonRpcProvider(config.rpcUrl);
107
+ const connectedSigner = new ethers.Wallet(this.config.agent.privateKey, provider);
108
+ this.settlementContract.updateSigner(connectedSigner);
109
+ }
110
+ await this.agent.initialize();
111
+ }
112
+ /**
113
+ * Start the background mempool listener to automatically process intents
114
+ */
115
+ start(mempoolUrl) {
116
+ this.mempoolClient.connect(mempoolUrl);
117
+ this.mempoolMonitor.start();
118
+ }
119
+ /**
120
+ * Stop background processes and disconnect WebSockets
121
+ */
122
+ stop() {
123
+ this.mempoolMonitor.stop();
124
+ this.agent.stop();
125
+ }
126
+ /**
127
+ * Get a quote for a bridge intent
128
+ */
129
+ getQuote(intent) {
130
+ return this.agent.getQuote(intent);
131
+ }
132
+ /**
133
+ * Check if the agent wants and can solve this intent
134
+ */
135
+ canSolve(intent) {
136
+ return this.agent.canSolve(intent);
137
+ }
138
+ /**
139
+ * Attempt to solve an intent directly (bypasses mempool listener)
140
+ */
141
+ async solve(intent) {
142
+ // Track standalone solves as well
143
+ if (this.canSolve(intent)) {
144
+ const pricing = this.getQuote(intent);
145
+ this.profitTracker.recordAttempt(intent.intentId, pricing);
146
+ }
147
+ const result = await this.agent.solve(intent);
148
+ this.profitTracker.recordResult(intent.intentId, result.success, result.gasUsed || "0");
149
+ return result;
150
+ }
151
+ /**
152
+ * Check the current state of the agent
153
+ */
154
+ getStatus() {
155
+ return this.agent.getStatus();
156
+ }
157
+ /**
158
+ * Fetch profit and operational metrics
159
+ */
160
+ getStats() {
161
+ return {
162
+ profitStats: this.profitTracker.getStats(),
163
+ mempoolStats: this.mempoolMonitor.getStats()
164
+ };
165
+ }
166
+ }
167
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/solver/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Inventory Module — Barrel Export
3
+ */
4
+ export * from "./inventory-manager";
5
+ export * from "./inventory-monitor";
6
+ export * from "./rebalancer";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solver/inventory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Inventory Module — Barrel Export
3
+ */
4
+ export * from "./inventory-manager";
5
+ export * from "./inventory-monitor";
6
+ export * from "./rebalancer";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solver/inventory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Inventory Manager
3
+ *
4
+ * Tracks USDC/token balances across all supported chains.
5
+ * Handles locking/unlocking for pending intents and
6
+ * balance snapshots for decision-making.
7
+ *
8
+ * Lifecycle per intent:
9
+ * loadBalances() → canFulfill() → lockAmount()
10
+ * → (success) confirmDeduction() → unlockAmount()
11
+ * → (failure) unlockAmount()
12
+ */
13
+ import type { ChainId } from "../../types/common";
14
+ import type { InventorySnapshot } from "../types/inventory";
15
+ import type { TokenRegistry } from "../../shared/token-registry/registry";
16
+ import type { ChainRegistry } from "../../shared/chain-registry/registry";
17
+ import type { RPCProviderManager } from "../../shared/rpc/provider-manager";
18
+ import type { WalletManager } from "../../shared/wallet-manager/wallet-manager";
19
+ /**
20
+ * Parameters untuk konstruksi InventoryManager
21
+ */
22
+ export interface InventoryManagerConfig {
23
+ /** Minimum reserve percentage to always keep per chain (0–1) */
24
+ minReservePercent: number;
25
+ }
26
+ export declare class InventoryManager {
27
+ private readonly walletManager;
28
+ private readonly tokenRegistry;
29
+ private readonly chainRegistry;
30
+ private readonly providerManager;
31
+ private readonly config;
32
+ /**
33
+ * Map of chainId:tokenSymbol → InventoryBalance
34
+ * Format key: `${chainId}:${token}` e.g. "137:USDC"
35
+ */
36
+ private balances;
37
+ /**
38
+ * Track active locks per intent: intentId → list of lock keys
39
+ * Used to release all locks by intentId on success/failure.
40
+ */
41
+ private locks;
42
+ constructor(walletManager: WalletManager, tokenRegistry: TokenRegistry, chainRegistry: ChainRegistry, providerManager: RPCProviderManager, config: InventoryManagerConfig);
43
+ /** Generate composite map key */
44
+ private key;
45
+ /**
46
+ * Load on-chain balances for all registered chains and supported tokens.
47
+ *
48
+ * Calls ERC20.balanceOf(agentAddress) on each (chain, token) pair.
49
+ * Safe to call repeatedly (e.g., from InventoryMonitor polling).
50
+ * Preserves existing locked amounts so in-flight intent locks are not lost.
51
+ */
52
+ loadBalances(): Promise<void>;
53
+ /**
54
+ * Refresh the balance of a specific token on a specific chain.
55
+ * Useful for targeted updates after a successful transfer without
56
+ * reloading the entire multi-chain inventory.
57
+ *
58
+ * @param chainId - Chain to query
59
+ * @param tokenSymbol - Token symbol to query (e.g. "USDC")
60
+ */
61
+ refreshBalance(chainId: ChainId, tokenSymbol: string): Promise<void>;
62
+ /**
63
+ * Get current available balance (available - locked) for a token on a chain.
64
+ *
65
+ * @param chainId - Chain to query
66
+ * @param token - Token symbol (e.g. "USDC")
67
+ * @returns Available balance in token's smallest unit. Returns 0n if not tracked.
68
+ */
69
+ getBalance(chainId: ChainId, token: string): bigint;
70
+ /**
71
+ * Get total available balance across all chains for a token.
72
+ *
73
+ * Useful for global profitability checks.
74
+ *
75
+ * @param token - Token symbol (e.g. "USDC")
76
+ * @returns Sum of (available - locked) across all chains
77
+ */
78
+ getTotalBalance(token: string): bigint;
79
+ /**
80
+ * Check if we have enough balance to fulfill an intent.
81
+ *
82
+ * Must maintain minReservePercent after the deduction.
83
+ * Formula: available - locked - amount >= total * minReservePercent
84
+ *
85
+ * @param chainId - Target chain for fulfillment
86
+ * @param token - Token to send
87
+ * @param amount - Amount required (in smallest unit)
88
+ * @returns true if we can safely fill without breaching reserve
89
+ */
90
+ canFulfill(chainId: ChainId, token: string, amount: bigint): boolean;
91
+ /**
92
+ * Lock an amount for a pending intent (reserve it).
93
+ *
94
+ * Throws InsufficientInventoryError if not enough available.
95
+ * Throws InventoryLockError if lock already exists for intentId+token+chain.
96
+ *
97
+ * @param chainId - Chain where funds will be sent
98
+ * @param token - Token to lock
99
+ * @param amount - Amount to lock
100
+ * @param intentId - Intent ID for tracking (used in unlock/confirm)
101
+ */
102
+ lockAmount(chainId: ChainId, token: string, amount: bigint, intentId: string): void;
103
+ /**
104
+ * Release a previously locked amount (on success or failure).
105
+ *
106
+ * Safe to call even if intent wasn't locked (idempotent).
107
+ * Throws in dev mode if `amount` does not match the stored lock amount
108
+ * (helps catch accounting bugs early).
109
+ *
110
+ * @param chainId - Chain of the lock
111
+ * @param token - Token to unlock
112
+ * @param amount - Expected amount to unlock (validated against stored lock)
113
+ * @param intentId - Intent ID (must match the original lockAmount call)
114
+ */
115
+ unlockAmount(chainId: ChainId, token: string, amount: bigint, intentId: string): void;
116
+ /**
117
+ * Permanently deduct balance after successfully sending to user.
118
+ *
119
+ * Called after the target chain tx is confirmed. Reduces both
120
+ * available and locked (since we locked it first).
121
+ *
122
+ * @param chainId - Chain where send happened
123
+ * @param token - Token that was sent
124
+ * @param amount - Amount sent
125
+ * @param intentId - Intent ID for tracking
126
+ */
127
+ confirmDeduction(chainId: ChainId, token: string, amount: bigint, intentId: string): void;
128
+ /**
129
+ * Get a full snapshot of all current balances and total USD value.
130
+ *
131
+ * @returns InventorySnapshot with all chain balances and a timestamp
132
+ */
133
+ getSnapshot(): InventorySnapshot;
134
+ }
135
+ //# sourceMappingURL=inventory-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-manager.d.ts","sourceRoot":"","sources":["../../../src/solver/inventory/inventory-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAIhF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,gBAAgB;IAcrB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjB3B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAA4C;IAE5D;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAkE;gBAG1D,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,sBAAsB;IAOnD,iCAAiC;IACjC,OAAO,CAAC,GAAG;IAQX;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCnC;;;;;;;OAOG;IACG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B1E;;;;;;OAMG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAWnD;;;;;;;OAOG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IActC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAyBpE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsCnF;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwCrF;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkCzF;;;;OAIG;IACH,WAAW,IAAI,iBAAiB;CAoBnC"}