@drift-labs/sdk 2.96.0-beta.8 → 2.97.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/VERSION +1 -1
- package/bun.lockb +0 -0
- package/lib/accounts/pollingDriftClientAccountSubscriber.d.ts +5 -3
- package/lib/accounts/pollingDriftClientAccountSubscriber.js +24 -1
- package/lib/accounts/types.d.ts +5 -0
- package/lib/accounts/types.js +7 -1
- package/lib/accounts/utils.d.ts +7 -0
- package/lib/accounts/utils.js +33 -1
- package/lib/accounts/webSocketDriftClientAccountSubscriber.d.ts +5 -4
- package/lib/accounts/webSocketDriftClientAccountSubscriber.js +24 -1
- package/lib/config.d.ts +6 -1
- package/lib/config.js +10 -1
- package/lib/constants/perpMarkets.js +33 -1
- package/lib/constants/spotMarkets.js +10 -0
- package/lib/constants/txConstants.d.ts +1 -0
- package/lib/constants/txConstants.js +4 -0
- package/lib/driftClient.d.ts +45 -9
- package/lib/driftClient.js +191 -49
- package/lib/driftClientConfig.d.ts +3 -0
- package/lib/events/types.js +1 -5
- package/lib/idl/drift.json +170 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/math/margin.d.ts +16 -1
- package/lib/math/margin.js +67 -1
- package/lib/orderParams.js +8 -8
- package/lib/orderSubscriber/OrderSubscriber.js +1 -6
- package/lib/tokenFaucet.js +2 -1
- package/lib/tx/baseTxSender.d.ts +0 -1
- package/lib/tx/baseTxSender.js +8 -26
- package/lib/tx/fastSingleTxSender.js +2 -2
- package/lib/tx/forwardOnlyTxSender.js +2 -2
- package/lib/tx/reportTransactionError.d.ts +20 -0
- package/lib/tx/reportTransactionError.js +103 -0
- package/lib/tx/retryTxSender.js +2 -2
- package/lib/tx/txHandler.js +10 -7
- package/lib/tx/whileValidTxSender.d.ts +4 -5
- package/lib/tx/whileValidTxSender.js +16 -17
- package/lib/types.d.ts +22 -1
- package/lib/types.js +6 -1
- package/lib/user.d.ts +4 -1
- package/lib/user.js +9 -2
- package/lib/util/TransactionConfirmationManager.d.ts +16 -0
- package/lib/util/TransactionConfirmationManager.js +174 -0
- package/package.json +4 -3
- package/src/accounts/pollingDriftClientAccountSubscriber.ts +41 -5
- package/src/accounts/types.ts +6 -0
- package/src/accounts/utils.ts +42 -0
- package/src/accounts/webSocketDriftClientAccountSubscriber.ts +40 -5
- package/src/config.ts +17 -1
- package/src/constants/perpMarkets.ts +35 -1
- package/src/constants/spotMarkets.ts +11 -0
- package/src/constants/txConstants.ts +1 -0
- package/src/driftClient.ts +426 -64
- package/src/driftClientConfig.ts +3 -0
- package/src/events/types.ts +1 -5
- package/src/idl/drift.json +170 -2
- package/src/index.ts +1 -0
- package/src/math/margin.ts +137 -1
- package/src/orderParams.ts +20 -12
- package/src/orderSubscriber/OrderSubscriber.ts +2 -5
- package/src/tokenFaucet.ts +2 -2
- package/src/tx/baseTxSender.ts +10 -32
- package/src/tx/fastSingleTxSender.ts +2 -2
- package/src/tx/forwardOnlyTxSender.ts +2 -2
- package/src/tx/reportTransactionError.ts +159 -0
- package/src/tx/retryTxSender.ts +2 -2
- package/src/tx/txHandler.ts +8 -2
- package/src/tx/whileValidTxSender.ts +18 -27
- package/src/types.ts +31 -1
- package/src/user.ts +35 -2
- package/src/util/TransactionConfirmationManager.ts +292 -0
- package/tests/ci/idl.ts +12 -3
- package/tests/ci/verifyConstants.ts +13 -0
- package/tests/tx/TransactionConfirmationManager.test.ts +305 -0
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@ npm i @drift-labs/sdk
|
|
|
22
22
|
Documentation:
|
|
23
23
|
|
|
24
24
|
- [API docs](https://drift-labs.github.io/v2-teacher/)
|
|
25
|
+
- [Typescript API docs](https://drift-labs.github.io/protocol-v2/sdk/)
|
|
25
26
|
- [overview docs](https://docs.drift.trade/)
|
|
26
27
|
|
|
27
28
|
The below is a light overview of using solana and drift's typescript sdk, but not as comprehensive as the [API docs](https://drift-labs.github.io/v2-teacher/).
|
|
@@ -264,3 +265,5 @@ Drift Protocol v2 is licensed under [Apache 2.0](./LICENSE).
|
|
|
264
265
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
265
266
|
for inclusion in Drift SDK by you, as defined in the Apache-2.0 license, shall be
|
|
266
267
|
licensed as above, without any additional terms or conditions.
|
|
268
|
+
|
|
269
|
+
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.97.0-beta.0
|
package/bun.lockb
CHANGED
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { DataAndSlot,
|
|
2
|
+
import { AccountToPoll, DataAndSlot, DelistedMarketSetting, DriftClientAccountEvents, DriftClientAccountSubscriber, OraclesToPoll } from './types';
|
|
3
3
|
import { Program } from '@coral-xyz/anchor';
|
|
4
4
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
5
5
|
import { EventEmitter } from 'events';
|
|
6
|
-
import {
|
|
6
|
+
import { PerpMarketAccount, SpotMarketAccount, StateAccount, UserAccount } from '../types';
|
|
7
7
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
8
8
|
import { PublicKey } from '@solana/web3.js';
|
|
9
9
|
import { OracleInfo, OraclePriceData } from '../oracles/types';
|
|
@@ -30,10 +30,11 @@ export declare class PollingDriftClientAccountSubscriber implements DriftClientA
|
|
|
30
30
|
spotOracleStringMap: Map<number, string>;
|
|
31
31
|
oracles: Map<string, DataAndSlot<OraclePriceData>>;
|
|
32
32
|
user?: DataAndSlot<UserAccount>;
|
|
33
|
+
delistedMarketSetting: DelistedMarketSetting;
|
|
33
34
|
private isSubscribing;
|
|
34
35
|
private subscriptionPromise;
|
|
35
36
|
private subscriptionPromiseResolver;
|
|
36
|
-
constructor(program: Program, accountLoader: BulkAccountLoader, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean);
|
|
37
|
+
constructor(program: Program, accountLoader: BulkAccountLoader, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting);
|
|
37
38
|
subscribe(): Promise<boolean>;
|
|
38
39
|
updateAccountsToPoll(): Promise<void>;
|
|
39
40
|
updatePerpMarketAccountsToPoll(): Promise<boolean>;
|
|
@@ -54,6 +55,7 @@ export declare class PollingDriftClientAccountSubscriber implements DriftClientA
|
|
|
54
55
|
private pauseForOracleToBeAdded;
|
|
55
56
|
setPerpOracleMap(): Promise<void>;
|
|
56
57
|
setSpotOracleMap(): Promise<void>;
|
|
58
|
+
handleDelistedMarkets(): void;
|
|
57
59
|
assertIsSubscribed(): void;
|
|
58
60
|
getStateAccountAndSlot(): DataAndSlot<StateAccount>;
|
|
59
61
|
getMarketAccountAndSlot(marketIndex: number): DataAndSlot<PerpMarketAccount> | undefined;
|
|
@@ -11,7 +11,7 @@ const quoteAssetOracleClient_1 = require("../oracles/quoteAssetOracleClient");
|
|
|
11
11
|
const config_1 = require("../config");
|
|
12
12
|
const ORACLE_DEFAULT_KEY = web3_js_1.PublicKey.default.toBase58();
|
|
13
13
|
class PollingDriftClientAccountSubscriber {
|
|
14
|
-
constructor(program, accountLoader, perpMarketIndexes, spotMarketIndexes, oracleInfos, shouldFindAllMarketsAndOracles) {
|
|
14
|
+
constructor(program, accountLoader, perpMarketIndexes, spotMarketIndexes, oracleInfos, shouldFindAllMarketsAndOracles, delistedMarketSetting) {
|
|
15
15
|
this.oracleClientCache = new oracleClientCache_1.OracleClientCache();
|
|
16
16
|
this.accountsToPoll = new Map();
|
|
17
17
|
this.oraclesToPoll = new Map();
|
|
@@ -31,6 +31,7 @@ class PollingDriftClientAccountSubscriber {
|
|
|
31
31
|
this.spotMarketIndexes = spotMarketIndexes;
|
|
32
32
|
this.oracleInfos = oracleInfos;
|
|
33
33
|
this.shouldFindAllMarketsAndOracles = shouldFindAllMarketsAndOracles;
|
|
34
|
+
this.delistedMarketSetting = delistedMarketSetting;
|
|
34
35
|
}
|
|
35
36
|
async subscribe() {
|
|
36
37
|
if (this.isSubscribed) {
|
|
@@ -62,6 +63,7 @@ class PollingDriftClientAccountSubscriber {
|
|
|
62
63
|
if (subscriptionSucceeded) {
|
|
63
64
|
this.eventEmitter.emit('update');
|
|
64
65
|
}
|
|
66
|
+
this.handleDelistedMarkets();
|
|
65
67
|
await Promise.all([this.setPerpOracleMap(), this.setSpotOracleMap()]);
|
|
66
68
|
this.isSubscribing = false;
|
|
67
69
|
this.isSubscribed = subscriptionSucceeded;
|
|
@@ -325,6 +327,27 @@ class PollingDriftClientAccountSubscriber {
|
|
|
325
327
|
}
|
|
326
328
|
await Promise.all(oraclePromises);
|
|
327
329
|
}
|
|
330
|
+
handleDelistedMarkets() {
|
|
331
|
+
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Subscribe) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const { perpMarketIndexes, oracles } = (0, utils_1.findDelistedPerpMarketsAndOracles)(this.getMarketAccountsAndSlots(), this.getSpotMarketAccountsAndSlots());
|
|
335
|
+
for (const perpMarketIndex of perpMarketIndexes) {
|
|
336
|
+
const perpMarketPubkey = this.perpMarket.get(perpMarketIndex).data.pubkey;
|
|
337
|
+
const callbackId = this.accountsToPoll.get(perpMarketPubkey.toBase58()).callbackId;
|
|
338
|
+
this.accountLoader.removeAccount(perpMarketPubkey, callbackId);
|
|
339
|
+
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
340
|
+
this.perpMarket.delete(perpMarketIndex);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
for (const oracle of oracles) {
|
|
344
|
+
const callbackId = this.oraclesToPoll.get(oracle.toBase58()).callbackId;
|
|
345
|
+
this.accountLoader.removeAccount(oracle, callbackId);
|
|
346
|
+
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
347
|
+
this.oracles.delete(oracle.toBase58());
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
328
351
|
assertIsSubscribed() {
|
|
329
352
|
if (!this.isSubscribed) {
|
|
330
353
|
throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
|
package/lib/accounts/types.d.ts
CHANGED
|
@@ -50,6 +50,11 @@ export interface DriftClientAccountSubscriber {
|
|
|
50
50
|
getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
|
|
51
51
|
updateAccountLoaderPollingFrequency?: (pollingFrequency: number) => void;
|
|
52
52
|
}
|
|
53
|
+
export declare enum DelistedMarketSetting {
|
|
54
|
+
Unsubscribe = 0,
|
|
55
|
+
Subscribe = 1,
|
|
56
|
+
Discard = 2
|
|
57
|
+
}
|
|
53
58
|
export interface UserAccountEvents {
|
|
54
59
|
userAccountUpdate: (payload: UserAccount) => void;
|
|
55
60
|
update: void;
|
package/lib/accounts/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NotSubscribedError = void 0;
|
|
3
|
+
exports.DelistedMarketSetting = exports.NotSubscribedError = void 0;
|
|
4
4
|
class NotSubscribedError extends Error {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -8,3 +8,9 @@ class NotSubscribedError extends Error {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.NotSubscribedError = NotSubscribedError;
|
|
11
|
+
var DelistedMarketSetting;
|
|
12
|
+
(function (DelistedMarketSetting) {
|
|
13
|
+
DelistedMarketSetting[DelistedMarketSetting["Unsubscribe"] = 0] = "Unsubscribe";
|
|
14
|
+
DelistedMarketSetting[DelistedMarketSetting["Subscribe"] = 1] = "Subscribe";
|
|
15
|
+
DelistedMarketSetting[DelistedMarketSetting["Discard"] = 2] = "Discard";
|
|
16
|
+
})(DelistedMarketSetting = exports.DelistedMarketSetting || (exports.DelistedMarketSetting = {}));
|
package/lib/accounts/utils.d.ts
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { DataAndSlot } from './types';
|
|
3
|
+
import { PerpMarketAccount, SpotMarketAccount } from '../types';
|
|
1
4
|
export declare function capitalize(value: string): string;
|
|
5
|
+
export declare function findDelistedPerpMarketsAndOracles(perpMarkets: DataAndSlot<PerpMarketAccount>[], spotMarkets: DataAndSlot<SpotMarketAccount>[]): {
|
|
6
|
+
perpMarketIndexes: number[];
|
|
7
|
+
oracles: PublicKey[];
|
|
8
|
+
};
|
package/lib/accounts/utils.js
CHANGED
|
@@ -1,7 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.capitalize = void 0;
|
|
3
|
+
exports.findDelistedPerpMarketsAndOracles = exports.capitalize = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
4
5
|
function capitalize(value) {
|
|
5
6
|
return value[0].toUpperCase() + value.slice(1);
|
|
6
7
|
}
|
|
7
8
|
exports.capitalize = capitalize;
|
|
9
|
+
function findDelistedPerpMarketsAndOracles(perpMarkets, spotMarkets) {
|
|
10
|
+
const delistedPerpMarketIndexes = [];
|
|
11
|
+
const delistedOracles = [];
|
|
12
|
+
for (const perpMarket of perpMarkets) {
|
|
13
|
+
if (!perpMarket.data) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if ((0, types_1.isVariant)(perpMarket.data.status, 'delisted')) {
|
|
17
|
+
delistedPerpMarketIndexes.push(perpMarket.data.marketIndex);
|
|
18
|
+
delistedOracles.push(perpMarket.data.amm.oracle);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// make sure oracle isn't used by spot market
|
|
22
|
+
const filteredDelistedOracles = [];
|
|
23
|
+
for (const delistedOracle of delistedOracles) {
|
|
24
|
+
for (const spotMarket of spotMarkets) {
|
|
25
|
+
if (!spotMarket.data) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (spotMarket.data.oracle.equals(delistedOracle)) {
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
filteredDelistedOracles.push(delistedOracle);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
perpMarketIndexes: delistedPerpMarketIndexes,
|
|
36
|
+
oracles: filteredDelistedOracles,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
exports.findDelistedPerpMarketsAndOracles = findDelistedPerpMarketsAndOracles;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { SpotMarketAccount, PerpMarketAccount, StateAccount } from '../types';
|
|
2
|
+
import { AccountSubscriber, DataAndSlot, DelistedMarketSetting, DriftClientAccountEvents, DriftClientAccountSubscriber, ResubOpts } from './types';
|
|
3
|
+
import { PerpMarketAccount, SpotMarketAccount, StateAccount } from '../types';
|
|
5
4
|
import { Program } from '@coral-xyz/anchor';
|
|
6
5
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
7
6
|
import { EventEmitter } from 'events';
|
|
@@ -27,13 +26,14 @@ export declare class WebSocketDriftClientAccountSubscriber implements DriftClien
|
|
|
27
26
|
spotOracleMap: Map<number, PublicKey>;
|
|
28
27
|
spotOracleStringMap: Map<number, string>;
|
|
29
28
|
oracleSubscribers: Map<string, AccountSubscriber<OraclePriceData>>;
|
|
29
|
+
delistedMarketSetting: DelistedMarketSetting;
|
|
30
30
|
initialPerpMarketAccountData: Map<number, PerpMarketAccount>;
|
|
31
31
|
initialSpotMarketAccountData: Map<number, SpotMarketAccount>;
|
|
32
32
|
initialOraclePriceData: Map<string, OraclePriceData>;
|
|
33
33
|
private isSubscribing;
|
|
34
34
|
private subscriptionPromise;
|
|
35
35
|
private subscriptionPromiseResolver;
|
|
36
|
-
constructor(program: Program, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, resubOpts?: ResubOpts, commitment?: Commitment);
|
|
36
|
+
constructor(program: Program, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts, commitment?: Commitment);
|
|
37
37
|
subscribe(): Promise<boolean>;
|
|
38
38
|
setInitialData(): Promise<void>;
|
|
39
39
|
removeInitialData(): void;
|
|
@@ -53,6 +53,7 @@ export declare class WebSocketDriftClientAccountSubscriber implements DriftClien
|
|
|
53
53
|
addOracle(oracleInfo: OracleInfo): Promise<boolean>;
|
|
54
54
|
setPerpOracleMap(): Promise<void>;
|
|
55
55
|
setSpotOracleMap(): Promise<void>;
|
|
56
|
+
handleDelistedMarkets(): Promise<void>;
|
|
56
57
|
assertIsSubscribed(): void;
|
|
57
58
|
getStateAccountAndSlot(): DataAndSlot<StateAccount>;
|
|
58
59
|
getMarketAccountAndSlot(marketIndex: number): DataAndSlot<PerpMarketAccount> | undefined;
|
|
@@ -9,9 +9,10 @@ const web3_js_1 = require("@solana/web3.js");
|
|
|
9
9
|
const oracleClientCache_1 = require("../oracles/oracleClientCache");
|
|
10
10
|
const quoteAssetOracleClient_1 = require("../oracles/quoteAssetOracleClient");
|
|
11
11
|
const config_1 = require("../config");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
12
13
|
const ORACLE_DEFAULT_KEY = web3_js_1.PublicKey.default.toBase58();
|
|
13
14
|
class WebSocketDriftClientAccountSubscriber {
|
|
14
|
-
constructor(program, perpMarketIndexes, spotMarketIndexes, oracleInfos, shouldFindAllMarketsAndOracles, resubOpts, commitment) {
|
|
15
|
+
constructor(program, perpMarketIndexes, spotMarketIndexes, oracleInfos, shouldFindAllMarketsAndOracles, delistedMarketSetting, resubOpts, commitment) {
|
|
15
16
|
this.oracleClientCache = new oracleClientCache_1.OracleClientCache();
|
|
16
17
|
this.perpMarketAccountSubscribers = new Map();
|
|
17
18
|
this.perpOracleMap = new Map();
|
|
@@ -28,6 +29,7 @@ class WebSocketDriftClientAccountSubscriber {
|
|
|
28
29
|
this.spotMarketIndexes = spotMarketIndexes;
|
|
29
30
|
this.oracleInfos = oracleInfos;
|
|
30
31
|
this.shouldFindAllMarketsAndOracles = shouldFindAllMarketsAndOracles;
|
|
32
|
+
this.delistedMarketSetting = delistedMarketSetting;
|
|
31
33
|
this.resubOpts = resubOpts;
|
|
32
34
|
this.commitment = commitment;
|
|
33
35
|
}
|
|
@@ -69,6 +71,7 @@ class WebSocketDriftClientAccountSubscriber {
|
|
|
69
71
|
this.subscribeToOracles(),
|
|
70
72
|
]);
|
|
71
73
|
this.eventEmitter.emit('update');
|
|
74
|
+
await this.handleDelistedMarkets();
|
|
72
75
|
await Promise.all([this.setPerpOracleMap(), this.setSpotOracleMap()]);
|
|
73
76
|
this.isSubscribing = false;
|
|
74
77
|
this.isSubscribed = true;
|
|
@@ -263,6 +266,26 @@ class WebSocketDriftClientAccountSubscriber {
|
|
|
263
266
|
}
|
|
264
267
|
await Promise.all(addOraclePromises);
|
|
265
268
|
}
|
|
269
|
+
async handleDelistedMarkets() {
|
|
270
|
+
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Subscribe) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const { perpMarketIndexes, oracles } = (0, utils_1.findDelistedPerpMarketsAndOracles)(this.getMarketAccountsAndSlots(), this.getSpotMarketAccountsAndSlots());
|
|
274
|
+
for (const perpMarketIndex of perpMarketIndexes) {
|
|
275
|
+
await this.perpMarketAccountSubscribers
|
|
276
|
+
.get(perpMarketIndex)
|
|
277
|
+
.unsubscribe();
|
|
278
|
+
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
279
|
+
this.perpMarketAccountSubscribers.delete(perpMarketIndex);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
for (const oracle of oracles) {
|
|
283
|
+
await this.oracleSubscribers.get(oracle.toBase58()).unsubscribe();
|
|
284
|
+
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
285
|
+
this.oracleSubscribers.delete(oracle.toBase58());
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
266
289
|
assertIsSubscribed() {
|
|
267
290
|
if (!this.isSubscribed) {
|
|
268
291
|
throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
|
package/lib/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfirmOptions } from '@solana/web3.js';
|
|
2
|
+
import { PerpMarketAccount, PublicKey, SpotMarketAccount } from '.';
|
|
2
3
|
import { PerpMarketConfig } from './constants/perpMarkets';
|
|
3
4
|
import { SpotMarketConfig } from './constants/spotMarkets';
|
|
4
5
|
import { OracleInfo } from './oracles/types';
|
|
@@ -19,10 +20,14 @@ type DriftConfig = {
|
|
|
19
20
|
MARKET_LOOKUP_TABLE: string;
|
|
20
21
|
SERUM_LOOKUP_TABLE?: string;
|
|
21
22
|
PYTH_PULL_ORACLE_LOOKUP_TABLE?: string;
|
|
23
|
+
SB_ON_DEMAND_PID: PublicKey;
|
|
22
24
|
};
|
|
23
25
|
export type DriftEnv = 'devnet' | 'mainnet-beta';
|
|
24
26
|
export declare const DRIFT_PROGRAM_ID = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH";
|
|
25
27
|
export declare const DRIFT_ORACLE_RECEIVER_ID = "G6EoTTTgpkNBtVXo96EQp2m6uwwVh2Kt6YidjkmQqoha";
|
|
28
|
+
export declare const SWIFT_ID = "SW1fThqrxLzVprnCMpiybiqYQfoNCdduC5uWsSUKChS";
|
|
29
|
+
export declare const ANCHOR_TEST_SWIFT_ID = "DpaEdAPW3ZX67fnczT14AoX12Lx9VMkxvtT81nCHy3Nv";
|
|
30
|
+
export declare const DEFAULT_CONFIRMATION_OPTS: ConfirmOptions;
|
|
26
31
|
export declare const configs: {
|
|
27
32
|
[key in DriftEnv]: DriftConfig;
|
|
28
33
|
};
|
package/lib/config.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findAllMarketAndOracles = exports.getMarketsAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = exports.DRIFT_ORACLE_RECEIVER_ID = exports.DRIFT_PROGRAM_ID = void 0;
|
|
3
|
+
exports.findAllMarketAndOracles = exports.getMarketsAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = exports.DEFAULT_CONFIRMATION_OPTS = exports.ANCHOR_TEST_SWIFT_ID = exports.SWIFT_ID = exports.DRIFT_ORACLE_RECEIVER_ID = exports.DRIFT_PROGRAM_ID = void 0;
|
|
4
4
|
const perpMarkets_1 = require("./constants/perpMarkets");
|
|
5
5
|
const spotMarkets_1 = require("./constants/spotMarkets");
|
|
6
|
+
const on_demand_1 = require("@switchboard-xyz/on-demand");
|
|
6
7
|
exports.DRIFT_PROGRAM_ID = 'dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH';
|
|
7
8
|
exports.DRIFT_ORACLE_RECEIVER_ID = 'G6EoTTTgpkNBtVXo96EQp2m6uwwVh2Kt6YidjkmQqoha';
|
|
9
|
+
exports.SWIFT_ID = 'SW1fThqrxLzVprnCMpiybiqYQfoNCdduC5uWsSUKChS';
|
|
10
|
+
exports.ANCHOR_TEST_SWIFT_ID = 'DpaEdAPW3ZX67fnczT14AoX12Lx9VMkxvtT81nCHy3Nv';
|
|
11
|
+
exports.DEFAULT_CONFIRMATION_OPTS = {
|
|
12
|
+
preflightCommitment: 'confirmed',
|
|
13
|
+
commitment: 'confirmed',
|
|
14
|
+
};
|
|
8
15
|
exports.configs = {
|
|
9
16
|
devnet: {
|
|
10
17
|
ENV: 'devnet',
|
|
@@ -20,6 +27,7 @@ exports.configs = {
|
|
|
20
27
|
SPOT_MARKETS: spotMarkets_1.DevnetSpotMarkets,
|
|
21
28
|
MARKET_LOOKUP_TABLE: 'FaMS3U4uBojvGn5FSDEPimddcXsCfwkKsFgMVVnDdxGb',
|
|
22
29
|
DRIFT_ORACLE_RECEIVER_ID: exports.DRIFT_ORACLE_RECEIVER_ID,
|
|
30
|
+
SB_ON_DEMAND_PID: on_demand_1.ON_DEMAND_DEVNET_PID,
|
|
23
31
|
},
|
|
24
32
|
'mainnet-beta': {
|
|
25
33
|
ENV: 'mainnet-beta',
|
|
@@ -36,6 +44,7 @@ exports.configs = {
|
|
|
36
44
|
MARKET_LOOKUP_TABLE: 'D9cnvzswDikQDf53k4HpQ3KJ9y1Fv3HGGDFYMXnK5T6c',
|
|
37
45
|
SERUM_LOOKUP_TABLE: 'GPZkp76cJtNL2mphCvT6FXkJCVPpouidnacckR6rzKDN',
|
|
38
46
|
DRIFT_ORACLE_RECEIVER_ID: exports.DRIFT_ORACLE_RECEIVER_ID,
|
|
47
|
+
SB_ON_DEMAND_PID: on_demand_1.ON_DEMAND_MAINNET_PID,
|
|
39
48
|
},
|
|
40
49
|
};
|
|
41
50
|
let currentConfig = exports.configs.devnet;
|
|
@@ -263,7 +263,7 @@ exports.DevnetPerpMarkets = [
|
|
|
263
263
|
symbol: 'W-PERP',
|
|
264
264
|
baseAssetSymbol: 'W',
|
|
265
265
|
marketIndex: 23,
|
|
266
|
-
oracle: new web3_js_1.PublicKey('
|
|
266
|
+
oracle: new web3_js_1.PublicKey('J9nrFWjDUeDVZ4BhhxsbQXWgLcLEgQyNBrCbwSADmJdr'),
|
|
267
267
|
launchTs: 1709852537000,
|
|
268
268
|
oracleSource: __1.OracleSource.SWITCHBOARD_ON_DEMAND,
|
|
269
269
|
pythFeedId: '0xeff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389',
|
|
@@ -788,6 +788,38 @@ exports.MainnetPerpMarkets = [
|
|
|
788
788
|
launchTs: 1726646453000,
|
|
789
789
|
oracleSource: __1.OracleSource.Prelaunch,
|
|
790
790
|
},
|
|
791
|
+
{
|
|
792
|
+
fullName: 'MOTHER',
|
|
793
|
+
category: ['Solana', 'Meme'],
|
|
794
|
+
symbol: 'MOTHER-PERP',
|
|
795
|
+
baseAssetSymbol: 'MOTHER',
|
|
796
|
+
marketIndex: 44,
|
|
797
|
+
oracle: new web3_js_1.PublicKey('56ap2coZG7FPWUigVm9XrpQs3xuCwnwQaWtjWZcffEUG'),
|
|
798
|
+
launchTs: 1727291859000,
|
|
799
|
+
oracleSource: __1.OracleSource.PYTH_PULL,
|
|
800
|
+
pythFeedId: '0x62742a997d01f7524f791fdb2dd43aaf0e567d765ebf8fd0406a994239e874d4',
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
fullName: 'MOODENG',
|
|
804
|
+
category: ['Solana', 'Meme'],
|
|
805
|
+
symbol: 'MOODENG-PERP',
|
|
806
|
+
baseAssetSymbol: 'MOODENG',
|
|
807
|
+
marketIndex: 45,
|
|
808
|
+
oracle: new web3_js_1.PublicKey('21gjgEcuDppthwV16J1QpFzje3vmgMp2uSzh7pJsG7ob'),
|
|
809
|
+
launchTs: 1727965864000,
|
|
810
|
+
oracleSource: __1.OracleSource.PYTH_PULL,
|
|
811
|
+
pythFeedId: '0xffff73128917a90950cd0473fd2551d7cd274fd5a6cc45641881bbcc6ee73417',
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
fullName: 'WARWICK-FIGHT-WIN-BET',
|
|
815
|
+
category: ['Prediction', 'Sport'],
|
|
816
|
+
symbol: 'WARWICK-FIGHT-WIN-BET',
|
|
817
|
+
baseAssetSymbol: 'WARWICK-FIGHT-WIN',
|
|
818
|
+
marketIndex: 46,
|
|
819
|
+
oracle: new web3_js_1.PublicKey('Dz5Nvxo1hv7Zfyu11hy8e97twLMRKk6heTWCDGXytj7N'),
|
|
820
|
+
launchTs: 1727965864000,
|
|
821
|
+
oracleSource: __1.OracleSource.Prelaunch,
|
|
822
|
+
},
|
|
791
823
|
];
|
|
792
824
|
exports.PerpMarkets = {
|
|
793
825
|
devnet: exports.DevnetPerpMarkets,
|
|
@@ -344,6 +344,16 @@ exports.MainnetSpotMarkets = [
|
|
|
344
344
|
precisionExp: numericConstants_1.LAMPORTS_EXP,
|
|
345
345
|
pythFeedId: '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d',
|
|
346
346
|
},
|
|
347
|
+
{
|
|
348
|
+
symbol: 'MOTHER',
|
|
349
|
+
marketIndex: 26,
|
|
350
|
+
oracle: new web3_js_1.PublicKey('56ap2coZG7FPWUigVm9XrpQs3xuCwnwQaWtjWZcffEUG'),
|
|
351
|
+
oracleSource: __1.OracleSource.PYTH_PULL,
|
|
352
|
+
mint: new web3_js_1.PublicKey('3S8qX1MsMqRbiwKg2cQyx7nis1oHMgaCuc9c4VfvVdPN'),
|
|
353
|
+
precision: new __1.BN(10).pow(numericConstants_1.SIX),
|
|
354
|
+
precisionExp: numericConstants_1.SIX,
|
|
355
|
+
pythFeedId: '0x62742a997d01f7524f791fdb2dd43aaf0e567d765ebf8fd0406a994239e874d4',
|
|
356
|
+
},
|
|
347
357
|
];
|
|
348
358
|
exports.SpotMarkets = {
|
|
349
359
|
devnet: exports.DevnetSpotMarkets,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const NOT_CONFIRMED_ERROR_CODE = -1001;
|
package/lib/driftClient.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="bn.js" />
|
|
3
3
|
/// <reference types="node" />
|
|
4
|
+
import * as anchor from '@coral-xyz/anchor';
|
|
4
5
|
import { AnchorProvider, BN, Program, ProgramAccount } from '@coral-xyz/anchor';
|
|
5
6
|
import { Idl as Idl30, Program as Program30 } from '@coral-xyz/anchor-30';
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import { Connection, PublicKey, TransactionSignature, ConfirmOptions, Transaction, TransactionInstruction, AccountMeta, Signer, AddressLookupTableAccount, TransactionVersion, VersionedTransaction, BlockhashWithExpiryBlockHeight } from '@solana/web3.js';
|
|
7
|
+
import { DriftClientMetricsEvents, IWallet, MakerInfo, MappedRecord, MarketType, ModifyOrderPolicy, OpenbookV2FulfillmentConfigAccount, OptionalOrderParams, Order, OrderParams, OrderTriggerCondition, PerpMarketAccount, PerpMarketExtendedInfo, PhoenixV1FulfillmentConfigAccount, PlaceAndTakeOrderSuccessCondition, PositionDirection, ReferrerInfo, ReferrerNameAccount, SerumV3FulfillmentConfigAccount, SettlePnlMode, SignedTxData, SpotMarketAccount, SpotPosition, StateAccount, SwapReduceOnly, SwiftOrderParamsMessage, SwiftServerMessage, TakerInfo, TxParams, UserAccount, UserStatsAccount } from './types';
|
|
8
|
+
import { AccountMeta, AddressLookupTableAccount, BlockhashWithExpiryBlockHeight, ConfirmOptions, Connection, Keypair, PublicKey, Signer, Transaction, TransactionInstruction, TransactionSignature, TransactionVersion, VersionedTransaction } from '@solana/web3.js';
|
|
9
9
|
import { TokenFaucet } from './tokenFaucet';
|
|
10
10
|
import { EventEmitter } from 'events';
|
|
11
11
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
12
|
-
import {
|
|
13
|
-
import { DriftClientMetricsEvents } from './types';
|
|
12
|
+
import { DataAndSlot, DriftClientAccountEvents, DriftClientAccountSubscriber } from './accounts/types';
|
|
14
13
|
import { TxSender, TxSigAndSlot } from './tx/types';
|
|
15
14
|
import { OraclePriceData } from './oracles/types';
|
|
16
15
|
import { DriftClientConfig } from './driftClientConfig';
|
|
@@ -38,6 +37,7 @@ export declare class DriftClient {
|
|
|
38
37
|
connection: Connection;
|
|
39
38
|
wallet: IWallet;
|
|
40
39
|
program: Program;
|
|
40
|
+
swiftID: PublicKey;
|
|
41
41
|
provider: AnchorProvider;
|
|
42
42
|
opts?: ConfirmOptions;
|
|
43
43
|
users: Map<string, User>;
|
|
@@ -66,6 +66,7 @@ export declare class DriftClient {
|
|
|
66
66
|
txHandler: TxHandler;
|
|
67
67
|
receiverProgram?: Program<PythSolanaReceiver>;
|
|
68
68
|
wormholeProgram?: Program<WormholeCoreBridgeSolana>;
|
|
69
|
+
sbOnDemandProgramdId: PublicKey;
|
|
69
70
|
sbOnDemandProgram?: Program30<Idl30>;
|
|
70
71
|
sbProgramFeedConfigs?: Map<string, any>;
|
|
71
72
|
get isSubscribed(): boolean;
|
|
@@ -239,6 +240,7 @@ export declare class DriftClient {
|
|
|
239
240
|
*/
|
|
240
241
|
getAssociatedTokenAccount(marketIndex: number, useNative?: boolean, tokenProgram?: anchor.web3.PublicKey): Promise<PublicKey>;
|
|
241
242
|
createAssociatedTokenAccountIdempotentInstruction(account: PublicKey, payer: PublicKey, owner: PublicKey, mint: PublicKey, tokenProgram?: anchor.web3.PublicKey): TransactionInstruction;
|
|
243
|
+
getDepositTxnIx(amount: BN, marketIndex: number, associatedTokenAccount: PublicKey, subAccountId?: number, reduceOnly?: boolean): Promise<TransactionInstruction[]>;
|
|
242
244
|
createDepositTxn(amount: BN, marketIndex: number, associatedTokenAccount: PublicKey, subAccountId?: number, reduceOnly?: boolean, txParams?: TxParams): Promise<VersionedTransaction | Transaction>;
|
|
243
245
|
/**
|
|
244
246
|
* Deposit funds into the given spot market
|
|
@@ -261,6 +263,10 @@ export declare class DriftClient {
|
|
|
261
263
|
getTokenProgramForSpotMarket(spotMarketAccount: SpotMarketAccount): PublicKey;
|
|
262
264
|
addTokenMintToRemainingAccounts(spotMarketAccount: SpotMarketAccount, remainingAccounts: AccountMeta[]): void;
|
|
263
265
|
getAssociatedTokenAccountCreationIx(tokenMintAddress: PublicKey, associatedTokenAddress: PublicKey, tokenProgram: PublicKey): anchor.web3.TransactionInstruction;
|
|
266
|
+
createInitializeUserAccountAndDepositCollateralIxs(amount: BN, userTokenAccount: PublicKey, marketIndex?: number, subAccountId?: number, name?: string, fromSubAccountId?: number, referrerInfo?: ReferrerInfo, donateAmount?: BN, customMaxMarginRatio?: number): Promise<{
|
|
267
|
+
ixs: TransactionInstruction[];
|
|
268
|
+
userAccountPublicKey: PublicKey;
|
|
269
|
+
}>;
|
|
264
270
|
createInitializeUserAccountAndDepositCollateral(amount: BN, userTokenAccount: PublicKey, marketIndex?: number, subAccountId?: number, name?: string, fromSubAccountId?: number, referrerInfo?: ReferrerInfo, donateAmount?: BN, txParams?: TxParams, customMaxMarginRatio?: number): Promise<[Transaction | VersionedTransaction, PublicKey]>;
|
|
265
271
|
/**
|
|
266
272
|
* Creates the User account for a user, and deposits some initial collateral
|
|
@@ -340,7 +346,10 @@ export declare class DriftClient {
|
|
|
340
346
|
signedSettlePnlTx?: Transaction;
|
|
341
347
|
}>;
|
|
342
348
|
placePerpOrder(orderParams: OptionalOrderParams, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
343
|
-
getPlacePerpOrderIx(orderParams: OptionalOrderParams, subAccountId?: number
|
|
349
|
+
getPlacePerpOrderIx(orderParams: OptionalOrderParams, subAccountId?: number, depositToTradeArgs?: {
|
|
350
|
+
isMakingNewAccount: boolean;
|
|
351
|
+
depositMarketIndex: number;
|
|
352
|
+
}): Promise<TransactionInstruction>;
|
|
344
353
|
updateAMMs(marketIndexes: number[], txParams?: TxParams): Promise<TransactionSignature>;
|
|
345
354
|
getUpdateAMMsIx(marketIndexes: number[]): Promise<TransactionInstruction>;
|
|
346
355
|
settleExpiredMarket(marketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
|
|
@@ -483,7 +492,7 @@ export declare class DriftClient {
|
|
|
483
492
|
getUpdateUserIdleIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, fillerPublicKey?: PublicKey): Promise<TransactionInstruction>;
|
|
484
493
|
updateUserOpenOrdersCount(userAccountPublicKey: PublicKey, user: UserAccount, txParams?: TxParams, fillerPublicKey?: PublicKey): Promise<TransactionSignature>;
|
|
485
494
|
getUpdateUserOpenOrdersCountIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, fillerPublicKey?: PublicKey): Promise<TransactionInstruction>;
|
|
486
|
-
placeAndTakePerpOrder(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
495
|
+
placeAndTakePerpOrder(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, successCondition?: PlaceAndTakeOrderSuccessCondition, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
487
496
|
preparePlaceAndTakePerpOrderWithAdditionalOrders(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, bracketOrdersParams?: OptionalOrderParams[], txParams?: TxParams, subAccountId?: number, cancelExistingOrders?: boolean, settlePnl?: boolean, exitEarlyIfSimFails?: boolean): Promise<{
|
|
488
497
|
placeAndTakeTx: Transaction | VersionedTransaction;
|
|
489
498
|
cancelExistingOrdersTx: Transaction | VersionedTransaction;
|
|
@@ -494,9 +503,36 @@ export declare class DriftClient {
|
|
|
494
503
|
signedCancelExistingOrdersTx?: Transaction;
|
|
495
504
|
signedSettlePnlTx?: Transaction;
|
|
496
505
|
}>;
|
|
497
|
-
getPlaceAndTakePerpOrderIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, subAccountId?: number): Promise<TransactionInstruction>;
|
|
506
|
+
getPlaceAndTakePerpOrderIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, successCondition?: PlaceAndTakeOrderSuccessCondition, subAccountId?: number): Promise<TransactionInstruction>;
|
|
498
507
|
placeAndMakePerpOrder(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
499
508
|
getPlaceAndMakePerpOrderIx(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo, subAccountId?: number): Promise<TransactionInstruction>;
|
|
509
|
+
encodeSwiftServerMessage(message: SwiftServerMessage): Buffer;
|
|
510
|
+
decodeSwiftServerMessage(encodedMessage: Buffer): SwiftServerMessage;
|
|
511
|
+
signSwiftServerMessage(message: SwiftServerMessage): Promise<Buffer>;
|
|
512
|
+
signSwiftOrderParamsMessage(orderParamsMessage: SwiftOrderParamsMessage): Promise<Buffer>;
|
|
513
|
+
encodeSwiftOrderParamsMessage(orderParamsMessage: SwiftOrderParamsMessage): Buffer;
|
|
514
|
+
decodeSwiftOrderParamsMessage(encodedMessage: Buffer): SwiftOrderParamsMessage;
|
|
515
|
+
signMessage(message: Uint8Array, keypair?: Keypair): Promise<Buffer>;
|
|
516
|
+
placeSwiftTakerOrder(swiftServerMessage: Buffer, swiftSignature: Buffer, swiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, marketIndex: number, takerInfo: {
|
|
517
|
+
taker: PublicKey;
|
|
518
|
+
takerStats: PublicKey;
|
|
519
|
+
takerUserAccount: UserAccount;
|
|
520
|
+
}, txParams?: TxParams): Promise<TransactionSignature>;
|
|
521
|
+
getPlaceSwiftTakerPerpOrderIxs(encodedSwiftServerMessage: Buffer, swiftSignature: Buffer, encodedSwiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, marketIndex: number, takerInfo: {
|
|
522
|
+
taker: PublicKey;
|
|
523
|
+
takerStats: PublicKey;
|
|
524
|
+
takerUserAccount: UserAccount;
|
|
525
|
+
}): Promise<TransactionInstruction[]>;
|
|
526
|
+
placeAndMakeSwiftPerpOrder(encodedSwiftMessage: Buffer, swiftSignature: Buffer, encodedSwiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, takerExpectedOrderId: number, takerInfo: {
|
|
527
|
+
taker: PublicKey;
|
|
528
|
+
takerStats: PublicKey;
|
|
529
|
+
takerUserAccount: UserAccount;
|
|
530
|
+
}, orderParams: OptionalOrderParams, referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
531
|
+
getPlaceAndMakeSwiftPerpOrderIxs(encodedSwiftMessage: Buffer, swiftSignature: Buffer, encodedSwiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, takerExpectedOrderId: number, takerInfo: {
|
|
532
|
+
taker: PublicKey;
|
|
533
|
+
takerStats: PublicKey;
|
|
534
|
+
takerUserAccount: UserAccount;
|
|
535
|
+
}, orderParams: OptionalOrderParams, referrerInfo?: ReferrerInfo, subAccountId?: number): Promise<TransactionInstruction[]>;
|
|
500
536
|
preparePlaceAndTakeSpotOrder(orderParams: OptionalOrderParams, fulfillmentConfig?: SerumV3FulfillmentConfigAccount, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<{
|
|
501
537
|
placeAndTakeSpotOrderTx: anchor.web3.Transaction | anchor.web3.VersionedTransaction;
|
|
502
538
|
}>;
|
|
@@ -735,7 +771,7 @@ export declare class DriftClient {
|
|
|
735
771
|
marketType: MarketType;
|
|
736
772
|
} | undefined;
|
|
737
773
|
getReceiverProgram(): Program<PythSolanaReceiver>;
|
|
738
|
-
getSwitchboardOnDemandProgram(): Program30<Idl30
|
|
774
|
+
getSwitchboardOnDemandProgram(): Promise<Program30<Idl30>>;
|
|
739
775
|
postPythPullOracleUpdateAtomic(vaaString: string, feedId: string): Promise<TransactionSignature>;
|
|
740
776
|
postMultiPythPullOracleUpdatesAtomic(vaaString: string, feedIds: string[]): Promise<TransactionSignature>;
|
|
741
777
|
getPostPythPullOracleUpdateAtomicIxs(vaaString: string, feedIds: string | string[], numSignatures?: number): Promise<TransactionInstruction[]>;
|