@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,212 @@
1
+ /**
2
+ * Swing Protocol Integration — Phase D (Live Integration)
3
+ *
4
+ * DEX/Bridge aggregator integration using Swing.xyz API.
5
+ * Provides quoting and transaction building for cross-chain inventory rebalancing.
6
+ *
7
+ * Phase D changes vs Phase I:
8
+ * - FetchHttpClient now handles HTTP 429 (rate limit) and 401 (auth) errors gracefully
9
+ * - Added getTokens(chainId) for on-chain token discovery from Swing API
10
+ * - quote() validates real Swing API v0 response shape more strictly
11
+ */
12
+ import { BaseProtocol } from "../base-protocol";
13
+ // ---------------------------------------------------------------------------
14
+ // HTTP Client
15
+ // ---------------------------------------------------------------------------
16
+ export class SwingAuthError extends Error {
17
+ constructor(message) {
18
+ super(message);
19
+ this.name = "SwingAuthError";
20
+ }
21
+ }
22
+ export class SwingRateLimitError extends Error {
23
+ constructor(message) {
24
+ super(message);
25
+ this.name = "SwingRateLimitError";
26
+ }
27
+ }
28
+ /** Default Fetch-based HTTP Client with Phase D error handling */
29
+ export class FetchHttpClient {
30
+ maxRetries;
31
+ constructor(maxRetries = 1) {
32
+ this.maxRetries = maxRetries;
33
+ }
34
+ async handleResponse(res, retryFn, attempt) {
35
+ if (res.status === 401) {
36
+ throw new SwingAuthError("Swing API key is invalid or missing. Please ensure your SWING_API_KEY is properly set.");
37
+ }
38
+ if (res.status === 429) {
39
+ if (attempt <= this.maxRetries) {
40
+ const retryAfter = res.headers.get("Retry-After");
41
+ const waitMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 2000;
42
+ console.warn(`[Swing] Rate limited (429). Retrying after ${waitMs}ms...`);
43
+ await new Promise(resolve => setTimeout(resolve, waitMs));
44
+ return retryFn();
45
+ }
46
+ throw new SwingRateLimitError("Swing API rate limit exceeded after maximum retries.");
47
+ }
48
+ if (!res.ok) {
49
+ let body = "";
50
+ try {
51
+ body = await res.text();
52
+ }
53
+ catch (e) { }
54
+ throw new Error(`HTTP Request failed: ${res.status} ${res.statusText} - ${body}`);
55
+ }
56
+ return res.json();
57
+ }
58
+ async get(url, headers, attempt = 1) {
59
+ const res = await fetch(url, { method: "GET", headers });
60
+ return this.handleResponse(res, () => this.get(url, headers, attempt + 1), attempt);
61
+ }
62
+ async post(url, body, headers, attempt = 1) {
63
+ const res = await fetch(url, {
64
+ method: "POST",
65
+ headers: { "Content-Type": "application/json", ...headers },
66
+ body: JSON.stringify(body),
67
+ });
68
+ return this.handleResponse(res, () => this.post(url, body, headers, attempt + 1), attempt);
69
+ }
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // SwingProtocol
73
+ // ---------------------------------------------------------------------------
74
+ export class SwingProtocol extends BaseProtocol {
75
+ apiKey;
76
+ httpClient;
77
+ baseUrl;
78
+ name = "swing";
79
+ type = "bridge";
80
+ // Currently supported common chains (1 = ETH, 137 = Polygon, 42161 = Arbitrum)
81
+ supportedChains = [1, 137, 42161, 10, 8453];
82
+ constructor(apiKey, httpClient = new FetchHttpClient(), baseUrl = "https://swap.prod.swing.xyz/v0") {
83
+ super();
84
+ this.apiKey = apiKey;
85
+ this.httpClient = httpClient;
86
+ this.baseUrl = baseUrl;
87
+ }
88
+ get headers() {
89
+ return {
90
+ "Accept": "application/json",
91
+ "x-swing-api-key": this.apiKey,
92
+ };
93
+ }
94
+ // -------------------------------------------------------------------------
95
+ // getTokens (NEW — Phase D)
96
+ // -------------------------------------------------------------------------
97
+ /**
98
+ * Fetch the list of tokens supported by Swing for a given chain.
99
+ */
100
+ async getTokens(chainId) {
101
+ const url = `${this.baseUrl}/tokens?chain=${chainId}`;
102
+ try {
103
+ const data = await this.httpClient.get(url, this.headers);
104
+ // Note: Swing often returns an array directly, but sometimes it might be `{ tokens: [] }`
105
+ // Let's handle both dynamically
106
+ const items = Array.isArray(data) ? data : data.tokens;
107
+ if (!Array.isArray(items)) {
108
+ throw new Error(`Invalid response format from Swing tokens API for chain ${chainId}`);
109
+ }
110
+ return items.map((t) => ({
111
+ symbol: t.symbol,
112
+ address: t.address,
113
+ decimals: t.decimals,
114
+ name: t.name,
115
+ chainId: chainId,
116
+ }));
117
+ }
118
+ catch (error) {
119
+ if (error instanceof SwingAuthError || error instanceof SwingRateLimitError) {
120
+ throw error;
121
+ }
122
+ throw new Error(`Failed to fetch tokens for chain ${chainId}: ${error.message}`);
123
+ }
124
+ }
125
+ // -------------------------------------------------------------------------
126
+ // quote
127
+ // -------------------------------------------------------------------------
128
+ /**
129
+ * Get a cross-chain quote from Swing API.
130
+ */
131
+ async quote(params) {
132
+ const url = new URL(`${this.baseUrl}/transfer/quote`);
133
+ url.searchParams.append("fromChain", params.fromChain.toString());
134
+ url.searchParams.append("toChain", params.toChain.toString());
135
+ url.searchParams.append("fromToken", params.token);
136
+ url.searchParams.append("toToken", params.token);
137
+ url.searchParams.append("amount", params.amount.toString());
138
+ const data = await this.httpClient.get(url.toString(), this.headers);
139
+ // Validate response shape
140
+ if (!data.routes || data.routes.length === 0) {
141
+ throw new Error("No bridge routes found by Swing");
142
+ }
143
+ if (data.routes.length > 1) {
144
+ console.info(`[SwingProtocol] ${data.routes.length} routes available, using best route`);
145
+ }
146
+ const route = data.routes[0];
147
+ // Defensive: validate nested shape before accessing
148
+ if (!route?.quote?.integration) {
149
+ throw new Error("Swing API returned malformed route data (missing quote.integration)");
150
+ }
151
+ return {
152
+ inputAmount: params.amount,
153
+ outputAmount: BigInt(route.quote.integration.amountOut || "0"),
154
+ fee: BigInt(route.quote.integration.fee || "0"),
155
+ estimatedTimeMs: (route.quote.integration.estimatedTime || 0) * 1000,
156
+ priceImpact: route.quote.integration.priceImpact || 0,
157
+ protocolName: this.name,
158
+ };
159
+ }
160
+ // -------------------------------------------------------------------------
161
+ // buildTransaction
162
+ // -------------------------------------------------------------------------
163
+ /**
164
+ * Build the raw transaction (calldata) for the quoted route.
165
+ * Swing API typically returns the raw tx params we need to sign.
166
+ */
167
+ async buildTransaction(quote, params) {
168
+ const body = {
169
+ fromChain: params.fromChain.toString(),
170
+ toChain: params.toChain.toString(),
171
+ fromToken: params.token,
172
+ toToken: params.token,
173
+ amount: params.amount.toString(),
174
+ fromUserAddress: params.recipient || "0x", // Required by Swing to build calldata
175
+ toUserAddress: params.recipient || "0x",
176
+ route: [
177
+ {
178
+ bridge: quote.protocolName, // Mock logic, usually from quote ID
179
+ }
180
+ ]
181
+ };
182
+ const data = await this.httpClient.post(`${this.baseUrl}/transfer/send`, body, this.headers);
183
+ if (!data.tx) {
184
+ throw new Error("Swing API did not return transaction data");
185
+ }
186
+ return [
187
+ {
188
+ to: data.tx.to,
189
+ data: data.tx.data,
190
+ value: data.tx.value || "0",
191
+ chainId: params.fromChain,
192
+ gasLimit: data.tx.gas || "3000000",
193
+ }
194
+ ];
195
+ }
196
+ // -------------------------------------------------------------------------
197
+ // getTransferStatus
198
+ // -------------------------------------------------------------------------
199
+ /**
200
+ * Get the status of an ongoing bridge transfer.
201
+ */
202
+ async getTransferStatus(transferId) {
203
+ const data = await this.httpClient.get(`${this.baseUrl}/transfer/status/${transferId}`, this.headers);
204
+ const statusStr = data.status?.toLowerCase();
205
+ if (statusStr === "success" || statusStr === "done")
206
+ return "done";
207
+ if (statusStr === "failed" || statusStr === "error")
208
+ return "failed";
209
+ return "pending";
210
+ }
211
+ }
212
+ //# sourceMappingURL=swing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swing.js","sourceRoot":"","sources":["../../../../src/solver/protocols/aggregators/swing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Base Protocol — Phase I
3
+ *
4
+ * Abstract base class for all protocol integrations (Swing, Aave, etc.).
5
+ * Provides uniform interface for the Rebalancer and other modules
6
+ * to interact with heterogeneous protocols.
7
+ */
8
+ import type { Transaction } from "../types/execution";
9
+ export type ProtocolType = "bridge" | "lending" | "dex";
10
+ export interface ProtocolQuote {
11
+ inputAmount: bigint;
12
+ outputAmount: bigint;
13
+ fee: bigint;
14
+ estimatedTimeMs: number;
15
+ priceImpact?: number;
16
+ protocolName: string;
17
+ }
18
+ export interface QuoteParams {
19
+ fromChain: number;
20
+ toChain: number;
21
+ token: string;
22
+ amount: bigint;
23
+ recipient?: string;
24
+ }
25
+ export declare abstract class BaseProtocol {
26
+ abstract readonly name: string;
27
+ abstract readonly type: ProtocolType;
28
+ abstract readonly supportedChains: number[];
29
+ /**
30
+ * Check if the protocol supports a given chainId.
31
+ */
32
+ supports(chainId: number): boolean;
33
+ /**
34
+ * Get a price/route quote. Implementation depends on protocol type.
35
+ */
36
+ abstract quote(params: QuoteParams): Promise<ProtocolQuote>;
37
+ /**
38
+ * Build one or more transactions to execute the quoted action.
39
+ */
40
+ abstract buildTransaction(quote: ProtocolQuote, params: QuoteParams): Promise<Transaction[]>;
41
+ }
42
+ //# sourceMappingURL=base-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-protocol.d.ts","sourceRoot":"","sources":["../../../src/solver/protocols/base-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,8BAAsB,YAAY;IAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAC/F"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Base Protocol — Phase I
3
+ *
4
+ * Abstract base class for all protocol integrations (Swing, Aave, etc.).
5
+ * Provides uniform interface for the Rebalancer and other modules
6
+ * to interact with heterogeneous protocols.
7
+ */
8
+ export class BaseProtocol {
9
+ /**
10
+ * Check if the protocol supports a given chainId.
11
+ */
12
+ supports(chainId) {
13
+ return this.supportedChains.includes(chainId);
14
+ }
15
+ }
16
+ //# sourceMappingURL=base-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-protocol.js","sourceRoot":"","sources":["../../../src/solver/protocols/base-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,MAAM,OAAgB,YAAY;IAK9B;;OAEG;IACH,QAAQ,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;CAWJ"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Protocols Module — Phase I
3
+ *
4
+ * Exporting all protocol integrations and registry.
5
+ */
6
+ export * from "./base-protocol";
7
+ export * from "./protocol-registry";
8
+ export * from "./aggregators/swing";
9
+ export * from "./lending/aave";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solver/protocols/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Protocols Module — Phase I
3
+ *
4
+ * Exporting all protocol integrations and registry.
5
+ */
6
+ export * from "./base-protocol";
7
+ export * from "./protocol-registry";
8
+ export * from "./aggregators/swing";
9
+ export * from "./lending/aave";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solver/protocols/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Aave Protocol Integration — Phase I
3
+ *
4
+ * Lending protocol integration.
5
+ * Allows depositing idle inventory into Aave to earn APY, and withdrawing it
6
+ * when needed to fulfill intents.
7
+ */
8
+ import { BaseProtocol, type ProtocolType, type ProtocolQuote, type QuoteParams } from "../base-protocol";
9
+ import type { Transaction } from "../../types/execution";
10
+ import type { RPCProviderManager } from "../../../shared/rpc/provider-manager";
11
+ import type { Address } from "../../../types/common";
12
+ export declare class AaveProtocol extends BaseProtocol {
13
+ /** Used for on-chain getReserveData calls to fetch APY */
14
+ private readonly rpcProviderManager;
15
+ /** Map of chainId -> Aave Pool contract address */
16
+ private readonly poolAddress;
17
+ /** Map of chainId -> Aave PoolDataProvider contract address */
18
+ private readonly dataProviderAddress;
19
+ readonly name = "aave";
20
+ readonly type: ProtocolType;
21
+ readonly supportedChains: number[];
22
+ constructor(
23
+ /** Used for on-chain getReserveData calls to fetch APY */
24
+ rpcProviderManager: RPCProviderManager,
25
+ /** Map of chainId -> Aave Pool contract address */
26
+ poolAddress: Record<number, Address>,
27
+ /** Map of chainId -> Aave PoolDataProvider contract address */
28
+ dataProviderAddress: Record<number, Address>);
29
+ /**
30
+ * Check if chain is supported and configured.
31
+ */
32
+ supports(chainId: number): boolean;
33
+ /**
34
+ * Aave supply is 1:1, fee is just gas.
35
+ */
36
+ quote(params: QuoteParams): Promise<ProtocolQuote>;
37
+ /**
38
+ * Build supply transaction(s).
39
+ * Retrieves two transactions: ERC-20 Approve + Aave supply()
40
+ */
41
+ buildTransaction(quote: ProtocolQuote, params: QuoteParams): Promise<Transaction[]>;
42
+ /**
43
+ * Query the current APY for supplying a specific token on a chain.
44
+ */
45
+ getAPY(token: string, chainId: number): Promise<number>;
46
+ /**
47
+ * Helper to build a withdraw transaction.
48
+ */
49
+ buildWithdraw(token: string, amount: bigint, chainId: number, toAddress: string): Promise<Transaction>;
50
+ }
51
+ //# sourceMappingURL=aave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aave.d.ts","sourceRoot":"","sources":["../../../../src/solver/protocols/lending/aave.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA4BrD,qBAAa,YAAa,SAAQ,YAAY;IAMtC,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAVxC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;IACxC,QAAQ,CAAC,eAAe,WAAmB;;IAGvC,0DAA0D;IACzC,kBAAkB,EAAE,kBAAkB;IACvD,mDAAmD;IAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrD,+DAA+D;IAC9C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKjE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAWxD;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmCzF;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwD7D;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAkB/G"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Aave Protocol Integration — Phase I
3
+ *
4
+ * Lending protocol integration.
5
+ * Allows depositing idle inventory into Aave to earn APY, and withdrawing it
6
+ * when needed to fulfill intents.
7
+ */
8
+ import { BaseProtocol } from "../base-protocol";
9
+ import { decodeFunctionResult } from "viem";
10
+ const ERC20_APPROVE_SIG = "0x095ea7b3"; // approve(address,uint256)
11
+ const AAVE_SUPPLY_SIG = "0x617ba037"; // supply(address,uint256,address,uint16)
12
+ const AAVE_WITHDRAW_SIG = "0x69328dec"; // withdraw(address,uint256,address)
13
+ const AAVE_DATA_PROVIDER_ABI = [{
14
+ "inputs": [{ "internalType": "address", "name": "asset", "type": "address" }],
15
+ "name": "getReserveData",
16
+ "outputs": [
17
+ { "internalType": "uint256", "name": "unbacked", "type": "uint256" },
18
+ { "internalType": "uint256", "name": "accruedToTreasuryScaled", "type": "uint256" },
19
+ { "internalType": "uint256", "name": "totalAToken", "type": "uint256" },
20
+ { "internalType": "uint256", "name": "totalStableDebt", "type": "uint256" },
21
+ { "internalType": "uint256", "name": "totalVariableDebt", "type": "uint256" },
22
+ { "internalType": "uint256", "name": "liquidityRate", "type": "uint256" },
23
+ { "internalType": "uint256", "name": "variableBorrowRate", "type": "uint256" },
24
+ { "internalType": "uint256", "name": "stableBorrowRate", "type": "uint256" },
25
+ { "internalType": "uint256", "name": "averageStableBorrowRate", "type": "uint256" },
26
+ { "internalType": "uint256", "name": "liquidityIndex", "type": "uint256" },
27
+ { "internalType": "uint256", "name": "variableBorrowIndex", "type": "uint256" },
28
+ { "internalType": "uint40", "name": "lastUpdateTimestamp", "type": "uint40" }
29
+ ],
30
+ "stateMutability": "view",
31
+ "type": "function"
32
+ }];
33
+ export class AaveProtocol extends BaseProtocol {
34
+ rpcProviderManager;
35
+ poolAddress;
36
+ dataProviderAddress;
37
+ name = "aave";
38
+ type = "lending";
39
+ supportedChains = [1, 137, 42161]; // Aave v3 networks
40
+ constructor(
41
+ /** Used for on-chain getReserveData calls to fetch APY */
42
+ rpcProviderManager,
43
+ /** Map of chainId -> Aave Pool contract address */
44
+ poolAddress,
45
+ /** Map of chainId -> Aave PoolDataProvider contract address */
46
+ dataProviderAddress) {
47
+ super();
48
+ this.rpcProviderManager = rpcProviderManager;
49
+ this.poolAddress = poolAddress;
50
+ this.dataProviderAddress = dataProviderAddress;
51
+ }
52
+ /**
53
+ * Check if chain is supported and configured.
54
+ */
55
+ supports(chainId) {
56
+ return this.supportedChains.includes(chainId) && !!this.poolAddress[chainId] && !!this.dataProviderAddress[chainId];
57
+ }
58
+ /**
59
+ * Aave supply is 1:1, fee is just gas.
60
+ */
61
+ async quote(params) {
62
+ return {
63
+ inputAmount: params.amount,
64
+ outputAmount: params.amount,
65
+ fee: 0n, // Protocol fee is 0, user pays gas when executing Tx
66
+ estimatedTimeMs: 15_000,
67
+ priceImpact: 0,
68
+ protocolName: this.name,
69
+ };
70
+ }
71
+ /**
72
+ * Build supply transaction(s).
73
+ * Retrieves two transactions: ERC-20 Approve + Aave supply()
74
+ */
75
+ async buildTransaction(quote, params) {
76
+ const chainId = params.fromChain;
77
+ const pool = this.poolAddress[chainId];
78
+ if (!pool)
79
+ throw new Error(`Aave not configured for chain ${chainId}`);
80
+ // Mocking ABI encoding for simplicity. In prod use ethers.Interface
81
+ const paddedAmt = params.amount.toString(16).padStart(64, "0");
82
+ const paddedPool = pool.replace("0x", "").padStart(64, "0");
83
+ const approveData = `${ERC20_APPROVE_SIG}${paddedPool}${paddedAmt}`;
84
+ const paddedAsset = params.token.replace("0x", "").padStart(64, "0");
85
+ const paddedOnBehalfOf = (params.recipient || "0x0000000000000000000000000000000000000000").replace("0x", "").padStart(64, "0");
86
+ const paddedReferral = "0".padStart(64, "0");
87
+ const supplyData = `${AAVE_SUPPLY_SIG}${paddedAsset}${paddedAmt}${paddedOnBehalfOf}${paddedReferral}`;
88
+ return [
89
+ {
90
+ to: params.token, // Target the ERC20 contract
91
+ data: approveData,
92
+ value: "0",
93
+ chainId,
94
+ gasLimit: "50000",
95
+ },
96
+ {
97
+ to: pool, // Target the Aave Pool
98
+ data: supplyData,
99
+ value: "0",
100
+ chainId,
101
+ gasLimit: "250000",
102
+ }
103
+ ];
104
+ }
105
+ /**
106
+ * Query the current APY for supplying a specific token on a chain.
107
+ */
108
+ async getAPY(token, chainId) {
109
+ if (!this.supports(chainId)) {
110
+ throw new Error(`Aave not supported/configured for chain ${chainId}`);
111
+ }
112
+ const dataProvider = this.dataProviderAddress[chainId];
113
+ const provider = this.rpcProviderManager.getProvider(chainId);
114
+ // Function signature: getReserveData(address asset) -> 0x35ea6a75
115
+ const functionSelector = "0x35ea6a75";
116
+ const paddedToken = token.toLowerCase().replace("0x", "").padStart(64, "0");
117
+ const calldata = `${functionSelector}${paddedToken}`;
118
+ try {
119
+ const result = await provider.call(dataProvider, calldata);
120
+ if (!result || result === "0x") {
121
+ // Token has no reserve data on Aave for this chain
122
+ throw new Error("Empty response from Aave Data Provider — probably unsupported token");
123
+ }
124
+ // Decode the massive tuple using viem
125
+ const decoded = decodeFunctionResult({
126
+ abi: AAVE_DATA_PROVIDER_ABI,
127
+ functionName: "getReserveData",
128
+ data: result,
129
+ });
130
+ // decoded is an array (or object if named) of the tuple.
131
+ // the 6th element (index 5) is liquidityRate (APR in ray) as per ABI outputs.
132
+ const liquidityRateRay = BigInt(decoded[5]);
133
+ if (liquidityRateRay === 0n)
134
+ return 0; // No liquidity
135
+ // Convert liquidityRate (APR in ray) to APY
136
+ const RAY = 1e27;
137
+ const SECONDS_PER_YEAR = 31536000;
138
+ const depositAPR = Number(liquidityRateRay) / RAY;
139
+ // Compound interest formula: APY = (1 + APR / SECONDS_PER_YEAR) ^ SECONDS_PER_YEAR - 1
140
+ const apy = (Math.pow(1 + depositAPR / SECONDS_PER_YEAR, SECONDS_PER_YEAR) - 1) * 100;
141
+ return apy;
142
+ }
143
+ catch (error) {
144
+ if (error.message.includes("execution reverted")) {
145
+ // Aave PoolDataProvider reverts if the token is not an active reserve
146
+ return 0;
147
+ }
148
+ console.error(`[Aave] Failed to fetch APY for ${token} on chain ${chainId}:`, error.message);
149
+ throw new Error(`Failed to fetch APY from Aave: ${error.message}`);
150
+ }
151
+ }
152
+ /**
153
+ * Helper to build a withdraw transaction.
154
+ */
155
+ async buildWithdraw(token, amount, chainId, toAddress) {
156
+ const pool = this.poolAddress[chainId];
157
+ if (!pool)
158
+ throw new Error(`Aave not configured for chain ${chainId}`);
159
+ const paddedAsset = token.replace("0x", "").padStart(64, "0");
160
+ const paddedAmt = amount.toString(16).padStart(64, "0");
161
+ const paddedTo = toAddress.replace("0x", "").padStart(64, "0");
162
+ const withdrawData = `${AAVE_WITHDRAW_SIG}${paddedAsset}${paddedAmt}${paddedTo}`;
163
+ return {
164
+ to: pool,
165
+ data: withdrawData,
166
+ value: "0",
167
+ chainId,
168
+ gasLimit: "250000",
169
+ };
170
+ }
171
+ }
172
+ //# sourceMappingURL=aave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aave.js","sourceRoot":"","sources":["../../../../src/solver/protocols/lending/aave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Protocol Registry — Phase I
3
+ *
4
+ * Central registry for looking up available protocol integrations.
5
+ * Used by the Rebalancer to find the best available bridge for a given route.
6
+ */
7
+ import { BaseProtocol, type ProtocolType } from "./base-protocol";
8
+ export declare class ProtocolRegistry {
9
+ private protocols;
10
+ /**
11
+ * Register a new protocol instance.
12
+ */
13
+ register(protocol: BaseProtocol): void;
14
+ /**
15
+ * Get a protocol by its unique name.
16
+ */
17
+ get(name: string): BaseProtocol | undefined;
18
+ /**
19
+ * Get all registered protocols, optionally filtered by type.
20
+ */
21
+ getAll(type?: ProtocolType): BaseProtocol[];
22
+ /**
23
+ * Find the first bridge protocol that supports both the source and target chains.
24
+ * Uses registration order as implicit priority.
25
+ */
26
+ getBestBridge(fromChain: number, toChain: number): BaseProtocol | undefined;
27
+ }
28
+ //# sourceMappingURL=protocol-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-registry.d.ts","sourceRoot":"","sources":["../../../src/solver/protocols/protocol-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAElE,qBAAa,gBAAgB;IACzB,OAAO,CAAC,SAAS,CAAwC;IAEzD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE;IAQ3C;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAI9E"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Protocol Registry — Phase I
3
+ *
4
+ * Central registry for looking up available protocol integrations.
5
+ * Used by the Rebalancer to find the best available bridge for a given route.
6
+ */
7
+ export class ProtocolRegistry {
8
+ protocols = new Map();
9
+ /**
10
+ * Register a new protocol instance.
11
+ */
12
+ register(protocol) {
13
+ this.protocols.set(protocol.name, protocol);
14
+ }
15
+ /**
16
+ * Get a protocol by its unique name.
17
+ */
18
+ get(name) {
19
+ return this.protocols.get(name);
20
+ }
21
+ /**
22
+ * Get all registered protocols, optionally filtered by type.
23
+ */
24
+ getAll(type) {
25
+ const all = Array.from(this.protocols.values());
26
+ if (type) {
27
+ return all.filter((p) => p.type === type);
28
+ }
29
+ return all;
30
+ }
31
+ /**
32
+ * Find the first bridge protocol that supports both the source and target chains.
33
+ * Uses registration order as implicit priority.
34
+ */
35
+ getBestBridge(fromChain, toChain) {
36
+ const bridges = this.getAll("bridge");
37
+ return bridges.find((b) => b.supports(fromChain) && b.supports(toChain));
38
+ }
39
+ }
40
+ //# sourceMappingURL=protocol-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-registry.js","sourceRoot":"","sources":["../../../src/solver/protocols/protocol-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,OAAO,gBAAgB;IACjB,SAAS,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEzD;;OAEG;IACH,QAAQ,CAAC,QAAsB;QAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAmB;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,SAAiB,EAAE,OAAe;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;CACJ"}
@@ -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.d.ts.map