agentwallet-sdk 4.0.5 → 5.0.1
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/README.md +154 -158
- package/dist/abi.d.ts +396 -46
- package/dist/abi.d.ts.map +1 -1
- package/dist/abi.js +0 -2
- package/dist/abi.js.map +1 -1
- package/dist/ap2/index.d.ts +185 -0
- package/dist/ap2/index.d.ts.map +1 -0
- package/dist/ap2/index.js +255 -0
- package/dist/ap2/index.js.map +1 -0
- package/dist/bridge/abis.d.ts.map +1 -1
- package/dist/bridge/abis.js +0 -2
- package/dist/bridge/abis.js.map +1 -1
- package/dist/bridge/client.d.ts +28 -43
- package/dist/bridge/client.d.ts.map +1 -1
- package/dist/bridge/client.js +0 -2
- package/dist/bridge/client.js.map +1 -1
- package/dist/bridge/index.d.ts +1 -0
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/index.js +0 -2
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/types.d.ts +48 -32
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/bridge/types.js +0 -2
- package/dist/bridge/types.js.map +1 -1
- package/dist/bridge/unified.d.ts +101 -0
- package/dist/bridge/unified.d.ts.map +1 -0
- package/dist/bridge/unified.js +284 -0
- package/dist/bridge/unified.js.map +1 -0
- package/dist/chains.d.ts +62 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +108 -0
- package/dist/chains.js.map +1 -0
- package/dist/escrow/MutualStakeEscrow.d.ts +75 -0
- package/dist/escrow/MutualStakeEscrow.d.ts.map +1 -0
- package/dist/escrow/MutualStakeEscrow.js +339 -0
- package/dist/escrow/MutualStakeEscrow.js.map +1 -0
- package/dist/escrow/types.d.ts +59 -0
- package/dist/escrow/types.d.ts.map +1 -0
- package/dist/escrow/types.js +11 -0
- package/dist/escrow/types.js.map +1 -0
- package/dist/escrow/verifiers.d.ts +26 -0
- package/dist/escrow/verifiers.d.ts.map +1 -0
- package/dist/escrow/verifiers.js +53 -0
- package/dist/escrow/verifiers.js.map +1 -0
- package/dist/fiat/index.d.ts +10 -0
- package/dist/fiat/index.d.ts.map +1 -0
- package/dist/fiat/index.js +9 -0
- package/dist/fiat/index.js.map +1 -0
- package/dist/fiat/onramp.d.ts +101 -0
- package/dist/fiat/onramp.d.ts.map +1 -0
- package/dist/fiat/onramp.js +155 -0
- package/dist/fiat/onramp.js.map +1 -0
- package/dist/fiat/providers/index.d.ts +16 -0
- package/dist/fiat/providers/index.d.ts.map +1 -0
- package/dist/fiat/providers/index.js +30 -0
- package/dist/fiat/providers/index.js.map +1 -0
- package/dist/fiat/providers/moonpay.d.ts +22 -0
- package/dist/fiat/providers/moonpay.d.ts.map +1 -0
- package/dist/fiat/providers/moonpay.js +107 -0
- package/dist/fiat/providers/moonpay.js.map +1 -0
- package/dist/fiat/providers/stripe.d.ts +26 -0
- package/dist/fiat/providers/stripe.d.ts.map +1 -0
- package/dist/fiat/providers/stripe.js +135 -0
- package/dist/fiat/providers/stripe.js.map +1 -0
- package/dist/fiat/providers/transak.d.ts +26 -0
- package/dist/fiat/providers/transak.d.ts.map +1 -0
- package/dist/fiat/providers/transak.js +119 -0
- package/dist/fiat/providers/transak.js.map +1 -0
- package/dist/fiat/types.d.ts +106 -0
- package/dist/fiat/types.d.ts.map +1 -0
- package/dist/fiat/types.js +13 -0
- package/dist/fiat/types.js.map +1 -0
- package/dist/flash/executor.d.ts +119 -0
- package/dist/flash/executor.d.ts.map +1 -0
- package/dist/flash/executor.js +195 -0
- package/dist/flash/executor.js.map +1 -0
- package/dist/flash/index.d.ts +28 -0
- package/dist/flash/index.d.ts.map +1 -0
- package/dist/flash/index.js +29 -0
- package/dist/flash/index.js.map +1 -0
- package/dist/flash/scanner.d.ts +133 -0
- package/dist/flash/scanner.d.ts.map +1 -0
- package/dist/flash/scanner.js +212 -0
- package/dist/flash/scanner.js.map +1 -0
- package/dist/flash/types.d.ts +136 -0
- package/dist/flash/types.d.ts.map +1 -0
- package/dist/flash/types.js +23 -0
- package/dist/flash/types.js.map +1 -0
- package/dist/gas/index.d.ts +4 -0
- package/dist/gas/index.d.ts.map +1 -0
- package/dist/gas/index.js +3 -0
- package/dist/gas/index.js.map +1 -0
- package/dist/gas/sponsor.d.ts +70 -0
- package/dist/gas/sponsor.d.ts.map +1 -0
- package/dist/gas/sponsor.js +193 -0
- package/dist/gas/sponsor.js.map +1 -0
- package/dist/gas/types.d.ts +76 -0
- package/dist/gas/types.d.ts.map +1 -0
- package/dist/gas/types.js +21 -0
- package/dist/gas/types.js.map +1 -0
- package/dist/identity/agent-identity.d.ts +276 -0
- package/dist/identity/agent-identity.d.ts.map +1 -0
- package/dist/identity/agent-identity.js +300 -0
- package/dist/identity/agent-identity.js.map +1 -0
- package/dist/identity/erc6551.d.ts +441 -0
- package/dist/identity/erc6551.d.ts.map +1 -0
- package/dist/identity/erc6551.js +517 -0
- package/dist/identity/erc6551.js.map +1 -0
- package/dist/identity/erc8004.d.ts +296 -141
- package/dist/identity/erc8004.d.ts.map +1 -1
- package/dist/identity/erc8004.js +43 -12
- package/dist/identity/erc8004.js.map +1 -1
- package/dist/identity/index.d.ts +6 -2
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +3 -2
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/reputation.d.ts +318 -0
- package/dist/identity/reputation.d.ts.map +1 -0
- package/dist/identity/reputation.js +272 -0
- package/dist/identity/reputation.js.map +1 -0
- package/dist/identity/validation.d.ts +284 -0
- package/dist/identity/validation.d.ts.map +1 -0
- package/dist/identity/validation.js +226 -0
- package/dist/identity/validation.js.map +1 -0
- package/dist/index.d.ts +32624 -1011
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -12
- package/dist/index.js.map +1 -1
- package/dist/mev/index.d.ts +4 -0
- package/dist/mev/index.d.ts.map +1 -0
- package/dist/mev/index.js +8 -0
- package/dist/mev/index.js.map +1 -0
- package/dist/mev/protection.d.ts +54 -0
- package/dist/mev/protection.d.ts.map +1 -0
- package/dist/mev/protection.js +185 -0
- package/dist/mev/protection.js.map +1 -0
- package/dist/mev/risk.d.ts +19 -0
- package/dist/mev/risk.d.ts.map +1 -0
- package/dist/mev/risk.js +95 -0
- package/dist/mev/risk.js.map +1 -0
- package/dist/mev/types.d.ts +49 -0
- package/dist/mev/types.d.ts.map +1 -0
- package/dist/mev/types.js +2 -0
- package/dist/mev/types.js.map +1 -0
- package/dist/plugins/elizaos.d.ts +26 -14
- package/dist/plugins/elizaos.d.ts.map +1 -1
- package/dist/plugins/elizaos.js +0 -2
- package/dist/plugins/elizaos.js.map +1 -1
- package/dist/policy/SpendingPolicy.d.ts +89 -15
- package/dist/policy/SpendingPolicy.d.ts.map +1 -1
- package/dist/policy/SpendingPolicy.js +0 -2
- package/dist/policy/SpendingPolicy.js.map +1 -1
- package/dist/policy/SpendingPolicy.test.d.ts +2 -0
- package/dist/policy/SpendingPolicy.test.d.ts.map +1 -0
- package/dist/policy/SpendingPolicy.test.js +143 -0
- package/dist/policy/SpendingPolicy.test.js.map +1 -0
- package/dist/settlement/index.d.ts +4 -0
- package/dist/settlement/index.d.ts.map +1 -0
- package/dist/settlement/index.js +3 -0
- package/dist/settlement/index.js.map +1 -0
- package/dist/settlement/types.d.ts +66 -0
- package/dist/settlement/types.d.ts.map +1 -0
- package/dist/settlement/types.js +37 -0
- package/dist/settlement/types.js.map +1 -0
- package/dist/settlement/verifier.d.ts +75 -0
- package/dist/settlement/verifier.d.ts.map +1 -0
- package/dist/settlement/verifier.js +354 -0
- package/dist/settlement/verifier.js.map +1 -0
- package/dist/solana/bridge.d.ts +144 -0
- package/dist/solana/bridge.d.ts.map +1 -0
- package/dist/solana/bridge.js +352 -0
- package/dist/solana/bridge.js.map +1 -0
- package/dist/solana/index.d.ts +8 -0
- package/dist/solana/index.d.ts.map +1 -0
- package/dist/solana/index.js +6 -0
- package/dist/solana/index.js.map +1 -0
- package/dist/solana/swap.d.ts +85 -0
- package/dist/solana/swap.d.ts.map +1 -0
- package/dist/solana/swap.js +173 -0
- package/dist/solana/swap.js.map +1 -0
- package/dist/solana/types.d.ts +126 -0
- package/dist/solana/types.d.ts.map +1 -0
- package/dist/solana/types.js +10 -0
- package/dist/solana/types.js.map +1 -0
- package/dist/solana/wallet.d.ts +83 -0
- package/dist/solana/wallet.d.ts.map +1 -0
- package/dist/solana/wallet.js +164 -0
- package/dist/solana/wallet.js.map +1 -0
- package/dist/solana/x402.d.ts +69 -0
- package/dist/solana/x402.d.ts.map +1 -0
- package/dist/solana/x402.js +154 -0
- package/dist/solana/x402.js.map +1 -0
- package/dist/solver/adapter.d.ts +47 -0
- package/dist/solver/adapter.d.ts.map +1 -0
- package/dist/solver/adapter.js +146 -0
- package/dist/solver/adapter.js.map +1 -0
- package/dist/solver/analyzer.d.ts +48 -0
- package/dist/solver/analyzer.d.ts.map +1 -0
- package/dist/solver/analyzer.js +171 -0
- package/dist/solver/analyzer.js.map +1 -0
- package/dist/solver/builder.d.ts +31 -0
- package/dist/solver/builder.d.ts.map +1 -0
- package/dist/solver/builder.js +60 -0
- package/dist/solver/builder.js.map +1 -0
- package/dist/solver/index.d.ts +22 -0
- package/dist/solver/index.d.ts.map +1 -0
- package/dist/solver/index.js +25 -0
- package/dist/solver/index.js.map +1 -0
- package/dist/solver/types.d.ts +115 -0
- package/dist/solver/types.d.ts.map +1 -0
- package/dist/solver/types.js +10 -0
- package/dist/solver/types.js.map +1 -0
- package/dist/spend-guard/index.d.ts +125 -0
- package/dist/spend-guard/index.d.ts.map +1 -0
- package/dist/spend-guard/index.js +150 -0
- package/dist/spend-guard/index.js.map +1 -0
- package/dist/swap/SwapModule.d.ts +28 -39
- package/dist/swap/SwapModule.d.ts.map +1 -1
- package/dist/swap/SwapModule.js +2 -4
- package/dist/swap/SwapModule.js.map +1 -1
- package/dist/swap/abi.d.ts.map +1 -1
- package/dist/swap/abi.js +0 -2
- package/dist/swap/abi.js.map +1 -1
- package/dist/swap/index.d.ts +1 -0
- package/dist/swap/index.d.ts.map +1 -1
- package/dist/swap/index.js +0 -2
- package/dist/swap/index.js.map +1 -1
- package/dist/swap/router/cache.d.ts +13 -0
- package/dist/swap/router/cache.d.ts.map +1 -0
- package/dist/swap/router/cache.js +30 -0
- package/dist/swap/router/cache.js.map +1 -0
- package/dist/swap/router/flashbots.d.ts +10 -0
- package/dist/swap/router/flashbots.d.ts.map +1 -0
- package/dist/swap/router/flashbots.js +43 -0
- package/dist/swap/router/flashbots.js.map +1 -0
- package/dist/swap/router/health.d.ts +17 -0
- package/dist/swap/router/health.d.ts.map +1 -0
- package/dist/swap/router/health.js +38 -0
- package/dist/swap/router/health.js.map +1 -0
- package/dist/swap/router/index.d.ts +10 -0
- package/dist/swap/router/index.d.ts.map +1 -0
- package/dist/swap/router/index.js +10 -0
- package/dist/swap/router/index.js.map +1 -0
- package/dist/swap/router/providers/cowswap.d.ts +11 -0
- package/dist/swap/router/providers/cowswap.d.ts.map +1 -0
- package/dist/swap/router/providers/cowswap.js +79 -0
- package/dist/swap/router/providers/cowswap.js.map +1 -0
- package/dist/swap/router/providers/index.d.ts +20 -0
- package/dist/swap/router/providers/index.d.ts.map +1 -0
- package/dist/swap/router/providers/index.js +32 -0
- package/dist/swap/router/providers/index.js.map +1 -0
- package/dist/swap/router/providers/jupiter.d.ts +12 -0
- package/dist/swap/router/providers/jupiter.d.ts.map +1 -0
- package/dist/swap/router/providers/jupiter.js +73 -0
- package/dist/swap/router/providers/jupiter.js.map +1 -0
- package/dist/swap/router/providers/lifi.d.ts +11 -0
- package/dist/swap/router/providers/lifi.d.ts.map +1 -0
- package/dist/swap/router/providers/lifi.js +123 -0
- package/dist/swap/router/providers/lifi.js.map +1 -0
- package/dist/swap/router/providers/oneinch.d.ts +13 -0
- package/dist/swap/router/providers/oneinch.d.ts.map +1 -0
- package/dist/swap/router/providers/oneinch.js +71 -0
- package/dist/swap/router/providers/oneinch.js.map +1 -0
- package/dist/swap/router/providers/paraswap.d.ts +11 -0
- package/dist/swap/router/providers/paraswap.d.ts.map +1 -0
- package/dist/swap/router/providers/paraswap.js +73 -0
- package/dist/swap/router/providers/paraswap.js.map +1 -0
- package/dist/swap/router/providers/uniswap.d.ts +31 -0
- package/dist/swap/router/providers/uniswap.d.ts.map +1 -0
- package/dist/swap/router/providers/uniswap.js +237 -0
- package/dist/swap/router/providers/uniswap.js.map +1 -0
- package/dist/swap/router/providers/zerox.d.ts +13 -0
- package/dist/swap/router/providers/zerox.d.ts.map +1 -0
- package/dist/swap/router/providers/zerox.js +94 -0
- package/dist/swap/router/providers/zerox.js.map +1 -0
- package/dist/swap/router/router.d.ts +86 -0
- package/dist/swap/router/router.d.ts.map +1 -0
- package/dist/swap/router/router.js +224 -0
- package/dist/swap/router/router.js.map +1 -0
- package/dist/swap/router/rsi/engine.d.ts +60 -0
- package/dist/swap/router/rsi/engine.d.ts.map +1 -0
- package/dist/swap/router/rsi/engine.js +483 -0
- package/dist/swap/router/rsi/engine.js.map +1 -0
- package/dist/swap/router/rsi/index.d.ts +3 -0
- package/dist/swap/router/rsi/index.d.ts.map +1 -0
- package/dist/swap/router/rsi/index.js +3 -0
- package/dist/swap/router/rsi/index.js.map +1 -0
- package/dist/swap/router/rsi/types.d.ts +106 -0
- package/dist/swap/router/rsi/types.d.ts.map +1 -0
- package/dist/swap/router/rsi/types.js +3 -0
- package/dist/swap/router/rsi/types.js.map +1 -0
- package/dist/swap/router/types.d.ts +120 -0
- package/dist/swap/router/types.d.ts.map +1 -0
- package/dist/swap/router/types.js +16 -0
- package/dist/swap/router/types.js.map +1 -0
- package/dist/swap/types.d.ts +41 -7
- package/dist/swap/types.d.ts.map +1 -1
- package/dist/swap/types.js +1 -3
- package/dist/swap/types.js.map +1 -1
- package/dist/tax/engine.d.ts +131 -0
- package/dist/tax/engine.d.ts.map +1 -0
- package/dist/tax/engine.js +307 -0
- package/dist/tax/engine.js.map +1 -0
- package/dist/tax/index.d.ts +9 -0
- package/dist/tax/index.d.ts.map +1 -0
- package/dist/tax/index.js +12 -0
- package/dist/tax/index.js.map +1 -0
- package/dist/tax/lots.d.ts +60 -0
- package/dist/tax/lots.d.ts.map +1 -0
- package/dist/tax/lots.js +129 -0
- package/dist/tax/lots.js.map +1 -0
- package/dist/tax/types.d.ts +113 -0
- package/dist/tax/types.d.ts.map +1 -0
- package/dist/tax/types.js +18 -0
- package/dist/tax/types.js.map +1 -0
- package/dist/types.d.ts +106 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +1 -1
- package/dist/x402/__tests__/budget.test.d.ts +2 -0
- package/dist/x402/__tests__/budget.test.d.ts.map +1 -0
- package/dist/x402/__tests__/budget.test.js +114 -0
- package/dist/x402/__tests__/budget.test.js.map +1 -0
- package/dist/x402/__tests__/client.test.d.ts +2 -0
- package/dist/x402/__tests__/client.test.d.ts.map +1 -0
- package/dist/x402/__tests__/client.test.js +107 -0
- package/dist/x402/__tests__/client.test.js.map +1 -0
- package/dist/x402/budget.d.ts +23 -15
- package/dist/x402/budget.d.ts.map +1 -1
- package/dist/x402/budget.js +0 -2
- package/dist/x402/budget.js.map +1 -1
- package/dist/x402/chains/abstract/index.d.ts +87 -59
- package/dist/x402/chains/abstract/index.d.ts.map +1 -1
- package/dist/x402/chains/abstract/index.js +0 -2
- package/dist/x402/chains/abstract/index.js.map +1 -1
- package/dist/x402/client.d.ts +27 -13
- package/dist/x402/client.d.ts.map +1 -1
- package/dist/x402/client.js +0 -2
- package/dist/x402/client.js.map +1 -1
- package/dist/x402/index.d.ts +2 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +0 -2
- package/dist/x402/index.js.map +1 -1
- package/dist/x402/middleware.d.ts +4 -4
- package/dist/x402/middleware.d.ts.map +1 -1
- package/dist/x402/middleware.js +0 -2
- package/dist/x402/middleware.js.map +1 -1
- package/dist/x402/types.d.ts +88 -5
- package/dist/x402/types.d.ts.map +1 -1
- package/dist/x402/types.js +0 -2
- package/dist/x402/types.js.map +1 -1
- package/dist/yield/index.d.ts +26 -0
- package/dist/yield/index.d.ts.map +1 -0
- package/dist/yield/index.js +29 -0
- package/dist/yield/index.js.map +1 -0
- package/dist/yield/rates.d.ts +114 -0
- package/dist/yield/rates.d.ts.map +1 -0
- package/dist/yield/rates.js +351 -0
- package/dist/yield/rates.js.map +1 -0
- package/dist/yield/types.d.ts +134 -0
- package/dist/yield/types.d.ts.map +1 -0
- package/dist/yield/types.js +24 -0
- package/dist/yield/types.js.map +1 -0
- package/dist/yield/vault.d.ts +112 -0
- package/dist/yield/vault.d.ts.map +1 -0
- package/dist/yield/vault.js +264 -0
- package/dist/yield/vault.js.map +1 -0
- package/package.json +18 -32
- package/dist/__tests__/identity.did.test.d.ts +0 -2
- package/dist/__tests__/identity.did.test.d.ts.map +0 -1
- package/dist/__tests__/identity.did.test.js +0 -56
- package/dist/__tests__/identity.did.test.js.map +0 -1
- package/dist/__tests__/staking.test.d.ts +0 -2
- package/dist/__tests__/staking.test.d.ts.map +0 -1
- package/dist/__tests__/staking.test.js +0 -70
- package/dist/__tests__/staking.test.js.map +0 -1
- package/dist/__tests__/verify.test.d.ts +0 -2
- package/dist/__tests__/verify.test.d.ts.map +0 -1
- package/dist/__tests__/verify.test.js +0 -57
- package/dist/__tests__/verify.test.js.map +0 -1
- package/dist/identity/did.d.ts +0 -66
- package/dist/identity/did.d.ts.map +0 -1
- package/dist/identity/did.js +0 -186
- package/dist/identity/did.js.map +0 -1
- package/dist/staking/AgentStakingPool.d.ts +0 -100
- package/dist/staking/AgentStakingPool.d.ts.map +0 -1
- package/dist/staking/AgentStakingPool.js +0 -298
- package/dist/staking/AgentStakingPool.js.map +0 -1
- package/dist/staking/index.d.ts +0 -2
- package/dist/staking/index.d.ts.map +0 -1
- package/dist/staking/index.js +0 -2
- package/dist/staking/index.js.map +0 -1
- package/dist/verify/index.d.ts +0 -2
- package/dist/verify/index.d.ts.map +0 -1
- package/dist/verify/index.js +0 -2
- package/dist/verify/index.js.map +0 -1
- package/dist/verify/verifyAgent.d.ts +0 -42
- package/dist/verify/verifyAgent.d.ts.map +0 -1
- package/dist/verify/verifyAgent.js +0 -216
- package/dist/verify/verifyAgent.js.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export type SwapStrategy = 'best-net-output' | 'fastest' | 'lowest-gas' | 'mev-protected';
|
|
2
|
+
/** Unified quote format returned by every provider */
|
|
3
|
+
export interface AggregatorQuote {
|
|
4
|
+
/** Provider name (e.g. '1inch', '0x', 'paraswap', 'cowswap', 'lifi', 'uniswap', 'jupiter') */
|
|
5
|
+
provider: string;
|
|
6
|
+
/** Input token symbol or address */
|
|
7
|
+
fromToken: string;
|
|
8
|
+
/** Output token symbol or address */
|
|
9
|
+
toToken: string;
|
|
10
|
+
/** Input amount in smallest unit (e.g. wei, lamports) */
|
|
11
|
+
fromAmount: bigint;
|
|
12
|
+
/** Expected output amount in smallest unit */
|
|
13
|
+
toAmount: bigint;
|
|
14
|
+
/** Gas estimate in wei (0 for Solana/gasless) */
|
|
15
|
+
gasEstimate: bigint;
|
|
16
|
+
/** Gas cost in USD */
|
|
17
|
+
gasEstimateUsd: number;
|
|
18
|
+
/** Provider platform fee in basis points */
|
|
19
|
+
platformFee: number;
|
|
20
|
+
/** toAmount adjusted for gas cost — used for ranking */
|
|
21
|
+
netOutput: bigint;
|
|
22
|
+
/** Price impact as percentage (e.g. 0.3 = 0.3%) */
|
|
23
|
+
priceImpact: number;
|
|
24
|
+
/** DEX route path (e.g. ['Uniswap V3', 'Curve']) */
|
|
25
|
+
route: string[];
|
|
26
|
+
/** Estimated execution time in milliseconds */
|
|
27
|
+
estimatedTimeMs: number;
|
|
28
|
+
/** Whether this quote is MEV-protected (CowSwap, 1inch Fusion) */
|
|
29
|
+
mevProtected: boolean;
|
|
30
|
+
/** Ready-to-submit transaction data (if provided by aggregator) */
|
|
31
|
+
txData?: {
|
|
32
|
+
to: string;
|
|
33
|
+
data: string;
|
|
34
|
+
value: bigint;
|
|
35
|
+
gasLimit: bigint;
|
|
36
|
+
};
|
|
37
|
+
/** Token decimals for the output token (needed for USD normalization) */
|
|
38
|
+
toTokenDecimals?: number;
|
|
39
|
+
/** USD price of one unit of the output token */
|
|
40
|
+
toTokenPriceUsd?: number;
|
|
41
|
+
/** Raw provider response for debugging */
|
|
42
|
+
metadata?: Record<string, unknown>;
|
|
43
|
+
}
|
|
44
|
+
/** Receipt from waitForTransaction */
|
|
45
|
+
export interface TransactionReceipt {
|
|
46
|
+
status: 'success' | 'reverted';
|
|
47
|
+
blockNumber?: number;
|
|
48
|
+
gasUsed?: bigint;
|
|
49
|
+
[key: string]: unknown;
|
|
50
|
+
}
|
|
51
|
+
/** Result after executing a swap */
|
|
52
|
+
export interface AggregatorSwapResult {
|
|
53
|
+
/** Transaction hash (EVM) or signature (Solana) */
|
|
54
|
+
txHash: string;
|
|
55
|
+
/** Quote that was executed */
|
|
56
|
+
quote: AggregatorQuote;
|
|
57
|
+
/** Chain the swap was executed on */
|
|
58
|
+
chain: string;
|
|
59
|
+
/** Receipt (populated when waitForReceipt: true) */
|
|
60
|
+
receipt?: TransactionReceipt;
|
|
61
|
+
/** Whether the transaction succeeded (populated when waitForReceipt: true) */
|
|
62
|
+
success?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/** Parameters for requesting a quote */
|
|
65
|
+
export interface QuoteParams {
|
|
66
|
+
/** Token symbol or address (e.g. 'USDC' or '0x833589...') */
|
|
67
|
+
fromToken: string;
|
|
68
|
+
/** Token symbol or address */
|
|
69
|
+
toToken: string;
|
|
70
|
+
/** Human-readable amount (e.g. '100' for 100 USDC) */
|
|
71
|
+
amount: string;
|
|
72
|
+
/** Chain name: 'ethereum', 'base', 'arbitrum', 'optimism', 'polygon', 'solana', etc. */
|
|
73
|
+
chain: string;
|
|
74
|
+
/** Sender address (required by some providers for accurate quotes) */
|
|
75
|
+
fromAddress?: string;
|
|
76
|
+
/** Slippage tolerance in bps (default: 50 = 0.5%) */
|
|
77
|
+
slippageBps?: number;
|
|
78
|
+
}
|
|
79
|
+
/** Provider interface — each aggregator implements this */
|
|
80
|
+
export interface ISwapProvider {
|
|
81
|
+
/** Provider identifier */
|
|
82
|
+
readonly name: string;
|
|
83
|
+
/** Chains this provider supports (lowercase) */
|
|
84
|
+
readonly supportedChains: string[];
|
|
85
|
+
/** Fetch a quote; returns null if unsupported or on error */
|
|
86
|
+
getQuote(params: QuoteParams, timeoutMs: number): Promise<AggregatorQuote | null>;
|
|
87
|
+
}
|
|
88
|
+
/** SmartSwapRouter configuration */
|
|
89
|
+
export interface SmartSwapConfig {
|
|
90
|
+
/** Providers to query (default: all available for chain) */
|
|
91
|
+
providers?: string[];
|
|
92
|
+
/** Ranking strategy (default: 'best-net-output') */
|
|
93
|
+
strategy?: SwapStrategy;
|
|
94
|
+
/** Per-provider timeout in ms (default: 5000) */
|
|
95
|
+
timeoutMs?: number;
|
|
96
|
+
/** Default slippage in bps (default: 50) */
|
|
97
|
+
slippageBps?: number;
|
|
98
|
+
/** Providers to exclude */
|
|
99
|
+
excludeProviders?: string[];
|
|
100
|
+
/** API keys for providers that require them */
|
|
101
|
+
apiKeys?: {
|
|
102
|
+
oneInch?: string;
|
|
103
|
+
zerox?: string;
|
|
104
|
+
};
|
|
105
|
+
/** Quote cache TTL in ms (default: 3000, set to 0 to disable) */
|
|
106
|
+
cacheTtlMs?: number;
|
|
107
|
+
/** Max consecutive failures before a provider is marked unhealthy (default: 3) */
|
|
108
|
+
healthMaxFailures?: number;
|
|
109
|
+
/** Cooldown in ms before retrying an unhealthy provider (default: 60000) */
|
|
110
|
+
healthCooldownMs?: number;
|
|
111
|
+
/** [MAX-ADDED] RSI engine config — opt-in self-improvement (default: disabled) */
|
|
112
|
+
rsi?: import('./rsi/types.js').RSIConfig;
|
|
113
|
+
/** [MAX-ADDED] Wallet goals for RSI optimization */
|
|
114
|
+
goals?: import('./rsi/types.js').WalletGoals;
|
|
115
|
+
}
|
|
116
|
+
/** Chain name → chain ID mapping for EVM chains */
|
|
117
|
+
export declare const CHAIN_IDS: Record<string, number>;
|
|
118
|
+
/** Reverse mapping: chain ID → name */
|
|
119
|
+
export declare const CHAIN_NAMES: Record<number, string>;
|
|
120
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/swap/router/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// [MAX-ADDED] SmartSwapRouter types — multi-DEX meta-aggregation for agentwallet-sdk
|
|
2
|
+
// Separate from the existing Uniswap-specific SwapQuote in ../types.ts
|
|
3
|
+
/** Chain name → chain ID mapping for EVM chains */
|
|
4
|
+
export const CHAIN_IDS = {
|
|
5
|
+
ethereum: 1,
|
|
6
|
+
base: 8453,
|
|
7
|
+
arbitrum: 42161,
|
|
8
|
+
optimism: 10,
|
|
9
|
+
polygon: 137,
|
|
10
|
+
avalanche: 43114,
|
|
11
|
+
bnb: 56,
|
|
12
|
+
gnosis: 100,
|
|
13
|
+
};
|
|
14
|
+
/** Reverse mapping: chain ID → name */
|
|
15
|
+
export const CHAIN_NAMES = Object.fromEntries(Object.entries(CHAIN_IDS).map(([k, v]) => [v, k]));
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/swap/router/types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,uEAAuE;AA4HvE,mDAAmD;AACnD,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,KAAK;IAChB,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,WAAW,GAA2B,MAAM,CAAC,WAAW,CACnE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAClD,CAAC"}
|
package/dist/swap/types.d.ts
CHANGED
|
@@ -1,17 +1,51 @@
|
|
|
1
|
+
import type { Address, Hash } from 'viem';
|
|
2
|
+
/** Uniswap V3 fee tier options */
|
|
3
|
+
export type UniswapFeeTier = 100 | 500 | 3000 | 10000;
|
|
4
|
+
export interface SwapQuote {
|
|
5
|
+
tokenIn: Address;
|
|
6
|
+
tokenOut: Address;
|
|
7
|
+
amountInRaw: bigint;
|
|
8
|
+
amountInNet: bigint;
|
|
9
|
+
feeAmount: bigint;
|
|
10
|
+
amountOut: bigint;
|
|
11
|
+
amountOutMinimum: bigint;
|
|
12
|
+
poolFeeTier: UniswapFeeTier;
|
|
13
|
+
effectiveRate: number;
|
|
14
|
+
gasEstimate: bigint;
|
|
15
|
+
}
|
|
16
|
+
export interface SwapOptions {
|
|
17
|
+
slippageBps?: number;
|
|
18
|
+
feeTiers?: UniswapFeeTier[];
|
|
19
|
+
deadlineSecs?: number;
|
|
20
|
+
feeWallet?: Address;
|
|
21
|
+
}
|
|
22
|
+
export interface SwapResult {
|
|
23
|
+
txHash: Hash;
|
|
24
|
+
feeTxHash?: Hash;
|
|
25
|
+
quote: SwapQuote;
|
|
26
|
+
approvalRequired: boolean;
|
|
27
|
+
approvalTxHash?: Hash;
|
|
28
|
+
}
|
|
29
|
+
export interface SwapModuleConfig {
|
|
30
|
+
routerAddress: Address;
|
|
31
|
+
quoterAddress: Address;
|
|
32
|
+
feeBps: number;
|
|
33
|
+
feeWallet: Address;
|
|
34
|
+
}
|
|
1
35
|
/** Well-known Base Mainnet token addresses */
|
|
2
36
|
export declare const BASE_TOKENS: {
|
|
3
|
-
USDC:
|
|
4
|
-
WETH:
|
|
5
|
-
cbETH:
|
|
6
|
-
WNATIVE:
|
|
37
|
+
USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
38
|
+
WETH: "0x4200000000000000000000000000000000000006";
|
|
39
|
+
cbETH: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22";
|
|
40
|
+
WNATIVE: "0x4200000000000000000000000000000000000006";
|
|
7
41
|
};
|
|
8
42
|
/** Uniswap V3 contract addresses on Base Mainnet (chain 8453) */
|
|
9
43
|
export declare const UNISWAP_V3_BASE: {
|
|
10
|
-
ROUTER:
|
|
11
|
-
QUOTER_V2:
|
|
44
|
+
ROUTER: "0x2626664c2603336E57B271c5C0b26F421741e481";
|
|
45
|
+
QUOTER_V2: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a";
|
|
12
46
|
};
|
|
13
47
|
/** Protocol fee in bps — 0.875% */
|
|
14
|
-
export declare const PROTOCOL_FEE_BPS =
|
|
48
|
+
export declare const PROTOCOL_FEE_BPS = 875;
|
|
15
49
|
/** Default slippage in bps — 0.5% */
|
|
16
50
|
export declare const DEFAULT_SLIPPAGE_BPS = 50;
|
|
17
51
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/swap/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,8CAA8C;AAC9C,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,qCAAqC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC"}
|
package/dist/swap/types.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
/** Well-known Base Mainnet token addresses */
|
|
3
2
|
export const BASE_TOKENS = {
|
|
4
3
|
USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
@@ -12,8 +11,7 @@ export const UNISWAP_V3_BASE = {
|
|
|
12
11
|
QUOTER_V2: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a',
|
|
13
12
|
};
|
|
14
13
|
/** Protocol fee in bps — 0.875% */
|
|
15
|
-
export const PROTOCOL_FEE_BPS =
|
|
14
|
+
export const PROTOCOL_FEE_BPS = 875;
|
|
16
15
|
/** Default slippage in bps — 0.5% */
|
|
17
16
|
export const DEFAULT_SLIPPAGE_BPS = 50;
|
|
18
|
-
//# sourceMappingURL=types.js.map
|
|
19
17
|
//# sourceMappingURL=types.js.map
|
package/dist/swap/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"AAwCA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,4CAAqD;IAC3D,IAAI,EAAE,4CAAqD;IAC3D,KAAK,EAAE,4CAAqD;IAC5D,OAAO,EAAE,4CAAqD;CAC/D,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,4CAAqD;IAC7D,SAAS,EAAE,4CAAqD;CACjE,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,qCAAqC;AACrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tax / P&L Engine — Core Engine
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ DISCLAIMER: This module is for informational purposes only.
|
|
5
|
+
* Tax laws are complex, jurisdiction-specific, and change frequently.
|
|
6
|
+
* Always consult a qualified tax professional before filing. This is NOT tax advice.
|
|
7
|
+
*
|
|
8
|
+
* Key rules modeled (US-centric):
|
|
9
|
+
* - Every token swap = taxable disposal of fromToken + acquisition of toToken
|
|
10
|
+
* - Short-term gain: held < 365 days → taxed as ordinary income
|
|
11
|
+
* - Long-term gain: held ≥ 365 days → preferential capital gains rates
|
|
12
|
+
* - Yield received = ordinary income (full rate)
|
|
13
|
+
* - Gas fees = reduce net gain (treated as selling expense)
|
|
14
|
+
* - Wash sale rule: NOT applicable to crypto as of 2024 (no legislation yet)
|
|
15
|
+
* - Fiat on-ramp = establishes cost basis, NOT a taxable event
|
|
16
|
+
* - Bridge (cross-chain move) = generally NOT taxable (same owner, same asset)
|
|
17
|
+
*/
|
|
18
|
+
import type { TaxEngineConfig, TaxEvent, TaxLot, RealizedGain, TaxSummary } from './types.js';
|
|
19
|
+
export declare class TaxEngine {
|
|
20
|
+
private config;
|
|
21
|
+
private lotManager;
|
|
22
|
+
private events;
|
|
23
|
+
private gains;
|
|
24
|
+
constructor(config?: TaxEngineConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Record a swap — the most common taxable event in DeFi.
|
|
27
|
+
*
|
|
28
|
+
* A swap creates two sub-events:
|
|
29
|
+
* 1. Disposal of fromToken (taxable — creates realized gain/loss)
|
|
30
|
+
* 2. Acquisition of toToken (establishes new cost basis)
|
|
31
|
+
*
|
|
32
|
+
* Returns the RealizedGain record, or null if no lots were tracked
|
|
33
|
+
* (zero cost basis scenario — gain equals full proceeds).
|
|
34
|
+
*/
|
|
35
|
+
recordSwap(params: {
|
|
36
|
+
txHash: string;
|
|
37
|
+
chain: string;
|
|
38
|
+
timestamp: number;
|
|
39
|
+
fromToken: string;
|
|
40
|
+
fromTokenAddress: string;
|
|
41
|
+
fromAmount: bigint;
|
|
42
|
+
fromValueUsd: number;
|
|
43
|
+
toToken: string;
|
|
44
|
+
toTokenAddress: string;
|
|
45
|
+
toAmount: bigint;
|
|
46
|
+
toValueUsd: number;
|
|
47
|
+
gasPaidUsd?: number;
|
|
48
|
+
}): RealizedGain | null;
|
|
49
|
+
/**
|
|
50
|
+
* Record yield received from a DeFi protocol (taxable as ordinary income).
|
|
51
|
+
*
|
|
52
|
+
* Yield is treated as income at the fair market value when received.
|
|
53
|
+
* The cost basis of the new lot = market value at receipt.
|
|
54
|
+
*/
|
|
55
|
+
recordYieldReceived(params: {
|
|
56
|
+
txHash?: string;
|
|
57
|
+
chain: string;
|
|
58
|
+
timestamp: number;
|
|
59
|
+
token: string;
|
|
60
|
+
tokenAddress: string;
|
|
61
|
+
amount: bigint;
|
|
62
|
+
valueUsd: number;
|
|
63
|
+
protocol: string;
|
|
64
|
+
}): void;
|
|
65
|
+
/**
|
|
66
|
+
* Record a fiat on-ramp (buying crypto with fiat currency).
|
|
67
|
+
*
|
|
68
|
+
* This is NOT a taxable event — it establishes the cost basis for future disposals.
|
|
69
|
+
* The cost basis = amount paid in fiat (USD).
|
|
70
|
+
*/
|
|
71
|
+
recordFiatOnRamp(params: {
|
|
72
|
+
txHash?: string;
|
|
73
|
+
chain: string;
|
|
74
|
+
timestamp: number;
|
|
75
|
+
token: string;
|
|
76
|
+
tokenAddress: string;
|
|
77
|
+
amount: bigint;
|
|
78
|
+
paidUsd: number;
|
|
79
|
+
}): void;
|
|
80
|
+
/**
|
|
81
|
+
* Generate an annual tax summary.
|
|
82
|
+
*
|
|
83
|
+
* ⚠️ For informational purposes only. Consult a tax professional.
|
|
84
|
+
*/
|
|
85
|
+
getSummary(year?: number): TaxSummary;
|
|
86
|
+
/**
|
|
87
|
+
* Export to CSV format compatible with TurboTax, Koinly, CoinTracker, and similar tools.
|
|
88
|
+
*
|
|
89
|
+
* ⚠️ For informational purposes only. Consult a tax professional.
|
|
90
|
+
* All USD values are formatted to 2 decimal places to prevent CSV parsing issues.
|
|
91
|
+
*/
|
|
92
|
+
exportCSV(year?: number): string;
|
|
93
|
+
/**
|
|
94
|
+
* Export to JSON (for programmatic use, custom reporting, CPA handoff).
|
|
95
|
+
*
|
|
96
|
+
* ⚠️ For informational purposes only. Consult a tax professional.
|
|
97
|
+
*/
|
|
98
|
+
exportJSON(year?: number): {
|
|
99
|
+
summary: TaxSummary;
|
|
100
|
+
gains: RealizedGain[];
|
|
101
|
+
events: TaxEvent[];
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Export full engine state for persistence across sessions.
|
|
105
|
+
*/
|
|
106
|
+
exportState(): {
|
|
107
|
+
lots: Record<string, TaxLot[]>;
|
|
108
|
+
events: TaxEvent[];
|
|
109
|
+
gains: RealizedGain[];
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Load state from a previous session (e.g., from database or JSON file).
|
|
113
|
+
* After loading, new swaps will correctly build on existing lot inventory.
|
|
114
|
+
*/
|
|
115
|
+
loadState(state: {
|
|
116
|
+
lots: Record<string, TaxLot[]>;
|
|
117
|
+
events: TaxEvent[];
|
|
118
|
+
gains: RealizedGain[];
|
|
119
|
+
}): void;
|
|
120
|
+
/**
|
|
121
|
+
* Determine if a disposal is short-term or long-term.
|
|
122
|
+
*
|
|
123
|
+
* Uses the acquisition timestamp of the earliest lot consumed (conservative
|
|
124
|
+
* for FIFO; oldest lot determines the holding period of the bulk of the disposal).
|
|
125
|
+
*
|
|
126
|
+
* Rule: held ≥ 365 days = long-term; held < 365 days = short-term.
|
|
127
|
+
* If no lots were tracked, defaults to short-term (conservative).
|
|
128
|
+
*/
|
|
129
|
+
private determineGainType;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/tax/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,UAAU,EAEX,MAAM,YAAY,CAAC;AAMpB,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAsB;gBAEvB,MAAM,GAAE,eAAoB;IAWxC;;;;;;;;;OASG;IACH,UAAU,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,YAAY,GAAG,IAAI;IA4EvB;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IAiCR;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI;IAgCR;;;;OAIG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IAwCrC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAoChC;;;;OAIG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;QACzB,OAAO,EAAE,UAAU,CAAC;QACpB,KAAK,EAAE,YAAY,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,CAAC;KACpB;IAiBD;;OAEG;IACH,WAAW,IAAI;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnB,KAAK,EAAE,YAAY,EAAE,CAAC;KACvB;IAQD;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnB,KAAK,EAAE,YAAY,EAAE,CAAC;KACvB,GAAG,IAAI;IAQR;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;CAiB1B"}
|