@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,285 @@
1
+ /**
2
+ * Liquidity Agent — Phase F
3
+ *
4
+ * Core orchestrator that ties together all solver subsystems
5
+ * (Inventory, Pricing, Settlement) into a single agent that can
6
+ * evaluate, price, and solve cross-chain bridge intents.
7
+ *
8
+ * Lifecycle:
9
+ * 1. new LiquidityAgent(deps, config)
10
+ * 2. await agent.initialize() → loads balances, derives address
11
+ * 3. agent.start() → begins watching settlements
12
+ * 4. await agent.solve(intent) → full solve cycle
13
+ * 5. agent.stop() → cleanup
14
+ *
15
+ * Used by: SDK consumer (examples/autonomous-agent.ts, Phase K)
16
+ */
17
+ import { toBridgeIntent } from "../types/intent";
18
+ import { UnsupportedIntentError, IntentExpiredError } from "../../errors/solver-errors";
19
+ import { encodeTransferData } from "../../shared/utils/erc20-utils";
20
+ // ─────────────────────────────────────────────
21
+ // LiquidityAgent
22
+ // ─────────────────────────────────────────────
23
+ export class LiquidityAgent {
24
+ inventoryManager;
25
+ dynamicPricing;
26
+ settlementManager;
27
+ walletManager;
28
+ config;
29
+ status = "idle";
30
+ agentAddress = null;
31
+ constructor(inventoryManager, dynamicPricing, settlementManager, walletManager, config) {
32
+ this.inventoryManager = inventoryManager;
33
+ this.dynamicPricing = dynamicPricing;
34
+ this.settlementManager = settlementManager;
35
+ this.walletManager = walletManager;
36
+ this.config = config;
37
+ }
38
+ // ─────────────────────────────────────────
39
+ // Public API
40
+ // ─────────────────────────────────────────
41
+ /**
42
+ * Initialize the agent: load on-chain balances and derive the agent address.
43
+ *
44
+ * Must be called before solve() / canSolve() / getQuote().
45
+ */
46
+ async initialize() {
47
+ this.agentAddress = this.walletManager.getAddress();
48
+ await this.inventoryManager.loadBalances();
49
+ this.status = "idle";
50
+ }
51
+ /**
52
+ * Check whether this agent can solve a given intent.
53
+ *
54
+ * Validation order:
55
+ * 1. Intent type must be "bridge"
56
+ * 2. Source and target chains must be in supportedChains
57
+ * 3. Token must be in supportedTokens
58
+ * 4. Intent must not be expired (deadline > now)
59
+ * 5. Inventory must have enough to fulfill (canFulfill)
60
+ *
61
+ * @param intent - SolverIntent to evaluate
62
+ * @returns true if solvable, false otherwise
63
+ */
64
+ canSolve(intent) {
65
+ // 1. Type check
66
+ if (intent.parsedIntent.intentType !== "bridge")
67
+ return false;
68
+ // 2. Extract bridge params
69
+ const bridgeIntent = toBridgeIntent(intent);
70
+ if (!bridgeIntent)
71
+ return false;
72
+ // 3. Chain support
73
+ const { supportedChains, supportedTokens } = this.config.agent;
74
+ if (!supportedChains.includes(bridgeIntent.sourceChain))
75
+ return false;
76
+ if (!supportedChains.includes(bridgeIntent.targetChain))
77
+ return false;
78
+ // 4. Token support
79
+ if (!supportedTokens.includes(bridgeIntent.token.toUpperCase()))
80
+ return false;
81
+ // 5. Expiry check
82
+ const nowSeconds = Math.floor(Date.now() / 1000);
83
+ if (intent.deadline <= nowSeconds)
84
+ return false;
85
+ // 6. Inventory sufficiency on target chain
86
+ const amount = BigInt(bridgeIntent.amount);
87
+ if (!this.inventoryManager.canFulfill(bridgeIntent.targetChain, bridgeIntent.token, amount)) {
88
+ return false;
89
+ }
90
+ return true;
91
+ }
92
+ /**
93
+ * Get a price quote for a given intent via the DynamicPricing engine.
94
+ *
95
+ * Does NOT lock inventory or execute anything.
96
+ *
97
+ * @param intent - SolverIntent to price
98
+ * @returns PricingResult with full fee breakdown
99
+ */
100
+ getQuote(intent) {
101
+ return this.dynamicPricing.getPrice(intent);
102
+ }
103
+ /**
104
+ * Full solve cycle for a single intent.
105
+ *
106
+ * Steps:
107
+ * 1. Validate via canSolve()
108
+ * 2. Price via getQuote()
109
+ * 3. Check profitability (shouldReject)
110
+ * 4. Lock inventory on target chain
111
+ * 5. Send funds on target chain (simulate or live)
112
+ * 6. Confirm deduction from inventory
113
+ * 7. Trigger settlement (proof + claim)
114
+ * 8. Return SolutionResult
115
+ *
116
+ * On any failure after lock, inventory is unlocked automatically.
117
+ *
118
+ * @param intent - SolverIntent to solve
119
+ * @returns SolutionResult with success/error details
120
+ */
121
+ async solve(intent) {
122
+ const startTime = Date.now();
123
+ this.status = "processing";
124
+ try {
125
+ // 1. Validate
126
+ if (intent.parsedIntent.intentType !== "bridge") {
127
+ throw new UnsupportedIntentError(intent.parsedIntent.intentType, "Only bridge intents are supported");
128
+ }
129
+ const bridgeIntent = toBridgeIntent(intent);
130
+ if (!bridgeIntent) {
131
+ throw new UnsupportedIntentError("bridge", "Invalid bridge parameters");
132
+ }
133
+ // Check expiry
134
+ const nowSeconds = Math.floor(Date.now() / 1000);
135
+ if (intent.deadline <= nowSeconds) {
136
+ throw new IntentExpiredError(intent.intentId, intent.deadline);
137
+ }
138
+ // Check inventory can fulfill
139
+ const amount = BigInt(bridgeIntent.amount);
140
+ if (!this.inventoryManager.canFulfill(bridgeIntent.targetChain, bridgeIntent.token, amount)) {
141
+ return this.errorResult("Insufficient inventory on target chain", startTime, bridgeIntent);
142
+ }
143
+ // 2. Price
144
+ const pricing = this.getQuote(intent);
145
+ // 3. Check profitability
146
+ if (this.dynamicPricing.shouldReject(bridgeIntent.targetChain, amount, bridgeIntent.token)) {
147
+ return this.errorResult("Inventory too low — rejected by dynamic pricing", startTime, bridgeIntent);
148
+ }
149
+ // 4. Lock inventory
150
+ this.inventoryManager.lockAmount(bridgeIntent.targetChain, bridgeIntent.token, amount, intent.intentId);
151
+ let targetTxHash;
152
+ try {
153
+ // 5. Send on target chain
154
+ targetTxHash = await this.sendOnTargetChain(intent, bridgeIntent, pricing);
155
+ // 6. Confirm deduction
156
+ this.inventoryManager.confirmDeduction(bridgeIntent.targetChain, bridgeIntent.token, amount, intent.intentId);
157
+ }
158
+ catch (sendError) {
159
+ // Unlock on failure
160
+ this.inventoryManager.unlockAmount(bridgeIntent.targetChain, bridgeIntent.token, amount, intent.intentId);
161
+ return this.errorResult(`Send failed: ${sendError.message || String(sendError)}`, startTime, bridgeIntent);
162
+ }
163
+ // 7. Trigger settlement
164
+ try {
165
+ await this.settlementManager.settleIntent(intent, targetTxHash);
166
+ }
167
+ catch (settlementError) {
168
+ // Settlement failure is non-fatal for the solve result —
169
+ // the funds were already sent to the user. Settlement will be retried
170
+ // by the watcher. Log but don't fail the result.
171
+ console.warn(`Settlement for ${intent.intentId} deferred: ${settlementError.message}`);
172
+ }
173
+ // 8. Build success result
174
+ const durationMs = Date.now() - startTime;
175
+ this.status = "idle";
176
+ return {
177
+ success: true,
178
+ txHash: targetTxHash,
179
+ profit: pricing.solverProfit,
180
+ output: pricing.userReceives,
181
+ metadata: {
182
+ solveDurationMs: durationMs,
183
+ sourceChainId: bridgeIntent.sourceChain,
184
+ targetChainId: bridgeIntent.targetChain,
185
+ feeBreakdown: {
186
+ baseFee: pricing.baseFee,
187
+ slippageCapture: pricing.slippageCapture,
188
+ gasCost: pricing.gasCost,
189
+ totalFee: pricing.totalFee,
190
+ },
191
+ },
192
+ };
193
+ }
194
+ catch (error) {
195
+ this.status = "idle";
196
+ return {
197
+ success: false,
198
+ error: error.message || String(error),
199
+ };
200
+ }
201
+ }
202
+ /**
203
+ * Start the agent: begin watching for pending settlements.
204
+ *
205
+ * @param _mempoolUrl - Reserved for Phase G mempool integration
206
+ */
207
+ start(_mempoolUrl) {
208
+ this.status = "processing";
209
+ this.settlementManager.watchPendingSettlements();
210
+ }
211
+ /**
212
+ * Stop the agent: stop settlement watcher.
213
+ */
214
+ stop() {
215
+ this.settlementManager.stopWatching();
216
+ this.status = "idle";
217
+ }
218
+ /**
219
+ * Get the current agent status.
220
+ */
221
+ getStatus() {
222
+ return this.status;
223
+ }
224
+ /**
225
+ * Get the agent's on-chain address.
226
+ */
227
+ getAgentAddress() {
228
+ return this.agentAddress;
229
+ }
230
+ // ─────────────────────────────────────────
231
+ // Private
232
+ // ─────────────────────────────────────────
233
+ /**
234
+ * Send funds to the intent recipient on the target chain.
235
+ *
236
+ * In **simulate** mode: generates a fake txHash from the intentId.
237
+ * In **live** mode: executes a real ERC-20 transfer via WalletManager.
238
+ *
239
+ * @param intent - The intent being solved
240
+ * @param bridgeIntent - Extracted bridge parameters
241
+ * @param _pricing - Pricing result (reserved for future gas limit calc)
242
+ * @returns Target chain transaction hash
243
+ */
244
+ async sendOnTargetChain(intent, bridgeIntent, _pricing) {
245
+ if (this.config.agent.mode === "simulate") {
246
+ // Simulate: generate deterministic fake hash
247
+ const ramdomHex = Math.random().toString(16).slice(2) + Math.random().toString(16).slice(2);
248
+ const fakeHash = `0x${ramdomHex.padEnd(64, "0").slice(0, 64)}`;
249
+ return fakeHash;
250
+ }
251
+ // Live mode: build and send ERC-20 transfer
252
+ const tokenAddress = intent.parsedIntent.parameters.outputTokenAddress || intent.parsedIntent.parameters.inputTokenAddress;
253
+ if (!tokenAddress) {
254
+ throw new Error(`Token address required for live mode transfer (${bridgeIntent.token})`);
255
+ }
256
+ // Generate calldata using custom ERC-20 utils
257
+ const data = encodeTransferData(bridgeIntent.recipient, BigInt(_pricing.userReceives));
258
+ // Sign and broadcast the transaction via the WalletManager
259
+ const txHash = await this.walletManager.sendTransaction(bridgeIntent.targetChain, {
260
+ to: tokenAddress,
261
+ data,
262
+ value: 0n,
263
+ });
264
+ return txHash;
265
+ }
266
+ /**
267
+ * Build an error SolutionResult.
268
+ */
269
+ errorResult(message, startTime, bridgeIntent) {
270
+ this.status = "idle";
271
+ const result = {
272
+ success: false,
273
+ error: message,
274
+ };
275
+ if (bridgeIntent) {
276
+ result.metadata = {
277
+ solveDurationMs: Date.now() - startTime,
278
+ sourceChainId: bridgeIntent.sourceChain,
279
+ targetChainId: bridgeIntent.targetChain,
280
+ };
281
+ }
282
+ return result;
283
+ }
284
+ }
285
+ //# sourceMappingURL=liquidity-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidity-agent.js","sourceRoot":"","sources":["../../../src/solver/agent/liquidity-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./intent-settlement";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/solver/contracts/intent-settlement/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./intent-settlement";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/solver/contracts/intent-settlement/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { ethers, ContractTransactionResponse } from "ethers";
2
+ export interface CrossChainOrder {
3
+ settlementContract: string;
4
+ swapper: string;
5
+ nonce: bigint;
6
+ originChainId: number;
7
+ initiateDeadline: number;
8
+ fillDeadline: number;
9
+ orderData: string;
10
+ }
11
+ export declare class IntentSettlementContract {
12
+ private contract;
13
+ constructor(address: string, providerOrSigner: ethers.Provider | ethers.Signer);
14
+ updateSigner(signer: ethers.Signer): void;
15
+ open(order: CrossChainOrder, signature: string, orderData: string): Promise<ContractTransactionResponse>;
16
+ claim(order: CrossChainOrder, oracleSignature: string): Promise<ContractTransactionResponse>;
17
+ refund(order: CrossChainOrder): Promise<ContractTransactionResponse>;
18
+ isSettled(intentId: string): Promise<boolean>;
19
+ waitForLockEvent(intentId: string, timeoutMs?: number): Promise<boolean>;
20
+ getAddress(): Promise<string>;
21
+ }
22
+ //# sourceMappingURL=intent-settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-settlement.d.ts","sourceRoot":"","sources":["../../../../src/solver/contracts/intent-settlement/intent-settlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAeD,qBAAa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAW;gBAEf,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;IAI9E,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM;IAI5B,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAIxG,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAI5F,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAIpE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBrF,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAGhC"}
@@ -0,0 +1,58 @@
1
+ import { Contract } from "ethers";
2
+ // import { IntentSettlement } from "../../../contracts/typechain-types"; // Type-only import if available, else omit
3
+ // Human-Readable ABI for IntentSettlement
4
+ const INTENT_SETTLEMENT_ABI = [
5
+ "function open(tuple(address settlementContract, address swapper, uint256 nonce, uint32 originChainId, uint32 initiateDeadline, uint32 fillDeadline, bytes orderData) order, bytes signature, bytes orderData) external",
6
+ "function claim(tuple(address settlementContract, address swapper, uint256 nonce, uint32 originChainId, uint32 initiateDeadline, uint32 fillDeadline, bytes orderData) order, bytes signature) external",
7
+ "function refund(tuple(address settlementContract, address swapper, uint256 nonce, uint32 originChainId, uint32 initiateDeadline, uint32 fillDeadline, bytes orderData) order) external",
8
+ "function isIntentSettled(bytes32 intentId) view returns (bool)",
9
+ "event FundsLocked(bytes32 indexed intentId, address indexed swapper, address token, uint256 amount)",
10
+ "event FundsClaimed(bytes32 indexed intentId, address indexed solver, uint256 amount)",
11
+ "event FundsRefunded(bytes32 indexed intentId, address indexed swapper, uint256 amount)"
12
+ ];
13
+ export class IntentSettlementContract {
14
+ contract;
15
+ constructor(address, providerOrSigner) {
16
+ this.contract = new Contract(address, INTENT_SETTLEMENT_ABI, providerOrSigner);
17
+ }
18
+ updateSigner(signer) {
19
+ this.contract = new Contract(this.contract.target, INTENT_SETTLEMENT_ABI, signer);
20
+ }
21
+ async open(order, signature, orderData) {
22
+ return await this.contract.open(order, signature, orderData);
23
+ }
24
+ async claim(order, oracleSignature) {
25
+ return await this.contract.claim(order, oracleSignature);
26
+ }
27
+ async refund(order) {
28
+ return await this.contract.refund(order);
29
+ }
30
+ async isSettled(intentId) {
31
+ return await this.contract.isIntentSettled(intentId);
32
+ }
33
+ async waitForLockEvent(intentId, timeoutMs = 60000) {
34
+ // Basic polling or event listener logic
35
+ const topic = this.contract.interface.getEvent("FundsLocked").topicHash;
36
+ const filter = {
37
+ address: await this.contract.getAddress(),
38
+ topics: [topic, intentId]
39
+ };
40
+ const provider = this.contract.runner?.provider;
41
+ if (!provider)
42
+ throw new Error("No provider available");
43
+ return new Promise((resolve) => {
44
+ const timeout = setTimeout(() => {
45
+ this.contract.removeAllListeners(filter);
46
+ resolve(false);
47
+ }, timeoutMs);
48
+ this.contract.once(filter, () => {
49
+ clearTimeout(timeout);
50
+ resolve(true);
51
+ });
52
+ });
53
+ }
54
+ getAddress() {
55
+ return this.contract.getAddress();
56
+ }
57
+ }
58
+ //# sourceMappingURL=intent-settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-settlement.js","sourceRoot":"","sources":["../../../../src/solver/contracts/intent-settlement/intent-settlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAA+B,MAAM,QAAQ,CAAC;AAWvE,qHAAqH;AAGrH,0CAA0C;AAC1C,MAAM,qBAAqB,GAAG;IAC1B,wNAAwN;IACxN,wMAAwM;IACxM,wLAAwL;IACxL,gEAAgE;IAChE,qGAAqG;IACrG,sFAAsF;IACtF,wFAAwF;CAC3F,CAAC;AAEF,MAAM,OAAO,wBAAwB;IACzB,QAAQ,CAAW;IAE3B,YAAY,OAAe,EAAE,gBAAiD;QAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;IACnF,CAAC;IAED,YAAY,CAAC,MAAqB;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAsB,EAAE,SAAiB,EAAE,SAAiB;QACnE,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAsB,EAAE,eAAuB;QACvD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAsB;QAC/B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC5B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,YAAoB,KAAK;QAC9D,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAE,CAAC,SAAS,CAAC;QACzE,MAAM,MAAM,GAAG;YACX,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACzC,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;SAC5B,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAExD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAa,CAAC,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAa,EAAE,GAAG,EAAE;gBACnC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;CACJ"}
@@ -0,0 +1,226 @@
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
+ import type { Address, Hash } from "../../../types/common";
18
+ import type { PublicClient, WalletClient } from "viem";
19
+ export declare const INTENT_SETTLEMENT_ABI: readonly [{
20
+ readonly type: "function";
21
+ readonly name: "open";
22
+ readonly stateMutability: "nonpayable";
23
+ readonly inputs: readonly [{
24
+ readonly name: "order";
25
+ readonly type: "tuple";
26
+ readonly components: readonly [{
27
+ readonly name: "settlementContract";
28
+ readonly type: "address";
29
+ }, {
30
+ readonly name: "swapper";
31
+ readonly type: "address";
32
+ }, {
33
+ readonly name: "nonce";
34
+ readonly type: "uint256";
35
+ }, {
36
+ readonly name: "originChainId";
37
+ readonly type: "uint32";
38
+ }, {
39
+ readonly name: "initiateDeadline";
40
+ readonly type: "uint32";
41
+ }, {
42
+ readonly name: "fillDeadline";
43
+ readonly type: "uint32";
44
+ }, {
45
+ readonly name: "orderData";
46
+ readonly type: "bytes";
47
+ }];
48
+ }, {
49
+ readonly name: "signature";
50
+ readonly type: "bytes";
51
+ }, {
52
+ readonly name: "orderData";
53
+ readonly type: "bytes";
54
+ }];
55
+ readonly outputs: readonly [];
56
+ }, {
57
+ readonly type: "function";
58
+ readonly name: "claim";
59
+ readonly stateMutability: "nonpayable";
60
+ readonly inputs: readonly [{
61
+ readonly name: "order";
62
+ readonly type: "tuple";
63
+ readonly components: readonly [{
64
+ readonly name: "settlementContract";
65
+ readonly type: "address";
66
+ }, {
67
+ readonly name: "swapper";
68
+ readonly type: "address";
69
+ }, {
70
+ readonly name: "nonce";
71
+ readonly type: "uint256";
72
+ }, {
73
+ readonly name: "originChainId";
74
+ readonly type: "uint32";
75
+ }, {
76
+ readonly name: "initiateDeadline";
77
+ readonly type: "uint32";
78
+ }, {
79
+ readonly name: "fillDeadline";
80
+ readonly type: "uint32";
81
+ }, {
82
+ readonly name: "orderData";
83
+ readonly type: "bytes";
84
+ }];
85
+ }, {
86
+ readonly name: "signature";
87
+ readonly type: "bytes";
88
+ }];
89
+ readonly outputs: readonly [];
90
+ }, {
91
+ readonly type: "function";
92
+ readonly name: "refund";
93
+ readonly stateMutability: "nonpayable";
94
+ readonly inputs: readonly [{
95
+ readonly name: "order";
96
+ readonly type: "tuple";
97
+ readonly components: readonly [{
98
+ readonly name: "settlementContract";
99
+ readonly type: "address";
100
+ }, {
101
+ readonly name: "swapper";
102
+ readonly type: "address";
103
+ }, {
104
+ readonly name: "nonce";
105
+ readonly type: "uint256";
106
+ }, {
107
+ readonly name: "originChainId";
108
+ readonly type: "uint32";
109
+ }, {
110
+ readonly name: "initiateDeadline";
111
+ readonly type: "uint32";
112
+ }, {
113
+ readonly name: "fillDeadline";
114
+ readonly type: "uint32";
115
+ }, {
116
+ readonly name: "orderData";
117
+ readonly type: "bytes";
118
+ }];
119
+ }];
120
+ readonly outputs: readonly [];
121
+ }, {
122
+ readonly type: "function";
123
+ readonly name: "isIntentSettled";
124
+ readonly stateMutability: "view";
125
+ readonly inputs: readonly [{
126
+ readonly name: "intentId";
127
+ readonly type: "bytes32";
128
+ }];
129
+ readonly outputs: readonly [{
130
+ readonly name: "";
131
+ readonly type: "bool";
132
+ }];
133
+ }, {
134
+ readonly type: "event";
135
+ readonly name: "FundsLocked";
136
+ readonly inputs: readonly [{
137
+ readonly name: "intentId";
138
+ readonly type: "bytes32";
139
+ readonly indexed: true;
140
+ }, {
141
+ readonly name: "swapper";
142
+ readonly type: "address";
143
+ readonly indexed: true;
144
+ }, {
145
+ readonly name: "token";
146
+ readonly type: "address";
147
+ readonly indexed: false;
148
+ }, {
149
+ readonly name: "amount";
150
+ readonly type: "uint256";
151
+ readonly indexed: false;
152
+ }];
153
+ }, {
154
+ readonly type: "event";
155
+ readonly name: "FundsClaimed";
156
+ readonly inputs: readonly [{
157
+ readonly name: "intentId";
158
+ readonly type: "bytes32";
159
+ readonly indexed: true;
160
+ }, {
161
+ readonly name: "solver";
162
+ readonly type: "address";
163
+ readonly indexed: true;
164
+ }, {
165
+ readonly name: "amount";
166
+ readonly type: "uint256";
167
+ readonly indexed: false;
168
+ }];
169
+ }, {
170
+ readonly type: "event";
171
+ readonly name: "IntentFilled";
172
+ readonly inputs: readonly [{
173
+ readonly name: "orderId";
174
+ readonly type: "bytes32";
175
+ readonly indexed: true;
176
+ }, {
177
+ readonly name: "filler";
178
+ readonly type: "address";
179
+ readonly indexed: true;
180
+ }, {
181
+ readonly name: "originData";
182
+ readonly type: "bytes";
183
+ readonly indexed: false;
184
+ }, {
185
+ readonly name: "fillerData";
186
+ readonly type: "bytes";
187
+ readonly indexed: false;
188
+ }];
189
+ }];
190
+ export interface CrossChainOrderViem {
191
+ settlementContract: Address;
192
+ swapper: Address;
193
+ nonce: bigint;
194
+ originChainId: number;
195
+ initiateDeadline: number;
196
+ fillDeadline: number;
197
+ orderData: `0x${string}`;
198
+ }
199
+ /**
200
+ * Viem-native wrapper around the deployed `IntentSettlement.sol`.
201
+ *
202
+ * Usage:
203
+ * const settlement = new ViemSettlementContract(contractAddress, publicClient, walletClient);
204
+ * const result = await settlement.claim(order, solverSignature);
205
+ * console.log("Settled intent in tx:", result.txHash);
206
+ */
207
+ export declare class ViemSettlementContract {
208
+ private readonly address;
209
+ private readonly publicClient;
210
+ private readonly walletClient;
211
+ constructor(address: Address, publicClient: PublicClient, walletClient: WalletClient);
212
+ /**
213
+ * Check if a specific intent ID has already been settled on this contract.
214
+ */
215
+ isSettled(intentId: `0x${string}`): Promise<boolean>;
216
+ /**
217
+ * Call `claim()` using a solver signature as proof.
218
+ * Alternative to fill() for the claim-based settlement flow.
219
+ */
220
+ claim(order: CrossChainOrderViem, solverSignature: `0x${string}`): Promise<{
221
+ txHash: Hash;
222
+ blockNumber: bigint;
223
+ }>;
224
+ getAddress(): Address;
225
+ }
226
+ //# sourceMappingURL=viem-settlement-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viem-settlement-contract.d.ts","sourceRoot":"","sources":["../../../../src/solver/contracts/intent-settlement/viem-settlement-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAMvD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GxB,CAAC;AAMX,MAAM,WAAW,mBAAmB;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;CAC5B;AAMD;;;;;;;GAOG;AACH,qBAAa,sBAAsB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAG/C;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1D;;;OAGG;IACG,KAAK,CACP,KAAK,EAAE,mBAAmB,EAC1B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC/B,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IA0CjD,UAAU,IAAI,OAAO;CAGxB"}