@waiaas/actions 2.10.0-rc.8 → 2.10.0-rc.9
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/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/dcent-swap/auto-router.d.ts +89 -0
- package/dist/providers/dcent-swap/auto-router.d.ts.map +1 -0
- package/dist/providers/dcent-swap/auto-router.js +247 -0
- package/dist/providers/dcent-swap/auto-router.js.map +1 -0
- package/dist/providers/dcent-swap/config.d.ts +30 -0
- package/dist/providers/dcent-swap/config.d.ts.map +1 -0
- package/dist/providers/dcent-swap/config.js +22 -0
- package/dist/providers/dcent-swap/config.js.map +1 -0
- package/dist/providers/dcent-swap/currency-mapper.d.ts +19 -0
- package/dist/providers/dcent-swap/currency-mapper.d.ts.map +1 -0
- package/dist/providers/dcent-swap/currency-mapper.js +161 -0
- package/dist/providers/dcent-swap/currency-mapper.js.map +1 -0
- package/dist/providers/dcent-swap/dcent-api-client.d.ts +80 -0
- package/dist/providers/dcent-swap/dcent-api-client.d.ts.map +1 -0
- package/dist/providers/dcent-swap/dcent-api-client.js +147 -0
- package/dist/providers/dcent-swap/dcent-api-client.js.map +1 -0
- package/dist/providers/dcent-swap/dex-swap.d.ts +60 -0
- package/dist/providers/dcent-swap/dex-swap.d.ts.map +1 -0
- package/dist/providers/dcent-swap/dex-swap.js +210 -0
- package/dist/providers/dcent-swap/dex-swap.js.map +1 -0
- package/dist/providers/dcent-swap/exchange-status-tracker.d.ts +39 -0
- package/dist/providers/dcent-swap/exchange-status-tracker.d.ts.map +1 -0
- package/dist/providers/dcent-swap/exchange-status-tracker.js +101 -0
- package/dist/providers/dcent-swap/exchange-status-tracker.js.map +1 -0
- package/dist/providers/dcent-swap/exchange.d.ts +60 -0
- package/dist/providers/dcent-swap/exchange.d.ts.map +1 -0
- package/dist/providers/dcent-swap/exchange.js +139 -0
- package/dist/providers/dcent-swap/exchange.js.map +1 -0
- package/dist/providers/dcent-swap/index.d.ts +61 -0
- package/dist/providers/dcent-swap/index.d.ts.map +1 -0
- package/dist/providers/dcent-swap/index.js +244 -0
- package/dist/providers/dcent-swap/index.js.map +1 -0
- package/dist/providers/dcent-swap/schemas.d.ts +441 -0
- package/dist/providers/dcent-swap/schemas.d.ts.map +1 -0
- package/dist/providers/dcent-swap/schemas.js +106 -0
- package/dist/providers/dcent-swap/schemas.js.map +1 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,14 @@ export { buildRegistrationFile } from './providers/erc8004/registration-file.js'
|
|
|
55
55
|
export { IDENTITY_REGISTRY_ABI } from './providers/erc8004/identity-abi.js';
|
|
56
56
|
export { REPUTATION_REGISTRY_ABI } from './providers/erc8004/reputation-abi.js';
|
|
57
57
|
export { VALIDATION_REGISTRY_ABI } from './providers/erc8004/validation-abi.js';
|
|
58
|
+
export { DcentSwapActionProvider } from './providers/dcent-swap/index.js';
|
|
59
|
+
export { DCENT_SWAP_DEFAULTS } from './providers/dcent-swap/config.js';
|
|
60
|
+
export type { DcentSwapConfig } from './providers/dcent-swap/config.js';
|
|
61
|
+
export { DcentSwapApiClient } from './providers/dcent-swap/dcent-api-client.js';
|
|
62
|
+
export { caip19ToDcentId, dcentIdToCaip19 } from './providers/dcent-swap/currency-mapper.js';
|
|
63
|
+
export { ExchangeStatusTracker } from './providers/dcent-swap/exchange-status-tracker.js';
|
|
64
|
+
export type { ExchangeQuoteResult, ExecuteExchangeParams, ExchangeResult } from './providers/dcent-swap/exchange.js';
|
|
65
|
+
export type { DcentQuoteResult, GetQuotesParams } from './providers/dcent-swap/dex-swap.js';
|
|
58
66
|
export { ActionApiClient } from './common/action-api-client.js';
|
|
59
67
|
export { asBps, asPct, clampSlippageBps, bpsToPct, pctToBps } from './common/slippage.js';
|
|
60
68
|
export type { SlippageBps, SlippagePct } from './common/slippage.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,cAAc,CAAC;AAWjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { PendleYieldProvider } from './providers/pendle/index.js';
|
|
|
13
13
|
import { DriftPerpProvider } from './providers/drift/index.js';
|
|
14
14
|
import { Erc8004ActionProvider } from './providers/erc8004/index.js';
|
|
15
15
|
import { ERC8004_DEFAULTS } from './providers/erc8004/config.js';
|
|
16
|
+
import { DcentSwapActionProvider } from './providers/dcent-swap/index.js';
|
|
16
17
|
// Re-export provider classes
|
|
17
18
|
export { JupiterSwapActionProvider } from './providers/jupiter-swap/index.js';
|
|
18
19
|
export { JUPITER_PROGRAM_ID, JUPITER_SWAP_DEFAULTS } from './providers/jupiter-swap/config.js';
|
|
@@ -49,6 +50,11 @@ export { buildRegistrationFile } from './providers/erc8004/registration-file.js'
|
|
|
49
50
|
export { IDENTITY_REGISTRY_ABI } from './providers/erc8004/identity-abi.js';
|
|
50
51
|
export { REPUTATION_REGISTRY_ABI } from './providers/erc8004/reputation-abi.js';
|
|
51
52
|
export { VALIDATION_REGISTRY_ABI } from './providers/erc8004/validation-abi.js';
|
|
53
|
+
export { DcentSwapActionProvider } from './providers/dcent-swap/index.js';
|
|
54
|
+
export { DCENT_SWAP_DEFAULTS } from './providers/dcent-swap/config.js';
|
|
55
|
+
export { DcentSwapApiClient } from './providers/dcent-swap/dcent-api-client.js';
|
|
56
|
+
export { caip19ToDcentId, dcentIdToCaip19 } from './providers/dcent-swap/currency-mapper.js';
|
|
57
|
+
export { ExchangeStatusTracker } from './providers/dcent-swap/exchange-status-tracker.js';
|
|
52
58
|
// Re-export common utilities
|
|
53
59
|
export { ActionApiClient } from './common/action-api-client.js';
|
|
54
60
|
export { asBps, asPct, clampSlippageBps, bpsToPct, pctToBps } from './common/slippage.js';
|
|
@@ -210,6 +216,22 @@ export function registerBuiltInProviders(registry, settingsReader, options) {
|
|
|
210
216
|
return new Erc8004ActionProvider(config);
|
|
211
217
|
},
|
|
212
218
|
},
|
|
219
|
+
{
|
|
220
|
+
key: 'dcent_swap',
|
|
221
|
+
enabledKey: 'actions.dcent_swap_enabled',
|
|
222
|
+
factory: () => {
|
|
223
|
+
const dcentConfig = {
|
|
224
|
+
apiBaseUrl: settingsReader.get('actions.dcent_swap_api_url'),
|
|
225
|
+
requestTimeoutMs: 15_000,
|
|
226
|
+
defaultSlippageBps: Number(settingsReader.get('actions.dcent_swap_default_slippage_bps')),
|
|
227
|
+
maxSlippageBps: Number(settingsReader.get('actions.dcent_swap_max_slippage_bps')),
|
|
228
|
+
currencyCacheTtlMs: Number(settingsReader.get('actions.dcent_swap_currency_cache_ttl_ms')),
|
|
229
|
+
exchangePollIntervalMs: Number(settingsReader.get('actions.dcent_swap_exchange_poll_interval_ms')),
|
|
230
|
+
exchangePollMaxMs: Number(settingsReader.get('actions.dcent_swap_exchange_poll_max_ms')),
|
|
231
|
+
};
|
|
232
|
+
return new DcentSwapActionProvider(dcentConfig);
|
|
233
|
+
},
|
|
234
|
+
},
|
|
213
235
|
];
|
|
214
236
|
for (const { key, enabledKey, factory } of providers) {
|
|
215
237
|
if (settingsReader.get(enabledKey) === 'true') {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAqB,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { ContractCallRequest } from '@waiaas/core';
|
|
2
|
+
import { DcentSwapApiClient } from './dcent-api-client.js';
|
|
3
|
+
import { type GetQuotesParams } from './dex-swap.js';
|
|
4
|
+
import type { DcentQuoteProvider } from './schemas.js';
|
|
5
|
+
import type { DcentSwapConfig } from './config.js';
|
|
6
|
+
export interface IntermediateToken {
|
|
7
|
+
caip19: string;
|
|
8
|
+
symbol: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
}
|
|
11
|
+
export interface TwoHopRoute {
|
|
12
|
+
intermediateToken: IntermediateToken;
|
|
13
|
+
hop1: {
|
|
14
|
+
provider: DcentQuoteProvider;
|
|
15
|
+
fromAsset: string;
|
|
16
|
+
toAsset: string;
|
|
17
|
+
};
|
|
18
|
+
hop2: {
|
|
19
|
+
provider: DcentQuoteProvider;
|
|
20
|
+
fromAsset: string;
|
|
21
|
+
toAsset: string;
|
|
22
|
+
};
|
|
23
|
+
finalExpectedAmount: string;
|
|
24
|
+
totalFees: {
|
|
25
|
+
hop1Fee: string;
|
|
26
|
+
hop2Fee: string;
|
|
27
|
+
totalFee: string;
|
|
28
|
+
};
|
|
29
|
+
isMultiHop: true;
|
|
30
|
+
hopCount: 2;
|
|
31
|
+
}
|
|
32
|
+
export interface TwoHopQuoteResult {
|
|
33
|
+
routes: TwoHopRoute[];
|
|
34
|
+
bestRoute: TwoHopRoute | null;
|
|
35
|
+
}
|
|
36
|
+
export interface TwoHopExecutionResult {
|
|
37
|
+
requests: ContractCallRequest[];
|
|
38
|
+
metadata: {
|
|
39
|
+
isMultiHop: true;
|
|
40
|
+
hopCount: 2;
|
|
41
|
+
intermediateToken: {
|
|
42
|
+
caip19: string;
|
|
43
|
+
symbol: string;
|
|
44
|
+
decimals: number;
|
|
45
|
+
};
|
|
46
|
+
hop1ExpectedAmount: string;
|
|
47
|
+
finalExpectedAmount: string;
|
|
48
|
+
totalFees: {
|
|
49
|
+
hop1Fee: string;
|
|
50
|
+
hop2Fee: string;
|
|
51
|
+
totalFee: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** Well-known intermediate tokens per CAIP-2 chain identifier. */
|
|
56
|
+
export declare const INTERMEDIATE_TOKENS: Record<string, IntermediateToken[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Get intermediate tokens for a given CAIP-19 asset's chain.
|
|
59
|
+
* Extracts the CAIP-2 chain identifier from the CAIP-19 URI.
|
|
60
|
+
*/
|
|
61
|
+
export declare function getIntermediatesForChain(caip19: string): IntermediateToken[];
|
|
62
|
+
/**
|
|
63
|
+
* Find 2-hop routes via intermediate tokens when direct route is unavailable.
|
|
64
|
+
*
|
|
65
|
+
* 1. First checks if direct route exists — if yes, returns empty (no fallback needed).
|
|
66
|
+
* 2. For each intermediate token on the same chain:
|
|
67
|
+
* - Skip if same as fromAsset or toAsset
|
|
68
|
+
* - Query hop 1 (fromAsset -> intermediate) and hop 2 (intermediate -> toAsset)
|
|
69
|
+
* - Build TwoHopRoute with cumulative costs
|
|
70
|
+
* 3. Sort routes by finalExpectedAmount descending.
|
|
71
|
+
*/
|
|
72
|
+
export declare function findTwoHopRoutes(client: DcentSwapApiClient, params: GetQuotesParams): Promise<TwoHopQuoteResult>;
|
|
73
|
+
/**
|
|
74
|
+
* Execute a 2-hop swap, producing a flat ContractCallRequest[] BATCH.
|
|
75
|
+
*
|
|
76
|
+
* If route is not provided, calls findTwoHopRoutes to discover the best route.
|
|
77
|
+
* Concatenates hop1 + hop2 ContractCallRequest arrays.
|
|
78
|
+
* On hop2 failure, throws PARTIAL_SWAP_FAILURE with intermediate token info.
|
|
79
|
+
*/
|
|
80
|
+
export declare function executeTwoHopSwap(client: DcentSwapApiClient, params: {
|
|
81
|
+
fromAsset: string;
|
|
82
|
+
toAsset: string;
|
|
83
|
+
amount: string;
|
|
84
|
+
fromDecimals: number;
|
|
85
|
+
toDecimals: number;
|
|
86
|
+
walletAddress: string;
|
|
87
|
+
slippageBps?: number;
|
|
88
|
+
}, config: DcentSwapConfig, route?: TwoHopRoute): Promise<TwoHopExecutionResult>;
|
|
89
|
+
//# sourceMappingURL=auto-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-router.d.ts","sourceRoot":"","sources":["../../../src/providers/dcent-swap/auto-router.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE;QAAE,QAAQ,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,IAAI,EAAE;QAAE,QAAQ,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,QAAQ,EAAE;QACR,UAAU,EAAE,IAAI,CAAC;QACjB,QAAQ,EAAE,CAAC,CAAC;QACZ,iBAAiB,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QACxE,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KACnE,CAAC;CACH;AAMD,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CA8BnE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAG5E;AAkBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAqG5B;AAMD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,EACD,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,qBAAqB,CAAC,CA+EhC"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 2-hop auto-routing fallback for DCent Swap.
|
|
3
|
+
*
|
|
4
|
+
* When DCent API returns `fail_no_available_provider` for a direct pair,
|
|
5
|
+
* this module probes intermediate tokens (ETH, USDC, USDT per chain) to
|
|
6
|
+
* find 2-hop paths and calculates cumulative costs.
|
|
7
|
+
*
|
|
8
|
+
* Design source: doc 77 section 11 (Phase 345 confirmed scope: DS-04 fallback).
|
|
9
|
+
*/
|
|
10
|
+
import { ChainError, parseCaip19 } from '@waiaas/core';
|
|
11
|
+
import { DcentSwapApiClient } from './dcent-api-client.js';
|
|
12
|
+
import { tryGetDcentQuotes, executeDexSwap } from './dex-swap.js';
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Per-chain intermediate tokens
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/** Well-known intermediate tokens per CAIP-2 chain identifier. */
|
|
17
|
+
export const INTERMEDIATE_TOKENS = {
|
|
18
|
+
'eip155:1': [
|
|
19
|
+
{ caip19: 'eip155:1/slip44:60', symbol: 'ETH', decimals: 18 },
|
|
20
|
+
{ caip19: 'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', symbol: 'USDC', decimals: 6 },
|
|
21
|
+
{ caip19: 'eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7', symbol: 'USDT', decimals: 6 },
|
|
22
|
+
],
|
|
23
|
+
'eip155:56': [
|
|
24
|
+
{ caip19: 'eip155:56/slip44:60', symbol: 'BNB', decimals: 18 },
|
|
25
|
+
{ caip19: 'eip155:56/erc20:0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', symbol: 'USDC', decimals: 18 },
|
|
26
|
+
{ caip19: 'eip155:56/erc20:0x55d398326f99059ff775485246999027b3197955', symbol: 'USDT', decimals: 18 },
|
|
27
|
+
],
|
|
28
|
+
'eip155:137': [
|
|
29
|
+
{ caip19: 'eip155:137/slip44:966', symbol: 'MATIC', decimals: 18 },
|
|
30
|
+
{ caip19: 'eip155:137/erc20:0x3c499c542cef5e3811e1192ce70d8cc03d5c3359', symbol: 'USDC', decimals: 6 },
|
|
31
|
+
{ caip19: 'eip155:137/erc20:0xc2132d05d31c914a87c6611c10748aeb04b58e8f', symbol: 'USDT', decimals: 6 },
|
|
32
|
+
],
|
|
33
|
+
'eip155:10': [
|
|
34
|
+
{ caip19: 'eip155:10/slip44:60', symbol: 'ETH', decimals: 18 },
|
|
35
|
+
{ caip19: 'eip155:10/erc20:0x0b2c639c533813f4aa9d7837caf62653d097ff85', symbol: 'USDC', decimals: 6 },
|
|
36
|
+
{ caip19: 'eip155:10/erc20:0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', symbol: 'USDT', decimals: 6 },
|
|
37
|
+
],
|
|
38
|
+
'eip155:8453': [
|
|
39
|
+
{ caip19: 'eip155:8453/slip44:60', symbol: 'ETH', decimals: 18 },
|
|
40
|
+
{ caip19: 'eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', symbol: 'USDC', decimals: 6 },
|
|
41
|
+
],
|
|
42
|
+
'eip155:42161': [
|
|
43
|
+
{ caip19: 'eip155:42161/slip44:60', symbol: 'ETH', decimals: 18 },
|
|
44
|
+
{ caip19: 'eip155:42161/erc20:0xaf88d065e77c8cc2239327c5edb3a432268e5831', symbol: 'USDC', decimals: 6 },
|
|
45
|
+
{ caip19: 'eip155:42161/erc20:0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', symbol: 'USDT', decimals: 6 },
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Get intermediate tokens for a given CAIP-19 asset's chain.
|
|
50
|
+
* Extracts the CAIP-2 chain identifier from the CAIP-19 URI.
|
|
51
|
+
*/
|
|
52
|
+
export function getIntermediatesForChain(caip19) {
|
|
53
|
+
const { chainId } = parseCaip19(caip19);
|
|
54
|
+
return INTERMEDIATE_TOKENS[chainId] ?? [];
|
|
55
|
+
}
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// Fee extraction helper
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
function extractDepositFee(provider) {
|
|
60
|
+
const fee = provider.providerFee;
|
|
61
|
+
if (fee && typeof fee.depositFee === 'string') {
|
|
62
|
+
return fee.depositFee;
|
|
63
|
+
}
|
|
64
|
+
return '0';
|
|
65
|
+
}
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// 2-hop route discovery
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
/**
|
|
70
|
+
* Find 2-hop routes via intermediate tokens when direct route is unavailable.
|
|
71
|
+
*
|
|
72
|
+
* 1. First checks if direct route exists — if yes, returns empty (no fallback needed).
|
|
73
|
+
* 2. For each intermediate token on the same chain:
|
|
74
|
+
* - Skip if same as fromAsset or toAsset
|
|
75
|
+
* - Query hop 1 (fromAsset -> intermediate) and hop 2 (intermediate -> toAsset)
|
|
76
|
+
* - Build TwoHopRoute with cumulative costs
|
|
77
|
+
* 3. Sort routes by finalExpectedAmount descending.
|
|
78
|
+
*/
|
|
79
|
+
export async function findTwoHopRoutes(client, params) {
|
|
80
|
+
// Step 1: Check if direct route exists
|
|
81
|
+
const directResult = await tryGetDcentQuotes(client, params);
|
|
82
|
+
if ('result' in directResult && directResult.result.dexProviders.length > 0) {
|
|
83
|
+
// Direct route available — no fallback needed
|
|
84
|
+
return { routes: [], bestRoute: null };
|
|
85
|
+
}
|
|
86
|
+
// Step 2: Probe intermediate tokens
|
|
87
|
+
const intermediates = getIntermediatesForChain(params.fromAsset);
|
|
88
|
+
const routes = [];
|
|
89
|
+
// Use Promise.allSettled for parallel probing
|
|
90
|
+
const probeResults = await Promise.allSettled(intermediates.map(async (intermediate) => {
|
|
91
|
+
// Skip if intermediate is same as from or to
|
|
92
|
+
if (intermediate.caip19 === params.fromAsset || intermediate.caip19 === params.toAsset) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
// Hop 1: fromAsset -> intermediate
|
|
96
|
+
const hop1Result = await tryGetDcentQuotes(client, {
|
|
97
|
+
fromAsset: params.fromAsset,
|
|
98
|
+
toAsset: intermediate.caip19,
|
|
99
|
+
amount: params.amount,
|
|
100
|
+
fromDecimals: params.fromDecimals,
|
|
101
|
+
toDecimals: intermediate.decimals,
|
|
102
|
+
});
|
|
103
|
+
if ('noRoute' in hop1Result || !hop1Result.result.bestDexProvider) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const hop1Provider = hop1Result.result.bestDexProvider;
|
|
107
|
+
const hop1ExpectedAmount = hop1Provider.expectedAmount ?? '0';
|
|
108
|
+
if (hop1ExpectedAmount === '0')
|
|
109
|
+
return null;
|
|
110
|
+
// Hop 2: intermediate -> toAsset
|
|
111
|
+
const hop2Result = await tryGetDcentQuotes(client, {
|
|
112
|
+
fromAsset: intermediate.caip19,
|
|
113
|
+
toAsset: params.toAsset,
|
|
114
|
+
amount: hop1ExpectedAmount,
|
|
115
|
+
fromDecimals: intermediate.decimals,
|
|
116
|
+
toDecimals: params.toDecimals,
|
|
117
|
+
});
|
|
118
|
+
if ('noRoute' in hop2Result || !hop2Result.result.bestDexProvider) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const hop2Provider = hop2Result.result.bestDexProvider;
|
|
122
|
+
const hop2ExpectedAmount = hop2Provider.expectedAmount ?? '0';
|
|
123
|
+
if (hop2ExpectedAmount === '0')
|
|
124
|
+
return null;
|
|
125
|
+
// Calculate cumulative fees
|
|
126
|
+
const hop1Fee = extractDepositFee(hop1Provider);
|
|
127
|
+
const hop2Fee = extractDepositFee(hop2Provider);
|
|
128
|
+
const totalFee = (BigInt(hop1Fee) + BigInt(hop2Fee)).toString();
|
|
129
|
+
const route = {
|
|
130
|
+
intermediateToken: intermediate,
|
|
131
|
+
hop1: {
|
|
132
|
+
provider: hop1Provider,
|
|
133
|
+
fromAsset: params.fromAsset,
|
|
134
|
+
toAsset: intermediate.caip19,
|
|
135
|
+
},
|
|
136
|
+
hop2: {
|
|
137
|
+
provider: hop2Provider,
|
|
138
|
+
fromAsset: intermediate.caip19,
|
|
139
|
+
toAsset: params.toAsset,
|
|
140
|
+
},
|
|
141
|
+
finalExpectedAmount: hop2ExpectedAmount,
|
|
142
|
+
totalFees: { hop1Fee, hop2Fee, totalFee },
|
|
143
|
+
isMultiHop: true,
|
|
144
|
+
hopCount: 2,
|
|
145
|
+
};
|
|
146
|
+
return route;
|
|
147
|
+
}));
|
|
148
|
+
// Collect successful routes
|
|
149
|
+
for (const result of probeResults) {
|
|
150
|
+
if (result.status === 'fulfilled' && result.value) {
|
|
151
|
+
routes.push(result.value);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Sort by finalExpectedAmount descending
|
|
155
|
+
routes.sort((a, b) => {
|
|
156
|
+
const amountA = BigInt(a.finalExpectedAmount);
|
|
157
|
+
const amountB = BigInt(b.finalExpectedAmount);
|
|
158
|
+
if (amountB > amountA)
|
|
159
|
+
return 1;
|
|
160
|
+
if (amountB < amountA)
|
|
161
|
+
return -1;
|
|
162
|
+
return 0;
|
|
163
|
+
});
|
|
164
|
+
return {
|
|
165
|
+
routes,
|
|
166
|
+
bestRoute: routes[0] ?? null,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// 2-hop execution
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
/**
|
|
173
|
+
* Execute a 2-hop swap, producing a flat ContractCallRequest[] BATCH.
|
|
174
|
+
*
|
|
175
|
+
* If route is not provided, calls findTwoHopRoutes to discover the best route.
|
|
176
|
+
* Concatenates hop1 + hop2 ContractCallRequest arrays.
|
|
177
|
+
* On hop2 failure, throws PARTIAL_SWAP_FAILURE with intermediate token info.
|
|
178
|
+
*/
|
|
179
|
+
export async function executeTwoHopSwap(client, params, config, route) {
|
|
180
|
+
// Discover route if not provided
|
|
181
|
+
if (!route) {
|
|
182
|
+
const quoteResult = await findTwoHopRoutes(client, {
|
|
183
|
+
fromAsset: params.fromAsset,
|
|
184
|
+
toAsset: params.toAsset,
|
|
185
|
+
amount: params.amount,
|
|
186
|
+
fromDecimals: params.fromDecimals,
|
|
187
|
+
toDecimals: params.toDecimals,
|
|
188
|
+
});
|
|
189
|
+
if (!quoteResult.bestRoute) {
|
|
190
|
+
throw new ChainError('INVALID_INSTRUCTION', 'ethereum', {
|
|
191
|
+
message: `No 2-hop swap route available from ${params.fromAsset} to ${params.toAsset}`,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
route = quoteResult.bestRoute;
|
|
195
|
+
}
|
|
196
|
+
const intermediate = route.intermediateToken;
|
|
197
|
+
const hop1ExpectedAmount = route.hop1.provider.expectedAmount ?? '0';
|
|
198
|
+
// Execute hop 1: fromAsset -> intermediate
|
|
199
|
+
const hop1Requests = await executeDexSwap(client, {
|
|
200
|
+
fromAsset: params.fromAsset,
|
|
201
|
+
toAsset: intermediate.caip19,
|
|
202
|
+
amount: params.amount,
|
|
203
|
+
fromDecimals: params.fromDecimals,
|
|
204
|
+
toDecimals: intermediate.decimals,
|
|
205
|
+
walletAddress: params.walletAddress,
|
|
206
|
+
slippageBps: params.slippageBps,
|
|
207
|
+
}, config);
|
|
208
|
+
// Execute hop 2: intermediate -> toAsset
|
|
209
|
+
let hop2Requests;
|
|
210
|
+
try {
|
|
211
|
+
hop2Requests = await executeDexSwap(client, {
|
|
212
|
+
fromAsset: intermediate.caip19,
|
|
213
|
+
toAsset: params.toAsset,
|
|
214
|
+
amount: hop1ExpectedAmount,
|
|
215
|
+
fromDecimals: intermediate.decimals,
|
|
216
|
+
toDecimals: params.toDecimals,
|
|
217
|
+
walletAddress: params.walletAddress,
|
|
218
|
+
slippageBps: params.slippageBps,
|
|
219
|
+
}, config);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Partial failure: hop 1 may have succeeded but hop 2 failed
|
|
223
|
+
throw new ChainError('INVALID_INSTRUCTION', 'ethereum', {
|
|
224
|
+
message: `2-hop swap partially completed. Hop 1 succeeded but Hop 2 failed. ` +
|
|
225
|
+
`Intermediate token ${intermediate.symbol} (${intermediate.caip19}) may have balance of approximately ${hop1ExpectedAmount} smallest units. ` +
|
|
226
|
+
`Please check your wallet balance and swap the intermediate token manually.`,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
// Combine into flat BATCH
|
|
230
|
+
const requests = [...hop1Requests, ...hop2Requests];
|
|
231
|
+
return {
|
|
232
|
+
requests,
|
|
233
|
+
metadata: {
|
|
234
|
+
isMultiHop: true,
|
|
235
|
+
hopCount: 2,
|
|
236
|
+
intermediateToken: {
|
|
237
|
+
caip19: intermediate.caip19,
|
|
238
|
+
symbol: intermediate.symbol,
|
|
239
|
+
decimals: intermediate.decimals,
|
|
240
|
+
},
|
|
241
|
+
hop1ExpectedAmount,
|
|
242
|
+
finalExpectedAmount: route.finalExpectedAmount,
|
|
243
|
+
totalFees: route.totalFees,
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=auto-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-router.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/auto-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCent Swap configuration.
|
|
3
|
+
*
|
|
4
|
+
* Defines the DcentSwapConfig interface and default values.
|
|
5
|
+
* Design source: doc 77 section 10.4 (Admin Settings keys).
|
|
6
|
+
*/
|
|
7
|
+
export interface DcentSwapConfig {
|
|
8
|
+
/** DCent Swap Backend API base URL (DS-01). */
|
|
9
|
+
apiBaseUrl: string;
|
|
10
|
+
/** HTTP request timeout in milliseconds. */
|
|
11
|
+
requestTimeoutMs: number;
|
|
12
|
+
/** Default slippage in basis points (1 bps = 0.01%). */
|
|
13
|
+
defaultSlippageBps: number;
|
|
14
|
+
/** Maximum slippage in basis points. */
|
|
15
|
+
maxSlippageBps: number;
|
|
16
|
+
/** Currency cache TTL in milliseconds (DS-05). */
|
|
17
|
+
currencyCacheTtlMs: number;
|
|
18
|
+
/** Exchange status polling interval in milliseconds (doc 77 section 8.4). */
|
|
19
|
+
exchangePollIntervalMs: number;
|
|
20
|
+
/** Exchange status polling maximum duration in milliseconds. */
|
|
21
|
+
exchangePollMaxMs: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Default configuration values.
|
|
25
|
+
*
|
|
26
|
+
* - DS-01: swapbuy-beta endpoint (includes Exchange providers)
|
|
27
|
+
* - DS-05: 24h currency cache TTL, 15s request timeout
|
|
28
|
+
*/
|
|
29
|
+
export declare const DCENT_SWAP_DEFAULTS: DcentSwapConfig;
|
|
30
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/providers/dcent-swap/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAQjC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCent Swap configuration.
|
|
3
|
+
*
|
|
4
|
+
* Defines the DcentSwapConfig interface and default values.
|
|
5
|
+
* Design source: doc 77 section 10.4 (Admin Settings keys).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Default configuration values.
|
|
9
|
+
*
|
|
10
|
+
* - DS-01: swapbuy-beta endpoint (includes Exchange providers)
|
|
11
|
+
* - DS-05: 24h currency cache TTL, 15s request timeout
|
|
12
|
+
*/
|
|
13
|
+
export const DCENT_SWAP_DEFAULTS = {
|
|
14
|
+
apiBaseUrl: 'https://swapbuy-beta.dcentwallet.com',
|
|
15
|
+
requestTimeoutMs: 15_000,
|
|
16
|
+
defaultSlippageBps: 100, // 1%
|
|
17
|
+
maxSlippageBps: 500, // 5%
|
|
18
|
+
currencyCacheTtlMs: 86_400_000, // 24 hours
|
|
19
|
+
exchangePollIntervalMs: 30_000, // 30 seconds
|
|
20
|
+
exchangePollMaxMs: 3_600_000, // 1 hour
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,UAAU,EAAE,sCAAsC;IAClD,gBAAgB,EAAE,MAAM;IACxB,kBAAkB,EAAE,GAAG,EAAG,KAAK;IAC/B,cAAc,EAAE,GAAG,EAAO,KAAK;IAC/B,kBAAkB,EAAE,UAAU,EAAE,WAAW;IAC3C,sBAAsB,EAAE,MAAM,EAAK,aAAa;IAChD,iBAAiB,EAAE,SAAS,EAAO,SAAS;CAC7C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a CAIP-19 asset type URI to a DCent Currency ID.
|
|
3
|
+
*
|
|
4
|
+
* @example caip19ToDcentId('eip155:1/slip44:60') => 'ETHEREUM'
|
|
5
|
+
* @example caip19ToDcentId('eip155:1/erc20:0xa0b8...') => 'ERC20/0xa0b8...'
|
|
6
|
+
* @example caip19ToDcentId('eip155:10/slip44:60') => 'CHAN:10'
|
|
7
|
+
* @example caip19ToDcentId('solana:.../token:EPjF...') => 'SPL-TOKEN/EPjF...'
|
|
8
|
+
*/
|
|
9
|
+
export declare function caip19ToDcentId(caip19: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Convert a DCent Currency ID to a CAIP-19 asset type URI.
|
|
12
|
+
*
|
|
13
|
+
* @example dcentIdToCaip19('ETHEREUM') => 'eip155:1/slip44:60'
|
|
14
|
+
* @example dcentIdToCaip19('ERC20/0xa0b8...') => 'eip155:1/erc20:0xa0b8...'
|
|
15
|
+
* @example dcentIdToCaip19('CHAN:10') => 'eip155:10/slip44:60'
|
|
16
|
+
* @example dcentIdToCaip19('SPL-TOKEN/EPjF...') => 'solana:.../token:EPjF...'
|
|
17
|
+
*/
|
|
18
|
+
export declare function dcentIdToCaip19(dcentId: string): string;
|
|
19
|
+
//# sourceMappingURL=currency-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency-mapper.d.ts","sourceRoot":"","sources":["../../../src/providers/dcent-swap/currency-mapper.ts"],"names":[],"mappings":"AAuEA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAuCtD;AAMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+CvD"}
|