@waiaas/actions 2.9.0-rc.5 → 2.9.0-rc.6
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 +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/drift/config.d.ts +15 -0
- package/dist/providers/drift/config.d.ts.map +1 -0
- package/dist/providers/drift/config.js +19 -0
- package/dist/providers/drift/config.js.map +1 -0
- package/dist/providers/drift/drift-market-data.d.ts +19 -0
- package/dist/providers/drift/drift-market-data.d.ts.map +1 -0
- package/dist/providers/drift/drift-market-data.js +23 -0
- package/dist/providers/drift/drift-market-data.js.map +1 -0
- package/dist/providers/drift/drift-sdk-wrapper.d.ts +170 -0
- package/dist/providers/drift/drift-sdk-wrapper.d.ts.map +1 -0
- package/dist/providers/drift/drift-sdk-wrapper.js +211 -0
- package/dist/providers/drift/drift-sdk-wrapper.js.map +1 -0
- package/dist/providers/drift/index.d.ts +26 -0
- package/dist/providers/drift/index.d.ts.map +1 -0
- package/dist/providers/drift/index.js +296 -0
- package/dist/providers/drift/index.js.map +1 -0
- package/dist/providers/drift/schemas.d.ts +117 -0
- package/dist/providers/drift/schemas.d.ts.map +1 -0
- package/dist/providers/drift/schemas.js +79 -0
- package/dist/providers/drift/schemas.js.map +1 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,11 @@ export { PendleYieldProvider } from './providers/pendle/index.js';
|
|
|
40
40
|
export { PENDLE_DEFAULTS, PENDLE_CHAIN_ID_MAP, getPendleChainId } from './providers/pendle/config.js';
|
|
41
41
|
export type { PendleConfig } from './providers/pendle/config.js';
|
|
42
42
|
export { PendleApiClient } from './providers/pendle/pendle-api-client.js';
|
|
43
|
+
export { DriftPerpProvider } from './providers/drift/index.js';
|
|
44
|
+
export { DRIFT_DEFAULTS, DRIFT_PROGRAM_ID } from './providers/drift/config.js';
|
|
45
|
+
export type { DriftConfig } from './providers/drift/config.js';
|
|
46
|
+
export { MockDriftSdkWrapper } from './providers/drift/drift-sdk-wrapper.js';
|
|
47
|
+
export type { IDriftSdkWrapper, DriftInstruction, DriftPosition, DriftMarginInfo } from './providers/drift/drift-sdk-wrapper.js';
|
|
43
48
|
export { ActionApiClient } from './common/action-api-client.js';
|
|
44
49
|
export { asBps, asPct, clampSlippageBps, bpsToPct, pctToBps } from './common/slippage.js';
|
|
45
50
|
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
|
@@ -10,6 +10,7 @@ import { AaveV3LendingProvider } from './providers/aave-v3/index.js';
|
|
|
10
10
|
import {} from './providers/aave-v3/config.js';
|
|
11
11
|
import { KaminoLendingProvider } from './providers/kamino/index.js';
|
|
12
12
|
import { PendleYieldProvider } from './providers/pendle/index.js';
|
|
13
|
+
import { DriftPerpProvider } from './providers/drift/index.js';
|
|
13
14
|
// Re-export provider classes
|
|
14
15
|
export { JupiterSwapActionProvider } from './providers/jupiter-swap/index.js';
|
|
15
16
|
export { JUPITER_PROGRAM_ID, JUPITER_SWAP_DEFAULTS } from './providers/jupiter-swap/config.js';
|
|
@@ -35,6 +36,9 @@ export { calculateHealthFactor, simulateKaminoHealthFactor, hfToStatus, KAMINO_L
|
|
|
35
36
|
export { PendleYieldProvider } from './providers/pendle/index.js';
|
|
36
37
|
export { PENDLE_DEFAULTS, PENDLE_CHAIN_ID_MAP, getPendleChainId } from './providers/pendle/config.js';
|
|
37
38
|
export { PendleApiClient } from './providers/pendle/pendle-api-client.js';
|
|
39
|
+
export { DriftPerpProvider } from './providers/drift/index.js';
|
|
40
|
+
export { DRIFT_DEFAULTS, DRIFT_PROGRAM_ID } from './providers/drift/config.js';
|
|
41
|
+
export { MockDriftSdkWrapper } from './providers/drift/drift-sdk-wrapper.js';
|
|
38
42
|
// Re-export common utilities
|
|
39
43
|
export { ActionApiClient } from './common/action-api-client.js';
|
|
40
44
|
export { asBps, asPct, clampSlippageBps, bpsToPct, pctToBps } from './common/slippage.js';
|
|
@@ -168,6 +172,17 @@ export function registerBuiltInProviders(registry, settingsReader, options) {
|
|
|
168
172
|
return new PendleYieldProvider(config);
|
|
169
173
|
},
|
|
170
174
|
},
|
|
175
|
+
{
|
|
176
|
+
key: 'drift_perp',
|
|
177
|
+
enabledKey: 'actions.drift_enabled',
|
|
178
|
+
factory: () => {
|
|
179
|
+
const config = {
|
|
180
|
+
enabled: true,
|
|
181
|
+
subAccount: 0,
|
|
182
|
+
};
|
|
183
|
+
return new DriftPerpProvider(config);
|
|
184
|
+
},
|
|
185
|
+
},
|
|
171
186
|
];
|
|
172
187
|
for (const { key, enabledKey, factory } of providers) {
|
|
173
188
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift Protocol V2 configuration type, defaults, and program addresses.
|
|
3
|
+
*
|
|
4
|
+
* Supports: Solana mainnet (Drift V2 Perpetual Futures).
|
|
5
|
+
* Program ID verified from Drift Protocol documentation.
|
|
6
|
+
*/
|
|
7
|
+
export interface DriftConfig {
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
/** Sub-account index (default 0, DEC-PERP-15). */
|
|
10
|
+
subAccount: number;
|
|
11
|
+
}
|
|
12
|
+
/** Drift Protocol V2 program ID on Solana mainnet. */
|
|
13
|
+
export declare const DRIFT_PROGRAM_ID = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH";
|
|
14
|
+
export declare const DRIFT_DEFAULTS: DriftConfig;
|
|
15
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift Protocol V2 configuration type, defaults, and program addresses.
|
|
3
|
+
*
|
|
4
|
+
* Supports: Solana mainnet (Drift V2 Perpetual Futures).
|
|
5
|
+
* Program ID verified from Drift Protocol documentation.
|
|
6
|
+
*/
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Program constants
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
/** Drift Protocol V2 program ID on Solana mainnet. */
|
|
11
|
+
export const DRIFT_PROGRAM_ID = 'dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Defaults (disabled)
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export const DRIFT_DEFAULTS = {
|
|
16
|
+
enabled: false,
|
|
17
|
+
subAccount: 0,
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift market data service.
|
|
3
|
+
*
|
|
4
|
+
* Converts DriftMarketInfo from IDriftSdkWrapper to PerpMarketInfo
|
|
5
|
+
* for IPerpProvider.getMarkets() compliance.
|
|
6
|
+
*/
|
|
7
|
+
import type { PerpMarketInfo } from '@waiaas/core';
|
|
8
|
+
import type { IDriftSdkWrapper } from './drift-sdk-wrapper.js';
|
|
9
|
+
export declare class DriftMarketData {
|
|
10
|
+
private readonly sdkWrapper;
|
|
11
|
+
constructor(sdkWrapper: IDriftSdkWrapper);
|
|
12
|
+
/**
|
|
13
|
+
* Get all available Drift perp markets as PerpMarketInfo[].
|
|
14
|
+
* Converts DriftMarketInfo -> PerpMarketInfo (drops marketIndex,
|
|
15
|
+
* keeps market/baseAsset/maxLeverage/fundingRate/openInterest/oraclePrice).
|
|
16
|
+
*/
|
|
17
|
+
getMarkets(): Promise<PerpMarketInfo[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=drift-market-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-market-data.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/drift-market-data.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAEzD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;CAW9C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class DriftMarketData {
|
|
2
|
+
sdkWrapper;
|
|
3
|
+
constructor(sdkWrapper) {
|
|
4
|
+
this.sdkWrapper = sdkWrapper;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Get all available Drift perp markets as PerpMarketInfo[].
|
|
8
|
+
* Converts DriftMarketInfo -> PerpMarketInfo (drops marketIndex,
|
|
9
|
+
* keeps market/baseAsset/maxLeverage/fundingRate/openInterest/oraclePrice).
|
|
10
|
+
*/
|
|
11
|
+
async getMarkets() {
|
|
12
|
+
const driftMarkets = await this.sdkWrapper.getMarkets();
|
|
13
|
+
return driftMarkets.map((m) => ({
|
|
14
|
+
market: m.market,
|
|
15
|
+
baseAsset: m.baseAsset,
|
|
16
|
+
maxLeverage: m.maxLeverage,
|
|
17
|
+
fundingRate: m.fundingRate,
|
|
18
|
+
openInterest: m.openInterest,
|
|
19
|
+
oraclePrice: m.oraclePrice,
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=drift-market-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-market-data.js","sourceRoot":"","sources":["../../../src/providers/drift/drift-market-data.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAAG,CAAC;IAE7D;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QACxD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/** Drift instruction result (converted from TransactionInstruction). */
|
|
2
|
+
export interface DriftInstruction {
|
|
3
|
+
programId: string;
|
|
4
|
+
/** Base64-encoded instruction data. */
|
|
5
|
+
instructionData: string;
|
|
6
|
+
accounts: Array<{
|
|
7
|
+
pubkey: string;
|
|
8
|
+
isSigner: boolean;
|
|
9
|
+
isWritable: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
/** Drift perpetual position data (plain JS types for SDK query results). */
|
|
13
|
+
export interface DriftPosition {
|
|
14
|
+
market: string;
|
|
15
|
+
marketIndex: number;
|
|
16
|
+
direction: 'LONG' | 'SHORT';
|
|
17
|
+
/** Base asset amount as string (bigint-safe). */
|
|
18
|
+
baseAssetAmount: string;
|
|
19
|
+
entryPrice: number | null;
|
|
20
|
+
leverage: number;
|
|
21
|
+
unrealizedPnl: number | null;
|
|
22
|
+
liquidationPrice: number | null;
|
|
23
|
+
margin: number | null;
|
|
24
|
+
notionalValueUsd: number | null;
|
|
25
|
+
}
|
|
26
|
+
/** Drift account-level margin info (cross-margin model). */
|
|
27
|
+
export interface DriftMarginInfo {
|
|
28
|
+
totalMargin: number;
|
|
29
|
+
freeMargin: number;
|
|
30
|
+
maintenanceMarginRatio: number;
|
|
31
|
+
marginRatio: number;
|
|
32
|
+
}
|
|
33
|
+
/** Drift perpetual market info. */
|
|
34
|
+
export interface DriftMarketInfo {
|
|
35
|
+
market: string;
|
|
36
|
+
marketIndex: number;
|
|
37
|
+
baseAsset: string;
|
|
38
|
+
maxLeverage: number;
|
|
39
|
+
fundingRate: number | null;
|
|
40
|
+
openInterest: number | null;
|
|
41
|
+
oraclePrice: number | null;
|
|
42
|
+
}
|
|
43
|
+
/** Abstraction over @drift-labs/sdk for testability and type isolation. */
|
|
44
|
+
export interface IDriftSdkWrapper {
|
|
45
|
+
buildOpenPositionInstruction(params: {
|
|
46
|
+
market: string;
|
|
47
|
+
direction: 'LONG' | 'SHORT';
|
|
48
|
+
size: string;
|
|
49
|
+
orderType: 'MARKET' | 'LIMIT';
|
|
50
|
+
limitPrice?: string;
|
|
51
|
+
walletAddress: string;
|
|
52
|
+
}): Promise<DriftInstruction[]>;
|
|
53
|
+
buildClosePositionInstruction(params: {
|
|
54
|
+
market: string;
|
|
55
|
+
size?: string;
|
|
56
|
+
walletAddress: string;
|
|
57
|
+
}): Promise<DriftInstruction[]>;
|
|
58
|
+
buildModifyPositionInstruction(params: {
|
|
59
|
+
market: string;
|
|
60
|
+
newSize?: string;
|
|
61
|
+
newLimitPrice?: string;
|
|
62
|
+
walletAddress: string;
|
|
63
|
+
}): Promise<DriftInstruction[]>;
|
|
64
|
+
buildDepositInstruction(params: {
|
|
65
|
+
amount: string;
|
|
66
|
+
asset: string;
|
|
67
|
+
walletAddress: string;
|
|
68
|
+
}): Promise<DriftInstruction[]>;
|
|
69
|
+
buildWithdrawInstruction(params: {
|
|
70
|
+
amount: string;
|
|
71
|
+
asset: string;
|
|
72
|
+
walletAddress: string;
|
|
73
|
+
}): Promise<DriftInstruction[]>;
|
|
74
|
+
/** Get all perp positions for a wallet. */
|
|
75
|
+
getPositions(walletAddress: string): Promise<DriftPosition[]>;
|
|
76
|
+
/** Get account-level margin info (cross-margin). */
|
|
77
|
+
getMarginInfo(walletAddress: string): Promise<DriftMarginInfo>;
|
|
78
|
+
/** Get all available perp markets. */
|
|
79
|
+
getMarkets(): Promise<DriftMarketInfo[]>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* MockDriftSdkWrapper: deterministic mock data for testing.
|
|
83
|
+
*
|
|
84
|
+
* Builds structurally valid DriftInstruction arrays with recognizable
|
|
85
|
+
* mock instruction data (action index prefix + size as UTF-8 bytes).
|
|
86
|
+
*/
|
|
87
|
+
export declare class MockDriftSdkWrapper implements IDriftSdkWrapper {
|
|
88
|
+
buildOpenPositionInstruction(params: {
|
|
89
|
+
market: string;
|
|
90
|
+
direction: 'LONG' | 'SHORT';
|
|
91
|
+
size: string;
|
|
92
|
+
orderType: 'MARKET' | 'LIMIT';
|
|
93
|
+
limitPrice?: string;
|
|
94
|
+
walletAddress: string;
|
|
95
|
+
}): Promise<DriftInstruction[]>;
|
|
96
|
+
buildClosePositionInstruction(params: {
|
|
97
|
+
market: string;
|
|
98
|
+
size?: string;
|
|
99
|
+
walletAddress: string;
|
|
100
|
+
}): Promise<DriftInstruction[]>;
|
|
101
|
+
buildModifyPositionInstruction(params: {
|
|
102
|
+
market: string;
|
|
103
|
+
newSize?: string;
|
|
104
|
+
newLimitPrice?: string;
|
|
105
|
+
walletAddress: string;
|
|
106
|
+
}): Promise<DriftInstruction[]>;
|
|
107
|
+
buildDepositInstruction(params: {
|
|
108
|
+
amount: string;
|
|
109
|
+
asset: string;
|
|
110
|
+
walletAddress: string;
|
|
111
|
+
}): Promise<DriftInstruction[]>;
|
|
112
|
+
buildWithdrawInstruction(params: {
|
|
113
|
+
amount: string;
|
|
114
|
+
asset: string;
|
|
115
|
+
walletAddress: string;
|
|
116
|
+
}): Promise<DriftInstruction[]>;
|
|
117
|
+
getPositions(_walletAddress: string): Promise<DriftPosition[]>;
|
|
118
|
+
getMarginInfo(_walletAddress: string): Promise<DriftMarginInfo>;
|
|
119
|
+
getMarkets(): Promise<DriftMarketInfo[]>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* DriftSdkWrapper: wraps @drift-labs/sdk.
|
|
123
|
+
*
|
|
124
|
+
* Lazily imports the SDK at first use. If the SDK is not installed,
|
|
125
|
+
* all methods throw ChainError('INVALID_INSTRUCTION', 'solana').
|
|
126
|
+
*
|
|
127
|
+
* The real implementation will convert TransactionInstruction results
|
|
128
|
+
* to DriftInstruction format (programId + base64 + accounts).
|
|
129
|
+
*/
|
|
130
|
+
export declare class DriftSdkWrapper implements IDriftSdkWrapper {
|
|
131
|
+
/** RPC URL for future SDK connection. Stored for when drift-sdk is installed. */
|
|
132
|
+
readonly rpcUrl: string;
|
|
133
|
+
/** Sub-account index (DEC-PERP-15). */
|
|
134
|
+
readonly subAccount: number;
|
|
135
|
+
constructor(rpcUrl: string, subAccount: number);
|
|
136
|
+
private throwNotConfigured;
|
|
137
|
+
buildOpenPositionInstruction(_params: {
|
|
138
|
+
market: string;
|
|
139
|
+
direction: 'LONG' | 'SHORT';
|
|
140
|
+
size: string;
|
|
141
|
+
orderType: 'MARKET' | 'LIMIT';
|
|
142
|
+
limitPrice?: string;
|
|
143
|
+
walletAddress: string;
|
|
144
|
+
}): Promise<DriftInstruction[]>;
|
|
145
|
+
buildClosePositionInstruction(_params: {
|
|
146
|
+
market: string;
|
|
147
|
+
size?: string;
|
|
148
|
+
walletAddress: string;
|
|
149
|
+
}): Promise<DriftInstruction[]>;
|
|
150
|
+
buildModifyPositionInstruction(_params: {
|
|
151
|
+
market: string;
|
|
152
|
+
newSize?: string;
|
|
153
|
+
newLimitPrice?: string;
|
|
154
|
+
walletAddress: string;
|
|
155
|
+
}): Promise<DriftInstruction[]>;
|
|
156
|
+
buildDepositInstruction(_params: {
|
|
157
|
+
amount: string;
|
|
158
|
+
asset: string;
|
|
159
|
+
walletAddress: string;
|
|
160
|
+
}): Promise<DriftInstruction[]>;
|
|
161
|
+
buildWithdrawInstruction(_params: {
|
|
162
|
+
amount: string;
|
|
163
|
+
asset: string;
|
|
164
|
+
walletAddress: string;
|
|
165
|
+
}): Promise<DriftInstruction[]>;
|
|
166
|
+
getPositions(_walletAddress: string): Promise<DriftPosition[]>;
|
|
167
|
+
getMarginInfo(_walletAddress: string): Promise<DriftMarginInfo>;
|
|
168
|
+
getMarkets(): Promise<DriftMarketInfo[]>;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=drift-sdk-wrapper.d.ts.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift Protocol V2 SDK wrapper abstraction.
|
|
3
|
+
*
|
|
4
|
+
* IDriftSdkWrapper provides a testable interface for @drift-labs/sdk
|
|
5
|
+
* instruction building and position/margin/market queries.
|
|
6
|
+
* MockDriftSdkWrapper provides deterministic test data.
|
|
7
|
+
* DriftSdkWrapper wraps the real SDK with lazy imports and graceful fallback.
|
|
8
|
+
*
|
|
9
|
+
* Instruction results (DriftInstruction) use the same format as Kamino's
|
|
10
|
+
* KaminoInstruction: programId + base64 instructionData + accounts array.
|
|
11
|
+
*
|
|
12
|
+
* IMPORTANT: No @solana/web3.js or @drift-labs/sdk types appear in this
|
|
13
|
+
* file's public API. All parameters and return types use plain JS types
|
|
14
|
+
* (string, number, boolean) to maintain isolation from @solana/kit 6.x.
|
|
15
|
+
*/
|
|
16
|
+
import { DRIFT_PROGRAM_ID } from './config.js';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Mock instruction data encoding
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* Encode mock instruction data: 1-byte action index + UTF-8 encoded size string.
|
|
22
|
+
* NOT real Drift CPI layout -- only for unit testing.
|
|
23
|
+
*/
|
|
24
|
+
function encodeMockInstructionData(actionIndex, sizeStr) {
|
|
25
|
+
const sizeBytes = new TextEncoder().encode(sizeStr);
|
|
26
|
+
const buffer = new Uint8Array(1 + sizeBytes.length);
|
|
27
|
+
buffer[0] = actionIndex;
|
|
28
|
+
buffer.set(sizeBytes, 1);
|
|
29
|
+
return Buffer.from(buffer).toString('base64');
|
|
30
|
+
}
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Mock SDK wrapper (for unit testing)
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/**
|
|
35
|
+
* MockDriftSdkWrapper: deterministic mock data for testing.
|
|
36
|
+
*
|
|
37
|
+
* Builds structurally valid DriftInstruction arrays with recognizable
|
|
38
|
+
* mock instruction data (action index prefix + size as UTF-8 bytes).
|
|
39
|
+
*/
|
|
40
|
+
export class MockDriftSdkWrapper {
|
|
41
|
+
async buildOpenPositionInstruction(params) {
|
|
42
|
+
return [
|
|
43
|
+
{
|
|
44
|
+
programId: DRIFT_PROGRAM_ID,
|
|
45
|
+
instructionData: encodeMockInstructionData(0, params.size),
|
|
46
|
+
accounts: [
|
|
47
|
+
{ pubkey: params.walletAddress, isSigner: true, isWritable: true },
|
|
48
|
+
{ pubkey: DRIFT_PROGRAM_ID, isSigner: false, isWritable: true },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
async buildClosePositionInstruction(params) {
|
|
54
|
+
return [
|
|
55
|
+
{
|
|
56
|
+
programId: DRIFT_PROGRAM_ID,
|
|
57
|
+
instructionData: encodeMockInstructionData(1, params.size ?? 'full'),
|
|
58
|
+
accounts: [
|
|
59
|
+
{ pubkey: params.walletAddress, isSigner: true, isWritable: true },
|
|
60
|
+
{ pubkey: DRIFT_PROGRAM_ID, isSigner: false, isWritable: true },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
async buildModifyPositionInstruction(params) {
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
programId: DRIFT_PROGRAM_ID,
|
|
69
|
+
instructionData: encodeMockInstructionData(2, params.newSize ?? params.newLimitPrice ?? ''),
|
|
70
|
+
accounts: [
|
|
71
|
+
{ pubkey: params.walletAddress, isSigner: true, isWritable: true },
|
|
72
|
+
{ pubkey: DRIFT_PROGRAM_ID, isSigner: false, isWritable: true },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
async buildDepositInstruction(params) {
|
|
78
|
+
return [
|
|
79
|
+
{
|
|
80
|
+
programId: DRIFT_PROGRAM_ID,
|
|
81
|
+
instructionData: encodeMockInstructionData(3, params.amount),
|
|
82
|
+
accounts: [
|
|
83
|
+
{ pubkey: params.walletAddress, isSigner: true, isWritable: true },
|
|
84
|
+
{ pubkey: DRIFT_PROGRAM_ID, isSigner: false, isWritable: true },
|
|
85
|
+
{ pubkey: params.asset, isSigner: false, isWritable: true },
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
async buildWithdrawInstruction(params) {
|
|
91
|
+
return [
|
|
92
|
+
{
|
|
93
|
+
programId: DRIFT_PROGRAM_ID,
|
|
94
|
+
instructionData: encodeMockInstructionData(4, params.amount),
|
|
95
|
+
accounts: [
|
|
96
|
+
{ pubkey: params.walletAddress, isSigner: true, isWritable: true },
|
|
97
|
+
{ pubkey: DRIFT_PROGRAM_ID, isSigner: false, isWritable: true },
|
|
98
|
+
{ pubkey: params.asset, isSigner: false, isWritable: true },
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
async getPositions(_walletAddress) {
|
|
104
|
+
return [
|
|
105
|
+
{
|
|
106
|
+
market: 'SOL-PERP',
|
|
107
|
+
marketIndex: 0,
|
|
108
|
+
direction: 'LONG',
|
|
109
|
+
baseAssetAmount: '100',
|
|
110
|
+
entryPrice: 150,
|
|
111
|
+
leverage: 5,
|
|
112
|
+
unrealizedPnl: 500,
|
|
113
|
+
liquidationPrice: 120,
|
|
114
|
+
margin: 3000,
|
|
115
|
+
notionalValueUsd: 15000,
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
async getMarginInfo(_walletAddress) {
|
|
120
|
+
return {
|
|
121
|
+
totalMargin: 10000,
|
|
122
|
+
freeMargin: 5000,
|
|
123
|
+
maintenanceMarginRatio: 0.0625,
|
|
124
|
+
marginRatio: 0.3,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
async getMarkets() {
|
|
128
|
+
return [
|
|
129
|
+
{
|
|
130
|
+
market: 'SOL-PERP',
|
|
131
|
+
marketIndex: 0,
|
|
132
|
+
baseAsset: 'SOL',
|
|
133
|
+
maxLeverage: 20,
|
|
134
|
+
fundingRate: 0.0001,
|
|
135
|
+
openInterest: 50_000_000,
|
|
136
|
+
oraclePrice: 150.25,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
market: 'BTC-PERP',
|
|
140
|
+
marketIndex: 1,
|
|
141
|
+
baseAsset: 'BTC',
|
|
142
|
+
maxLeverage: 50,
|
|
143
|
+
fundingRate: -0.00005,
|
|
144
|
+
openInterest: 200_000_000,
|
|
145
|
+
oraclePrice: 65_000.5,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
market: 'ETH-PERP',
|
|
149
|
+
marketIndex: 2,
|
|
150
|
+
baseAsset: 'ETH',
|
|
151
|
+
maxLeverage: 30,
|
|
152
|
+
fundingRate: 0.00008,
|
|
153
|
+
openInterest: 100_000_000,
|
|
154
|
+
oraclePrice: 3_500.75,
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
// Real SDK wrapper (lazy import, graceful fallback)
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
/**
|
|
163
|
+
* DriftSdkWrapper: wraps @drift-labs/sdk.
|
|
164
|
+
*
|
|
165
|
+
* Lazily imports the SDK at first use. If the SDK is not installed,
|
|
166
|
+
* all methods throw ChainError('INVALID_INSTRUCTION', 'solana').
|
|
167
|
+
*
|
|
168
|
+
* The real implementation will convert TransactionInstruction results
|
|
169
|
+
* to DriftInstruction format (programId + base64 + accounts).
|
|
170
|
+
*/
|
|
171
|
+
export class DriftSdkWrapper {
|
|
172
|
+
/** RPC URL for future SDK connection. Stored for when drift-sdk is installed. */
|
|
173
|
+
rpcUrl;
|
|
174
|
+
/** Sub-account index (DEC-PERP-15). */
|
|
175
|
+
subAccount;
|
|
176
|
+
constructor(rpcUrl, subAccount) {
|
|
177
|
+
this.rpcUrl = rpcUrl;
|
|
178
|
+
this.subAccount = subAccount;
|
|
179
|
+
}
|
|
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.',
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
async buildOpenPositionInstruction(_params) {
|
|
187
|
+
return this.throwNotConfigured();
|
|
188
|
+
}
|
|
189
|
+
async buildClosePositionInstruction(_params) {
|
|
190
|
+
return this.throwNotConfigured();
|
|
191
|
+
}
|
|
192
|
+
async buildModifyPositionInstruction(_params) {
|
|
193
|
+
return this.throwNotConfigured();
|
|
194
|
+
}
|
|
195
|
+
async buildDepositInstruction(_params) {
|
|
196
|
+
return this.throwNotConfigured();
|
|
197
|
+
}
|
|
198
|
+
async buildWithdrawInstruction(_params) {
|
|
199
|
+
return this.throwNotConfigured();
|
|
200
|
+
}
|
|
201
|
+
async getPositions(_walletAddress) {
|
|
202
|
+
return this.throwNotConfigured();
|
|
203
|
+
}
|
|
204
|
+
async getMarginInfo(_walletAddress) {
|
|
205
|
+
return this.throwNotConfigured();
|
|
206
|
+
}
|
|
207
|
+
async getMarkets() {
|
|
208
|
+
return this.throwNotConfigured();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=drift-sdk-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-sdk-wrapper.js","sourceRoot":"","sources":["../../../src/providers/drift/drift-sdk-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { IPerpProvider, ActionProviderMetadata, ActionDefinition, ActionContext, ContractCallRequest, PerpPositionSummary, MarginInfo, PerpMarketInfo } from '@waiaas/core';
|
|
2
|
+
import type { IPositionProvider, PositionUpdate, PositionCategory } from '@waiaas/core';
|
|
3
|
+
import type { DriftConfig } from './config.js';
|
|
4
|
+
import type { IDriftSdkWrapper } from './drift-sdk-wrapper.js';
|
|
5
|
+
export declare class DriftPerpProvider implements IPerpProvider, IPositionProvider {
|
|
6
|
+
readonly metadata: ActionProviderMetadata;
|
|
7
|
+
readonly actions: readonly ActionDefinition[];
|
|
8
|
+
/** Merged config (stored for real SDK wrapper construction). */
|
|
9
|
+
readonly config: DriftConfig;
|
|
10
|
+
private readonly sdkWrapper;
|
|
11
|
+
private readonly marketData;
|
|
12
|
+
constructor(config?: Partial<DriftConfig>, sdkWrapper?: IDriftSdkWrapper);
|
|
13
|
+
resolve(actionName: string, params: Record<string, unknown>, context: ActionContext): Promise<ContractCallRequest | ContractCallRequest[]>;
|
|
14
|
+
private resolveOpenPosition;
|
|
15
|
+
private resolveClosePosition;
|
|
16
|
+
private resolveModifyPosition;
|
|
17
|
+
private resolveAddMargin;
|
|
18
|
+
private resolveWithdrawMargin;
|
|
19
|
+
getPosition(_walletId: string, context: ActionContext): Promise<PerpPositionSummary[]>;
|
|
20
|
+
getMarginInfo(_walletId: string, context: ActionContext): Promise<MarginInfo>;
|
|
21
|
+
getMarkets(chain: string, _network?: string): Promise<PerpMarketInfo[]>;
|
|
22
|
+
getPositions(walletId: string): Promise<PositionUpdate[]>;
|
|
23
|
+
getProviderName(): string;
|
|
24
|
+
getSupportedCategories(): PositionCategory[];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,wBAAwB,CAAC;AAkDjF,qBAAa,iBAAkB,YAAW,aAAa,EAAE,iBAAiB;IACxE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,gBAAgB;IAqElE,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;YAuBzC,mBAAmB;YAqBnB,oBAAoB;YAkBpB,qBAAqB;YAmBrB,gBAAgB;YAiBhB,qBAAqB;IAiB7B,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAoB3B,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC;IAqBhB,UAAU,CACd,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,EAAE,CAAC;IAatB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA8B/D,eAAe,IAAI,MAAM;IAIzB,sBAAsB,IAAI,gBAAgB,EAAE;CAG7C"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift Protocol V2 Perpetual Trading Action Provider.
|
|
3
|
+
*
|
|
4
|
+
* Implements IPerpProvider + IPositionProvider to resolve Drift perp trading
|
|
5
|
+
* requests into ContractCallRequest arrays for the sequential pipeline.
|
|
6
|
+
*
|
|
7
|
+
* Actions:
|
|
8
|
+
* - drift_open_position: open LONG/SHORT with market/limit orders (high, APPROVAL)
|
|
9
|
+
* - drift_close_position: full or partial close (medium, DELAY)
|
|
10
|
+
* - drift_modify_position: change size or limit price (high, APPROVAL)
|
|
11
|
+
* - drift_add_margin: deposit collateral (low, INSTANT)
|
|
12
|
+
* - drift_withdraw_margin: withdraw excess collateral (medium, DELAY)
|
|
13
|
+
*
|
|
14
|
+
* Uses IDriftSdkWrapper for instruction building and position/margin queries.
|
|
15
|
+
* MockDriftSdkWrapper enables unit testing without real SDK/RPC.
|
|
16
|
+
*/
|
|
17
|
+
import { ChainError } from '@waiaas/core';
|
|
18
|
+
import { DRIFT_DEFAULTS, DRIFT_PROGRAM_ID } from './config.js';
|
|
19
|
+
import { MockDriftSdkWrapper } from './drift-sdk-wrapper.js';
|
|
20
|
+
import { OpenPositionInputSchema, ClosePositionInputSchema, ModifyPositionInputSchema, AddMarginInputSchema, WithdrawMarginInputSchema, } from './schemas.js';
|
|
21
|
+
import { DriftMarketData } from './drift-market-data.js';
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Module-level helpers (not exported)
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Convert DriftInstruction[] to ContractCallRequest[].
|
|
27
|
+
* Each instruction targets the Drift V2 program on Solana mainnet.
|
|
28
|
+
*/
|
|
29
|
+
function instructionsToRequests(instructions) {
|
|
30
|
+
return instructions.map((ix) => ({
|
|
31
|
+
type: 'CONTRACT_CALL',
|
|
32
|
+
to: DRIFT_PROGRAM_ID,
|
|
33
|
+
programId: ix.programId,
|
|
34
|
+
instructionData: ix.instructionData,
|
|
35
|
+
accounts: ix.accounts,
|
|
36
|
+
network: 'solana-mainnet',
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Compute margin status from marginRatio.
|
|
41
|
+
* Thresholds match MarginMonitor from 297-02 (0.30/0.15/0.10).
|
|
42
|
+
* Lower marginRatio = more dangerous.
|
|
43
|
+
*/
|
|
44
|
+
function marginRatioToStatus(marginRatio) {
|
|
45
|
+
if (marginRatio <= 0.10)
|
|
46
|
+
return 'critical';
|
|
47
|
+
if (marginRatio <= 0.15)
|
|
48
|
+
return 'danger';
|
|
49
|
+
if (marginRatio <= 0.30)
|
|
50
|
+
return 'warning';
|
|
51
|
+
return 'safe';
|
|
52
|
+
}
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// Provider implementation
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
export class DriftPerpProvider {
|
|
57
|
+
metadata;
|
|
58
|
+
actions;
|
|
59
|
+
/** Merged config (stored for real SDK wrapper construction). */
|
|
60
|
+
config;
|
|
61
|
+
sdkWrapper;
|
|
62
|
+
marketData;
|
|
63
|
+
constructor(config, sdkWrapper) {
|
|
64
|
+
this.config = { ...DRIFT_DEFAULTS, ...config };
|
|
65
|
+
this.sdkWrapper = sdkWrapper ?? new MockDriftSdkWrapper();
|
|
66
|
+
this.marketData = new DriftMarketData(this.sdkWrapper);
|
|
67
|
+
this.metadata = {
|
|
68
|
+
name: 'drift_perp',
|
|
69
|
+
description: 'Drift Protocol V2 perpetual futures on Solana: open, close, modify positions with leverage and margin management',
|
|
70
|
+
version: '1.0.0',
|
|
71
|
+
chains: ['solana'],
|
|
72
|
+
mcpExpose: true,
|
|
73
|
+
requiresApiKey: false,
|
|
74
|
+
requiredApis: [],
|
|
75
|
+
};
|
|
76
|
+
this.actions = [
|
|
77
|
+
{
|
|
78
|
+
name: 'drift_open_position',
|
|
79
|
+
description: 'Open a leveraged perpetual position (LONG or SHORT) on Drift V2 with market or limit order',
|
|
80
|
+
chain: 'solana',
|
|
81
|
+
inputSchema: OpenPositionInputSchema,
|
|
82
|
+
riskLevel: 'high',
|
|
83
|
+
defaultTier: 'APPROVAL',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'drift_close_position',
|
|
87
|
+
description: 'Close a perpetual position on Drift V2 (full close or partial close with size parameter)',
|
|
88
|
+
chain: 'solana',
|
|
89
|
+
inputSchema: ClosePositionInputSchema,
|
|
90
|
+
riskLevel: 'medium',
|
|
91
|
+
defaultTier: 'DELAY',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'drift_modify_position',
|
|
95
|
+
description: 'Modify an existing perpetual position on Drift V2 by changing size or limit price',
|
|
96
|
+
chain: 'solana',
|
|
97
|
+
inputSchema: ModifyPositionInputSchema,
|
|
98
|
+
riskLevel: 'high',
|
|
99
|
+
defaultTier: 'APPROVAL',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'drift_add_margin',
|
|
103
|
+
description: 'Deposit collateral to increase available margin on Drift V2 margin account',
|
|
104
|
+
chain: 'solana',
|
|
105
|
+
inputSchema: AddMarginInputSchema,
|
|
106
|
+
riskLevel: 'low',
|
|
107
|
+
defaultTier: 'INSTANT',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'drift_withdraw_margin',
|
|
111
|
+
description: 'Withdraw excess collateral from Drift V2 margin account to wallet',
|
|
112
|
+
chain: 'solana',
|
|
113
|
+
inputSchema: WithdrawMarginInputSchema,
|
|
114
|
+
riskLevel: 'medium',
|
|
115
|
+
defaultTier: 'DELAY',
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
// -------------------------------------------------------------------------
|
|
120
|
+
// IActionProvider.resolve()
|
|
121
|
+
// -------------------------------------------------------------------------
|
|
122
|
+
async resolve(actionName, params, context) {
|
|
123
|
+
switch (actionName) {
|
|
124
|
+
case 'drift_open_position':
|
|
125
|
+
return this.resolveOpenPosition(params, context);
|
|
126
|
+
case 'drift_close_position':
|
|
127
|
+
return this.resolveClosePosition(params, context);
|
|
128
|
+
case 'drift_modify_position':
|
|
129
|
+
return this.resolveModifyPosition(params, context);
|
|
130
|
+
case 'drift_add_margin':
|
|
131
|
+
return this.resolveAddMargin(params, context);
|
|
132
|
+
case 'drift_withdraw_margin':
|
|
133
|
+
return this.resolveWithdrawMargin(params, context);
|
|
134
|
+
default:
|
|
135
|
+
throw new ChainError('INVALID_INSTRUCTION', 'solana', {
|
|
136
|
+
message: `Unknown action: ${actionName}`,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// -------------------------------------------------------------------------
|
|
141
|
+
// Open position: MARKET or LIMIT order
|
|
142
|
+
// -------------------------------------------------------------------------
|
|
143
|
+
async resolveOpenPosition(params, context) {
|
|
144
|
+
const input = OpenPositionInputSchema.parse(params);
|
|
145
|
+
const instructions = await this.sdkWrapper.buildOpenPositionInstruction({
|
|
146
|
+
market: input.market,
|
|
147
|
+
direction: input.direction,
|
|
148
|
+
size: input.size,
|
|
149
|
+
orderType: input.orderType,
|
|
150
|
+
limitPrice: input.limitPrice,
|
|
151
|
+
walletAddress: context.walletAddress,
|
|
152
|
+
});
|
|
153
|
+
return instructionsToRequests(instructions);
|
|
154
|
+
}
|
|
155
|
+
// -------------------------------------------------------------------------
|
|
156
|
+
// Close position: full (no size) or partial (with size)
|
|
157
|
+
// -------------------------------------------------------------------------
|
|
158
|
+
async resolveClosePosition(params, context) {
|
|
159
|
+
const input = ClosePositionInputSchema.parse(params);
|
|
160
|
+
const instructions = await this.sdkWrapper.buildClosePositionInstruction({
|
|
161
|
+
market: input.market,
|
|
162
|
+
size: input.size,
|
|
163
|
+
walletAddress: context.walletAddress,
|
|
164
|
+
});
|
|
165
|
+
return instructionsToRequests(instructions);
|
|
166
|
+
}
|
|
167
|
+
// -------------------------------------------------------------------------
|
|
168
|
+
// Modify position: newSize and/or newLimitPrice
|
|
169
|
+
// -------------------------------------------------------------------------
|
|
170
|
+
async resolveModifyPosition(params, context) {
|
|
171
|
+
const input = ModifyPositionInputSchema.parse(params);
|
|
172
|
+
const instructions = await this.sdkWrapper.buildModifyPositionInstruction({
|
|
173
|
+
market: input.market,
|
|
174
|
+
newSize: input.newSize,
|
|
175
|
+
newLimitPrice: input.newLimitPrice,
|
|
176
|
+
walletAddress: context.walletAddress,
|
|
177
|
+
});
|
|
178
|
+
return instructionsToRequests(instructions);
|
|
179
|
+
}
|
|
180
|
+
// -------------------------------------------------------------------------
|
|
181
|
+
// Add margin: deposit collateral
|
|
182
|
+
// -------------------------------------------------------------------------
|
|
183
|
+
async resolveAddMargin(params, context) {
|
|
184
|
+
const input = AddMarginInputSchema.parse(params);
|
|
185
|
+
const instructions = await this.sdkWrapper.buildDepositInstruction({
|
|
186
|
+
amount: input.amount,
|
|
187
|
+
asset: input.asset,
|
|
188
|
+
walletAddress: context.walletAddress,
|
|
189
|
+
});
|
|
190
|
+
return instructionsToRequests(instructions);
|
|
191
|
+
}
|
|
192
|
+
// -------------------------------------------------------------------------
|
|
193
|
+
// Withdraw margin: withdraw excess collateral
|
|
194
|
+
// -------------------------------------------------------------------------
|
|
195
|
+
async resolveWithdrawMargin(params, context) {
|
|
196
|
+
const input = WithdrawMarginInputSchema.parse(params);
|
|
197
|
+
const instructions = await this.sdkWrapper.buildWithdrawInstruction({
|
|
198
|
+
amount: input.amount,
|
|
199
|
+
asset: input.asset,
|
|
200
|
+
walletAddress: context.walletAddress,
|
|
201
|
+
});
|
|
202
|
+
return instructionsToRequests(instructions);
|
|
203
|
+
}
|
|
204
|
+
// -------------------------------------------------------------------------
|
|
205
|
+
// IPerpProvider query methods
|
|
206
|
+
// -------------------------------------------------------------------------
|
|
207
|
+
async getPosition(_walletId, context) {
|
|
208
|
+
try {
|
|
209
|
+
const positions = await this.sdkWrapper.getPositions(context.walletAddress);
|
|
210
|
+
return positions.map((p) => ({
|
|
211
|
+
market: p.market,
|
|
212
|
+
direction: p.direction,
|
|
213
|
+
size: p.baseAssetAmount,
|
|
214
|
+
entryPrice: p.entryPrice,
|
|
215
|
+
leverage: p.leverage,
|
|
216
|
+
unrealizedPnl: p.unrealizedPnl,
|
|
217
|
+
margin: p.margin,
|
|
218
|
+
liquidationPrice: p.liquidationPrice,
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async getMarginInfo(_walletId, context) {
|
|
226
|
+
try {
|
|
227
|
+
const info = await this.sdkWrapper.getMarginInfo(context.walletAddress);
|
|
228
|
+
return {
|
|
229
|
+
totalMargin: info.totalMargin,
|
|
230
|
+
freeMargin: info.freeMargin,
|
|
231
|
+
maintenanceMarginRatio: info.maintenanceMarginRatio,
|
|
232
|
+
marginRatio: info.marginRatio,
|
|
233
|
+
status: marginRatioToStatus(info.marginRatio),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return {
|
|
238
|
+
totalMargin: 0,
|
|
239
|
+
freeMargin: 0,
|
|
240
|
+
maintenanceMarginRatio: 0,
|
|
241
|
+
marginRatio: Infinity,
|
|
242
|
+
status: 'safe',
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async getMarkets(chain, _network) {
|
|
247
|
+
if (chain !== 'solana')
|
|
248
|
+
return [];
|
|
249
|
+
try {
|
|
250
|
+
return await this.marketData.getMarkets();
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return [];
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// -------------------------------------------------------------------------
|
|
257
|
+
// IPositionProvider methods
|
|
258
|
+
// -------------------------------------------------------------------------
|
|
259
|
+
async getPositions(walletId) {
|
|
260
|
+
try {
|
|
261
|
+
const positions = await this.sdkWrapper.getPositions(walletId);
|
|
262
|
+
const now = Math.floor(Date.now() / 1000);
|
|
263
|
+
return positions.map((pos) => ({
|
|
264
|
+
walletId,
|
|
265
|
+
category: 'PERP',
|
|
266
|
+
provider: 'drift_perp',
|
|
267
|
+
chain: 'solana',
|
|
268
|
+
network: 'solana-mainnet',
|
|
269
|
+
assetId: null,
|
|
270
|
+
amount: pos.baseAssetAmount,
|
|
271
|
+
amountUsd: pos.notionalValueUsd,
|
|
272
|
+
metadata: {
|
|
273
|
+
direction: pos.direction,
|
|
274
|
+
leverage: pos.leverage,
|
|
275
|
+
unrealizedPnl: pos.unrealizedPnl,
|
|
276
|
+
liquidationPrice: pos.liquidationPrice,
|
|
277
|
+
margin: pos.margin,
|
|
278
|
+
entryPrice: pos.entryPrice,
|
|
279
|
+
market: pos.market,
|
|
280
|
+
},
|
|
281
|
+
status: 'ACTIVE',
|
|
282
|
+
openedAt: now,
|
|
283
|
+
}));
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
getProviderName() {
|
|
290
|
+
return 'drift_perp';
|
|
291
|
+
}
|
|
292
|
+
getSupportedCategories() {
|
|
293
|
+
return ['PERP'];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/drift/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgB1C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,YAAgC;IAEhC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,eAAwB;QAC9B,EAAE,EAAE,gBAAgB;QACpB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,OAAO,EAAE,gBAAyB;KACnC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,WAAmB;IAEnB,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,OAAO,iBAAiB;IACnB,QAAQ,CAAyB;IACjC,OAAO,CAA8B;IAE9C,gEAAgE;IACvD,MAAM,CAAc;IACZ,UAAU,CAAmB;IAC7B,UAAU,CAAkB;IAE7C,YAAY,MAA6B,EAAE,UAA6B;QACtE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,mBAAmB,EAAE,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,YAAY;YAClB,WAAW,EACT,kHAAkH;YACpH,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,EAAE;SACjB,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG;YACb;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EACT,4FAA4F;gBAC9F,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,uBAAuB;gBACpC,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,UAAU;aACxB;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EACT,0FAA0F;gBAC5F,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,wBAAwB;gBACrC,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,OAAO;aACrB;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EACT,mFAAmF;gBACrF,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,yBAAyB;gBACtC,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,UAAU;aACxB;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EACT,4EAA4E;gBAC9E,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,oBAAoB;gBACjC,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,SAAS;aACvB;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EACT,mEAAmE;gBACrE,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,yBAAyB;gBACtC,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,OAAO;aACrB;SACO,CAAC;IACb,CAAC;IAED,4EAA4E;IAC5E,4BAA4B;IAC5B,4EAA4E;IAE5E,KAAK,CAAC,OAAO,CACX,UAAkB,EAClB,MAA+B,EAC/B,OAAsB;QAEtB,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,qBAAqB;gBACxB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnD,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpD,KAAK,uBAAuB;gBAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD,KAAK,kBAAkB;gBACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,KAAK,uBAAuB;gBAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD;gBACE,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,QAAQ,EAAE;oBACpD,OAAO,EAAE,mBAAmB,UAAU,EAAE;iBACzC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,uCAAuC;IACvC,4EAA4E;IAEpE,KAAK,CAAC,mBAAmB,CAC/B,MAA+B,EAC/B,OAAsB;QAEtB,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC;YACjD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACL,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,4EAA4E;IAC5E,wDAAwD;IACxD,4EAA4E;IAEpE,KAAK,CAAC,oBAAoB,CAChC,MAA+B,EAC/B,OAAsB;QAEtB,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;YAClD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACL,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,4EAA4E;IAC5E,gDAAgD;IAChD,4EAA4E;IAEpE,KAAK,CAAC,qBAAqB,CACjC,MAA+B,EAC/B,OAAsB;QAEtB,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACnD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACL,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,4EAA4E;IAC5E,iCAAiC;IACjC,4EAA4E;IAEpE,KAAK,CAAC,gBAAgB,CAC5B,MAA+B,EAC/B,OAAsB;QAEtB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;YACjE,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,4EAA4E;IAC5E,8CAA8C;IAC9C,4EAA4E;IAEpE,KAAK,CAAC,qBAAqB,CACjC,MAA+B,EAC/B,OAAsB;QAEtB,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAClE,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,4EAA4E;IAC5E,8BAA8B;IAC9B,4EAA4E;IAE5E,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,OAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAClD,OAAO,CAAC,aAAa,CACtB,CAAC;YACF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,IAAI,EAAE,CAAC,CAAC,eAAe;gBACvB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;aACrC,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,OAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACxE,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;aAC9C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;gBACb,sBAAsB,EAAE,CAAC;gBACzB,WAAW,EAAE,QAAQ;gBACrB,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,QAAiB;QAEjB,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4BAA4B;IAC5B,4EAA4E;IAE5E,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7B,QAAQ;gBACR,QAAQ,EAAE,MAA0B;gBACpC,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,GAAG,CAAC,eAAe;gBAC3B,SAAS,EAAE,GAAG,CAAC,gBAAgB;gBAC/B,QAAQ,EAAE;oBACR,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;oBACtC,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB;gBACD,MAAM,EAAE,QAAiB;gBACzB,QAAQ,EAAE,GAAG;aACd,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,eAAe;QACb,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,sBAAsB;QACpB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod SSoT input schemas for Drift Protocol V2 perpetual futures actions.
|
|
3
|
+
*
|
|
4
|
+
* Five schemas for the 5 perp actions: open_position, close_position,
|
|
5
|
+
* modify_position, add_margin, withdraw_margin.
|
|
6
|
+
* Size and amounts are always string (bigint-safe).
|
|
7
|
+
* LIMIT orders require limitPrice via refinement.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
/** Open a leveraged perpetual position (LONG or SHORT) on Drift V2. */
|
|
11
|
+
export declare const OpenPositionInputSchema: z.ZodEffects<z.ZodObject<{
|
|
12
|
+
/** Market symbol (e.g., "SOL-PERP"). */
|
|
13
|
+
market: z.ZodString;
|
|
14
|
+
/** Position direction. */
|
|
15
|
+
direction: z.ZodEnum<["LONG", "SHORT"]>;
|
|
16
|
+
/** Base asset amount as string (e.g., "100"). */
|
|
17
|
+
size: z.ZodString;
|
|
18
|
+
/** Desired leverage multiplier (1-100). Optional -- derived from margin if omitted. */
|
|
19
|
+
leverage: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
/** Order type. */
|
|
21
|
+
orderType: z.ZodEnum<["MARKET", "LIMIT"]>;
|
|
22
|
+
/** Limit price as string. Required when orderType is 'LIMIT'. */
|
|
23
|
+
limitPrice: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
market: string;
|
|
26
|
+
direction: "LONG" | "SHORT";
|
|
27
|
+
size: string;
|
|
28
|
+
orderType: "MARKET" | "LIMIT";
|
|
29
|
+
leverage?: number | undefined;
|
|
30
|
+
limitPrice?: string | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
market: string;
|
|
33
|
+
direction: "LONG" | "SHORT";
|
|
34
|
+
size: string;
|
|
35
|
+
orderType: "MARKET" | "LIMIT";
|
|
36
|
+
leverage?: number | undefined;
|
|
37
|
+
limitPrice?: string | undefined;
|
|
38
|
+
}>, {
|
|
39
|
+
market: string;
|
|
40
|
+
direction: "LONG" | "SHORT";
|
|
41
|
+
size: string;
|
|
42
|
+
orderType: "MARKET" | "LIMIT";
|
|
43
|
+
leverage?: number | undefined;
|
|
44
|
+
limitPrice?: string | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
market: string;
|
|
47
|
+
direction: "LONG" | "SHORT";
|
|
48
|
+
size: string;
|
|
49
|
+
orderType: "MARKET" | "LIMIT";
|
|
50
|
+
leverage?: number | undefined;
|
|
51
|
+
limitPrice?: string | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
/** Close a perpetual position (full or partial) on Drift V2. */
|
|
54
|
+
export declare const ClosePositionInputSchema: z.ZodObject<{
|
|
55
|
+
/** Market symbol (e.g., "SOL-PERP"). */
|
|
56
|
+
market: z.ZodString;
|
|
57
|
+
/** Partial close amount. Omit for full close. */
|
|
58
|
+
size: z.ZodOptional<z.ZodString>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
market: string;
|
|
61
|
+
size?: string | undefined;
|
|
62
|
+
}, {
|
|
63
|
+
market: string;
|
|
64
|
+
size?: string | undefined;
|
|
65
|
+
}>;
|
|
66
|
+
/** Modify position size or pending order limit price on Drift V2. */
|
|
67
|
+
export declare const ModifyPositionInputSchema: z.ZodEffects<z.ZodObject<{
|
|
68
|
+
/** Market symbol (e.g., "SOL-PERP"). */
|
|
69
|
+
market: z.ZodString;
|
|
70
|
+
/** New position size. */
|
|
71
|
+
newSize: z.ZodOptional<z.ZodString>;
|
|
72
|
+
/** New limit price for pending order. */
|
|
73
|
+
newLimitPrice: z.ZodOptional<z.ZodString>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
market: string;
|
|
76
|
+
newSize?: string | undefined;
|
|
77
|
+
newLimitPrice?: string | undefined;
|
|
78
|
+
}, {
|
|
79
|
+
market: string;
|
|
80
|
+
newSize?: string | undefined;
|
|
81
|
+
newLimitPrice?: string | undefined;
|
|
82
|
+
}>, {
|
|
83
|
+
market: string;
|
|
84
|
+
newSize?: string | undefined;
|
|
85
|
+
newLimitPrice?: string | undefined;
|
|
86
|
+
}, {
|
|
87
|
+
market: string;
|
|
88
|
+
newSize?: string | undefined;
|
|
89
|
+
newLimitPrice?: string | undefined;
|
|
90
|
+
}>;
|
|
91
|
+
/** Deposit collateral to increase available margin on Drift V2. */
|
|
92
|
+
export declare const AddMarginInputSchema: z.ZodObject<{
|
|
93
|
+
/** Collateral amount as string (e.g., "100"). */
|
|
94
|
+
amount: z.ZodString;
|
|
95
|
+
/** CAIP-19 asset identifier for collateral token. */
|
|
96
|
+
asset: z.ZodString;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
amount: string;
|
|
99
|
+
asset: string;
|
|
100
|
+
}, {
|
|
101
|
+
amount: string;
|
|
102
|
+
asset: string;
|
|
103
|
+
}>;
|
|
104
|
+
/** Withdraw excess collateral from Drift V2 margin account. */
|
|
105
|
+
export declare const WithdrawMarginInputSchema: z.ZodObject<{
|
|
106
|
+
/** Withdrawal amount as string. */
|
|
107
|
+
amount: z.ZodString;
|
|
108
|
+
/** CAIP-19 asset identifier for collateral token. */
|
|
109
|
+
asset: z.ZodString;
|
|
110
|
+
}, "strip", z.ZodTypeAny, {
|
|
111
|
+
amount: string;
|
|
112
|
+
asset: string;
|
|
113
|
+
}, {
|
|
114
|
+
amount: string;
|
|
115
|
+
asset: string;
|
|
116
|
+
}>;
|
|
117
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/providers/drift/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,uEAAuE;AACvE,eAAO,MAAM,uBAAuB;IAEhC,wCAAwC;;IAExC,0BAA0B;;IAE1B,iDAAiD;;IAEjD,uFAAuF;;IAEvF,kBAAkB;;IAElB,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMjE,CAAC;AAML,gEAAgE;AAChE,eAAO,MAAM,wBAAwB;IACnC,wCAAwC;;IAExC,iDAAiD;;;;;;;;EAEjD,CAAC;AAMH,qEAAqE;AACrE,eAAO,MAAM,yBAAyB;IAElC,wCAAwC;;IAExC,yBAAyB;;IAEzB,yCAAyC;;;;;;;;;;;;;;;;;;EAKzC,CAAC;AAML,mEAAmE;AACnE,eAAO,MAAM,oBAAoB;IAC/B,iDAAiD;;IAEjD,qDAAqD;;;;;;;;EAErD,CAAC;AAMH,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB;IACpC,mCAAmC;;IAEnC,qDAAqD;;;;;;;;EAErD,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod SSoT input schemas for Drift Protocol V2 perpetual futures actions.
|
|
3
|
+
*
|
|
4
|
+
* Five schemas for the 5 perp actions: open_position, close_position,
|
|
5
|
+
* modify_position, add_margin, withdraw_margin.
|
|
6
|
+
* Size and amounts are always string (bigint-safe).
|
|
7
|
+
* LIMIT orders require limitPrice via refinement.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Open position input schema
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/** Open a leveraged perpetual position (LONG or SHORT) on Drift V2. */
|
|
14
|
+
export const OpenPositionInputSchema = z
|
|
15
|
+
.object({
|
|
16
|
+
/** Market symbol (e.g., "SOL-PERP"). */
|
|
17
|
+
market: z.string().min(1, 'market symbol required (e.g., "SOL-PERP")'),
|
|
18
|
+
/** Position direction. */
|
|
19
|
+
direction: z.enum(['LONG', 'SHORT']),
|
|
20
|
+
/** Base asset amount as string (e.g., "100"). */
|
|
21
|
+
size: z.string().min(1, 'base asset amount as string (e.g., "100")'),
|
|
22
|
+
/** Desired leverage multiplier (1-100). Optional -- derived from margin if omitted. */
|
|
23
|
+
leverage: z.number().min(1).max(100).optional(),
|
|
24
|
+
/** Order type. */
|
|
25
|
+
orderType: z.enum(['MARKET', 'LIMIT']),
|
|
26
|
+
/** Limit price as string. Required when orderType is 'LIMIT'. */
|
|
27
|
+
limitPrice: z.string().optional(),
|
|
28
|
+
})
|
|
29
|
+
.refine((d) => d.orderType !== 'LIMIT' || d.limitPrice !== undefined, {
|
|
30
|
+
message: 'limitPrice is required for LIMIT orders',
|
|
31
|
+
path: ['limitPrice'],
|
|
32
|
+
});
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Close position input schema
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
/** Close a perpetual position (full or partial) on Drift V2. */
|
|
37
|
+
export const ClosePositionInputSchema = z.object({
|
|
38
|
+
/** Market symbol (e.g., "SOL-PERP"). */
|
|
39
|
+
market: z.string().min(1, 'market symbol required'),
|
|
40
|
+
/** Partial close amount. Omit for full close. */
|
|
41
|
+
size: z.string().optional(),
|
|
42
|
+
});
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Modify position input schema
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
/** Modify position size or pending order limit price on Drift V2. */
|
|
47
|
+
export const ModifyPositionInputSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
/** Market symbol (e.g., "SOL-PERP"). */
|
|
50
|
+
market: z.string().min(1, 'market symbol required'),
|
|
51
|
+
/** New position size. */
|
|
52
|
+
newSize: z.string().optional(),
|
|
53
|
+
/** New limit price for pending order. */
|
|
54
|
+
newLimitPrice: z.string().optional(),
|
|
55
|
+
})
|
|
56
|
+
.refine((d) => d.newSize !== undefined || d.newLimitPrice !== undefined, {
|
|
57
|
+
message: 'At least one of newSize or newLimitPrice is required',
|
|
58
|
+
});
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Add margin input schema
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
/** Deposit collateral to increase available margin on Drift V2. */
|
|
63
|
+
export const AddMarginInputSchema = z.object({
|
|
64
|
+
/** Collateral amount as string (e.g., "100"). */
|
|
65
|
+
amount: z.string().min(1, 'collateral amount required (e.g., "100")'),
|
|
66
|
+
/** CAIP-19 asset identifier for collateral token. */
|
|
67
|
+
asset: z.string().min(1, 'CAIP-19 asset identifier required'),
|
|
68
|
+
});
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Withdraw margin input schema
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
/** Withdraw excess collateral from Drift V2 margin account. */
|
|
73
|
+
export const WithdrawMarginInputSchema = z.object({
|
|
74
|
+
/** Withdrawal amount as string. */
|
|
75
|
+
amount: z.string().min(1, 'withdrawal amount required'),
|
|
76
|
+
/** CAIP-19 asset identifier for collateral token. */
|
|
77
|
+
asset: z.string().min(1, 'CAIP-19 asset identifier required'),
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/providers/drift/schemas.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@waiaas/actions",
|
|
3
|
-
"version": "2.9.0-rc.
|
|
3
|
+
"version": "2.9.0-rc.6",
|
|
4
4
|
"description": "WAIaaS built-in DeFi Action Provider implementations",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"zod": "^3.24.0",
|
|
32
|
-
"@waiaas/core": "2.9.0-rc.
|
|
32
|
+
"@waiaas/core": "2.9.0-rc.6"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^25.2.3",
|