@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.
Files changed (164) hide show
  1. package/README.md +5 -5
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.d.ts +2 -0
  6. package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.d.ts.map +1 -0
  7. package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.js +97 -0
  8. package/dist/providers/aave-v3/__tests__/aave-v3-provider.test.js.map +1 -0
  9. package/dist/providers/aave-v3/aave-contracts.d.ts +8 -0
  10. package/dist/providers/aave-v3/aave-contracts.d.ts.map +1 -1
  11. package/dist/providers/aave-v3/aave-contracts.js +13 -0
  12. package/dist/providers/aave-v3/aave-contracts.js.map +1 -1
  13. package/dist/providers/aave-v3/aave-rpc.d.ts +10 -0
  14. package/dist/providers/aave-v3/aave-rpc.d.ts.map +1 -1
  15. package/dist/providers/aave-v3/aave-rpc.js +16 -0
  16. package/dist/providers/aave-v3/aave-rpc.js.map +1 -1
  17. package/dist/providers/aave-v3/index.d.ts +10 -2
  18. package/dist/providers/aave-v3/index.d.ts.map +1 -1
  19. package/dist/providers/aave-v3/index.js +128 -128
  20. package/dist/providers/aave-v3/index.js.map +1 -1
  21. package/dist/providers/across/index.d.ts.map +1 -1
  22. package/dist/providers/across/index.js +1 -0
  23. package/dist/providers/across/index.js.map +1 -1
  24. package/dist/providers/dcent-swap/auto-router.d.ts.map +1 -1
  25. package/dist/providers/dcent-swap/auto-router.js +8 -0
  26. package/dist/providers/dcent-swap/auto-router.js.map +1 -1
  27. package/dist/providers/dcent-swap/dcent-api-client.d.ts +1 -0
  28. package/dist/providers/dcent-swap/dcent-api-client.d.ts.map +1 -1
  29. package/dist/providers/dcent-swap/dcent-api-client.js.map +1 -1
  30. package/dist/providers/dcent-swap/dex-swap.d.ts +1 -0
  31. package/dist/providers/dcent-swap/dex-swap.d.ts.map +1 -1
  32. package/dist/providers/dcent-swap/dex-swap.js +13 -2
  33. package/dist/providers/dcent-swap/dex-swap.js.map +1 -1
  34. package/dist/providers/dcent-swap/index.d.ts +2 -2
  35. package/dist/providers/dcent-swap/index.d.ts.map +1 -1
  36. package/dist/providers/dcent-swap/index.js +56 -16
  37. package/dist/providers/dcent-swap/index.js.map +1 -1
  38. package/dist/providers/drift/config.d.ts +2 -0
  39. package/dist/providers/drift/config.d.ts.map +1 -1
  40. package/dist/providers/drift/config.js.map +1 -1
  41. package/dist/providers/drift/drift-sdk-wrapper.d.ts +12 -9
  42. package/dist/providers/drift/drift-sdk-wrapper.d.ts.map +1 -1
  43. package/dist/providers/drift/drift-sdk-wrapper.js +220 -20
  44. package/dist/providers/drift/drift-sdk-wrapper.js.map +1 -1
  45. package/dist/providers/drift/index.d.ts +2 -2
  46. package/dist/providers/drift/index.d.ts.map +1 -1
  47. package/dist/providers/drift/index.js +9 -4
  48. package/dist/providers/drift/index.js.map +1 -1
  49. package/dist/providers/erc8004/index.d.ts.map +1 -1
  50. package/dist/providers/erc8004/index.js +1 -0
  51. package/dist/providers/erc8004/index.js.map +1 -1
  52. package/dist/providers/hyperliquid/__tests__/perp-provider.test.js +13 -6
  53. package/dist/providers/hyperliquid/__tests__/perp-provider.test.js.map +1 -1
  54. package/dist/providers/hyperliquid/__tests__/spot-provider.test.js +11 -4
  55. package/dist/providers/hyperliquid/__tests__/spot-provider.test.js.map +1 -1
  56. package/dist/providers/hyperliquid/perp-provider.d.ts +2 -2
  57. package/dist/providers/hyperliquid/perp-provider.d.ts.map +1 -1
  58. package/dist/providers/hyperliquid/perp-provider.js +7 -3
  59. package/dist/providers/hyperliquid/perp-provider.js.map +1 -1
  60. package/dist/providers/hyperliquid/schemas.d.ts +14 -14
  61. package/dist/providers/hyperliquid/spot-provider.d.ts +2 -2
  62. package/dist/providers/hyperliquid/spot-provider.d.ts.map +1 -1
  63. package/dist/providers/hyperliquid/spot-provider.js +7 -3
  64. package/dist/providers/hyperliquid/spot-provider.js.map +1 -1
  65. package/dist/providers/hyperliquid/sub-account-provider.d.ts.map +1 -1
  66. package/dist/providers/hyperliquid/sub-account-provider.js +1 -0
  67. package/dist/providers/hyperliquid/sub-account-provider.js.map +1 -1
  68. package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.d.ts +2 -0
  69. package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.d.ts.map +1 -0
  70. package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.js +107 -0
  71. package/dist/providers/jito-staking/__tests__/jito-staking-provider.test.js.map +1 -0
  72. package/dist/providers/jito-staking/config.d.ts +12 -3
  73. package/dist/providers/jito-staking/config.d.ts.map +1 -1
  74. package/dist/providers/jito-staking/config.js +12 -3
  75. package/dist/providers/jito-staking/config.js.map +1 -1
  76. package/dist/providers/jito-staking/index.d.ts +2 -2
  77. package/dist/providers/jito-staking/index.d.ts.map +1 -1
  78. package/dist/providers/jito-staking/index.js +25 -8
  79. package/dist/providers/jito-staking/index.js.map +1 -1
  80. package/dist/providers/jito-staking/jito-migration.test.js +107 -1
  81. package/dist/providers/jito-staking/jito-migration.test.js.map +1 -1
  82. package/dist/providers/jito-staking/jito-stake-pool.d.ts +18 -5
  83. package/dist/providers/jito-staking/jito-stake-pool.d.ts.map +1 -1
  84. package/dist/providers/jito-staking/jito-stake-pool.js +61 -21
  85. package/dist/providers/jito-staking/jito-stake-pool.js.map +1 -1
  86. package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.d.ts +2 -0
  87. package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.d.ts.map +1 -0
  88. package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.js +177 -0
  89. package/dist/providers/jupiter-swap/__tests__/jupiter-swap-provider.test.js.map +1 -0
  90. package/dist/providers/jupiter-swap/index.d.ts.map +1 -1
  91. package/dist/providers/jupiter-swap/index.js +35 -1
  92. package/dist/providers/jupiter-swap/index.js.map +1 -1
  93. package/dist/providers/jupiter-swap/schemas.d.ts +30 -30
  94. package/dist/providers/jupiter-swap/schemas.js +2 -2
  95. package/dist/providers/jupiter-swap/schemas.js.map +1 -1
  96. package/dist/providers/kamino/config.d.ts +2 -0
  97. package/dist/providers/kamino/config.d.ts.map +1 -1
  98. package/dist/providers/kamino/config.js.map +1 -1
  99. package/dist/providers/kamino/index.d.ts +2 -2
  100. package/dist/providers/kamino/index.d.ts.map +1 -1
  101. package/dist/providers/kamino/index.js +11 -6
  102. package/dist/providers/kamino/index.js.map +1 -1
  103. package/dist/providers/kamino/kamino-sdk-wrapper.d.ts +12 -10
  104. package/dist/providers/kamino/kamino-sdk-wrapper.d.ts.map +1 -1
  105. package/dist/providers/kamino/kamino-sdk-wrapper.js +134 -20
  106. package/dist/providers/kamino/kamino-sdk-wrapper.js.map +1 -1
  107. package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.d.ts +2 -0
  108. package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.d.ts.map +1 -0
  109. package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.js +106 -0
  110. package/dist/providers/lido-staking/__tests__/lido-staking-provider.test.js.map +1 -0
  111. package/dist/providers/lido-staking/index.d.ts +10 -7
  112. package/dist/providers/lido-staking/index.d.ts.map +1 -1
  113. package/dist/providers/lido-staking/index.js +67 -47
  114. package/dist/providers/lido-staking/index.js.map +1 -1
  115. package/dist/providers/lido-staking/lido-contract.d.ts +16 -2
  116. package/dist/providers/lido-staking/lido-contract.d.ts.map +1 -1
  117. package/dist/providers/lido-staking/lido-contract.js +43 -2
  118. package/dist/providers/lido-staking/lido-contract.js.map +1 -1
  119. package/dist/providers/lifi/__tests__/lifi-provider.test.d.ts +2 -0
  120. package/dist/providers/lifi/__tests__/lifi-provider.test.d.ts.map +1 -0
  121. package/dist/providers/lifi/__tests__/lifi-provider.test.js +196 -0
  122. package/dist/providers/lifi/__tests__/lifi-provider.test.js.map +1 -0
  123. package/dist/providers/lifi/index.d.ts.map +1 -1
  124. package/dist/providers/lifi/index.js +1 -0
  125. package/dist/providers/lifi/index.js.map +1 -1
  126. package/dist/providers/pendle/__tests__/pendle-api-client.test.js +79 -0
  127. package/dist/providers/pendle/__tests__/pendle-api-client.test.js.map +1 -1
  128. package/dist/providers/pendle/__tests__/pendle-provider.test.js +28 -8
  129. package/dist/providers/pendle/__tests__/pendle-provider.test.js.map +1 -1
  130. package/dist/providers/pendle/config.d.ts +2 -0
  131. package/dist/providers/pendle/config.d.ts.map +1 -1
  132. package/dist/providers/pendle/config.js +2 -0
  133. package/dist/providers/pendle/config.js.map +1 -1
  134. package/dist/providers/pendle/index.d.ts +8 -4
  135. package/dist/providers/pendle/index.d.ts.map +1 -1
  136. package/dist/providers/pendle/index.js +82 -69
  137. package/dist/providers/pendle/index.js.map +1 -1
  138. package/dist/providers/pendle/pendle-api-client.d.ts +2 -2
  139. package/dist/providers/pendle/pendle-api-client.d.ts.map +1 -1
  140. package/dist/providers/pendle/pendle-api-client.js +9 -2
  141. package/dist/providers/pendle/pendle-api-client.js.map +1 -1
  142. package/dist/providers/pendle/schemas.d.ts +748 -32
  143. package/dist/providers/pendle/schemas.d.ts.map +1 -1
  144. package/dist/providers/pendle/schemas.js +17 -4
  145. package/dist/providers/pendle/schemas.js.map +1 -1
  146. package/dist/providers/polymarket/__tests__/infrastructure.test.d.ts +2 -0
  147. package/dist/providers/polymarket/__tests__/infrastructure.test.d.ts.map +1 -0
  148. package/dist/providers/polymarket/__tests__/infrastructure.test.js +117 -0
  149. package/dist/providers/polymarket/__tests__/infrastructure.test.js.map +1 -0
  150. package/dist/providers/polymarket/ctf-provider.d.ts.map +1 -1
  151. package/dist/providers/polymarket/ctf-provider.js +1 -0
  152. package/dist/providers/polymarket/ctf-provider.js.map +1 -1
  153. package/dist/providers/polymarket/order-provider.d.ts.map +1 -1
  154. package/dist/providers/polymarket/order-provider.js +1 -0
  155. package/dist/providers/polymarket/order-provider.js.map +1 -1
  156. package/dist/providers/polymarket/schemas.d.ts +20 -20
  157. package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.d.ts +2 -0
  158. package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.d.ts.map +1 -0
  159. package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.js +154 -0
  160. package/dist/providers/zerox-swap/__tests__/zerox-swap-provider.test.js.map +1 -0
  161. package/dist/providers/zerox-swap/index.d.ts.map +1 -1
  162. package/dist/providers/zerox-swap/index.js +1 -0
  163. package/dist/providers/zerox-swap/index.js.map +1 -1
  164. 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: txdata.value ? BigInt(txdata.value).toString() : '0',
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":"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"}
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,EACpB,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,EAAuC,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA+C/F,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;IAsCvC,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,CAAC;IAuDvD;;;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"}
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
- toDecimals: z.number().int().min(0).max(18),
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
- toDecimals: z.number().int().min(0).max(18),
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
- // Helper
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', 'solana'],
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. Use queryQuotes() for direct access.
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 result = await getDcentQuotes(this.getClient(), input);
107
- throw new ChainError('INVALID_INSTRUCTION', context.chain, {
108
- message: `get_quotes is informational. Use queryQuotes() query method. Result: ${JSON.stringify({
109
- dexProviders: result.dexProviders.length,
110
- bestDexProvider: result.bestDexProvider?.providerId ?? null,
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 swapParams = { fromAsset: input.fromAsset, toAsset: input.toAsset, amount: input.amount, fromDecimals: input.fromDecimals, toDecimals: input.toDecimals, walletAddress: context.walletAddress, providerId: input.providerId, slippageBps: input.slippageBps };
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/dcent-swap/index.ts"],"names":[],"mappings":"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"}
@@ -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;CACpB;AAMD,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,gDAAgD,CAAC;AAM9E,eAAO,MAAM,cAAc,EAAE,WAG5B,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;AAYH,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"}
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
- * The real implementation will convert TransactionInstruction results
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 throwNotConfigured;
137
- buildOpenPositionInstruction(_params: {
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(_params: {
148
+ buildClosePositionInstruction(params: {
146
149
  market: string;
147
150
  size?: string;
148
151
  walletAddress: string;
149
152
  }): Promise<DriftInstruction[]>;
150
- buildModifyPositionInstruction(_params: {
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(_params: {
159
+ buildDepositInstruction(params: {
157
160
  amount: string;
158
161
  asset: string;
159
162
  walletAddress: string;
160
163
  }): Promise<DriftInstruction[]>;
161
- buildWithdrawInstruction(_params: {
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
- * The real implementation will convert TransactionInstruction results
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 throwNotConfigured() {
181
- const { ChainError } = await import('@waiaas/core');
182
- throw new ChainError('INVALID_INSTRUCTION', 'solana', {
183
- message: 'Drift SDK not available. Install @drift-labs/sdk and @solana/web3.js as optional dependencies.',
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
- async buildOpenPositionInstruction(_params) {
187
- return this.throwNotConfigured();
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 buildClosePositionInstruction(_params) {
190
- return this.throwNotConfigured();
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(_params) {
193
- return this.throwNotConfigured();
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(_params) {
196
- return this.throwNotConfigured();
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(_params) {
199
- return this.throwNotConfigured();
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
- return this.throwNotConfigured();
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
- return this.throwNotConfigured();
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
- return this.throwNotConfigured();
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