@waiaas/actions 2.11.0-rc.8 → 2.11.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/README.md +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.d.ts +2 -0
- package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.d.ts.map +1 -0
- package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.js +97 -0
- package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.js.map +1 -0
- package/dist/providers/aave-v3/aave-contracts.d.ts +8 -0
- package/dist/providers/aave-v3/aave-contracts.d.ts.map +1 -1
- package/dist/providers/aave-v3/aave-contracts.js +13 -0
- package/dist/providers/aave-v3/aave-contracts.js.map +1 -1
- package/dist/providers/aave-v3/aave-rpc.d.ts +10 -0
- package/dist/providers/aave-v3/aave-rpc.d.ts.map +1 -1
- package/dist/providers/aave-v3/aave-rpc.js +16 -0
- package/dist/providers/aave-v3/aave-rpc.js.map +1 -1
- package/dist/providers/aave-v3/index.d.ts +10 -2
- package/dist/providers/aave-v3/index.d.ts.map +1 -1
- package/dist/providers/aave-v3/index.js +128 -128
- package/dist/providers/aave-v3/index.js.map +1 -1
- package/dist/providers/across/index.d.ts.map +1 -1
- package/dist/providers/across/index.js +1 -0
- package/dist/providers/across/index.js.map +1 -1
- package/dist/providers/dcent-swap/auto-router.d.ts.map +1 -1
- package/dist/providers/dcent-swap/auto-router.js +8 -0
- package/dist/providers/dcent-swap/auto-router.js.map +1 -1
- package/dist/providers/dcent-swap/dcent-api-client.d.ts +1 -0
- package/dist/providers/dcent-swap/dcent-api-client.d.ts.map +1 -1
- package/dist/providers/dcent-swap/dcent-api-client.js.map +1 -1
- package/dist/providers/dcent-swap/dex-swap.d.ts +1 -0
- package/dist/providers/dcent-swap/dex-swap.d.ts.map +1 -1
- package/dist/providers/dcent-swap/dex-swap.js +13 -2
- package/dist/providers/dcent-swap/dex-swap.js.map +1 -1
- package/dist/providers/dcent-swap/index.d.ts +2 -2
- package/dist/providers/dcent-swap/index.d.ts.map +1 -1
- package/dist/providers/dcent-swap/index.js +56 -16
- package/dist/providers/dcent-swap/index.js.map +1 -1
- package/dist/providers/drift/config.d.ts +2 -0
- package/dist/providers/drift/config.d.ts.map +1 -1
- package/dist/providers/drift/config.js.map +1 -1
- package/dist/providers/drift/drift-sdk-wrapper.d.ts +12 -9
- package/dist/providers/drift/drift-sdk-wrapper.d.ts.map +1 -1
- package/dist/providers/drift/drift-sdk-wrapper.js +220 -20
- package/dist/providers/drift/drift-sdk-wrapper.js.map +1 -1
- package/dist/providers/drift/index.d.ts +2 -2
- package/dist/providers/drift/index.d.ts.map +1 -1
- package/dist/providers/drift/index.js +9 -4
- package/dist/providers/drift/index.js.map +1 -1
- package/dist/providers/erc8004/index.d.ts.map +1 -1
- package/dist/providers/erc8004/index.js +1 -0
- package/dist/providers/erc8004/index.js.map +1 -1
- package/dist/providers/hyperliquid/__tests__/perp-provider.test.js +13 -6
- package/dist/providers/hyperliquid/__tests__/perp-provider.test.js.map +1 -1
- package/dist/providers/hyperliquid/__tests__/spot-provider.test.js +11 -4
- package/dist/providers/hyperliquid/__tests__/spot-provider.test.js.map +1 -1
- package/dist/providers/hyperliquid/perp-provider.d.ts +2 -2
- package/dist/providers/hyperliquid/perp-provider.d.ts.map +1 -1
- package/dist/providers/hyperliquid/perp-provider.js +7 -3
- package/dist/providers/hyperliquid/perp-provider.js.map +1 -1
- package/dist/providers/hyperliquid/schemas.d.ts +14 -14
- package/dist/providers/hyperliquid/spot-provider.d.ts +2 -2
- package/dist/providers/hyperliquid/spot-provider.d.ts.map +1 -1
- package/dist/providers/hyperliquid/spot-provider.js +7 -3
- package/dist/providers/hyperliquid/spot-provider.js.map +1 -1
- package/dist/providers/hyperliquid/sub-account-provider.d.ts.map +1 -1
- package/dist/providers/hyperliquid/sub-account-provider.js +1 -0
- package/dist/providers/hyperliquid/sub-account-provider.js.map +1 -1
- package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.d.ts +2 -0
- package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.d.ts.map +1 -0
- package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.js +107 -0
- package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.js.map +1 -0
- package/dist/providers/jito-staking/config.d.ts +12 -3
- package/dist/providers/jito-staking/config.d.ts.map +1 -1
- package/dist/providers/jito-staking/config.js +12 -3
- package/dist/providers/jito-staking/config.js.map +1 -1
- package/dist/providers/jito-staking/index.d.ts +2 -2
- package/dist/providers/jito-staking/index.d.ts.map +1 -1
- package/dist/providers/jito-staking/index.js +25 -8
- package/dist/providers/jito-staking/index.js.map +1 -1
- package/dist/providers/jito-staking/jito-migration.test.js +107 -1
- package/dist/providers/jito-staking/jito-migration.test.js.map +1 -1
- package/dist/providers/jito-staking/jito-stake-pool.d.ts +18 -5
- package/dist/providers/jito-staking/jito-stake-pool.d.ts.map +1 -1
- package/dist/providers/jito-staking/jito-stake-pool.js +61 -21
- package/dist/providers/jito-staking/jito-stake-pool.js.map +1 -1
- package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.d.ts +2 -0
- package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.d.ts.map +1 -0
- package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.js +177 -0
- package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.js.map +1 -0
- package/dist/providers/jupiter-swap/index.d.ts.map +1 -1
- package/dist/providers/jupiter-swap/index.js +35 -1
- package/dist/providers/jupiter-swap/index.js.map +1 -1
- package/dist/providers/jupiter-swap/schemas.d.ts +30 -30
- package/dist/providers/jupiter-swap/schemas.js +2 -2
- package/dist/providers/jupiter-swap/schemas.js.map +1 -1
- package/dist/providers/kamino/config.d.ts +2 -0
- package/dist/providers/kamino/config.d.ts.map +1 -1
- package/dist/providers/kamino/config.js.map +1 -1
- package/dist/providers/kamino/index.d.ts +2 -2
- package/dist/providers/kamino/index.d.ts.map +1 -1
- package/dist/providers/kamino/index.js +11 -6
- package/dist/providers/kamino/index.js.map +1 -1
- package/dist/providers/kamino/kamino-sdk-wrapper.d.ts +12 -10
- package/dist/providers/kamino/kamino-sdk-wrapper.d.ts.map +1 -1
- package/dist/providers/kamino/kamino-sdk-wrapper.js +134 -20
- package/dist/providers/kamino/kamino-sdk-wrapper.js.map +1 -1
- package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.d.ts +2 -0
- package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.d.ts.map +1 -0
- package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.js +106 -0
- package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.js.map +1 -0
- package/dist/providers/lido-staking/index.d.ts +10 -7
- package/dist/providers/lido-staking/index.d.ts.map +1 -1
- package/dist/providers/lido-staking/index.js +67 -47
- package/dist/providers/lido-staking/index.js.map +1 -1
- package/dist/providers/lido-staking/lido-contract.d.ts +16 -2
- package/dist/providers/lido-staking/lido-contract.d.ts.map +1 -1
- package/dist/providers/lido-staking/lido-contract.js +43 -2
- package/dist/providers/lido-staking/lido-contract.js.map +1 -1
- package/dist/providers/lifi/__tests__/lifi-provider.test.d.ts +2 -0
- package/dist/providers/lifi/__tests__/lifi-provider.test.d.ts.map +1 -0
- package/dist/providers/lifi/__tests__/lifi-provider.test.js +196 -0
- package/dist/providers/lifi/__tests__/lifi-provider.test.js.map +1 -0
- package/dist/providers/lifi/index.d.ts.map +1 -1
- package/dist/providers/lifi/index.js +1 -0
- package/dist/providers/lifi/index.js.map +1 -1
- package/dist/providers/pendle/__tests__/pendle-api-client.test.js +79 -0
- package/dist/providers/pendle/__tests__/pendle-api-client.test.js.map +1 -1
- package/dist/providers/pendle/__tests__/pendle-provider.test.js +28 -8
- package/dist/providers/pendle/__tests__/pendle-provider.test.js.map +1 -1
- package/dist/providers/pendle/config.d.ts +2 -0
- package/dist/providers/pendle/config.d.ts.map +1 -1
- package/dist/providers/pendle/config.js +2 -0
- package/dist/providers/pendle/config.js.map +1 -1
- package/dist/providers/pendle/index.d.ts +8 -4
- package/dist/providers/pendle/index.d.ts.map +1 -1
- package/dist/providers/pendle/index.js +82 -69
- package/dist/providers/pendle/index.js.map +1 -1
- package/dist/providers/pendle/pendle-api-client.d.ts +2 -2
- package/dist/providers/pendle/pendle-api-client.d.ts.map +1 -1
- package/dist/providers/pendle/pendle-api-client.js +9 -2
- package/dist/providers/pendle/pendle-api-client.js.map +1 -1
- package/dist/providers/pendle/schemas.d.ts +748 -32
- package/dist/providers/pendle/schemas.d.ts.map +1 -1
- package/dist/providers/pendle/schemas.js +17 -4
- package/dist/providers/pendle/schemas.js.map +1 -1
- package/dist/providers/polymarket/__tests__/infrastructure.test.d.ts +2 -0
- package/dist/providers/polymarket/__tests__/infrastructure.test.d.ts.map +1 -0
- package/dist/providers/polymarket/__tests__/infrastructure.test.js +117 -0
- package/dist/providers/polymarket/__tests__/infrastructure.test.js.map +1 -0
- package/dist/providers/polymarket/ctf-provider.d.ts.map +1 -1
- package/dist/providers/polymarket/ctf-provider.js +1 -0
- package/dist/providers/polymarket/ctf-provider.js.map +1 -1
- package/dist/providers/polymarket/order-provider.d.ts.map +1 -1
- package/dist/providers/polymarket/order-provider.js +1 -0
- package/dist/providers/polymarket/order-provider.js.map +1 -1
- package/dist/providers/polymarket/schemas.d.ts +20 -20
- package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.d.ts +2 -0
- package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.d.ts.map +1 -0
- package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.js +154 -0
- package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.js.map +1 -0
- package/dist/providers/zerox-swap/index.d.ts.map +1 -1
- package/dist/providers/zerox-swap/index.js +1 -0
- package/dist/providers/zerox-swap/index.js.map +1 -1
- package/package.json +7 -2
|
@@ -31,6 +31,7 @@ export async function getDcentQuotes(client, params) {
|
|
|
31
31
|
amount: params.amount,
|
|
32
32
|
fromDecimals: params.fromDecimals,
|
|
33
33
|
toDecimals: params.toDecimals,
|
|
34
|
+
...(params.fromWalletAddress ? { fromWalletAddress: params.fromWalletAddress } : {}),
|
|
34
35
|
});
|
|
35
36
|
// Check for total failure
|
|
36
37
|
if (response.status === 'fail_no_available_provider' || response.status === 'fail_empty_providers') {
|
|
@@ -107,6 +108,7 @@ export async function executeDexSwap(client, params, config) {
|
|
|
107
108
|
amount: params.amount,
|
|
108
109
|
fromDecimals: params.fromDecimals,
|
|
109
110
|
toDecimals: params.toDecimals,
|
|
111
|
+
fromWalletAddress: params.walletAddress,
|
|
110
112
|
});
|
|
111
113
|
// No DEX providers available
|
|
112
114
|
if (quotes.dexProviders.length === 0) {
|
|
@@ -181,12 +183,21 @@ export async function executeDexSwap(client, params, config) {
|
|
|
181
183
|
};
|
|
182
184
|
requests.push(approveRequest);
|
|
183
185
|
}
|
|
184
|
-
// Swap request
|
|
186
|
+
// Swap request — for native sells, DCent API may return only protocol fees
|
|
187
|
+
// in txdata.value instead of the full swap amount; correct to params.amount
|
|
188
|
+
let swapValue = txdata.value ? BigInt(txdata.value).toString() : '0';
|
|
189
|
+
if (isNativeSell) {
|
|
190
|
+
const apiValue = BigInt(swapValue);
|
|
191
|
+
const swapAmount = BigInt(params.amount);
|
|
192
|
+
if (apiValue < swapAmount) {
|
|
193
|
+
swapValue = swapAmount.toString();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
185
196
|
const swapRequest = {
|
|
186
197
|
type: 'CONTRACT_CALL',
|
|
187
198
|
to: txdata.to,
|
|
188
199
|
calldata: txdata.data,
|
|
189
|
-
value:
|
|
200
|
+
value: swapValue,
|
|
190
201
|
};
|
|
191
202
|
requests.push(swapRequest);
|
|
192
203
|
return requests;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dex-swap.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/dex-swap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"dex-swap.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/dex-swap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IActionProvider, ActionProviderMetadata, ActionDefinition, ActionContext, ContractCallRequest } from '@waiaas/core';
|
|
1
|
+
import type { IActionProvider, ActionProviderMetadata, ActionDefinition, ActionContext, ContractCallRequest, ApiDirectResult } from '@waiaas/core';
|
|
2
2
|
import { type DcentSwapConfig } from './config.js';
|
|
3
3
|
import { type DcentQuoteResult, type GetQuotesParams } from './dex-swap.js';
|
|
4
4
|
import { type TwoHopQuoteResult } from './auto-router.js';
|
|
@@ -8,7 +8,7 @@ export declare class DcentSwapActionProvider implements IActionProvider {
|
|
|
8
8
|
private readonly config;
|
|
9
9
|
private client;
|
|
10
10
|
constructor(config?: Partial<DcentSwapConfig>);
|
|
11
|
-
resolve(actionName: string, params: Record<string, unknown>, context: ActionContext): Promise<ContractCallRequest | ContractCallRequest[]>;
|
|
11
|
+
resolve(actionName: string, params: Record<string, unknown>, context: ActionContext): Promise<ContractCallRequest | ContractCallRequest[] | ApiDirectResult>;
|
|
12
12
|
/**
|
|
13
13
|
* Query swap quotes without going through the pipeline.
|
|
14
14
|
* Returns structured result for MCP tools and SDK methods.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/dcent-swap/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/dcent-swap/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAkC,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAA4D,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAuEpH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAmC;gBAErC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAuCvC,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,mBAAmB,GAAG,mBAAmB,EAAE,GAAG,eAAe,CAAC;IAwEzE;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIrE;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ5E,iCAAiC;IACjC,OAAO,CAAC,SAAS;CAMlB;AAMD,OAAO,EAAE,KAAK,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { ChainError } from '@waiaas/core';
|
|
|
14
14
|
import { DcentSwapApiClient } from './dcent-api-client.js';
|
|
15
15
|
import { DCENT_SWAP_DEFAULTS } from './config.js';
|
|
16
16
|
import { getDcentQuotes, executeDexSwap } from './dex-swap.js';
|
|
17
|
-
import { findTwoHopRoutes, executeTwoHopSwap } from './auto-router.js';
|
|
17
|
+
import { findTwoHopRoutes, executeTwoHopSwap, INTERMEDIATE_TOKENS } from './auto-router.js';
|
|
18
18
|
import { resolveProviderHumanAmount } from '../../common/resolve-human-amount.js';
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
20
|
// Input schemas (Zod SSoT)
|
|
@@ -27,8 +27,10 @@ const GetQuotesInputSchema = z.object({
|
|
|
27
27
|
.describe('Human-readable amount (e.g., "1.5" for 1.5 tokens). Requires decimals field. Mutually exclusive with amount.'),
|
|
28
28
|
decimals: z.number().int().min(0).max(24).optional()
|
|
29
29
|
.describe('Token decimals for humanAmount conversion. Required when using humanAmount.'),
|
|
30
|
-
fromDecimals: z.number().int().min(0).max(18)
|
|
31
|
-
|
|
30
|
+
fromDecimals: z.number().int().min(0).max(18).optional()
|
|
31
|
+
.describe('Source token decimals. Auto-resolved from well-known tokens when omitted.'),
|
|
32
|
+
toDecimals: z.number().int().min(0).max(18).optional()
|
|
33
|
+
.describe('Destination token decimals. Auto-resolved from well-known tokens when omitted.'),
|
|
32
34
|
});
|
|
33
35
|
const DexSwapInputSchema = z.object({
|
|
34
36
|
fromAsset: z.string().min(1),
|
|
@@ -38,14 +40,35 @@ const DexSwapInputSchema = z.object({
|
|
|
38
40
|
.describe('Human-readable amount (e.g., "1.5" for 1.5 tokens). Requires decimals field. Mutually exclusive with amount.'),
|
|
39
41
|
decimals: z.number().int().min(0).max(24).optional()
|
|
40
42
|
.describe('Token decimals for humanAmount conversion. Required when using humanAmount. Note: this is separate from fromDecimals/toDecimals.'),
|
|
41
|
-
fromDecimals: z.number().int().min(0).max(18)
|
|
42
|
-
|
|
43
|
+
fromDecimals: z.number().int().min(0).max(18).optional()
|
|
44
|
+
.describe('Source token decimals. Auto-resolved from well-known tokens when omitted.'),
|
|
45
|
+
toDecimals: z.number().int().min(0).max(18).optional()
|
|
46
|
+
.describe('Destination token decimals. Auto-resolved from well-known tokens when omitted.'),
|
|
43
47
|
providerId: z.string().optional(),
|
|
44
48
|
slippageBps: z.number().int().optional(),
|
|
45
49
|
});
|
|
46
50
|
// ---------------------------------------------------------------------------
|
|
47
|
-
//
|
|
51
|
+
// Helpers
|
|
48
52
|
// ---------------------------------------------------------------------------
|
|
53
|
+
/** Build flat CAIP-19 → decimals lookup from INTERMEDIATE_TOKENS. */
|
|
54
|
+
const KNOWN_DECIMALS = new Map();
|
|
55
|
+
for (const tokens of Object.values(INTERMEDIATE_TOKENS)) {
|
|
56
|
+
for (const t of tokens) {
|
|
57
|
+
KNOWN_DECIMALS.set(t.caip19.toLowerCase(), t.decimals);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve token decimals from CAIP-19 asset ID.
|
|
62
|
+
* Uses well-known tokens from INTERMEDIATE_TOKENS map.
|
|
63
|
+
*/
|
|
64
|
+
function resolveDecimals(caip19, label) {
|
|
65
|
+
const d = KNOWN_DECIMALS.get(caip19.toLowerCase());
|
|
66
|
+
if (d !== undefined)
|
|
67
|
+
return d;
|
|
68
|
+
throw new ChainError('INVALID_INSTRUCTION', 'ethereum', {
|
|
69
|
+
message: `${label} is required for asset ${caip19} — not a well-known token. Provide ${label} explicitly (e.g., 18 for ETH, 6 for USDC).`,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
49
72
|
/** Check if a ChainError indicates no swap route available. */
|
|
50
73
|
function isNoRouteError(err) {
|
|
51
74
|
return err.message.includes('No swap route available') ||
|
|
@@ -63,9 +86,10 @@ export class DcentSwapActionProvider {
|
|
|
63
86
|
this.config = { ...DCENT_SWAP_DEFAULTS, ...config };
|
|
64
87
|
this.metadata = {
|
|
65
88
|
name: 'dcent_swap',
|
|
89
|
+
displayName: "D'CENT Swap",
|
|
66
90
|
description: "D'CENT Swap Aggregator supporting multi-chain DEX swaps including cross-chain swaps",
|
|
67
91
|
version: '1.0.0',
|
|
68
|
-
chains: ['ethereum'
|
|
92
|
+
chains: ['ethereum'],
|
|
69
93
|
mcpExpose: true,
|
|
70
94
|
requiresApiKey: false,
|
|
71
95
|
requiredApis: [],
|
|
@@ -94,28 +118,44 @@ export class DcentSwapActionProvider {
|
|
|
94
118
|
// IActionProvider.resolve
|
|
95
119
|
// -----------------------------------------------------------------------
|
|
96
120
|
async resolve(actionName, params, context) {
|
|
121
|
+
// Chain guard: D'CENT Swap only supports EVM chains
|
|
122
|
+
if (context.chain !== 'ethereum') {
|
|
123
|
+
throw new ChainError('INVALID_INSTRUCTION', context.chain, {
|
|
124
|
+
message: `D'CENT Swap only supports EVM (ethereum) chains. Got: ${context.chain}`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
97
127
|
// Phase 405: humanAmount -> amount conversion
|
|
98
128
|
const rp = { ...params };
|
|
99
129
|
resolveProviderHumanAmount(rp, 'amount', 'humanAmount');
|
|
100
130
|
switch (actionName) {
|
|
101
131
|
case 'get_quotes': {
|
|
102
|
-
// DS-07: get_quotes is informational
|
|
132
|
+
// DS-07: get_quotes is informational -- returns ApiDirectResult (issue #409 fix)
|
|
103
133
|
const input = GetQuotesInputSchema.parse(rp);
|
|
104
134
|
if (!input.amount)
|
|
105
135
|
throw new ChainError('INVALID_INSTRUCTION', context.chain, { message: 'Either amount or humanAmount (with decimals) is required' });
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
136
|
+
const fromDec = input.fromDecimals ?? resolveDecimals(input.fromAsset, 'fromDecimals');
|
|
137
|
+
const toDec = input.toDecimals ?? resolveDecimals(input.toAsset, 'toDecimals');
|
|
138
|
+
const result = await getDcentQuotes(this.getClient(), { ...input, fromDecimals: fromDec, toDecimals: toDec, fromWalletAddress: context.walletAddress });
|
|
139
|
+
return {
|
|
140
|
+
__apiDirect: true,
|
|
141
|
+
externalId: `dcent-quotes-${Date.now()}`,
|
|
142
|
+
status: 'success',
|
|
143
|
+
provider: 'dcent_swap',
|
|
144
|
+
action: 'get_quotes',
|
|
145
|
+
data: {
|
|
146
|
+
dexProviders: result.dexProviders,
|
|
147
|
+
bestDexProvider: result.bestDexProvider ?? null,
|
|
148
|
+
totalProviders: result.dexProviders.length,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
113
151
|
}
|
|
114
152
|
case 'dex_swap': {
|
|
115
153
|
const input = DexSwapInputSchema.parse(rp);
|
|
116
154
|
if (!input.amount)
|
|
117
155
|
throw new ChainError('INVALID_INSTRUCTION', context.chain, { message: 'Either amount or humanAmount (with decimals) is required' });
|
|
118
|
-
const
|
|
156
|
+
const swapFromDec = input.fromDecimals ?? resolveDecimals(input.fromAsset, 'fromDecimals');
|
|
157
|
+
const swapToDec = input.toDecimals ?? resolveDecimals(input.toAsset, 'toDecimals');
|
|
158
|
+
const swapParams = { fromAsset: input.fromAsset, toAsset: input.toAsset, amount: input.amount, fromDecimals: swapFromDec, toDecimals: swapToDec, walletAddress: context.walletAddress, providerId: input.providerId, slippageBps: input.slippageBps };
|
|
119
159
|
try {
|
|
120
160
|
return await executeDexSwap(this.getClient(), swapParams, this.config);
|
|
121
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAwB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,cAAc,EAA+C,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAA0B,MAAM,kBAAkB,CAAC;AACpH,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAElF,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;IACpI,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SACtC,QAAQ,CAAC,8GAA8G,CAAC;IAC3H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACjD,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACrD,QAAQ,CAAC,2EAA2E,CAAC;IACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACnD,QAAQ,CAAC,gFAAgF,CAAC;CAC9F,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;IACpI,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SACtC,QAAQ,CAAC,8GAA8G,CAAC;IAC3H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACjD,QAAQ,CAAC,kIAAkI,CAAC;IAC/I,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACrD,QAAQ,CAAC,2EAA2E,CAAC;IACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACnD,QAAQ,CAAC,gFAAgF,CAAC;IAC7F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,qEAAqE;AACrE,MAAM,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;AACtD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAc,EAAE,KAAa;IACpD,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,UAAU,EAAE;QACtD,OAAO,EAAE,GAAG,KAAK,0BAA0B,MAAM,sCAAsC,KAAK,6CAA6C;KAC1I,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,SAAS,cAAc,CAAC,GAAe;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACpD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;AACxD,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,OAAO,uBAAuB;IACzB,QAAQ,CAAyB;IACjC,OAAO,CAA8B;IAE7B,MAAM,CAAkB;IACjC,MAAM,GAA8B,IAAI,CAAC;IAEjD,YAAY,MAAiC;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAAC;QAEpD,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,qFAAqF;YAClG,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,CAAC,UAAU,CAAC;YACpB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,EAAE;YAChB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG;YACb;gBACE,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,kIAAkI;gBAC/I,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,oBAAoB;gBACjC,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,SAAS;aACvB;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,gIAAgI;gBAC7I,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,kBAAkB;gBAC/B,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,SAAS;aACvB;SACO,CAAC;IACb,CAAC;IAED,0EAA0E;IAC1E,0BAA0B;IAC1B,0EAA0E;IAE1E,KAAK,CAAC,OAAO,CACX,UAAkB,EAClB,MAA+B,EAC/B,OAAsB;QAEtB,oDAAoD;QACpD,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE;gBACzD,OAAO,EAAE,yDAAyD,OAAO,CAAC,KAAK,EAAE;aAClF,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACzB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAExD,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,iFAAiF;gBACjF,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,0DAA0D,EAAE,CAAC,CAAC;gBACvJ,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACvF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAC/E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,aAAa,EAAqB,CAAC,CAAC;gBAC3K,OAAO;oBACL,WAAW,EAAE,IAAa;oBAC1B,UAAU,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;oBACxC,MAAM,EAAE,SAAkB;oBAC1B,QAAQ,EAAE,YAAY;oBACtB,MAAM,EAAE,YAAY;oBACpB,IAAI,EAAE;wBACJ,YAAY,EAAE,MAAM,CAAC,YAAY;wBACjC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;wBAC/C,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;qBAC3C;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,0DAA0D,EAAE,CAAC,CAAC;gBACvJ,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAC3F,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACnF,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtP,IAAI,CAAC;oBACH,OAAO,MAAM,cAAc,CACzB,IAAI,CAAC,SAAS,EAAE,EAChB,UAAU,EACV,IAAI,CAAC,MAAM,CACZ,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sEAAsE;oBACtE,IAAI,GAAG,YAAY,UAAU,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAC1C,IAAI,CAAC,SAAS,EAAE,EAChB,UAAU,EACV,IAAI,CAAC,MAAM,CACZ,CAAC;wBACF,0DAA0D;wBAC1D,OAAO,YAAY,CAAC,QAAQ,CAAC;oBAC/B,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YAED;gBACE,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE;oBACzD,OAAO,EAAE,mBAAmB,UAAU,EAAE;iBACzC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,8DAA8D;IAC9D,0EAA0E;IAE1E;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,MAAuB;QACvC,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAuB;QAC7C,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,0EAA0E;IAC1E,WAAW;IACX,0EAA0E;IAE1E,iCAAiC;IACzB,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAwB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAA+C,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAIlB,MAAM,kBAAkB,CAAC"}
|
|
@@ -8,6 +8,8 @@ export interface DriftConfig {
|
|
|
8
8
|
enabled: boolean;
|
|
9
9
|
/** Sub-account index (default 0, DEC-PERP-15). */
|
|
10
10
|
subAccount: number;
|
|
11
|
+
/** Solana RPC URL for SDK calls. */
|
|
12
|
+
rpcUrl?: string;
|
|
11
13
|
}
|
|
12
14
|
/** Drift Protocol V2 program ID on Solana mainnet. */
|
|
13
15
|
export declare const DRIFT_PROGRAM_ID = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,gDAAgD,CAAC;AAM9E,eAAO,MAAM,cAAc,EAAE,WAG5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/drift/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/drift/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;AAE9E,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;CACd,CAAC"}
|
|
@@ -124,17 +124,20 @@ export declare class MockDriftSdkWrapper implements IDriftSdkWrapper {
|
|
|
124
124
|
* Lazily imports the SDK at first use. If the SDK is not installed,
|
|
125
125
|
* all methods throw ChainError('INVALID_INSTRUCTION', 'solana').
|
|
126
126
|
*
|
|
127
|
-
*
|
|
127
|
+
* Converts TransactionInstruction results from the SDK
|
|
128
128
|
* to DriftInstruction format (programId + base64 + accounts).
|
|
129
129
|
*/
|
|
130
130
|
export declare class DriftSdkWrapper implements IDriftSdkWrapper {
|
|
131
|
-
/** RPC URL for future SDK connection. Stored for when drift-sdk is installed. */
|
|
132
131
|
readonly rpcUrl: string;
|
|
133
|
-
/** Sub-account index (DEC-PERP-15). */
|
|
134
132
|
readonly subAccount: number;
|
|
133
|
+
private _sdk;
|
|
134
|
+
private _client;
|
|
135
135
|
constructor(rpcUrl: string, subAccount: number);
|
|
136
|
-
private
|
|
137
|
-
|
|
136
|
+
private loadSdk;
|
|
137
|
+
private getClient;
|
|
138
|
+
private convertInstruction;
|
|
139
|
+
private resolveMarketIndex;
|
|
140
|
+
buildOpenPositionInstruction(params: {
|
|
138
141
|
market: string;
|
|
139
142
|
direction: 'LONG' | 'SHORT';
|
|
140
143
|
size: string;
|
|
@@ -142,23 +145,23 @@ export declare class DriftSdkWrapper implements IDriftSdkWrapper {
|
|
|
142
145
|
limitPrice?: string;
|
|
143
146
|
walletAddress: string;
|
|
144
147
|
}): Promise<DriftInstruction[]>;
|
|
145
|
-
buildClosePositionInstruction(
|
|
148
|
+
buildClosePositionInstruction(params: {
|
|
146
149
|
market: string;
|
|
147
150
|
size?: string;
|
|
148
151
|
walletAddress: string;
|
|
149
152
|
}): Promise<DriftInstruction[]>;
|
|
150
|
-
buildModifyPositionInstruction(
|
|
153
|
+
buildModifyPositionInstruction(params: {
|
|
151
154
|
market: string;
|
|
152
155
|
newSize?: string;
|
|
153
156
|
newLimitPrice?: string;
|
|
154
157
|
walletAddress: string;
|
|
155
158
|
}): Promise<DriftInstruction[]>;
|
|
156
|
-
buildDepositInstruction(
|
|
159
|
+
buildDepositInstruction(params: {
|
|
157
160
|
amount: string;
|
|
158
161
|
asset: string;
|
|
159
162
|
walletAddress: string;
|
|
160
163
|
}): Promise<DriftInstruction[]>;
|
|
161
|
-
buildWithdrawInstruction(
|
|
164
|
+
buildWithdrawInstruction(params: {
|
|
162
165
|
amount: string;
|
|
163
166
|
asset: string;
|
|
164
167
|
walletAddress: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift-sdk-wrapper.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/drift-sdk-wrapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"drift-sdk-wrapper.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/drift-sdk-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -165,47 +165,247 @@ export class MockDriftSdkWrapper {
|
|
|
165
165
|
* Lazily imports the SDK at first use. If the SDK is not installed,
|
|
166
166
|
* all methods throw ChainError('INVALID_INSTRUCTION', 'solana').
|
|
167
167
|
*
|
|
168
|
-
*
|
|
168
|
+
* Converts TransactionInstruction results from the SDK
|
|
169
169
|
* to DriftInstruction format (programId + base64 + accounts).
|
|
170
170
|
*/
|
|
171
171
|
export class DriftSdkWrapper {
|
|
172
|
-
/** RPC URL for future SDK connection. Stored for when drift-sdk is installed. */
|
|
173
172
|
rpcUrl;
|
|
174
|
-
/** Sub-account index (DEC-PERP-15). */
|
|
175
173
|
subAccount;
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
175
|
+
_sdk = null;
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
177
|
+
_client = null;
|
|
176
178
|
constructor(rpcUrl, subAccount) {
|
|
177
179
|
this.rpcUrl = rpcUrl;
|
|
178
180
|
this.subAccount = subAccount;
|
|
179
181
|
}
|
|
180
|
-
async
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
async loadSdk() {
|
|
183
|
+
if (this._sdk)
|
|
184
|
+
return this._sdk;
|
|
185
|
+
try {
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
187
|
+
// @ts-ignore — optional dependency, may not be installed in CI
|
|
188
|
+
const solana = await import('@solana/web3.js');
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
190
|
+
// @ts-ignore — optional dependency, may not be installed in CI
|
|
191
|
+
const drift = await import('@drift-labs/sdk');
|
|
192
|
+
this._sdk = {
|
|
193
|
+
Connection: solana.Connection,
|
|
194
|
+
PublicKey: solana.PublicKey,
|
|
195
|
+
Keypair: solana.Keypair,
|
|
196
|
+
Wallet: drift.Wallet,
|
|
197
|
+
BN: drift.BN,
|
|
198
|
+
DriftClient: drift.DriftClient,
|
|
199
|
+
PositionDirection: drift.PositionDirection,
|
|
200
|
+
OrderType: drift.OrderType,
|
|
201
|
+
MarketType: drift.MarketType,
|
|
202
|
+
PRICE_PRECISION: drift.PRICE_PRECISION,
|
|
203
|
+
BASE_PRECISION: drift.BASE_PRECISION,
|
|
204
|
+
QUOTE_PRECISION: drift.QUOTE_PRECISION,
|
|
205
|
+
convertToNumber: drift.convertToNumber,
|
|
206
|
+
getMarketOrderParams: drift.getMarketOrderParams,
|
|
207
|
+
getLimitOrderParams: drift.getLimitOrderParams,
|
|
208
|
+
};
|
|
209
|
+
return this._sdk;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
const { ChainError } = await import('@waiaas/core');
|
|
213
|
+
throw new ChainError('INVALID_INSTRUCTION', 'solana', {
|
|
214
|
+
message: 'Drift SDK not available. Install @drift-labs/sdk and @solana/web3.js as optional dependencies.',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
219
|
+
async getClient() {
|
|
220
|
+
if (this._client)
|
|
221
|
+
return this._client;
|
|
222
|
+
const sdk = await this.loadSdk();
|
|
223
|
+
const connection = new sdk.Connection(this.rpcUrl, 'confirmed');
|
|
224
|
+
const client = new sdk.DriftClient({
|
|
225
|
+
connection,
|
|
226
|
+
wallet: new sdk.Wallet(sdk.Keypair.generate()), // read-only dummy wallet for queries
|
|
227
|
+
programID: new sdk.PublicKey(DRIFT_PROGRAM_ID),
|
|
228
|
+
activeSubAccountId: this.subAccount,
|
|
184
229
|
});
|
|
230
|
+
await client.subscribe();
|
|
231
|
+
this._client = client;
|
|
232
|
+
return client;
|
|
233
|
+
}
|
|
234
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
235
|
+
convertInstruction(ix) {
|
|
236
|
+
return {
|
|
237
|
+
programId: ix.programId.toBase58(),
|
|
238
|
+
instructionData: Buffer.from(ix.data).toString('base64'),
|
|
239
|
+
accounts: ix.keys.map((k) => ({
|
|
240
|
+
pubkey: k.pubkey.toBase58(),
|
|
241
|
+
isSigner: k.isSigner,
|
|
242
|
+
isWritable: k.isWritable,
|
|
243
|
+
})),
|
|
244
|
+
};
|
|
185
245
|
}
|
|
186
|
-
|
|
187
|
-
|
|
246
|
+
resolveMarketIndex(market) {
|
|
247
|
+
const match = market.match(/^(\w+)-PERP$/);
|
|
248
|
+
if (!match || !match[1])
|
|
249
|
+
return 0;
|
|
250
|
+
const known = { SOL: 0, BTC: 1, ETH: 2, APT: 3, MATIC: 4, ARB: 5, DOGE: 6, BNB: 7, SUI: 8, PEPE: 9 };
|
|
251
|
+
return known[match[1]] ?? 0;
|
|
188
252
|
}
|
|
189
|
-
async
|
|
190
|
-
|
|
253
|
+
async buildOpenPositionInstruction(params) {
|
|
254
|
+
const sdk = await this.loadSdk();
|
|
255
|
+
const client = await this.getClient();
|
|
256
|
+
const marketIndex = this.resolveMarketIndex(params.market);
|
|
257
|
+
const direction = params.direction === 'LONG' ? sdk.PositionDirection.LONG : sdk.PositionDirection.SHORT;
|
|
258
|
+
const baseAmount = new sdk.BN(parseFloat(params.size) * 1e9);
|
|
259
|
+
let orderParams;
|
|
260
|
+
if (params.orderType === 'LIMIT' && params.limitPrice) {
|
|
261
|
+
const price = new sdk.BN(parseFloat(params.limitPrice) * 1e6);
|
|
262
|
+
orderParams = sdk.getLimitOrderParams({ marketIndex, direction, baseAssetAmount: baseAmount, price, marketType: sdk.MarketType.PERP });
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
orderParams = sdk.getMarketOrderParams({ marketIndex, direction, baseAssetAmount: baseAmount, marketType: sdk.MarketType.PERP });
|
|
266
|
+
}
|
|
267
|
+
const ix = await client.getPlacePerpOrderIx(orderParams);
|
|
268
|
+
return [this.convertInstruction(ix)];
|
|
269
|
+
}
|
|
270
|
+
async buildClosePositionInstruction(params) {
|
|
271
|
+
const sdk = await this.loadSdk();
|
|
272
|
+
const client = await this.getClient();
|
|
273
|
+
const marketIndex = this.resolveMarketIndex(params.market);
|
|
274
|
+
if (!params.size) {
|
|
275
|
+
const ix = await client.getCloseSpotMarketOrderIx
|
|
276
|
+
? await client.getPlacePerpOrderIx(sdk.getMarketOrderParams({
|
|
277
|
+
marketIndex,
|
|
278
|
+
direction: sdk.PositionDirection.SHORT,
|
|
279
|
+
baseAssetAmount: new sdk.BN(0),
|
|
280
|
+
reduceOnly: true,
|
|
281
|
+
marketType: sdk.MarketType.PERP,
|
|
282
|
+
}))
|
|
283
|
+
: await client.getPlacePerpOrderIx(sdk.getMarketOrderParams({
|
|
284
|
+
marketIndex,
|
|
285
|
+
direction: sdk.PositionDirection.SHORT,
|
|
286
|
+
baseAssetAmount: new sdk.BN(0),
|
|
287
|
+
reduceOnly: true,
|
|
288
|
+
marketType: sdk.MarketType.PERP,
|
|
289
|
+
}));
|
|
290
|
+
return [this.convertInstruction(ix)];
|
|
291
|
+
}
|
|
292
|
+
const baseAmount = new sdk.BN(parseFloat(params.size) * 1e9);
|
|
293
|
+
const ix = await client.getPlacePerpOrderIx(sdk.getMarketOrderParams({
|
|
294
|
+
marketIndex,
|
|
295
|
+
direction: sdk.PositionDirection.SHORT,
|
|
296
|
+
baseAssetAmount: baseAmount,
|
|
297
|
+
reduceOnly: true,
|
|
298
|
+
marketType: sdk.MarketType.PERP,
|
|
299
|
+
}));
|
|
300
|
+
return [this.convertInstruction(ix)];
|
|
191
301
|
}
|
|
192
|
-
async buildModifyPositionInstruction(
|
|
193
|
-
|
|
302
|
+
async buildModifyPositionInstruction(params) {
|
|
303
|
+
const sdk = await this.loadSdk();
|
|
304
|
+
const client = await this.getClient();
|
|
305
|
+
const marketIndex = this.resolveMarketIndex(params.market);
|
|
306
|
+
const orderParams = {
|
|
307
|
+
marketIndex,
|
|
308
|
+
marketType: sdk.MarketType.PERP,
|
|
309
|
+
};
|
|
310
|
+
if (params.newSize) {
|
|
311
|
+
orderParams.baseAssetAmount = new sdk.BN(parseFloat(params.newSize) * 1e9);
|
|
312
|
+
}
|
|
313
|
+
if (params.newLimitPrice) {
|
|
314
|
+
orderParams.price = new sdk.BN(parseFloat(params.newLimitPrice) * 1e6);
|
|
315
|
+
}
|
|
316
|
+
const ix = await client.getPlacePerpOrderIx(orderParams);
|
|
317
|
+
return [this.convertInstruction(ix)];
|
|
194
318
|
}
|
|
195
|
-
async buildDepositInstruction(
|
|
196
|
-
|
|
319
|
+
async buildDepositInstruction(params) {
|
|
320
|
+
const sdk = await this.loadSdk();
|
|
321
|
+
const client = await this.getClient();
|
|
322
|
+
const amount = new sdk.BN(parseFloat(params.amount) * 1e6);
|
|
323
|
+
const ix = await client.getDepositIx(amount, 0, new sdk.PublicKey(params.walletAddress));
|
|
324
|
+
return [this.convertInstruction(ix)];
|
|
197
325
|
}
|
|
198
|
-
async buildWithdrawInstruction(
|
|
199
|
-
|
|
326
|
+
async buildWithdrawInstruction(params) {
|
|
327
|
+
const sdk = await this.loadSdk();
|
|
328
|
+
const client = await this.getClient();
|
|
329
|
+
const amount = new sdk.BN(parseFloat(params.amount) * 1e6);
|
|
330
|
+
const ix = await client.getWithdrawIx(amount, 0);
|
|
331
|
+
return [this.convertInstruction(ix)];
|
|
200
332
|
}
|
|
201
333
|
async getPositions(_walletAddress) {
|
|
202
|
-
|
|
334
|
+
const sdk = await this.loadSdk();
|
|
335
|
+
const client = await this.getClient();
|
|
336
|
+
const user = client.getUser();
|
|
337
|
+
const perpPositions = user.getActivePerpPositions();
|
|
338
|
+
return perpPositions.map((pos) => {
|
|
339
|
+
const isLong = pos.baseAssetAmount.toNumber() > 0;
|
|
340
|
+
const baseAmount = Math.abs(pos.baseAssetAmount.toNumber()) / 1e9;
|
|
341
|
+
const entryPrice = pos.quoteEntryAmount
|
|
342
|
+
? Math.abs(pos.quoteEntryAmount.toNumber() / 1e6) / baseAmount
|
|
343
|
+
: null;
|
|
344
|
+
const market = client.getPerpMarketAccount(pos.marketIndex);
|
|
345
|
+
const oraclePrice = market?.amm?.lastOracleNormalisedPrice
|
|
346
|
+
? sdk.convertToNumber(market.amm.lastOracleNormalisedPrice, sdk.PRICE_PRECISION)
|
|
347
|
+
: null;
|
|
348
|
+
const notional = oraclePrice ? baseAmount * oraclePrice : null;
|
|
349
|
+
const unrealizedPnl = oraclePrice && entryPrice
|
|
350
|
+
? (oraclePrice - entryPrice) * baseAmount * (isLong ? 1 : -1)
|
|
351
|
+
: null;
|
|
352
|
+
return {
|
|
353
|
+
market: `${market?.name ? Buffer.from(market.name).toString('utf-8').replace(/\0/g, '').trim() : `PERP-${pos.marketIndex}`}`,
|
|
354
|
+
marketIndex: pos.marketIndex,
|
|
355
|
+
direction: isLong ? 'LONG' : 'SHORT',
|
|
356
|
+
baseAssetAmount: pos.baseAssetAmount.toString(),
|
|
357
|
+
entryPrice,
|
|
358
|
+
leverage: 1,
|
|
359
|
+
unrealizedPnl,
|
|
360
|
+
liquidationPrice: null,
|
|
361
|
+
margin: null,
|
|
362
|
+
notionalValueUsd: notional,
|
|
363
|
+
};
|
|
364
|
+
});
|
|
203
365
|
}
|
|
204
366
|
async getMarginInfo(_walletAddress) {
|
|
205
|
-
|
|
367
|
+
const sdk = await this.loadSdk();
|
|
368
|
+
const client = await this.getClient();
|
|
369
|
+
const user = client.getUser();
|
|
370
|
+
const totalCollateral = sdk.convertToNumber(user.getTotalCollateral(), sdk.QUOTE_PRECISION);
|
|
371
|
+
const freeCollateral = sdk.convertToNumber(user.getFreeCollateral(), sdk.QUOTE_PRECISION);
|
|
372
|
+
const marginRatio = user.getMarginRatio ? sdk.convertToNumber(user.getMarginRatio(), new sdk.BN(10000)) : 0.3;
|
|
373
|
+
return {
|
|
374
|
+
totalMargin: totalCollateral,
|
|
375
|
+
freeMargin: freeCollateral,
|
|
376
|
+
maintenanceMarginRatio: 0.0625,
|
|
377
|
+
marginRatio,
|
|
378
|
+
};
|
|
206
379
|
}
|
|
207
380
|
async getMarkets() {
|
|
208
|
-
|
|
381
|
+
const sdk = await this.loadSdk();
|
|
382
|
+
const client = await this.getClient();
|
|
383
|
+
const perpMarkets = client.getPerpMarketAccounts();
|
|
384
|
+
return perpMarkets.map((market) => {
|
|
385
|
+
const name = Buffer.from(market.name).toString('utf-8').replace(/\0/g, '').trim();
|
|
386
|
+
const baseAsset = name.replace(/-PERP$/, '');
|
|
387
|
+
const oraclePrice = market.amm?.lastOracleNormalisedPrice
|
|
388
|
+
? sdk.convertToNumber(market.amm.lastOracleNormalisedPrice, sdk.PRICE_PRECISION)
|
|
389
|
+
: null;
|
|
390
|
+
const oi = market.amm
|
|
391
|
+
? (Math.abs(market.amm.baseAssetAmountLong.toNumber()) + Math.abs(market.amm.baseAssetAmountShort.toNumber())) / 1e9 * (oraclePrice ?? 0)
|
|
392
|
+
: null;
|
|
393
|
+
const fundingRate = market.lastFundingRate
|
|
394
|
+
? sdk.convertToNumber(market.lastFundingRate, sdk.PRICE_PRECISION)
|
|
395
|
+
: null;
|
|
396
|
+
const maxLeverage = market.marginRatioInitial > 0
|
|
397
|
+
? Math.round(10000 / market.marginRatioInitial)
|
|
398
|
+
: 20;
|
|
399
|
+
return {
|
|
400
|
+
market: name,
|
|
401
|
+
marketIndex: market.marketIndex,
|
|
402
|
+
baseAsset,
|
|
403
|
+
maxLeverage,
|
|
404
|
+
fundingRate,
|
|
405
|
+
openInterest: oi,
|
|
406
|
+
oraclePrice,
|
|
407
|
+
};
|
|
408
|
+
});
|
|
209
409
|
}
|
|
210
410
|
}
|
|
211
411
|
//# sourceMappingURL=drift-sdk-wrapper.js.map
|