@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,293 @@
1
+ import { IntentClassifier } from "./classifiers/intent-classifier";
2
+ import { AmountExtractor } from "./extractors/amount";
3
+ import { TokenExtractor } from "./extractors/token";
4
+ import { ActionExtractor } from "./extractors/action";
5
+ import { ConstraintExtractor } from "./extractors/constraints";
6
+ import { TemplateRegistry } from "./template/index";
7
+ import { normalizeText } from "./utils/normalize";
8
+ import { mergeEntities, calculateConfidence, } from "./utils/parser-helpers";
9
+ import { validateIntent } from "./validators/schema";
10
+ import { TokenResolver } from "../services/token-resolver";
11
+ /**
12
+ * Main Intent Parser Class
13
+ *
14
+ * Example usage:
15
+ * ```typescript
16
+ * const parser = new IntentParser();
17
+ * const result = parser.parse("Swap 1000 USDC to ETH with max 1% slippage");
18
+ * ```
19
+ */
20
+ export class IntentParser {
21
+ classifier;
22
+ amountExtractor;
23
+ tokenExtractor;
24
+ actionExtractor;
25
+ constraintExtractor;
26
+ templates;
27
+ config;
28
+ // TODO [Phase 3]: Token resolver instance for resolving symbol → address
29
+ tokenResolver;
30
+ constructor(config = {}) {
31
+ // Initialize with default config
32
+ this.config = {
33
+ defaultDeadlineOffset: 3600,
34
+ knownTokens: {},
35
+ knownProtocols: [],
36
+ enableFuzzyMatching: false,
37
+ enableCache: false,
38
+ minConfidence: 0.5,
39
+ tokenResolver: { enabled: false, cacheTTL: 300_000, timeout: 5000, maxCacheSize: 1000 },
40
+ ...config,
41
+ };
42
+ // Initialize components
43
+ this.classifier = new IntentClassifier();
44
+ this.amountExtractor = new AmountExtractor();
45
+ this.tokenExtractor = new TokenExtractor(this.config.knownTokens);
46
+ this.actionExtractor = new ActionExtractor();
47
+ this.constraintExtractor = new ConstraintExtractor();
48
+ this.templates = new TemplateRegistry();
49
+ // Initialize TokenResolver if config.tokenResolver is provided and enabled
50
+ if (this.config.tokenResolver?.enabled) {
51
+ this.tokenResolver = new TokenResolver(this.config.tokenResolver);
52
+ }
53
+ else {
54
+ this.tokenResolver = null;
55
+ }
56
+ }
57
+ /**
58
+ * Parse natural language text into structured intent
59
+ *
60
+ * INPUT: Natural language string
61
+ * OUTPUT: ParseResult with StructuredIntent or error
62
+ *
63
+ * TODO:
64
+ * 1. Normalize input text
65
+ * 2. Classify intent type
66
+ * 3. Extract entities (amounts, tokens, actions, constraints)
67
+ * 4. Map entities to appropriate template
68
+ * 5. Validate result
69
+ * 6. Return structured intent
70
+ */
71
+ parse(text) {
72
+ try {
73
+ // Step 1: Normalize text
74
+ const normalizedText = normalizeText(text);
75
+ // Step 2: Classify intent type
76
+ const intentType = this.classifier.classify(normalizedText);
77
+ // Step 3: Extract entities
78
+ const amounts = this.amountExtractor.extract(normalizedText);
79
+ const tokens = this.tokenExtractor.extract(normalizedText);
80
+ const actions = this.actionExtractor.extract(normalizedText);
81
+ const constraints = this.constraintExtractor.extract(normalizedText);
82
+ // Step 4: Get appropriate template
83
+ const template = this.templates.get(intentType);
84
+ if (!template) {
85
+ return {
86
+ success: false,
87
+ error: `No template found for intent type: ${intentType}`,
88
+ };
89
+ }
90
+ // Step 5: Build structured intent
91
+ const structuredIntent = this.buildIntent(intentType, { amounts, tokens, actions, constraints }, template, text);
92
+ // Step 6: Validate
93
+ const validation = validateIntent(structuredIntent);
94
+ if (!validation.success) {
95
+ return {
96
+ success: false,
97
+ error: validation.error,
98
+ };
99
+ }
100
+ return {
101
+ success: true,
102
+ data: structuredIntent,
103
+ };
104
+ }
105
+ catch (error) {
106
+ return {
107
+ success: false,
108
+ error: error instanceof Error ? error.message : "Unknown error",
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * Build structured intent from extracted entities and template
114
+ *
115
+ * INPUT:
116
+ * - intentType: Classified intent type
117
+ * - entities: All extracted entities
118
+ * - template: Intent template
119
+ * - originalText: Original user input
120
+ *
121
+ * OUTPUT: StructuredIntent
122
+ *
123
+ * TODO:
124
+ * 1. Map entities to parameters based on template
125
+ * 2. Fill in default values for missing fields
126
+ * 3. Build constraints
127
+ * 4. Calculate confidence score
128
+ * 5. Add metadata
129
+ */
130
+ buildIntent(intentType, entities, template, originalText) {
131
+ // 1. Merge entities into parameters
132
+ const extractedParams = mergeEntities(entities, intentType, originalText);
133
+ // 2. Apply template defaults
134
+ const parameters = {
135
+ ...template.defaults,
136
+ ...extractedParams,
137
+ };
138
+ // 3. Build constraints
139
+ const constraints = {
140
+ ...template.defaultConstraints,
141
+ // Template defaults set deadline=0 as placeholder — always compute actual deadline
142
+ deadline: Date.now() + this.config.defaultDeadlineOffset * 1000,
143
+ };
144
+ // Add extracted constraints
145
+ if (entities.constraints) {
146
+ entities.constraints.forEach((c) => {
147
+ if (c.type === "slippage") {
148
+ constraints.maxSlippage = c.value;
149
+ }
150
+ // TODO: Map other constraints
151
+ });
152
+ }
153
+ // Note: Token address resolution is handled in parseAsync / resolveTokenAddresses
154
+ // to keep buildIntent synchronous for backward compatibility.
155
+ // 4. Calculate confidence score
156
+ const confidence = calculateConfidence(parameters, template);
157
+ // 5. Add metadata
158
+ return {
159
+ intentType: intentType,
160
+ parameters,
161
+ constraints,
162
+ metadata: {
163
+ originalText,
164
+ confidence,
165
+ parsedAt: Date.now(),
166
+ warnings: [], // TODO: Add warnings based on validation/confidence
167
+ },
168
+ };
169
+ }
170
+ /**
171
+ * Async parse — sama seperti parse() tapi dengan token address resolution
172
+ *
173
+ * INPUT: Natural language string
174
+ * OUTPUT: Promise<ParseResult> (dengan inputTokenAddress/outputTokenAddress terisi)
175
+ *
176
+ * KAPAN PAKAI:
177
+ * - Gunakan parseAsync() jika tokenResolver.enabled = true
178
+ * - Gunakan parse() jika tidak butuh token address (tetap sync, backward compatible)
179
+ *
180
+ * BREAKING CHANGE MITIGATION:
181
+ * - parse() TETAP sync → tidak ada breaking change
182
+ * - parseAsync() BARU → consumer opt-in ke async behavior
183
+ *
184
+ * TODO [Phase 3]: Implement parseAsync
185
+ *
186
+ * FLOW:
187
+ * 1. Jalankan semua langkah sama seperti parse()
188
+ * 2. Setelah buildIntent, call resolveTokenAddresses()
189
+ * 3. Recalculate confidence (bonus jika address ditemukan)
190
+ * 4. Return ParseResult
191
+ *
192
+ * CONTOH:
193
+ * const result = await parser.parseAsync("swap 10 USDC to ETH");
194
+ * result.data?.parameters.inputTokenAddress // "0xA0b8..."
195
+ */
196
+ async parseAsync(text) {
197
+ // Step 1: Jalankan parse() biasa (sync) untuk dapatkan base intent
198
+ const result = this.parse(text);
199
+ if (!result.success || !result.data)
200
+ return result;
201
+ // Step 2: Jika tokenResolver aktif → resolve addresses
202
+ if (this.tokenResolver) {
203
+ await this.resolveTokenAddresses(result.data);
204
+ // Step 3: Recalculate confidence — addresses may now be resolved,
205
+ // which triggers address bonuses in calculateConfidence
206
+ const template = this.templates.get(result.data.intentType);
207
+ if (template) {
208
+ result.data.metadata.confidence = calculateConfidence(result.data.parameters, template);
209
+ }
210
+ }
211
+ // Step 4: Return enriched result
212
+ return result;
213
+ }
214
+ /**
215
+ * Resolve token addresses in a StructuredIntent
216
+ *
217
+ * INPUT: StructuredIntent (akan di-mutate — address fields diisi)
218
+ * OUTPUT: void (mutates intent.parameters in-place)
219
+ *
220
+ * LOGIC:
221
+ * 1. Determine chain dari intent.parameters.sourceChain atau "ethereum"
222
+ * 2. Resolve inputToken jika ada
223
+ * 3. Resolve outputToken jika ada (gunakan targetChain untuk bridge)
224
+ * 4. Tambahkan warning ke metadata jika resolve gagal
225
+ *
226
+ * CONTOH:
227
+ * intent.parameters = { inputToken: "USDC", sourceChain: "Polygon" }
228
+ * → setelah resolve: { inputToken: "USDC", inputTokenAddress: "0x3c49...", sourceChain: "Polygon" }
229
+ *
230
+ * TODO [Phase 3]: Implement resolveTokenAddresses
231
+ */
232
+ async resolveTokenAddresses(intent) {
233
+ if (!this.tokenResolver)
234
+ return;
235
+ // Default chain to ethereum if not specified
236
+ // Normalization should handle casing, but we ensure lowercase here for cache/API consistency
237
+ const chain = (intent.parameters.sourceChain || "ethereum").toLowerCase();
238
+ const warnings = intent.metadata.warnings || [];
239
+ // Resolve inputToken
240
+ if (intent.parameters.inputToken) {
241
+ const resolved = await this.tokenResolver.resolve(intent.parameters.inputToken, chain);
242
+ if (resolved) {
243
+ intent.parameters.inputTokenAddress = resolved.address;
244
+ }
245
+ else {
246
+ warnings.push(`Could not resolve address for ${intent.parameters.inputToken} on ${chain}`);
247
+ }
248
+ }
249
+ // Resolve outputToken
250
+ // If it's a bridge, targetChain might be different.
251
+ // If not bridge, it's usually on the same chain (swap)
252
+ if (intent.parameters.outputToken) {
253
+ const outputChain = (intent.parameters.targetChain || chain).toLowerCase();
254
+ const resolved = await this.tokenResolver.resolve(intent.parameters.outputToken, outputChain);
255
+ if (resolved) {
256
+ intent.parameters.outputTokenAddress = resolved.address;
257
+ }
258
+ else {
259
+ warnings.push(`Could not resolve address for ${intent.parameters.outputToken} on ${outputChain}`);
260
+ }
261
+ }
262
+ intent.metadata.warnings = warnings;
263
+ }
264
+ /**
265
+ * Batch parse multiple intents (sync — tanpa token resolution)
266
+ *
267
+ * INPUT: Array of natural language strings
268
+ * OUTPUT: Array of ParseResult
269
+ */
270
+ parseBatch(texts) {
271
+ return texts.map((text) => this.parse(text));
272
+ }
273
+ /**
274
+ * Batch parse multiple intents (async — dengan token resolution)
275
+ *
276
+ * INPUT: Array of natural language strings
277
+ * OUTPUT: Promise<ParseResult[]>
278
+ *
279
+ * TODO [Phase 3]: Implement async batch parsing
280
+ *
281
+ * LOGIC:
282
+ * - Gunakan Promise.all() untuk parallel parsing
283
+ * - Setiap text di-parse via parseAsync()
284
+ * - Return array of results
285
+ */
286
+ async parseBatchAsync(texts) {
287
+ return Promise.all(texts.map((text) => this.parseAsync(text)));
288
+ }
289
+ }
290
+ // Export everything
291
+ export * from "../types";
292
+ export { IntentParser as default };
293
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { IntentTemplate } from "../../types";
2
+ /**
3
+ * Bridge Intent Template
4
+ *
5
+ * Handles cross-chain token bridging between different blockchains.
6
+ *
7
+ * USE CASES:
8
+ * - "Bridge 100 USDC from Ethereum to Polygon"
9
+ * - "Move 0.5 ETH to Arbitrum"
10
+ * - "Cross-chain transfer 1000 DAI from mainnet to Optimism"
11
+ *
12
+ * REQUIRED FIELDS:
13
+ * - inputToken: The token to bridge (e.g., "USDC", "ETH")
14
+ * - inputAmount: How much to bridge (e.g., "100", "0.5")
15
+ * - sourceChain: Origin chain (e.g., "Ethereum", "Polygon")
16
+ * - targetChain: Destination chain (e.g., "Arbitrum", "Optimism")
17
+ *
18
+ * OPTIONAL FIELDS:
19
+ * - outputToken: Target token if different from input (e.g., bridge USDC, receive USDC.e)
20
+ * - maxSlippage: Maximum acceptable slippage in basis points (100 = 1%)
21
+ *
22
+ * DEFAULT CONSTRAINTS:
23
+ * - deadline: 0 (will be set dynamically)
24
+ * - maxSlippage: 100 (1%)
25
+ *
26
+ * KNOWN CHAINS (for reference):
27
+ * - "Ethereum" / "mainnet"
28
+ * - "Polygon"
29
+ * - "Arbitrum"
30
+ * - "Optimism"
31
+ * - "Base"
32
+ * - "Avalanche"
33
+ * - "BSC" / "BNB Chain"
34
+ * - "Solana"
35
+ */
36
+ export declare const bridgeTemplate: IntentTemplate;
37
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/parser/template/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,cAAc,EAAE,cAkD5B,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Bridge Intent Template
3
+ *
4
+ * Handles cross-chain token bridging between different blockchains.
5
+ *
6
+ * USE CASES:
7
+ * - "Bridge 100 USDC from Ethereum to Polygon"
8
+ * - "Move 0.5 ETH to Arbitrum"
9
+ * - "Cross-chain transfer 1000 DAI from mainnet to Optimism"
10
+ *
11
+ * REQUIRED FIELDS:
12
+ * - inputToken: The token to bridge (e.g., "USDC", "ETH")
13
+ * - inputAmount: How much to bridge (e.g., "100", "0.5")
14
+ * - sourceChain: Origin chain (e.g., "Ethereum", "Polygon")
15
+ * - targetChain: Destination chain (e.g., "Arbitrum", "Optimism")
16
+ *
17
+ * OPTIONAL FIELDS:
18
+ * - outputToken: Target token if different from input (e.g., bridge USDC, receive USDC.e)
19
+ * - maxSlippage: Maximum acceptable slippage in basis points (100 = 1%)
20
+ *
21
+ * DEFAULT CONSTRAINTS:
22
+ * - deadline: 0 (will be set dynamically)
23
+ * - maxSlippage: 100 (1%)
24
+ *
25
+ * KNOWN CHAINS (for reference):
26
+ * - "Ethereum" / "mainnet"
27
+ * - "Polygon"
28
+ * - "Arbitrum"
29
+ * - "Optimism"
30
+ * - "Base"
31
+ * - "Avalanche"
32
+ * - "BSC" / "BNB Chain"
33
+ * - "Solana"
34
+ */
35
+ export const bridgeTemplate = {
36
+ type: "bridge",
37
+ requiredFields: ["inputToken", "inputAmount", "sourceChain", "targetChain"],
38
+ optionalFields: ["outputToken", "maxSlippage"],
39
+ defaults: {
40
+ maxSlippage: 100, // 1%
41
+ outputToken: undefined,
42
+ },
43
+ defaultConstraints: {
44
+ deadline: 0,
45
+ maxSlippage: 100,
46
+ },
47
+ /**
48
+ * Validate bridge parameters
49
+ *
50
+ * INPUT: IntentParameters object
51
+ * OUTPUT: boolean — true if valid
52
+ *
53
+ * VALIDATION RULES:
54
+ * - inputToken must be present
55
+ * - inputAmount must be present and > 0
56
+ * - sourceChain must be present
57
+ * - targetChain must be present
58
+ * - sourceChain and targetChain must be different
59
+ */
60
+ validate: (params) => {
61
+ // 1. Check inputToken is present
62
+ if (!params.inputToken)
63
+ return false;
64
+ // 2. Check inputAmount is present and not "0"
65
+ if (!params.inputAmount || params.inputAmount === "0")
66
+ return false;
67
+ // 3. Check sourceChain is present
68
+ if (!params.sourceChain)
69
+ return false;
70
+ // 4. Check targetChain is present
71
+ if (!params.targetChain)
72
+ return false;
73
+ // 5. Verify sourceChain !== targetChain
74
+ if (params.sourceChain.toLowerCase() === params.targetChain.toLowerCase()) {
75
+ return false;
76
+ }
77
+ return true;
78
+ },
79
+ };
80
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/parser/template/bridge.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC1C,IAAI,EAAE,QAAQ;IAEd,cAAc,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;IAE3E,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;IAE9C,QAAQ,EAAE;QACN,WAAW,EAAE,GAAG,EAAE,KAAK;QACvB,WAAW,EAAE,SAAS;KACzB;IAED,kBAAkB,EAAE;QAChB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,GAAG;KACnB;IAED;;;;;;;;;;;;OAYG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,iCAAiC;QACjC,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAErC,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QAEpE,kCAAkC;QAClC,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAEtC,kCAAkC;QAClC,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAEtC,wCAAwC;QACxC,IAAI,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { IntentTemplate } from "../../types";
2
+ /**
3
+ * Claim Intent Template
4
+ *
5
+ * Handles claiming rewards, airdrops, and vested tokens.
6
+ *
7
+ * USE CASES:
8
+ * - "Claim my AERO airdrop"
9
+ * - "Claim staking rewards from ETH"
10
+ * - "Claim 500 vested ARB tokens"
11
+ * - "Collect my UNI rewards"
12
+ * - "Withdraw vested EIGEN tokens"
13
+ */
14
+ export declare const claimTemplate: IntentTemplate;
15
+ //# sourceMappingURL=claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../../src/parser/template/claim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,cA4B3B,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Claim Intent Template
3
+ *
4
+ * Handles claiming rewards, airdrops, and vested tokens.
5
+ *
6
+ * USE CASES:
7
+ * - "Claim my AERO airdrop"
8
+ * - "Claim staking rewards from ETH"
9
+ * - "Claim 500 vested ARB tokens"
10
+ * - "Collect my UNI rewards"
11
+ * - "Withdraw vested EIGEN tokens"
12
+ */
13
+ export const claimTemplate = {
14
+ type: "claim",
15
+ // Only the token being claimed is strictly required —
16
+ // amount and protocol can often be inferred on-chain
17
+ requiredFields: ["inputToken"],
18
+ optionalFields: ["inputAmount", "claimType", "protocol"],
19
+ defaults: {
20
+ claimType: "rewards",
21
+ },
22
+ defaultConstraints: {
23
+ deadline: 0, // Will be set dynamically by parser
24
+ },
25
+ validate: (params) => {
26
+ if (!params.inputToken)
27
+ return false;
28
+ // claimType must be one of the known types if provided
29
+ if (params.claimType &&
30
+ !["airdrop", "rewards", "vesting"].includes(params.claimType)) {
31
+ return false;
32
+ }
33
+ return true;
34
+ },
35
+ };
36
+ //# sourceMappingURL=claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../src/parser/template/claim.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAAmB;IACzC,IAAI,EAAE,OAAO;IAEb,sDAAsD;IACtD,qDAAqD;IACrD,cAAc,EAAE,CAAC,YAAY,CAAC;IAE9B,cAAc,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC;IAExD,QAAQ,EAAE;QACN,SAAS,EAAE,SAAS;KACvB;IAED,kBAAkB,EAAE;QAChB,QAAQ,EAAE,CAAC,EAAE,oCAAoC;KACpD;IAED,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACrC,uDAAuD;QACvD,IACI,MAAM,CAAC,SAAS;YAChB,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAC/D,CAAC;YACC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { IntentTemplate, IntentType } from "../../types";
2
+ /**
3
+ * Template Registry
4
+ * Central registry for all intent templates
5
+ */
6
+ export declare class TemplateRegistry {
7
+ private templates;
8
+ constructor();
9
+ /**
10
+ * Get template by intent type
11
+ *
12
+ * INPUT: IntentType
13
+ * OUTPUT: IntentTemplate | undefined
14
+ */
15
+ get(intentType: IntentType): IntentTemplate | undefined;
16
+ /**
17
+ * Register custom template
18
+ *
19
+ * INPUT: IntentTemplate
20
+ * OUTPUT: void
21
+ */
22
+ register(template: IntentTemplate): void;
23
+ /**
24
+ * Check if template exists
25
+ */
26
+ has(intentType: IntentType): boolean;
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parser/template/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAS9D;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAkC;;IAcnD;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS;IAIvD;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIxC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;CAGrC"}
@@ -0,0 +1,50 @@
1
+ import { swapTemplate } from "./swap";
2
+ import { yieldTemplate } from "./yield";
3
+ import { nftTemplate } from "./nft";
4
+ import { sendTemplate } from "./send";
5
+ import { bridgeTemplate } from "./bridge";
6
+ import { claimTemplate } from "./claim";
7
+ import { unknownTemplate } from "./unknown";
8
+ /**
9
+ * Template Registry
10
+ * Central registry for all intent templates
11
+ */
12
+ export class TemplateRegistry {
13
+ templates;
14
+ constructor() {
15
+ this.templates = new Map([
16
+ ["swap", swapTemplate],
17
+ ["yield_strategy", yieldTemplate],
18
+ ["nft_purchase", nftTemplate],
19
+ ["send", sendTemplate],
20
+ ["bridge", bridgeTemplate],
21
+ ["claim", claimTemplate],
22
+ ["unknown", unknownTemplate],
23
+ ]);
24
+ }
25
+ /**
26
+ * Get template by intent type
27
+ *
28
+ * INPUT: IntentType
29
+ * OUTPUT: IntentTemplate | undefined
30
+ */
31
+ get(intentType) {
32
+ return this.templates.get(intentType);
33
+ }
34
+ /**
35
+ * Register custom template
36
+ *
37
+ * INPUT: IntentTemplate
38
+ * OUTPUT: void
39
+ */
40
+ register(template) {
41
+ this.templates.set(template.type, template);
42
+ }
43
+ /**
44
+ * Check if template exists
45
+ */
46
+ has(intentType) {
47
+ return this.templates.has(intentType);
48
+ }
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parser/template/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAkC;IAEnD;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC;YACvB,CAAC,MAAM,EAAE,YAAY,CAAC;YACtB,CAAC,gBAAgB,EAAE,aAAa,CAAC;YACjC,CAAC,cAAc,EAAE,WAAW,CAAC;YAC7B,CAAC,MAAM,EAAE,YAAY,CAAC;YACtB,CAAC,QAAQ,EAAE,cAAc,CAAC;YAC1B,CAAC,OAAO,EAAE,aAAa,CAAC;YACxB,CAAC,SAAS,EAAE,eAAe,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,UAAsB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,QAAwB;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,UAAsB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { IntentTemplate } from "../../types";
2
+ export declare const nftTemplate: IntentTemplate;
3
+ //# sourceMappingURL=nft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../../src/parser/template/nft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,WAAW,EAAE,cAqBzB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const nftTemplate = {
2
+ type: "nft_purchase",
3
+ requiredFields: ["collection"],
4
+ optionalFields: ["traits", "maxPrice", "recipient"],
5
+ defaults: {
6
+ traits: {},
7
+ recipient: undefined,
8
+ },
9
+ defaultConstraints: {
10
+ deadline: 0,
11
+ preferredMarketplaces: ["opensea", "blur"],
12
+ },
13
+ validate: (params) => {
14
+ if (!params.collection)
15
+ return false;
16
+ return true;
17
+ },
18
+ };
19
+ //# sourceMappingURL=nft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/parser/template/nft.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,IAAI,EAAE,cAAc;IAEpB,cAAc,EAAE,CAAC,YAAY,CAAC;IAE9B,cAAc,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC;IAEnD,QAAQ,EAAE;QACR,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,SAAS;KACrB;IAED,kBAAkB,EAAE;QAClB,QAAQ,EAAE,CAAC;QACX,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KAC3C;IAED,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;QACnB,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { IntentTemplate } from "../../types";
2
+ /**
3
+ * Send Intent Template
4
+ *
5
+ * Handles sending/transferring tokens to a recipient address.
6
+ *
7
+ * USE CASES:
8
+ * - "Send 0.5 ETH to 0x1234..."
9
+ * - "Transfer 100 USDC to vitalik.eth"
10
+ * - "Pay 50 DAI to 0xabcd..."
11
+ *
12
+ * REQUIRED FIELDS:
13
+ * - inputToken: The token to send (e.g., "ETH", "USDC")
14
+ * - inputAmount: How much to send (e.g., "0.5", "100")
15
+ * - recipient: Destination address or ENS name (e.g., "0x1234...", "vitalik.eth")
16
+ *
17
+ * OPTIONAL FIELDS:
18
+ * - maxGasCost: Maximum gas the user is willing to pay (e.g., "0.01")
19
+ *
20
+ * DEFAULT CONSTRAINTS:
21
+ * - deadline: 0 (will be set dynamically by parser using config.defaultDeadlineOffset)
22
+ */
23
+ export declare const sendTemplate: IntentTemplate;
24
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/parser/template/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,YAAY,EAAE,cA4C1B,CAAC"}