@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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solver/settlement/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Settlement Module — Barrel Export
3
+ */
4
+ export * from "./proof-generator";
5
+ export * from "./proof-verifier";
6
+ export * from "./settlement-manager";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solver/settlement/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Viem-based Live Settlement Manager
3
+ *
4
+ * Phase E: Contract Deployment & Live Settlement
5
+ *
6
+ * This manager replaces the ethers.js-based SettlementManager for
7
+ * live, on-chain settlement flows. It uses the ViemSettlementContract
8
+ * to call claim() on the deployed IntentSettlement.sol.
9
+ *
10
+ * The lifecycle is:
11
+ * 1. Solver sends tokens on target chain → gets txHash (Phase C)
12
+ * 2. Call settleOnChain() → builds & broadcasts claim() tx on source chain
13
+ * 3. Parse IntentFilled event from receipt
14
+ * 4. Return settlement record
15
+ *
16
+ * Stage 3 — Phase E
17
+ */
18
+ import type { Address, Hash } from "../../types/common";
19
+ import { ViemSettlementContract } from "../contracts/intent-settlement/viem-settlement-contract";
20
+ export interface LiveSettlementParams {
21
+ /** Unique identifier for this intent */
22
+ intentId: string;
23
+ /** Address of the user who initiated the order */
24
+ swapper: Address;
25
+ /** Token address on the source chain */
26
+ token: Address;
27
+ /** Amount in token's smallest unit */
28
+ amount: bigint;
29
+ /** Recipient on target chain */
30
+ recipient: Address;
31
+ /** Nonce used in the original order */
32
+ nonce: bigint;
33
+ /** Origin chain (source chain where funds are locked) */
34
+ originChainId: number;
35
+ /** Deadline for order initiation */
36
+ initiateDeadline: number;
37
+ /** Deadline for order fill */
38
+ fillDeadline: number;
39
+ }
40
+ export interface LiveSettlementResult {
41
+ intentId: string;
42
+ fillTxHash: Hash;
43
+ blockNumber: bigint;
44
+ settledAt: number;
45
+ }
46
+ export declare class LiveSettlementManager {
47
+ private readonly settlementContract;
48
+ constructor(settlementContract: ViemSettlementContract);
49
+ /**
50
+ * Settle an intent on-chain by calling claim() on the IntentSettlement contract.
51
+ *
52
+ * @param params - The settlement parameters derived from the original intent
53
+ * @param signature - The solver or oracle signature verifying the cross-chain execution
54
+ * @returns LiveSettlementResult including the claim tx hash
55
+ */
56
+ settleOnChain(params: LiveSettlementParams, signature: `0x${string}`): Promise<LiveSettlementResult>;
57
+ /**
58
+ * Check if an intent has already been settled on the contract.
59
+ */
60
+ isSettled(intentId: `0x${string}`): Promise<boolean>;
61
+ }
62
+ //# sourceMappingURL=live-settlement-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-settlement-manager.d.ts","sourceRoot":"","sources":["../../../src/solver/settlement/live-settlement-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yDAAyD,CAAC;AAOjG,MAAM,WAAW,oBAAoB;IACjC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,qBAAqB;IAE1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,sBAAsB;IAG/D;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmC1G;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAG7D"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Viem-based Live Settlement Manager
3
+ *
4
+ * Phase E: Contract Deployment & Live Settlement
5
+ *
6
+ * This manager replaces the ethers.js-based SettlementManager for
7
+ * live, on-chain settlement flows. It uses the ViemSettlementContract
8
+ * to call claim() on the deployed IntentSettlement.sol.
9
+ *
10
+ * The lifecycle is:
11
+ * 1. Solver sends tokens on target chain → gets txHash (Phase C)
12
+ * 2. Call settleOnChain() → builds & broadcasts claim() tx on source chain
13
+ * 3. Parse IntentFilled event from receipt
14
+ * 4. Return settlement record
15
+ *
16
+ * Stage 3 — Phase E
17
+ */
18
+ import { encodeAbiParameters } from "viem";
19
+ // ─────────────────────────────────────────────────────────────────────────────
20
+ // LiveSettlementManager
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ export class LiveSettlementManager {
23
+ settlementContract;
24
+ constructor(settlementContract) {
25
+ this.settlementContract = settlementContract;
26
+ }
27
+ /**
28
+ * Settle an intent on-chain by calling claim() on the IntentSettlement contract.
29
+ *
30
+ * @param params - The settlement parameters derived from the original intent
31
+ * @param signature - The solver or oracle signature verifying the cross-chain execution
32
+ * @returns LiveSettlementResult including the claim tx hash
33
+ */
34
+ async settleOnChain(params, signature) {
35
+ // Step 1: Build the orderData = abi.encode(token, amount) based on IntentSettlement.sol
36
+ // Wait, looking at IntentSettlement.sol, orderData is just (address inputToken, uint256 inputAmount)
37
+ const orderData = encodeAbiParameters([
38
+ { type: "address", name: "token" },
39
+ { type: "uint256", name: "amount" },
40
+ ], [params.token, params.amount]);
41
+ const settlementAddress = this.settlementContract.getAddress();
42
+ // Step 2: Build the CrossChainOrder struct
43
+ const order = {
44
+ settlementContract: settlementAddress,
45
+ swapper: params.swapper,
46
+ nonce: params.nonce,
47
+ originChainId: params.originChainId,
48
+ initiateDeadline: params.initiateDeadline,
49
+ fillDeadline: params.fillDeadline,
50
+ orderData: orderData
51
+ };
52
+ // Step 3: Call claim()
53
+ const result = await this.settlementContract.claim(order, signature);
54
+ return {
55
+ intentId: params.intentId,
56
+ fillTxHash: result.txHash,
57
+ blockNumber: result.blockNumber,
58
+ settledAt: Math.floor(Date.now() / 1000),
59
+ };
60
+ }
61
+ /**
62
+ * Check if an intent has already been settled on the contract.
63
+ */
64
+ async isSettled(intentId) {
65
+ return await this.settlementContract.isSettled(intentId);
66
+ }
67
+ }
68
+ //# sourceMappingURL=live-settlement-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-settlement-manager.js","sourceRoot":"","sources":["../../../src/solver/settlement/live-settlement-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,mBAAmB,EAAa,MAAM,MAAM,CAAC;AAkCtD,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,MAAM,OAAO,qBAAqB;IAET;IADrB,YACqB,kBAA0C;QAA1C,uBAAkB,GAAlB,kBAAkB,CAAwB;IAC3D,CAAC;IAEL;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,MAA4B,EAAE,SAAwB;QACtE,wFAAwF;QACxF,qGAAqG;QACrG,MAAM,SAAS,GAAG,mBAAmB,CACjC;YACI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;SACtC,EACD,CAAC,MAAM,CAAC,KAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,CACjD,CAAC;QAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAmB,CAAC;QAEhF,2CAA2C;QAC3C,MAAM,KAAK,GAAG;YACV,kBAAkB,EAAE,iBAAiB;YACrC,OAAO,EAAE,MAAM,CAAC,OAAwB;YACxC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,SAAS;SACvB,CAAC;QAEF,uBAAuB;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErE,OAAO;YACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SAC3C,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAuB;QACnC,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;CACJ"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Proof Generator — Phase E
3
+ *
4
+ * Generates cross-chain proofs (EIP-191 personal signature) that attest
5
+ * the solver has fulfilled the intent on the target chain.
6
+ *
7
+ * Flow:
8
+ * 1. Solver sends funds on target chain → gets txHash
9
+ * 2. Wait for N confirmations on target chain
10
+ * 3. Sign message: keccak256(intentId, "FILLED", solverAddress)
11
+ * 4. Return CrossChainProof for use in claim()
12
+ *
13
+ * Used by: SettlementManager.settleIntent()
14
+ */
15
+ import type { ChainId, Hash } from "../../types/common";
16
+ import type { CrossChainProof, IProofSigner, IProviderForProof, ProofGenerationParams } from "../types/settlement";
17
+ export declare class ProofGenerator {
18
+ private readonly signer;
19
+ private readonly provider;
20
+ constructor(signer: IProofSigner, provider: IProviderForProof);
21
+ /**
22
+ * Generate a cross-chain signature proof.
23
+ *
24
+ * Steps:
25
+ * 1. Wait for sufficient confirmations on target chain
26
+ * 2. Build digest from intentId and solver address
27
+ * 3. Sign with oracle's private key
28
+ * 4. Return CrossChainProof
29
+ *
30
+ * @param params - ProofGenerationParams
31
+ * @returns CrossChainProof ready for claim()
32
+ * @throws ProofGenerationError if tx not found, reverted, or signing fails
33
+ */
34
+ generateSignatureProof(params: ProofGenerationParams): Promise<CrossChainProof>;
35
+ /**
36
+ * Wait until a transaction has enough block confirmations.
37
+ *
38
+ * Polls the chain every ~2 seconds until:
39
+ * currentBlock - txBlock >= requiredConfirmations
40
+ *
41
+ * @param txHash - Transaction hash to watch
42
+ * @param chainId - Chain ID where the tx lives
43
+ * @param confirmations - Number of confirmations required
44
+ * @throws ProofGenerationError if tx not found or reverted
45
+ */
46
+ waitForConfirmations(txHash: Hash, chainId: ChainId, confirmations: number): Promise<void>;
47
+ }
48
+ //# sourceMappingURL=proof-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-generator.d.ts","sourceRoot":"","sources":["../../../src/solver/settlement/proof-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAQnH,qBAAa,cAAc;IAEnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,iBAAiB;IAOhD;;;;;;;;;;;;OAYG;IACG,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoCrF;;;;;;;;;;OAUG;IACG,oBAAoB,CACtB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;CAoBnB"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Proof Generator — Phase E
3
+ *
4
+ * Generates cross-chain proofs (EIP-191 personal signature) that attest
5
+ * the solver has fulfilled the intent on the target chain.
6
+ *
7
+ * Flow:
8
+ * 1. Solver sends funds on target chain → gets txHash
9
+ * 2. Wait for N confirmations on target chain
10
+ * 3. Sign message: keccak256(intentId, "FILLED", solverAddress)
11
+ * 4. Return CrossChainProof for use in claim()
12
+ *
13
+ * Used by: SettlementManager.settleIntent()
14
+ */
15
+ import { ethers } from "ethers";
16
+ import { ProofGenerationError } from "../../errors/settlement-errors";
17
+ // ─────────────────────────────────────────────
18
+ // ProofGenerator
19
+ // ─────────────────────────────────────────────
20
+ export class ProofGenerator {
21
+ signer;
22
+ provider;
23
+ constructor(signer, provider) {
24
+ this.signer = signer;
25
+ this.provider = provider;
26
+ }
27
+ // ─────────────────────────────────────────
28
+ // Public API
29
+ // ─────────────────────────────────────────
30
+ /**
31
+ * Generate a cross-chain signature proof.
32
+ *
33
+ * Steps:
34
+ * 1. Wait for sufficient confirmations on target chain
35
+ * 2. Build digest from intentId and solver address
36
+ * 3. Sign with oracle's private key
37
+ * 4. Return CrossChainProof
38
+ *
39
+ * @param params - ProofGenerationParams
40
+ * @returns CrossChainProof ready for claim()
41
+ * @throws ProofGenerationError if tx not found, reverted, or signing fails
42
+ */
43
+ async generateSignatureProof(params) {
44
+ const confirmations = params.confirmations ?? 3;
45
+ await this.waitForConfirmations(params.targetTxHash, params.targetChainId, confirmations);
46
+ const receipt = await this.provider.getTransactionReceipt(params.targetChainId, params.targetTxHash);
47
+ if (!receipt) {
48
+ throw new ProofGenerationError(`Transaction ${params.targetTxHash} not found`);
49
+ }
50
+ if (receipt.status === 0) {
51
+ throw new ProofGenerationError(`Transaction ${params.targetTxHash} reverted`);
52
+ }
53
+ const solverAddress = await this.signer.getAddress();
54
+ // Keccak256(abi.encodePacked(intentId, "FILLED", solverAddress))
55
+ const digest = ethers.solidityPackedKeccak256(["bytes32", "string", "address"], [params.intentId, "FILLED", solverAddress]);
56
+ const signature = await this.signer.signMessage(ethers.getBytes(digest));
57
+ return {
58
+ txHash: params.targetTxHash,
59
+ chainId: params.targetChainId,
60
+ blockNumber: receipt.blockNumber,
61
+ solverSignature: signature,
62
+ signedData: {
63
+ intentId: params.intentId,
64
+ targetTxHash: params.targetTxHash,
65
+ amount: params.amount,
66
+ recipient: params.recipient,
67
+ }
68
+ };
69
+ }
70
+ /**
71
+ * Wait until a transaction has enough block confirmations.
72
+ *
73
+ * Polls the chain every ~2 seconds until:
74
+ * currentBlock - txBlock >= requiredConfirmations
75
+ *
76
+ * @param txHash - Transaction hash to watch
77
+ * @param chainId - Chain ID where the tx lives
78
+ * @param confirmations - Number of confirmations required
79
+ * @throws ProofGenerationError if tx not found or reverted
80
+ */
81
+ async waitForConfirmations(txHash, chainId, confirmations) {
82
+ const maxAttempts = 60; // Up to ~120 seconds
83
+ const delayMs = 2000;
84
+ for (let i = 0; i < maxAttempts; i++) {
85
+ const receipt = await this.provider.getTransactionReceipt(chainId, txHash);
86
+ if (receipt) {
87
+ if (receipt.status === 0) {
88
+ throw new ProofGenerationError(`Transaction ${txHash} reverted on chain ${chainId}`);
89
+ }
90
+ const currentBlock = await this.provider.getBlockNumber(chainId);
91
+ if (currentBlock - receipt.blockNumber >= confirmations) {
92
+ return; // Enough confirmations
93
+ }
94
+ }
95
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
96
+ }
97
+ throw new ProofGenerationError(`Timeout waiting for ${confirmations} confirmations on ${txHash}`);
98
+ }
99
+ }
100
+ //# sourceMappingURL=proof-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-generator.js","sourceRoot":"","sources":["../../../src/solver/settlement/proof-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Proof Verifier — Phase E
3
+ *
4
+ * Verifies cross-chain proofs by recovering the signer from
5
+ * the EIP-712 signature and comparing to the expected solver address.
6
+ *
7
+ * Used by:
8
+ * - SettlementManager (pre-claim sanity check)
9
+ * - Contract's claim() also verifies on-chain, but we check off-chain first
10
+ * to avoid wasting gas on invalid proofs
11
+ */
12
+ import type { Address } from "../../types/common";
13
+ import type { CrossChainProof } from "../types/settlement";
14
+ export declare class ProofVerifier {
15
+ /**
16
+ * Verify that a CrossChainProof was signed by the expected oracle/solver.
17
+ *
18
+ * Steps:
19
+ * 1. Reconstruct digest from intentId and expected solver address
20
+ * 2. Recover signer address from proof.solverSignature
21
+ * 3. Compare recovered address with expectedSigner
22
+ * 4. Return true if match, false otherwise
23
+ *
24
+ * @param proof - The CrossChainProof to verify
25
+ * @param expectedSigner - The address we expect to have signed (e.g. Oracle address)
26
+ * @param solverAddress - The solver address that was injected into the digest
27
+ * @returns true if proof is valid
28
+ */
29
+ verifySignatureProof(proof: CrossChainProof, expectedSigner: Address, solverAddress: Address): Promise<boolean>;
30
+ }
31
+ //# sourceMappingURL=proof-verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-verifier.d.ts","sourceRoot":"","sources":["../../../src/solver/settlement/proof-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,qBAAa,aAAa;IAEtB;;;;;;;;;;;;;OAaG;IACG,oBAAoB,CACtB,KAAK,EAAE,eAAe,EACtB,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,OAAO,GACvB,OAAO,CAAC,OAAO,CAAC;CAmBtB"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Proof Verifier — Phase E
3
+ *
4
+ * Verifies cross-chain proofs by recovering the signer from
5
+ * the EIP-712 signature and comparing to the expected solver address.
6
+ *
7
+ * Used by:
8
+ * - SettlementManager (pre-claim sanity check)
9
+ * - Contract's claim() also verifies on-chain, but we check off-chain first
10
+ * to avoid wasting gas on invalid proofs
11
+ */
12
+ import { ethers } from "ethers";
13
+ // ─────────────────────────────────────────────
14
+ // ProofVerifier
15
+ // ─────────────────────────────────────────────
16
+ export class ProofVerifier {
17
+ /**
18
+ * Verify that a CrossChainProof was signed by the expected oracle/solver.
19
+ *
20
+ * Steps:
21
+ * 1. Reconstruct digest from intentId and expected solver address
22
+ * 2. Recover signer address from proof.solverSignature
23
+ * 3. Compare recovered address with expectedSigner
24
+ * 4. Return true if match, false otherwise
25
+ *
26
+ * @param proof - The CrossChainProof to verify
27
+ * @param expectedSigner - The address we expect to have signed (e.g. Oracle address)
28
+ * @param solverAddress - The solver address that was injected into the digest
29
+ * @returns true if proof is valid
30
+ */
31
+ async verifySignatureProof(proof, expectedSigner, solverAddress) {
32
+ if (!proof.signedData || !proof.signedData.intentId) {
33
+ return false;
34
+ }
35
+ try {
36
+ const digest = ethers.solidityPackedKeccak256(["bytes32", "string", "address"], [proof.signedData.intentId, "FILLED", solverAddress]);
37
+ // Recover signer using EIP-191 personal sign recovery
38
+ const recoveredAddress = ethers.verifyMessage(ethers.getBytes(digest), proof.solverSignature);
39
+ return recoveredAddress.toLowerCase() === expectedSigner.toLowerCase();
40
+ }
41
+ catch (error) {
42
+ return false;
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=proof-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-verifier.js","sourceRoot":"","sources":["../../../src/solver/settlement/proof-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,gDAAgD;AAChD,gBAAgB;AAChB,gDAAgD;AAEhD,MAAM,OAAO,aAAa;IAEtB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,oBAAoB,CACtB,KAAsB,EACtB,cAAuB,EACvB,aAAsB;QAEtB,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAClD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CACzC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,EAChC,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CACvD,CAAC;YAEF,sDAAsD;YACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;YAE9F,OAAO,gBAAgB,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Settlement Manager — Phase E
3
+ *
4
+ * Orchestrates the full settlement lifecycle:
5
+ * 1. Solver sends funds on target chain → gets targetTxHash
6
+ * 2. Wait for confirmations on target chain
7
+ * 3. Generate proof (EIP-191 Oracle signature)
8
+ * 4. Submit claim() on source chain contract
9
+ * 5. Track settlement status and handle failures
10
+ *
11
+ * Retry policy: max 3 attempts per intent.
12
+ * After 3 failures → status = "failed", requires manual review.
13
+ *
14
+ * Used by: LiquidityAgent.solve() (Phase F)
15
+ */
16
+ import type { Address, Hash } from "../../types/common";
17
+ import type { Settlement, SettlementStatus } from "../types/settlement";
18
+ import type { SolverIntent } from "../types/intent";
19
+ import type { ProofGenerator } from "./proof-generator";
20
+ import type { ProofVerifier } from "./proof-verifier";
21
+ import type { IntentSettlementContract } from "../contracts/intent-settlement/intent-settlement";
22
+ export interface SettlementConfig {
23
+ /** Number of block confirmations before generating proof (default: 3) */
24
+ requiredConfirmations: number;
25
+ /** Max retry attempts for claim (default: 3) */
26
+ maxClaimRetries: number;
27
+ /** Interval (ms) for watchPendingSettlements polling (default: 30_000) */
28
+ watchIntervalMs: number;
29
+ /** Oracle address that signs the proof. If not provided, assumes solver is oracle (MVP). */
30
+ oracleAddress?: Address;
31
+ }
32
+ export declare const DEFAULT_SETTLEMENT_CONFIG: SettlementConfig;
33
+ export declare class SettlementManager {
34
+ private readonly proofGenerator;
35
+ private readonly proofVerifier;
36
+ private readonly contract;
37
+ private readonly config;
38
+ /** In-memory settlement records, keyed by intentId */
39
+ private settlements;
40
+ /** Cache of original intents to allow retries */
41
+ private intents;
42
+ /** Interval ID for watchPendingSettlements */
43
+ private watchInterval;
44
+ constructor(proofGenerator: ProofGenerator, proofVerifier: ProofVerifier, contract: IntentSettlementContract, config?: SettlementConfig);
45
+ /**
46
+ * Full settlement flow for a single intent.
47
+ *
48
+ * Steps:
49
+ * 1. Create Settlement record with status "pending"
50
+ * 2. Wait for confirmations on target chain
51
+ * 3. Generate proof → status "proving"
52
+ * 4. Verify proof off-chain (sanity check)
53
+ * 5. Call contract.claim() → status "claiming"
54
+ * 6. If success → status "completed"
55
+ * 7. If failure → handleClaimFailure()
56
+ *
57
+ * @param intent - SolverIntent being settled
58
+ * @param targetTxHash - Transaction hash of the fulfillment on target chain
59
+ * @returns Settlement record
60
+ * @throws SettlementError on unrecoverable failure
61
+ */
62
+ settleIntent(intent: SolverIntent, targetTxHash: Hash): Promise<Settlement>;
63
+ /**
64
+ * Start watching for pending settlements and retry claims.
65
+ *
66
+ * Runs on an interval (default 30s). For each pending/failed settlement
67
+ * with remaining retries, attempt to re-settle.
68
+ */
69
+ watchPendingSettlements(): void;
70
+ /**
71
+ * Stop watching pending settlements.
72
+ */
73
+ stopWatching(): void;
74
+ /**
75
+ * Handle a claim failure: increment attempts, update status.
76
+ *
77
+ * If attempts < maxClaimRetries → keep status "failed" (will be retried by watcher)
78
+ * If attempts >= maxClaimRetries → status "failed" permanently
79
+ *
80
+ * @param intentId - Intent whose claim failed
81
+ * @param error - Error that caused the failure
82
+ */
83
+ handleClaimFailure(intentId: string, error: Error): Promise<void>;
84
+ /**
85
+ * Get a settlement record by intentId.
86
+ */
87
+ getSettlement(intentId: string): Settlement | undefined;
88
+ /**
89
+ * Get all settlements with a specific status.
90
+ */
91
+ getSettlementsByStatus(status: SettlementStatus): Settlement[];
92
+ /**
93
+ * Get all settlement records.
94
+ */
95
+ getAllSettlements(): Settlement[];
96
+ }
97
+ //# sourceMappingURL=settlement-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement-manager.d.ts","sourceRoot":"","sources":["../../../src/solver/settlement/settlement-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAQjG,MAAM,WAAW,gBAAgB;IAC7B,yEAAyE;IACzE,qBAAqB,EAAE,MAAM,CAAC;IAE9B,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IAExB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IAExB,4FAA4F;IAC5F,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAIvC,CAAC;AAMF,qBAAa,iBAAiB;IAWtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAb3B,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAAsC;IAEzD,iDAAiD;IACjD,OAAO,CAAC,OAAO,CAAwC;IAEvD,8CAA8C;IAC9C,OAAO,CAAC,aAAa,CAA+C;gBAG/C,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,wBAAwB,EAClC,MAAM,GAAE,gBAA4C;IAOzE;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CACd,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,IAAI,GACnB,OAAO,CAAC,UAAU,CAAC;IA0FtB;;;;;OAKG;IACH,uBAAuB,IAAI,IAAI;IAqB/B;;OAEG;IACH,YAAY,IAAI,IAAI;IAOpB;;;;;;;;OAQG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvE;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvD;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,EAAE;IAI9D;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;CAGpC"}