@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.
- package/LICENSE +21 -0
- package/README.md +258 -0
- package/dist/config/chains.d.ts +25 -0
- package/dist/config/chains.d.ts.map +1 -0
- package/dist/config/chains.js +85 -0
- package/dist/config/chains.js.map +1 -0
- package/dist/config/default.d.ts +39 -0
- package/dist/config/default.d.ts.map +1 -0
- package/dist/config/default.js +46 -0
- package/dist/config/default.js.map +1 -0
- package/dist/config/testnets.d.ts +31 -0
- package/dist/config/testnets.d.ts.map +1 -0
- package/dist/config/testnets.js +99 -0
- package/dist/config/testnets.js.map +1 -0
- package/dist/errors/inventory-errors.d.ts +31 -0
- package/dist/errors/inventory-errors.d.ts.map +1 -0
- package/dist/errors/inventory-errors.js +45 -0
- package/dist/errors/inventory-errors.js.map +1 -0
- package/dist/errors/settlement-errors.d.ts +27 -0
- package/dist/errors/settlement-errors.d.ts.map +1 -0
- package/dist/errors/settlement-errors.js +39 -0
- package/dist/errors/settlement-errors.js.map +1 -0
- package/dist/errors/solver-errors.d.ts +45 -0
- package/dist/errors/solver-errors.d.ts.map +1 -0
- package/dist/errors/solver-errors.js +66 -0
- package/dist/errors/solver-errors.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/classifiers/intent-classifier.d.ts +40 -0
- package/dist/parser/classifiers/intent-classifier.d.ts.map +1 -0
- package/dist/parser/classifiers/intent-classifier.js +72 -0
- package/dist/parser/classifiers/intent-classifier.js.map +1 -0
- package/dist/parser/extractors/action.d.ts +32 -0
- package/dist/parser/extractors/action.d.ts.map +1 -0
- package/dist/parser/extractors/action.js +72 -0
- package/dist/parser/extractors/action.js.map +1 -0
- package/dist/parser/extractors/amount.d.ts +39 -0
- package/dist/parser/extractors/amount.d.ts.map +1 -0
- package/dist/parser/extractors/amount.js +113 -0
- package/dist/parser/extractors/amount.js.map +1 -0
- package/dist/parser/extractors/constraints.d.ts +37 -0
- package/dist/parser/extractors/constraints.d.ts.map +1 -0
- package/dist/parser/extractors/constraints.js +119 -0
- package/dist/parser/extractors/constraints.js.map +1 -0
- package/dist/parser/extractors/index.d.ts +5 -0
- package/dist/parser/extractors/index.d.ts.map +1 -0
- package/dist/parser/extractors/index.js +5 -0
- package/dist/parser/extractors/index.js.map +1 -0
- package/dist/parser/extractors/token.d.ts +24 -0
- package/dist/parser/extractors/token.d.ts.map +1 -0
- package/dist/parser/extractors/token.js +124 -0
- package/dist/parser/extractors/token.js.map +1 -0
- package/dist/parser/index.d.ts +125 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +293 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/template/bridge.d.ts +37 -0
- package/dist/parser/template/bridge.d.ts.map +1 -0
- package/dist/parser/template/bridge.js +80 -0
- package/dist/parser/template/bridge.js.map +1 -0
- package/dist/parser/template/claim.d.ts +15 -0
- package/dist/parser/template/claim.d.ts.map +1 -0
- package/dist/parser/template/claim.js +36 -0
- package/dist/parser/template/claim.js.map +1 -0
- package/dist/parser/template/index.d.ts +28 -0
- package/dist/parser/template/index.d.ts.map +1 -0
- package/dist/parser/template/index.js +50 -0
- package/dist/parser/template/index.js.map +1 -0
- package/dist/parser/template/nft.d.ts +3 -0
- package/dist/parser/template/nft.d.ts.map +1 -0
- package/dist/parser/template/nft.js +19 -0
- package/dist/parser/template/nft.js.map +1 -0
- package/dist/parser/template/send.d.ts +24 -0
- package/dist/parser/template/send.d.ts.map +1 -0
- package/dist/parser/template/send.js +61 -0
- package/dist/parser/template/send.js.map +1 -0
- package/dist/parser/template/swap.d.ts +3 -0
- package/dist/parser/template/swap.d.ts.map +1 -0
- package/dist/parser/template/swap.js +21 -0
- package/dist/parser/template/swap.js.map +1 -0
- package/dist/parser/template/unknown.d.ts +3 -0
- package/dist/parser/template/unknown.d.ts.map +1 -0
- package/dist/parser/template/unknown.js +11 -0
- package/dist/parser/template/unknown.js.map +1 -0
- package/dist/parser/template/yield.d.ts +3 -0
- package/dist/parser/template/yield.d.ts.map +1 -0
- package/dist/parser/template/yield.js +25 -0
- package/dist/parser/template/yield.js.map +1 -0
- package/dist/parser/utils/normalize.d.ts +41 -0
- package/dist/parser/utils/normalize.d.ts.map +1 -0
- package/dist/parser/utils/normalize.js +71 -0
- package/dist/parser/utils/normalize.js.map +1 -0
- package/dist/parser/utils/parser-helpers.d.ts +20 -0
- package/dist/parser/utils/parser-helpers.d.ts.map +1 -0
- package/dist/parser/utils/parser-helpers.js +282 -0
- package/dist/parser/utils/parser-helpers.js.map +1 -0
- package/dist/parser/validators/schema.d.ts +14 -0
- package/dist/parser/validators/schema.d.ts.map +1 -0
- package/dist/parser/validators/schema.js +81 -0
- package/dist/parser/validators/schema.js.map +1 -0
- package/dist/sdk-factory.d.ts +55 -0
- package/dist/sdk-factory.d.ts.map +1 -0
- package/dist/sdk-factory.js +49 -0
- package/dist/sdk-factory.js.map +1 -0
- package/dist/services/token-resolver.d.ts +142 -0
- package/dist/services/token-resolver.d.ts.map +1 -0
- package/dist/services/token-resolver.js +254 -0
- package/dist/services/token-resolver.js.map +1 -0
- package/dist/shared/chain-registry/chain-names.d.ts +22 -0
- package/dist/shared/chain-registry/chain-names.d.ts.map +1 -0
- package/dist/shared/chain-registry/chain-names.js +49 -0
- package/dist/shared/chain-registry/chain-names.js.map +1 -0
- package/dist/shared/chain-registry/configs/arbitrum-sepolia.d.ts +9 -0
- package/dist/shared/chain-registry/configs/arbitrum-sepolia.d.ts.map +1 -0
- package/dist/shared/chain-registry/configs/arbitrum-sepolia.js +9 -0
- package/dist/shared/chain-registry/configs/arbitrum-sepolia.js.map +1 -0
- package/dist/shared/chain-registry/configs/base-sepolia.d.ts +9 -0
- package/dist/shared/chain-registry/configs/base-sepolia.d.ts.map +1 -0
- package/dist/shared/chain-registry/configs/base-sepolia.js +9 -0
- package/dist/shared/chain-registry/configs/base-sepolia.js.map +1 -0
- package/dist/shared/chain-registry/configs/ethereum.d.ts +7 -0
- package/dist/shared/chain-registry/configs/ethereum.d.ts.map +1 -0
- package/dist/shared/chain-registry/configs/ethereum.js +7 -0
- package/dist/shared/chain-registry/configs/ethereum.js.map +1 -0
- package/dist/shared/chain-registry/configs/polygon.d.ts +7 -0
- package/dist/shared/chain-registry/configs/polygon.d.ts.map +1 -0
- package/dist/shared/chain-registry/configs/polygon.js +7 -0
- package/dist/shared/chain-registry/configs/polygon.js.map +1 -0
- package/dist/shared/chain-registry/configs/sepolia.d.ts +9 -0
- package/dist/shared/chain-registry/configs/sepolia.d.ts.map +1 -0
- package/dist/shared/chain-registry/configs/sepolia.js +9 -0
- package/dist/shared/chain-registry/configs/sepolia.js.map +1 -0
- package/dist/shared/chain-registry/configs/unichain-sepolia.d.ts +9 -0
- package/dist/shared/chain-registry/configs/unichain-sepolia.d.ts.map +1 -0
- package/dist/shared/chain-registry/configs/unichain-sepolia.js +9 -0
- package/dist/shared/chain-registry/configs/unichain-sepolia.js.map +1 -0
- package/dist/shared/chain-registry/registry.d.ts +50 -0
- package/dist/shared/chain-registry/registry.d.ts.map +1 -0
- package/dist/shared/chain-registry/registry.js +72 -0
- package/dist/shared/chain-registry/registry.js.map +1 -0
- package/dist/shared/rpc/provider-manager.d.ts +111 -0
- package/dist/shared/rpc/provider-manager.d.ts.map +1 -0
- package/dist/shared/rpc/provider-manager.js +116 -0
- package/dist/shared/rpc/provider-manager.js.map +1 -0
- package/dist/shared/rpc/viem-provider.d.ts +78 -0
- package/dist/shared/rpc/viem-provider.d.ts.map +1 -0
- package/dist/shared/rpc/viem-provider.js +187 -0
- package/dist/shared/rpc/viem-provider.js.map +1 -0
- package/dist/shared/token-registry/enrichment.d.ts +48 -0
- package/dist/shared/token-registry/enrichment.d.ts.map +1 -0
- package/dist/shared/token-registry/enrichment.js +69 -0
- package/dist/shared/token-registry/enrichment.js.map +1 -0
- package/dist/shared/token-registry/registry.d.ts +119 -0
- package/dist/shared/token-registry/registry.d.ts.map +1 -0
- package/dist/shared/token-registry/registry.js +200 -0
- package/dist/shared/token-registry/registry.js.map +1 -0
- package/dist/shared/utils/erc20-utils.d.ts +24 -0
- package/dist/shared/utils/erc20-utils.d.ts.map +1 -0
- package/dist/shared/utils/erc20-utils.js +31 -0
- package/dist/shared/utils/erc20-utils.js.map +1 -0
- package/dist/shared/utils/retry.d.ts +57 -0
- package/dist/shared/utils/retry.d.ts.map +1 -0
- package/dist/shared/utils/retry.js +104 -0
- package/dist/shared/utils/retry.js.map +1 -0
- package/dist/shared/wallet-manager/viem-signer.d.ts +68 -0
- package/dist/shared/wallet-manager/viem-signer.d.ts.map +1 -0
- package/dist/shared/wallet-manager/viem-signer.js +116 -0
- package/dist/shared/wallet-manager/viem-signer.js.map +1 -0
- package/dist/shared/wallet-manager/wallet-manager.d.ts +96 -0
- package/dist/shared/wallet-manager/wallet-manager.d.ts.map +1 -0
- package/dist/shared/wallet-manager/wallet-manager.js +104 -0
- package/dist/shared/wallet-manager/wallet-manager.js.map +1 -0
- package/dist/solver/agent/agent-config.d.ts +62 -0
- package/dist/solver/agent/agent-config.d.ts.map +1 -0
- package/dist/solver/agent/agent-config.js +59 -0
- package/dist/solver/agent/agent-config.js.map +1 -0
- package/dist/solver/agent/index.d.ts +6 -0
- package/dist/solver/agent/index.d.ts.map +1 -0
- package/dist/solver/agent/index.js +6 -0
- package/dist/solver/agent/index.js.map +1 -0
- package/dist/solver/agent/liquidity-agent.d.ts +118 -0
- package/dist/solver/agent/liquidity-agent.d.ts.map +1 -0
- package/dist/solver/agent/liquidity-agent.js +285 -0
- package/dist/solver/agent/liquidity-agent.js.map +1 -0
- package/dist/solver/contracts/intent-settlement/index.d.ts +2 -0
- package/dist/solver/contracts/intent-settlement/index.d.ts.map +1 -0
- package/dist/solver/contracts/intent-settlement/index.js +2 -0
- package/dist/solver/contracts/intent-settlement/index.js.map +1 -0
- package/dist/solver/contracts/intent-settlement/intent-settlement.d.ts +22 -0
- package/dist/solver/contracts/intent-settlement/intent-settlement.d.ts.map +1 -0
- package/dist/solver/contracts/intent-settlement/intent-settlement.js +58 -0
- package/dist/solver/contracts/intent-settlement/intent-settlement.js.map +1 -0
- package/dist/solver/contracts/intent-settlement/viem-settlement-contract.d.ts +226 -0
- package/dist/solver/contracts/intent-settlement/viem-settlement-contract.d.ts.map +1 -0
- package/dist/solver/contracts/intent-settlement/viem-settlement-contract.js +204 -0
- package/dist/solver/contracts/intent-settlement/viem-settlement-contract.js.map +1 -0
- package/dist/solver/index.d.ts +87 -0
- package/dist/solver/index.d.ts.map +1 -0
- package/dist/solver/index.js +167 -0
- package/dist/solver/index.js.map +1 -0
- package/dist/solver/inventory/index.d.ts +7 -0
- package/dist/solver/inventory/index.d.ts.map +1 -0
- package/dist/solver/inventory/index.js +7 -0
- package/dist/solver/inventory/index.js.map +1 -0
- package/dist/solver/inventory/inventory-manager.d.ts +135 -0
- package/dist/solver/inventory/inventory-manager.d.ts.map +1 -0
- package/dist/solver/inventory/inventory-manager.js +323 -0
- package/dist/solver/inventory/inventory-manager.js.map +1 -0
- package/dist/solver/inventory/inventory-monitor.d.ts +72 -0
- package/dist/solver/inventory/inventory-monitor.d.ts.map +1 -0
- package/dist/solver/inventory/inventory-monitor.js +123 -0
- package/dist/solver/inventory/inventory-monitor.js.map +1 -0
- package/dist/solver/inventory/rebalancer.d.ts +78 -0
- package/dist/solver/inventory/rebalancer.d.ts.map +1 -0
- package/dist/solver/inventory/rebalancer.js +210 -0
- package/dist/solver/inventory/rebalancer.js.map +1 -0
- package/dist/solver/mempool/index.d.ts +8 -0
- package/dist/solver/mempool/index.d.ts.map +1 -0
- package/dist/solver/mempool/index.js +8 -0
- package/dist/solver/mempool/index.js.map +1 -0
- package/dist/solver/mempool/intent-filter.d.ts +49 -0
- package/dist/solver/mempool/intent-filter.d.ts.map +1 -0
- package/dist/solver/mempool/intent-filter.js +75 -0
- package/dist/solver/mempool/intent-filter.js.map +1 -0
- package/dist/solver/mempool/mempool-client.d.ts +105 -0
- package/dist/solver/mempool/mempool-client.d.ts.map +1 -0
- package/dist/solver/mempool/mempool-client.js +161 -0
- package/dist/solver/mempool/mempool-client.js.map +1 -0
- package/dist/solver/mempool/mempool-monitor.d.ts +71 -0
- package/dist/solver/mempool/mempool-monitor.d.ts.map +1 -0
- package/dist/solver/mempool/mempool-monitor.js +127 -0
- package/dist/solver/mempool/mempool-monitor.js.map +1 -0
- package/dist/solver/mempool/solution-submitter.d.ts +41 -0
- package/dist/solver/mempool/solution-submitter.d.ts.map +1 -0
- package/dist/solver/mempool/solution-submitter.js +71 -0
- package/dist/solver/mempool/solution-submitter.js.map +1 -0
- package/dist/solver/monitoring/alert-manager.d.ts +43 -0
- package/dist/solver/monitoring/alert-manager.d.ts.map +1 -0
- package/dist/solver/monitoring/alert-manager.js +69 -0
- package/dist/solver/monitoring/alert-manager.js.map +1 -0
- package/dist/solver/monitoring/health-checker.d.ts +53 -0
- package/dist/solver/monitoring/health-checker.d.ts.map +1 -0
- package/dist/solver/monitoring/health-checker.js +94 -0
- package/dist/solver/monitoring/health-checker.js.map +1 -0
- package/dist/solver/monitoring/index.d.ts +7 -0
- package/dist/solver/monitoring/index.d.ts.map +1 -0
- package/dist/solver/monitoring/index.js +7 -0
- package/dist/solver/monitoring/index.js.map +1 -0
- package/dist/solver/monitoring/profit-tracker.d.ts +47 -0
- package/dist/solver/monitoring/profit-tracker.d.ts.map +1 -0
- package/dist/solver/monitoring/profit-tracker.js +112 -0
- package/dist/solver/monitoring/profit-tracker.js.map +1 -0
- package/dist/solver/pricing/dynamic-pricing.d.ts +86 -0
- package/dist/solver/pricing/dynamic-pricing.d.ts.map +1 -0
- package/dist/solver/pricing/dynamic-pricing.js +189 -0
- package/dist/solver/pricing/dynamic-pricing.js.map +1 -0
- package/dist/solver/pricing/fee-calculator.d.ts +101 -0
- package/dist/solver/pricing/fee-calculator.d.ts.map +1 -0
- package/dist/solver/pricing/fee-calculator.js +149 -0
- package/dist/solver/pricing/fee-calculator.js.map +1 -0
- package/dist/solver/pricing/index.d.ts +7 -0
- package/dist/solver/pricing/index.d.ts.map +1 -0
- package/dist/solver/pricing/index.js +7 -0
- package/dist/solver/pricing/index.js.map +1 -0
- package/dist/solver/pricing/slippage-capture.d.ts +47 -0
- package/dist/solver/pricing/slippage-capture.d.ts.map +1 -0
- package/dist/solver/pricing/slippage-capture.js +63 -0
- package/dist/solver/pricing/slippage-capture.js.map +1 -0
- package/dist/solver/protocols/aggregators/lifi.d.ts +109 -0
- package/dist/solver/protocols/aggregators/lifi.d.ts.map +1 -0
- package/dist/solver/protocols/aggregators/lifi.js +110 -0
- package/dist/solver/protocols/aggregators/lifi.js.map +1 -0
- package/dist/solver/protocols/aggregators/swing.d.ts +67 -0
- package/dist/solver/protocols/aggregators/swing.d.ts.map +1 -0
- package/dist/solver/protocols/aggregators/swing.js +212 -0
- package/dist/solver/protocols/aggregators/swing.js.map +1 -0
- package/dist/solver/protocols/base-protocol.d.ts +42 -0
- package/dist/solver/protocols/base-protocol.d.ts.map +1 -0
- package/dist/solver/protocols/base-protocol.js +16 -0
- package/dist/solver/protocols/base-protocol.js.map +1 -0
- package/dist/solver/protocols/index.d.ts +10 -0
- package/dist/solver/protocols/index.d.ts.map +1 -0
- package/dist/solver/protocols/index.js +10 -0
- package/dist/solver/protocols/index.js.map +1 -0
- package/dist/solver/protocols/lending/aave.d.ts +51 -0
- package/dist/solver/protocols/lending/aave.d.ts.map +1 -0
- package/dist/solver/protocols/lending/aave.js +172 -0
- package/dist/solver/protocols/lending/aave.js.map +1 -0
- package/dist/solver/protocols/protocol-registry.d.ts +28 -0
- package/dist/solver/protocols/protocol-registry.d.ts.map +1 -0
- package/dist/solver/protocols/protocol-registry.js +40 -0
- package/dist/solver/protocols/protocol-registry.js.map +1 -0
- package/dist/solver/settlement/index.d.ts +7 -0
- package/dist/solver/settlement/index.d.ts.map +1 -0
- package/dist/solver/settlement/index.js +7 -0
- package/dist/solver/settlement/index.js.map +1 -0
- package/dist/solver/settlement/live-settlement-manager.d.ts +62 -0
- package/dist/solver/settlement/live-settlement-manager.d.ts.map +1 -0
- package/dist/solver/settlement/live-settlement-manager.js +68 -0
- package/dist/solver/settlement/live-settlement-manager.js.map +1 -0
- package/dist/solver/settlement/proof-generator.d.ts +48 -0
- package/dist/solver/settlement/proof-generator.d.ts.map +1 -0
- package/dist/solver/settlement/proof-generator.js +100 -0
- package/dist/solver/settlement/proof-generator.js.map +1 -0
- package/dist/solver/settlement/proof-verifier.d.ts +31 -0
- package/dist/solver/settlement/proof-verifier.d.ts.map +1 -0
- package/dist/solver/settlement/proof-verifier.js +46 -0
- package/dist/solver/settlement/proof-verifier.js.map +1 -0
- package/dist/solver/settlement/settlement-manager.d.ts +97 -0
- package/dist/solver/settlement/settlement-manager.d.ts.map +1 -0
- package/dist/solver/settlement/settlement-manager.js +220 -0
- package/dist/solver/settlement/settlement-manager.js.map +1 -0
- package/dist/solver/types/agent.d.ts +92 -0
- package/dist/solver/types/agent.d.ts.map +1 -0
- package/dist/solver/types/agent.js +8 -0
- package/dist/solver/types/agent.js.map +1 -0
- package/dist/solver/types/execution.d.ts +70 -0
- package/dist/solver/types/execution.d.ts.map +1 -0
- package/dist/solver/types/execution.js +7 -0
- package/dist/solver/types/execution.js.map +1 -0
- package/dist/solver/types/index.d.ts +13 -0
- package/dist/solver/types/index.d.ts.map +1 -0
- package/dist/solver/types/index.js +13 -0
- package/dist/solver/types/index.js.map +1 -0
- package/dist/solver/types/intent.d.ts +82 -0
- package/dist/solver/types/intent.d.ts.map +1 -0
- package/dist/solver/types/intent.js +33 -0
- package/dist/solver/types/intent.js.map +1 -0
- package/dist/solver/types/inventory.d.ts +83 -0
- package/dist/solver/types/inventory.d.ts.map +1 -0
- package/dist/solver/types/inventory.js +8 -0
- package/dist/solver/types/inventory.js.map +1 -0
- package/dist/solver/types/pricing.d.ts +59 -0
- package/dist/solver/types/pricing.d.ts.map +1 -0
- package/dist/solver/types/pricing.js +8 -0
- package/dist/solver/types/pricing.js.map +1 -0
- package/dist/solver/types/settlement.d.ts +98 -0
- package/dist/solver/types/settlement.d.ts.map +1 -0
- package/dist/solver/types/settlement.js +9 -0
- package/dist/solver/types/settlement.js.map +1 -0
- package/dist/types/chain.d.ts +66 -0
- package/dist/types/chain.d.ts.map +1 -0
- package/dist/types/chain.js +7 -0
- package/dist/types/chain.js.map +1 -0
- package/dist/types/common.d.ts +44 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +8 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/entities.d.ts +61 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +2 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/index.d.ts +44 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/intent.d.ts +70 -0
- package/dist/types/intent.d.ts.map +1 -0
- package/dist/types/intent.js +2 -0
- package/dist/types/intent.js.map +1 -0
- package/dist/types/templates.d.ts +18 -0
- package/dist/types/templates.d.ts.map +1 -0
- package/dist/types/templates.js +2 -0
- package/dist/types/templates.js.map +1 -0
- package/dist/types/token.d.ts +132 -0
- package/dist/types/token.d.ts.map +1 -0
- package/dist/types/token.js +8 -0
- package/dist/types/token.js.map +1 -0
- 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 @@
|
|
|
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"}
|