@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,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settlement Manager — Phase E
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the full settlement lifecycle:
|
|
5
|
+
* 1. Solver sends funds on target chain → gets targetTxHash
|
|
6
|
+
* 2. Wait for confirmations on target chain
|
|
7
|
+
* 3. Generate proof (EIP-191 Oracle signature)
|
|
8
|
+
* 4. Submit claim() on source chain contract
|
|
9
|
+
* 5. Track settlement status and handle failures
|
|
10
|
+
*
|
|
11
|
+
* Retry policy: max 3 attempts per intent.
|
|
12
|
+
* After 3 failures → status = "failed", requires manual review.
|
|
13
|
+
*
|
|
14
|
+
* Used by: LiquidityAgent.solve() (Phase F)
|
|
15
|
+
*/
|
|
16
|
+
import { toBridgeIntent } from "../types/intent";
|
|
17
|
+
import { SettlementError, ClaimFailedError, ProofGenerationError } from "../../errors/settlement-errors";
|
|
18
|
+
import { ethers } from "ethers";
|
|
19
|
+
export const DEFAULT_SETTLEMENT_CONFIG = {
|
|
20
|
+
requiredConfirmations: 3,
|
|
21
|
+
maxClaimRetries: 3,
|
|
22
|
+
watchIntervalMs: 30_000,
|
|
23
|
+
};
|
|
24
|
+
// ─────────────────────────────────────────────
|
|
25
|
+
// SettlementManager
|
|
26
|
+
// ─────────────────────────────────────────────
|
|
27
|
+
export class SettlementManager {
|
|
28
|
+
proofGenerator;
|
|
29
|
+
proofVerifier;
|
|
30
|
+
contract;
|
|
31
|
+
config;
|
|
32
|
+
/** In-memory settlement records, keyed by intentId */
|
|
33
|
+
settlements = new Map();
|
|
34
|
+
/** Cache of original intents to allow retries */
|
|
35
|
+
intents = new Map();
|
|
36
|
+
/** Interval ID for watchPendingSettlements */
|
|
37
|
+
watchInterval = null;
|
|
38
|
+
constructor(proofGenerator, proofVerifier, contract, config = DEFAULT_SETTLEMENT_CONFIG) {
|
|
39
|
+
this.proofGenerator = proofGenerator;
|
|
40
|
+
this.proofVerifier = proofVerifier;
|
|
41
|
+
this.contract = contract;
|
|
42
|
+
this.config = config;
|
|
43
|
+
}
|
|
44
|
+
// ─────────────────────────────────────────
|
|
45
|
+
// Public API
|
|
46
|
+
// ─────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Full settlement flow for a single intent.
|
|
49
|
+
*
|
|
50
|
+
* Steps:
|
|
51
|
+
* 1. Create Settlement record with status "pending"
|
|
52
|
+
* 2. Wait for confirmations on target chain
|
|
53
|
+
* 3. Generate proof → status "proving"
|
|
54
|
+
* 4. Verify proof off-chain (sanity check)
|
|
55
|
+
* 5. Call contract.claim() → status "claiming"
|
|
56
|
+
* 6. If success → status "completed"
|
|
57
|
+
* 7. If failure → handleClaimFailure()
|
|
58
|
+
*
|
|
59
|
+
* @param intent - SolverIntent being settled
|
|
60
|
+
* @param targetTxHash - Transaction hash of the fulfillment on target chain
|
|
61
|
+
* @returns Settlement record
|
|
62
|
+
* @throws SettlementError on unrecoverable failure
|
|
63
|
+
*/
|
|
64
|
+
async settleIntent(intent, targetTxHash) {
|
|
65
|
+
this.intents.set(intent.intentId, intent);
|
|
66
|
+
let settlement = this.settlements.get(intent.intentId);
|
|
67
|
+
if (!settlement) {
|
|
68
|
+
settlement = {
|
|
69
|
+
intentId: intent.intentId,
|
|
70
|
+
solver: intent.solver || "0x0000000000000000000000000000000000000000",
|
|
71
|
+
targetTx: targetTxHash,
|
|
72
|
+
status: "pending",
|
|
73
|
+
startedAt: Math.floor(Date.now() / 1000),
|
|
74
|
+
claimAttempts: 0,
|
|
75
|
+
};
|
|
76
|
+
this.settlements.set(intent.intentId, settlement);
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const bridgeIntent = toBridgeIntent(intent);
|
|
80
|
+
if (!bridgeIntent)
|
|
81
|
+
throw new SettlementError("Invalid bridge intent");
|
|
82
|
+
// 1. Build CrossChainOrder first — needed to compute the on-chain intentId
|
|
83
|
+
// that the contract derives via keccak256(abi.encode(order)).
|
|
84
|
+
// The digest MUST use this on-chain intentId, NOT the SDK's string UUID.
|
|
85
|
+
const tokenAddr = intent.parsedIntent.parameters.inputTokenAddress || ethers.ZeroAddress;
|
|
86
|
+
const orderData = intent.parsedIntent.parameters.orderData
|
|
87
|
+
|| ethers.AbiCoder.defaultAbiCoder().encode(["address", "uint256"], [tokenAddr, bridgeIntent.amount]);
|
|
88
|
+
const nonceRaw = intent.parsedIntent.parameters.nonce;
|
|
89
|
+
if (!nonceRaw)
|
|
90
|
+
throw new SettlementError(`Intent ${intent.intentId} is missing required field 'nonce'`);
|
|
91
|
+
const order = {
|
|
92
|
+
settlementContract: await this.contract.getAddress(),
|
|
93
|
+
swapper: intent.user,
|
|
94
|
+
nonce: BigInt(nonceRaw),
|
|
95
|
+
originChainId: bridgeIntent.sourceChain,
|
|
96
|
+
initiateDeadline: intent.parsedIntent.parameters.initiateDeadline
|
|
97
|
+
? Number(intent.parsedIntent.parameters.initiateDeadline)
|
|
98
|
+
: intent.deadline,
|
|
99
|
+
fillDeadline: intent.deadline,
|
|
100
|
+
orderData: orderData
|
|
101
|
+
};
|
|
102
|
+
// 2. Compute on-chain intentId = keccak256(abi.encode(order))
|
|
103
|
+
// This MUST match what IntentSettlement.sol computes in claim().
|
|
104
|
+
const onChainIntentId = ethers.keccak256(ethers.AbiCoder.defaultAbiCoder().encode([
|
|
105
|
+
"tuple(address settlementContract, address swapper, uint256 nonce, uint32 originChainId, uint32 initiateDeadline, uint32 fillDeadline, bytes orderData)"
|
|
106
|
+
], [order]));
|
|
107
|
+
// 3. Generate Proof using the on-chain intentId
|
|
108
|
+
// Contract verifies: toEthSignedMessageHash(keccak256(abi.encodePacked(intentId, "FILLED", msg.sender)))
|
|
109
|
+
settlement.status = "proving";
|
|
110
|
+
const proof = await this.proofGenerator.generateSignatureProof({
|
|
111
|
+
intentId: onChainIntentId,
|
|
112
|
+
targetTxHash,
|
|
113
|
+
targetChainId: bridgeIntent.targetChain,
|
|
114
|
+
amount: bridgeIntent.amount,
|
|
115
|
+
recipient: bridgeIntent.recipient,
|
|
116
|
+
confirmations: this.config.requiredConfirmations
|
|
117
|
+
});
|
|
118
|
+
settlement.proof = proof;
|
|
119
|
+
// 4. Verify Proof off-chain (sanity check before spending gas)
|
|
120
|
+
const expectedOracle = this.config.oracleAddress || settlement.solver;
|
|
121
|
+
const isValid = await this.proofVerifier.verifySignatureProof(proof, expectedOracle, settlement.solver);
|
|
122
|
+
if (!isValid) {
|
|
123
|
+
throw new ProofGenerationError(`Local proof verification failed for intent ${onChainIntentId}`);
|
|
124
|
+
}
|
|
125
|
+
// 5. Submit Claim
|
|
126
|
+
settlement.status = "claiming";
|
|
127
|
+
const tx = await this.contract.claim(order, proof.solverSignature);
|
|
128
|
+
settlement.sourceTx = tx.hash;
|
|
129
|
+
await tx.wait();
|
|
130
|
+
settlement.status = "completed";
|
|
131
|
+
settlement.settledAt = Math.floor(Date.now() / 1000);
|
|
132
|
+
return settlement;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
await this.handleClaimFailure(intent.intentId, error);
|
|
136
|
+
throw new ClaimFailedError(intent.intentId, error.message || String(error));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Start watching for pending settlements and retry claims.
|
|
141
|
+
*
|
|
142
|
+
* Runs on an interval (default 30s). For each pending/failed settlement
|
|
143
|
+
* with remaining retries, attempt to re-settle.
|
|
144
|
+
*/
|
|
145
|
+
watchPendingSettlements() {
|
|
146
|
+
if (this.watchInterval)
|
|
147
|
+
return;
|
|
148
|
+
this.watchInterval = setInterval(async () => {
|
|
149
|
+
for (const settlement of this.settlements.values()) {
|
|
150
|
+
if (settlement.status === "failed" && settlement.claimAttempts < this.config.maxClaimRetries) {
|
|
151
|
+
const intent = this.intents.get(settlement.intentId);
|
|
152
|
+
if (intent) {
|
|
153
|
+
try {
|
|
154
|
+
await this.settleIntent(intent, settlement.targetTx);
|
|
155
|
+
}
|
|
156
|
+
catch (e) {
|
|
157
|
+
if (!(e instanceof ClaimFailedError)) {
|
|
158
|
+
console.error(`Unexpected error in watchPendingSettlements for ${settlement.intentId}:`, e);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}, this.config.watchIntervalMs);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Stop watching pending settlements.
|
|
168
|
+
*/
|
|
169
|
+
stopWatching() {
|
|
170
|
+
if (this.watchInterval) {
|
|
171
|
+
clearInterval(this.watchInterval);
|
|
172
|
+
this.watchInterval = null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Handle a claim failure: increment attempts, update status.
|
|
177
|
+
*
|
|
178
|
+
* If attempts < maxClaimRetries → keep status "failed" (will be retried by watcher)
|
|
179
|
+
* If attempts >= maxClaimRetries → status "failed" permanently
|
|
180
|
+
*
|
|
181
|
+
* @param intentId - Intent whose claim failed
|
|
182
|
+
* @param error - Error that caused the failure
|
|
183
|
+
*/
|
|
184
|
+
async handleClaimFailure(intentId, error) {
|
|
185
|
+
const settlement = this.settlements.get(intentId);
|
|
186
|
+
if (!settlement)
|
|
187
|
+
return;
|
|
188
|
+
settlement.claimAttempts += 1;
|
|
189
|
+
settlement.error = error.message;
|
|
190
|
+
settlement.status = "failed";
|
|
191
|
+
if (settlement.claimAttempts >= this.config.maxClaimRetries) {
|
|
192
|
+
console.error(`Intent ${intentId} settlement failed permanently after ${settlement.claimAttempts} attempts. Error: ${error.message}`);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
console.warn(`Intent ${intentId} claim failed, will retry. Error: ${error.message}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// ─────────────────────────────────────────
|
|
199
|
+
// Getters
|
|
200
|
+
// ─────────────────────────────────────────
|
|
201
|
+
/**
|
|
202
|
+
* Get a settlement record by intentId.
|
|
203
|
+
*/
|
|
204
|
+
getSettlement(intentId) {
|
|
205
|
+
return this.settlements.get(intentId);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get all settlements with a specific status.
|
|
209
|
+
*/
|
|
210
|
+
getSettlementsByStatus(status) {
|
|
211
|
+
return Array.from(this.settlements.values()).filter(s => s.status === status);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get all settlement records.
|
|
215
|
+
*/
|
|
216
|
+
getAllSettlements() {
|
|
217
|
+
return Array.from(this.settlements.values());
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=settlement-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement-manager.js","sourceRoot":"","sources":["../../../src/solver/settlement/settlement-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solver Agent Types
|
|
3
|
+
*
|
|
4
|
+
* Core types untuk Liquidity Agent yang menangani
|
|
5
|
+
* intent fulfillment dan cross-chain settlement.
|
|
6
|
+
*/
|
|
7
|
+
import type { Address, ChainId } from "../../types/common";
|
|
8
|
+
/**
|
|
9
|
+
* Agent operating mode
|
|
10
|
+
*
|
|
11
|
+
* - simulate: Dry-run tanpa eksekusi on-chain (untuk testing/development)
|
|
12
|
+
* - live: Real execution on mainnet/testnet
|
|
13
|
+
*/
|
|
14
|
+
export type AgentMode = "simulate" | "live";
|
|
15
|
+
/**
|
|
16
|
+
* Current agent status
|
|
17
|
+
*/
|
|
18
|
+
export type AgentStatus = "idle" | "processing" | "rebalancing" | "error";
|
|
19
|
+
/**
|
|
20
|
+
* Agent Configuration
|
|
21
|
+
*
|
|
22
|
+
* Konfigurasi utama untuk menginisialisasi LiquidityAgent.
|
|
23
|
+
*
|
|
24
|
+
* CONTOH:
|
|
25
|
+
* {
|
|
26
|
+
* name: "LiquidityBot-01",
|
|
27
|
+
* privateKey: "0xabc...",
|
|
28
|
+
* supportedChains: [1, 137],
|
|
29
|
+
* supportedTokens: ["USDC"],
|
|
30
|
+
* mode: "simulate",
|
|
31
|
+
* }
|
|
32
|
+
*/
|
|
33
|
+
export interface AgentConfig {
|
|
34
|
+
/** Human-readable agent name (e.g., "LiquidityBot-01") */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Private key for signing transactions (hex string with 0x prefix) */
|
|
37
|
+
privateKey: string;
|
|
38
|
+
/** List of supported chain IDs (e.g., [1, 137] for ETH + Polygon) */
|
|
39
|
+
supportedChains: ChainId[];
|
|
40
|
+
/** List of supported token symbols (e.g., ["USDC", "USDT"]) */
|
|
41
|
+
supportedTokens: string[];
|
|
42
|
+
/** Operating mode: simulate (dry-run) or live (real execution) */
|
|
43
|
+
mode: AgentMode;
|
|
44
|
+
/** Maximum number of intents to process concurrently (default: 5) */
|
|
45
|
+
maxConcurrentIntents?: number;
|
|
46
|
+
/** Intent timeout in seconds — reject intents older than this (default: 3600) */
|
|
47
|
+
intentTimeout?: number;
|
|
48
|
+
/** Agent's registered on-chain address (derived from privateKey) */
|
|
49
|
+
agentAddress?: Address;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Result dari solve() operation
|
|
53
|
+
*
|
|
54
|
+
* Berisi status eksekusi, profit, dan metadata.
|
|
55
|
+
*/
|
|
56
|
+
export interface SolutionResult {
|
|
57
|
+
/** Whether the solve was successful */
|
|
58
|
+
success: boolean;
|
|
59
|
+
/** Transaction hash on target chain (if executed) */
|
|
60
|
+
txHash?: string;
|
|
61
|
+
/** Net profit in USDC (fee + slippage - gas cost) */
|
|
62
|
+
profit?: string;
|
|
63
|
+
/** Output amount received by user */
|
|
64
|
+
output?: string;
|
|
65
|
+
/** Error message if failed */
|
|
66
|
+
error?: string;
|
|
67
|
+
/** Additional metadata */
|
|
68
|
+
metadata?: SolutionMetadata;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Metadata tambahan dari solve result
|
|
72
|
+
*/
|
|
73
|
+
export interface SolutionMetadata {
|
|
74
|
+
/** Time taken to solve (milliseconds) */
|
|
75
|
+
solveDurationMs: number;
|
|
76
|
+
/** Source chain ID */
|
|
77
|
+
sourceChainId: ChainId;
|
|
78
|
+
/** Target chain ID */
|
|
79
|
+
targetChainId: ChainId;
|
|
80
|
+
/** Gas used on target chain */
|
|
81
|
+
gasUsed?: string;
|
|
82
|
+
/** Gas cost in USDC equivalent */
|
|
83
|
+
gasCostUSD?: string;
|
|
84
|
+
/** Fee breakdown */
|
|
85
|
+
feeBreakdown?: {
|
|
86
|
+
baseFee: string;
|
|
87
|
+
slippageCapture: string;
|
|
88
|
+
gasCost: string;
|
|
89
|
+
totalFee: string;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/solver/types/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAW;IACxB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IAEb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,eAAe,EAAE,OAAO,EAAE,CAAC;IAE3B,+DAA+D;IAC/D,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B,kEAAkE;IAClE,IAAI,EAAE,SAAS,CAAC;IAEhB,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IAEjB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IAExB,sBAAsB;IACtB,aAAa,EAAE,OAAO,CAAC;IAEvB,sBAAsB;IACtB,aAAa,EAAE,OAAO,CAAC;IAEvB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oBAAoB;IACpB,YAAY,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/solver/types/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execution Types
|
|
3
|
+
*
|
|
4
|
+
* Types untuk transaction building dan multi-chain execution.
|
|
5
|
+
*/
|
|
6
|
+
import type { Address, ChainId, Hash } from "../../types/common";
|
|
7
|
+
/**
|
|
8
|
+
* Raw transaction data
|
|
9
|
+
*
|
|
10
|
+
* Representasi transaksi yang siap kirim ke chain.
|
|
11
|
+
* Compatible dengan ethers.js transaction format.
|
|
12
|
+
*/
|
|
13
|
+
export interface Transaction {
|
|
14
|
+
/** Target contract address */
|
|
15
|
+
to: Address;
|
|
16
|
+
/** Encoded function call data */
|
|
17
|
+
data: string;
|
|
18
|
+
/** ETH value to send (in wei, usually "0" for ERC20 ops) */
|
|
19
|
+
value: string;
|
|
20
|
+
/** Gas limit */
|
|
21
|
+
gasLimit: string;
|
|
22
|
+
/** Chain ID where tx will be executed */
|
|
23
|
+
chainId: ChainId;
|
|
24
|
+
/** Transaction nonce (managed by executor) */
|
|
25
|
+
nonce?: number;
|
|
26
|
+
/** Max fee per gas (EIP-1559) */
|
|
27
|
+
maxFeePerGas?: string;
|
|
28
|
+
/** Max priority fee per gas (EIP-1559) */
|
|
29
|
+
maxPriorityFeePerGas?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Execution result (single transaction)
|
|
33
|
+
*/
|
|
34
|
+
export interface ExecutionResult {
|
|
35
|
+
/** Whether the transaction succeeded */
|
|
36
|
+
success: boolean;
|
|
37
|
+
/** Transaction hash */
|
|
38
|
+
txHash?: Hash;
|
|
39
|
+
/** Gas used by the transaction */
|
|
40
|
+
gasUsed?: string;
|
|
41
|
+
/** Block number where tx was included */
|
|
42
|
+
blockNumber?: number;
|
|
43
|
+
/** Error message if failed */
|
|
44
|
+
error?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Multi-chain execution status
|
|
48
|
+
*/
|
|
49
|
+
export type ExecutionStatus = "pending" | "source_sent" | "target_sent" | "completed" | "failed";
|
|
50
|
+
/**
|
|
51
|
+
* Multi-Chain Execution
|
|
52
|
+
*
|
|
53
|
+
* Tracks paired execution across source and target chains.
|
|
54
|
+
* Used by solve() flow:
|
|
55
|
+
* 1. Send on target chain (fulfill user)
|
|
56
|
+
* 2. Claim on source chain (get solver's payment)
|
|
57
|
+
*/
|
|
58
|
+
export interface MultiChainExecution {
|
|
59
|
+
/** Execution result on source chain (claim tx) */
|
|
60
|
+
sourceTx?: ExecutionResult;
|
|
61
|
+
/** Execution result on target chain (fulfillment tx) */
|
|
62
|
+
targetTx?: ExecutionResult;
|
|
63
|
+
/** Current status of the paired execution */
|
|
64
|
+
status: ExecutionStatus;
|
|
65
|
+
/** Timestamp when execution started */
|
|
66
|
+
startedAt: number;
|
|
67
|
+
/** Timestamp when execution completed (both chains) */
|
|
68
|
+
completedAt?: number;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/solver/types/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IACxB,8BAA8B;IAC9B,EAAE,EAAE,OAAO,CAAC;IAEZ,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IAEd,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IAEjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IAEjB,uBAAuB;IACvB,MAAM,CAAC,EAAE,IAAI,CAAC;IAEd,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACrB,SAAS,GACT,aAAa,GACb,aAAa,GACb,WAAW,GACX,QAAQ,CAAC;AAEf;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAChC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,6CAA6C;IAC7C,MAAM,EAAE,eAAe,CAAC;IAExB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAElB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/solver/types/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solver Types - Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Re-export all solver-specific types from a single entry point.
|
|
5
|
+
* Usage: import { AgentConfig, SolverIntent, ... } from "./"
|
|
6
|
+
*/
|
|
7
|
+
export * from "./agent";
|
|
8
|
+
export * from "./inventory";
|
|
9
|
+
export * from "./intent";
|
|
10
|
+
export * from "./settlement";
|
|
11
|
+
export * from "./pricing";
|
|
12
|
+
export * from "./execution";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solver/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solver Types - Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Re-export all solver-specific types from a single entry point.
|
|
5
|
+
* Usage: import { AgentConfig, SolverIntent, ... } from "./"
|
|
6
|
+
*/
|
|
7
|
+
export * from "./agent";
|
|
8
|
+
export * from "./inventory";
|
|
9
|
+
export * from "./intent";
|
|
10
|
+
export * from "./settlement";
|
|
11
|
+
export * from "./pricing";
|
|
12
|
+
export * from "./execution";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solver/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solver Intent Types
|
|
3
|
+
*
|
|
4
|
+
* Types khusus solver — merepresentasikan intent yang sudah
|
|
5
|
+
* di-parse dan siap untuk diproses oleh LiquidityAgent.
|
|
6
|
+
*
|
|
7
|
+
* Extends dari parser types (StructuredIntent) dengan
|
|
8
|
+
* menambahkan solver-specific fields.
|
|
9
|
+
*/
|
|
10
|
+
import type { StructuredIntent } from "../../types/intent";
|
|
11
|
+
import type { Address, ChainId, Hash } from "../../types/common";
|
|
12
|
+
/**
|
|
13
|
+
* Status lifecycle dari sebuah intent di sisi solver
|
|
14
|
+
*
|
|
15
|
+
* pending → matched → fulfilling → fulfilled
|
|
16
|
+
* └→ failed
|
|
17
|
+
* └→ refunded
|
|
18
|
+
*/
|
|
19
|
+
export type IntentStatus = "pending" | "matched" | "fulfilling" | "fulfilled" | "failed" | "refunded";
|
|
20
|
+
/**
|
|
21
|
+
* Solver Intent
|
|
22
|
+
*
|
|
23
|
+
* Representasi intent dari perspektif solver.
|
|
24
|
+
* Menggabungkan data dari parser (StructuredIntent) dengan
|
|
25
|
+
* solver-specific metadata (intentId, hash, signature, dsb).
|
|
26
|
+
*/
|
|
27
|
+
export interface SolverIntent {
|
|
28
|
+
/** Unique intent ID (uuid or on-chain ID) */
|
|
29
|
+
intentId: string;
|
|
30
|
+
/** Keccak256 hash of intent data — used for verification */
|
|
31
|
+
intentHash: Hash;
|
|
32
|
+
/** User's wallet address (intent originator) */
|
|
33
|
+
user: Address;
|
|
34
|
+
/** User's signature over intentHash */
|
|
35
|
+
signature: string;
|
|
36
|
+
/** Deadline timestamp (Unix seconds) — intent expired after this */
|
|
37
|
+
deadline: number;
|
|
38
|
+
/** Current status in solver pipeline */
|
|
39
|
+
status: IntentStatus;
|
|
40
|
+
/** Original parsed intent from parser */
|
|
41
|
+
parsedIntent: StructuredIntent;
|
|
42
|
+
/** Timestamp when solver received this intent */
|
|
43
|
+
receivedAt: number;
|
|
44
|
+
/** Solver address yang memproses intent ini */
|
|
45
|
+
solver?: Address;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Bridge Intent
|
|
49
|
+
*
|
|
50
|
+
* Specialized intent type untuk cross-chain bridge operations.
|
|
51
|
+
* Ini adalah intent type utama yang di-handle oleh LiquidityAgent.
|
|
52
|
+
*
|
|
53
|
+
* CONTOH:
|
|
54
|
+
* "Bridge 1000 USDC from Ethereum to Polygon"
|
|
55
|
+
* → {
|
|
56
|
+
* sourceChain: 1,
|
|
57
|
+
* targetChain: 137,
|
|
58
|
+
* token: "USDC",
|
|
59
|
+
* amount: "1000000000", // 1000 * 10^6
|
|
60
|
+
* recipient: "0xabc...",
|
|
61
|
+
* maxSlippage: 50, // 0.5%
|
|
62
|
+
* }
|
|
63
|
+
*/
|
|
64
|
+
export interface BridgeIntent {
|
|
65
|
+
/** Source chain ID (where user's funds are locked) */
|
|
66
|
+
sourceChain: ChainId;
|
|
67
|
+
/** Target chain ID (where solver sends funds) */
|
|
68
|
+
targetChain: ChainId;
|
|
69
|
+
/** Token symbol (e.g., "USDC") */
|
|
70
|
+
token: string;
|
|
71
|
+
/** Amount in token's smallest unit */
|
|
72
|
+
amount: string;
|
|
73
|
+
/** Recipient address on target chain */
|
|
74
|
+
recipient: Address;
|
|
75
|
+
/** Maximum acceptable slippage in basis points (100 = 1%) */
|
|
76
|
+
maxSlippage: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Helper: Extract BridgeIntent dari SolverIntent
|
|
80
|
+
*/
|
|
81
|
+
export declare function toBridgeIntent(intent: SolverIntent): BridgeIntent | null;
|
|
82
|
+
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/solver/types/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAClB,SAAS,GACT,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IAEjB,4DAA4D;IAC5D,UAAU,EAAE,IAAI,CAAC;IAEjB,gDAAgD;IAChD,IAAI,EAAE,OAAO,CAAC;IAEd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAElB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IAEjB,wCAAwC;IACxC,MAAM,EAAE,YAAY,CAAC;IAErB,yCAAyC;IACzC,YAAY,EAAE,gBAAgB,CAAC;IAE/B,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IAEnB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IACzB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IAErB,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IAErB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IAEnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI,CAuBxE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solver Intent Types
|
|
3
|
+
*
|
|
4
|
+
* Types khusus solver — merepresentasikan intent yang sudah
|
|
5
|
+
* di-parse dan siap untuk diproses oleh LiquidityAgent.
|
|
6
|
+
*
|
|
7
|
+
* Extends dari parser types (StructuredIntent) dengan
|
|
8
|
+
* menambahkan solver-specific fields.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Helper: Extract BridgeIntent dari SolverIntent
|
|
12
|
+
*/
|
|
13
|
+
export function toBridgeIntent(intent) {
|
|
14
|
+
const params = intent.parsedIntent.parameters;
|
|
15
|
+
if (intent.parsedIntent.intentType !== "bridge")
|
|
16
|
+
return null;
|
|
17
|
+
if (!params.sourceChain ||
|
|
18
|
+
!params.targetChain ||
|
|
19
|
+
!params.inputToken ||
|
|
20
|
+
!params.inputAmount ||
|
|
21
|
+
!params.recipient) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
sourceChain: Number(params.sourceChain),
|
|
26
|
+
targetChain: Number(params.targetChain),
|
|
27
|
+
token: params.inputToken,
|
|
28
|
+
amount: params.inputAmount,
|
|
29
|
+
recipient: params.recipient,
|
|
30
|
+
maxSlippage: intent.parsedIntent.constraints.maxSlippage ?? 50,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/solver/types/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6FH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;IAE9C,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE7D,IACI,CAAC,MAAM,CAAC,WAAW;QACnB,CAAC,MAAM,CAAC,WAAW;QACnB,CAAC,MAAM,CAAC,UAAU;QAClB,CAAC,MAAM,CAAC,WAAW;QACnB,CAAC,MAAM,CAAC,SAAS,EACnB,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAY;QAClD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAY;QAClD,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,MAAM,EAAE,MAAM,CAAC,WAAW;QAC1B,SAAS,EAAE,MAAM,CAAC,SAAoB;QACtC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE;KACjE,CAAC;AACN,CAAC"}
|