@drift-labs/sdk 2.96.0-beta.2 → 2.96.0-beta.20
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 +1 -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 -8
- 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/webSocketAccountSubscriber.d.ts +1 -1
- package/lib/accounts/webSocketDriftClientAccountSubscriber.d.ts +8 -7
- package/lib/accounts/webSocketDriftClientAccountSubscriber.js +24 -1
- package/lib/accounts/webSocketProgramAccountSubscriber.d.ts +1 -1
- package/lib/config.d.ts +5 -1
- package/lib/config.js +9 -1
- package/lib/constants/perpMarkets.js +21 -0
- package/lib/constants/spotMarkets.js +12 -1
- package/lib/driftClient.d.ts +44 -9
- package/lib/driftClient.js +181 -61
- package/lib/driftClientConfig.d.ts +2 -6
- package/lib/events/eventSubscriber.js +9 -8
- package/lib/events/types.js +1 -5
- package/lib/idl/drift.json +169 -1
- 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.d.ts +1 -2
- package/lib/orderSubscriber/OrderSubscriber.js +4 -19
- package/lib/orderSubscriber/types.d.ts +0 -9
- package/lib/tokenFaucet.js +2 -1
- package/lib/tx/baseTxSender.js +2 -2
- package/lib/tx/fastSingleTxSender.js +2 -2
- package/lib/tx/forwardOnlyTxSender.js +2 -2
- package/lib/tx/retryTxSender.js +2 -2
- package/lib/tx/txHandler.js +10 -7
- package/lib/tx/whileValidTxSender.d.ts +2 -4
- package/lib/tx/whileValidTxSender.js +16 -17
- package/lib/types.d.ts +21 -1
- package/lib/types.js +6 -1
- package/lib/user.d.ts +4 -1
- package/lib/user.js +13 -13
- package/lib/userConfig.d.ts +1 -6
- package/lib/userMap/userMap.js +0 -14
- package/lib/userMap/userMapConfig.d.ts +0 -7
- package/lib/userStatsConfig.d.ts +0 -6
- package/lib/util/TransactionConfirmationManager.d.ts +14 -0
- package/lib/util/TransactionConfirmationManager.js +96 -0
- package/package.json +4 -5
- package/src/accounts/pollingDriftClientAccountSubscriber.ts +41 -5
- package/src/accounts/types.ts +6 -9
- package/src/accounts/utils.ts +42 -0
- package/src/accounts/webSocketAccountSubscriber.ts +1 -1
- package/src/accounts/webSocketDriftClientAccountSubscriber.ts +43 -8
- package/src/accounts/webSocketProgramAccountSubscriber.ts +1 -1
- package/src/config.ts +15 -1
- package/src/constants/perpMarkets.ts +22 -0
- package/src/constants/spotMarkets.ts +14 -1
- package/src/driftClient.ts +423 -91
- package/src/driftClientConfig.ts +2 -7
- package/src/events/eventSubscriber.ts +18 -11
- package/src/events/types.ts +1 -5
- package/src/idl/drift.json +169 -1
- package/src/index.ts +1 -0
- package/src/math/margin.ts +137 -1
- package/src/orderParams.ts +20 -12
- package/src/orderSubscriber/OrderSubscriber.ts +1 -15
- package/src/orderSubscriber/types.ts +0 -10
- package/src/tokenFaucet.ts +2 -2
- package/src/tx/baseTxSender.ts +2 -2
- package/src/tx/fastSingleTxSender.ts +2 -2
- package/src/tx/forwardOnlyTxSender.ts +2 -2
- package/src/tx/retryTxSender.ts +2 -2
- package/src/tx/txHandler.ts +8 -2
- package/src/tx/whileValidTxSender.ts +23 -26
- package/src/types.ts +30 -1
- package/src/user.ts +35 -13
- package/src/userConfig.ts +1 -7
- package/src/userMap/userMap.ts +1 -17
- package/src/userMap/userMapConfig.ts +0 -8
- package/src/userStatsConfig.ts +0 -7
- package/src/util/TransactionConfirmationManager.ts +155 -0
- package/tests/ci/idl.ts +12 -3
- package/tests/ci/verifyConstants.ts +13 -0
- package/tests/tx/TransactionConfirmationManager.test.ts +286 -0
- package/lib/accounts/grpcAccountSubscriber.d.ts +0 -16
- package/lib/accounts/grpcAccountSubscriber.js +0 -155
- package/lib/accounts/grpcDriftClientAccountSubscriber.d.ts +0 -13
- package/lib/accounts/grpcDriftClientAccountSubscriber.js +0 -96
- package/lib/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +0 -10
- package/lib/accounts/grpcInsuranceFundStakeAccountSubscriber.js +0 -30
- package/lib/accounts/grpcProgramAccountSubscriber.d.ts +0 -19
- package/lib/accounts/grpcProgramAccountSubscriber.js +0 -161
- package/lib/accounts/grpcUserAccountSubscriber.d.ts +0 -10
- package/lib/accounts/grpcUserAccountSubscriber.js +0 -28
- package/lib/accounts/grpcUserStatsAccountSubscriber.d.ts +0 -10
- package/lib/accounts/grpcUserStatsAccountSubscriber.js +0 -28
- package/lib/orderSubscriber/grpcSubscription.d.ts +0 -25
- package/lib/orderSubscriber/grpcSubscription.js +0 -68
- package/lib/userMap/grpcSubscription.d.ts +0 -26
- package/lib/userMap/grpcSubscription.js +0 -42
- package/src/accounts/grpcAccountSubscriber.ts +0 -158
- package/src/accounts/grpcDriftClientAccountSubscriber.ts +0 -196
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +0 -62
- package/src/accounts/grpcProgramAccountSubscriber.ts +0 -181
- package/src/accounts/grpcUserAccountSubscriber.ts +0 -48
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +0 -51
- package/src/orderSubscriber/grpcSubscription.ts +0 -126
- package/src/userMap/grpcSubscription.ts +0 -83
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/).
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.96.0-beta.
|
|
1
|
+
2.96.0-beta.20
|
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
|
@@ -6,8 +6,6 @@ import { EventEmitter } from 'events';
|
|
|
6
6
|
import { Context, PublicKey } from '@solana/web3.js';
|
|
7
7
|
import { Account } from '@solana/spl-token';
|
|
8
8
|
import { OracleInfo, OraclePriceData } from '..';
|
|
9
|
-
import { CommitmentLevel } from '@triton-one/yellowstone-grpc';
|
|
10
|
-
import { ChannelOptions } from '@grpc/grpc-js';
|
|
11
9
|
export interface AccountSubscriber<T> {
|
|
12
10
|
dataAndSlot?: DataAndSlot<T>;
|
|
13
11
|
subscribe(onChange: (data: T) => void): Promise<void>;
|
|
@@ -52,6 +50,11 @@ export interface DriftClientAccountSubscriber {
|
|
|
52
50
|
getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
|
|
53
51
|
updateAccountLoaderPollingFrequency?: (pollingFrequency: number) => void;
|
|
54
52
|
}
|
|
53
|
+
export declare enum DelistedMarketSetting {
|
|
54
|
+
Unsubscribe = 0,
|
|
55
|
+
Subscribe = 1,
|
|
56
|
+
Discard = 2
|
|
57
|
+
}
|
|
55
58
|
export interface UserAccountEvents {
|
|
56
59
|
userAccountUpdate: (payload: UserAccount) => void;
|
|
57
60
|
update: void;
|
|
@@ -142,9 +145,3 @@ export interface UserStatsAccountSubscriber {
|
|
|
142
145
|
unsubscribe(): Promise<void>;
|
|
143
146
|
getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount>;
|
|
144
147
|
}
|
|
145
|
-
export type GrpcConfigs = {
|
|
146
|
-
endpoint: string;
|
|
147
|
-
token: string;
|
|
148
|
-
commitmentLevel?: CommitmentLevel;
|
|
149
|
-
channelOptions?: ChannelOptions;
|
|
150
|
-
};
|
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;
|
|
@@ -20,7 +20,7 @@ export declare class WebSocketAccountSubscriber<T> implements AccountSubscriber<
|
|
|
20
20
|
constructor(accountName: string, program: Program, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => T, resubOpts?: ResubOpts, commitment?: Commitment);
|
|
21
21
|
subscribe(onChange: (data: T) => void): Promise<void>;
|
|
22
22
|
setData(data: T, slot?: number): void;
|
|
23
|
-
|
|
23
|
+
private setTimeout;
|
|
24
24
|
fetch(): Promise<void>;
|
|
25
25
|
handleRpcResponse(context: Context, accountInfo?: AccountInfo<Buffer>): void;
|
|
26
26
|
decodeBuffer(buffer: Buffer): T;
|
|
@@ -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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
constructor(program: Program, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, resubOpts?: ResubOpts, commitment?: Commitment);
|
|
33
|
+
private isSubscribing;
|
|
34
|
+
private subscriptionPromise;
|
|
35
|
+
private subscriptionPromiseResolver;
|
|
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');
|
|
@@ -27,7 +27,7 @@ export declare class WebSocketProgramAccountSubscriber<T> implements ProgramAcco
|
|
|
27
27
|
commitment?: Commitment;
|
|
28
28
|
}, resubOpts?: ResubOpts);
|
|
29
29
|
subscribe(onChange: (accountId: PublicKey, data: T, context: Context, buffer: Buffer) => void): Promise<void>;
|
|
30
|
-
|
|
30
|
+
private setTimeout;
|
|
31
31
|
handleRpcResponse(context: Context, keyedAccountInfo: KeyedAccountInfo): void;
|
|
32
32
|
unsubscribe(onResub?: boolean): Promise<void>;
|
|
33
33
|
}
|
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,13 @@ 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 DEFAULT_CONFIRMATION_OPTS: ConfirmOptions;
|
|
26
30
|
export declare const configs: {
|
|
27
31
|
[key in DriftEnv]: DriftConfig;
|
|
28
32
|
};
|
package/lib/config.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
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.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.DEFAULT_CONFIRMATION_OPTS = {
|
|
11
|
+
preflightCommitment: 'confirmed',
|
|
12
|
+
commitment: 'confirmed',
|
|
13
|
+
};
|
|
8
14
|
exports.configs = {
|
|
9
15
|
devnet: {
|
|
10
16
|
ENV: 'devnet',
|
|
@@ -20,6 +26,7 @@ exports.configs = {
|
|
|
20
26
|
SPOT_MARKETS: spotMarkets_1.DevnetSpotMarkets,
|
|
21
27
|
MARKET_LOOKUP_TABLE: 'FaMS3U4uBojvGn5FSDEPimddcXsCfwkKsFgMVVnDdxGb',
|
|
22
28
|
DRIFT_ORACLE_RECEIVER_ID: exports.DRIFT_ORACLE_RECEIVER_ID,
|
|
29
|
+
SB_ON_DEMAND_PID: on_demand_1.ON_DEMAND_DEVNET_PID,
|
|
23
30
|
},
|
|
24
31
|
'mainnet-beta': {
|
|
25
32
|
ENV: 'mainnet-beta',
|
|
@@ -36,6 +43,7 @@ exports.configs = {
|
|
|
36
43
|
MARKET_LOOKUP_TABLE: 'D9cnvzswDikQDf53k4HpQ3KJ9y1Fv3HGGDFYMXnK5T6c',
|
|
37
44
|
SERUM_LOOKUP_TABLE: 'GPZkp76cJtNL2mphCvT6FXkJCVPpouidnacckR6rzKDN',
|
|
38
45
|
DRIFT_ORACLE_RECEIVER_ID: exports.DRIFT_ORACLE_RECEIVER_ID,
|
|
46
|
+
SB_ON_DEMAND_PID: on_demand_1.ON_DEMAND_MAINNET_PID,
|
|
39
47
|
},
|
|
40
48
|
};
|
|
41
49
|
let currentConfig = exports.configs.devnet;
|
|
@@ -778,6 +778,27 @@ exports.MainnetPerpMarkets = [
|
|
|
778
778
|
oracleSource: __1.OracleSource.PYTH_PULL,
|
|
779
779
|
pythFeedId: '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026',
|
|
780
780
|
},
|
|
781
|
+
{
|
|
782
|
+
fullName: 'LANDO-F1-SGP-WIN-BET',
|
|
783
|
+
category: ['Prediction', 'Sports'],
|
|
784
|
+
symbol: 'LANDO-F1-SGP-WIN-BET',
|
|
785
|
+
baseAssetSymbol: 'LANDO-F1-SGP-WIN',
|
|
786
|
+
marketIndex: 43,
|
|
787
|
+
oracle: new web3_js_1.PublicKey('DpJz7rjTJLxxnuqrqZTUjMWtnaMFAEfZUv5ATdb9HTh1'),
|
|
788
|
+
launchTs: 1726646453000,
|
|
789
|
+
oracleSource: __1.OracleSource.Prelaunch,
|
|
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
|
+
},
|
|
781
802
|
];
|
|
782
803
|
exports.PerpMarkets = {
|
|
783
804
|
devnet: exports.DevnetPerpMarkets,
|
|
@@ -94,7 +94,7 @@ exports.MainnetSpotMarkets = [
|
|
|
94
94
|
precision: new __1.BN(10).pow(numericConstants_1.EIGHT),
|
|
95
95
|
precisionExp: numericConstants_1.EIGHT,
|
|
96
96
|
serumMarket: new web3_js_1.PublicKey('3BAKsQd3RuhZKES2DGysMhjBdwjZYKYmxRqnSMtZ4KSN'),
|
|
97
|
-
pythFeedId: '
|
|
97
|
+
pythFeedId: '0xc9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33',
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
100
|
symbol: 'wETH',
|
|
@@ -280,6 +280,7 @@ exports.MainnetSpotMarkets = [
|
|
|
280
280
|
precision: new __1.BN(10).pow(numericConstants_1.SIX),
|
|
281
281
|
precisionExp: numericConstants_1.SIX,
|
|
282
282
|
launchTs: 1719415157000,
|
|
283
|
+
pythFeedId: '0xc811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a',
|
|
283
284
|
},
|
|
284
285
|
{
|
|
285
286
|
symbol: 'POPCAT',
|
|
@@ -343,6 +344,16 @@ exports.MainnetSpotMarkets = [
|
|
|
343
344
|
precisionExp: numericConstants_1.LAMPORTS_EXP,
|
|
344
345
|
pythFeedId: '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d',
|
|
345
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
|
+
},
|
|
346
357
|
];
|
|
347
358
|
exports.SpotMarkets = {
|
|
348
359
|
devnet: exports.DevnetSpotMarkets,
|
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';
|
|
@@ -66,6 +65,7 @@ export declare class DriftClient {
|
|
|
66
65
|
txHandler: TxHandler;
|
|
67
66
|
receiverProgram?: Program<PythSolanaReceiver>;
|
|
68
67
|
wormholeProgram?: Program<WormholeCoreBridgeSolana>;
|
|
68
|
+
sbOnDemandProgramdId: PublicKey;
|
|
69
69
|
sbOnDemandProgram?: Program30<Idl30>;
|
|
70
70
|
sbProgramFeedConfigs?: Map<string, any>;
|
|
71
71
|
get isSubscribed(): boolean;
|
|
@@ -239,6 +239,7 @@ export declare class DriftClient {
|
|
|
239
239
|
*/
|
|
240
240
|
getAssociatedTokenAccount(marketIndex: number, useNative?: boolean, tokenProgram?: anchor.web3.PublicKey): Promise<PublicKey>;
|
|
241
241
|
createAssociatedTokenAccountIdempotentInstruction(account: PublicKey, payer: PublicKey, owner: PublicKey, mint: PublicKey, tokenProgram?: anchor.web3.PublicKey): TransactionInstruction;
|
|
242
|
+
getDepositTxnIx(amount: BN, marketIndex: number, associatedTokenAccount: PublicKey, subAccountId?: number, reduceOnly?: boolean): Promise<TransactionInstruction[]>;
|
|
242
243
|
createDepositTxn(amount: BN, marketIndex: number, associatedTokenAccount: PublicKey, subAccountId?: number, reduceOnly?: boolean, txParams?: TxParams): Promise<VersionedTransaction | Transaction>;
|
|
243
244
|
/**
|
|
244
245
|
* Deposit funds into the given spot market
|
|
@@ -261,6 +262,10 @@ export declare class DriftClient {
|
|
|
261
262
|
getTokenProgramForSpotMarket(spotMarketAccount: SpotMarketAccount): PublicKey;
|
|
262
263
|
addTokenMintToRemainingAccounts(spotMarketAccount: SpotMarketAccount, remainingAccounts: AccountMeta[]): void;
|
|
263
264
|
getAssociatedTokenAccountCreationIx(tokenMintAddress: PublicKey, associatedTokenAddress: PublicKey, tokenProgram: PublicKey): anchor.web3.TransactionInstruction;
|
|
265
|
+
createInitializeUserAccountAndDepositCollateralIxs(amount: BN, userTokenAccount: PublicKey, marketIndex?: number, subAccountId?: number, name?: string, fromSubAccountId?: number, referrerInfo?: ReferrerInfo, donateAmount?: BN, customMaxMarginRatio?: number): Promise<{
|
|
266
|
+
ixs: TransactionInstruction[];
|
|
267
|
+
userAccountPublicKey: PublicKey;
|
|
268
|
+
}>;
|
|
264
269
|
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
270
|
/**
|
|
266
271
|
* Creates the User account for a user, and deposits some initial collateral
|
|
@@ -340,7 +345,10 @@ export declare class DriftClient {
|
|
|
340
345
|
signedSettlePnlTx?: Transaction;
|
|
341
346
|
}>;
|
|
342
347
|
placePerpOrder(orderParams: OptionalOrderParams, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
343
|
-
getPlacePerpOrderIx(orderParams: OptionalOrderParams, subAccountId?: number
|
|
348
|
+
getPlacePerpOrderIx(orderParams: OptionalOrderParams, subAccountId?: number, depositToTradeArgs?: {
|
|
349
|
+
isMakingNewAccount: boolean;
|
|
350
|
+
depositMarketIndex: number;
|
|
351
|
+
}): Promise<TransactionInstruction>;
|
|
344
352
|
updateAMMs(marketIndexes: number[], txParams?: TxParams): Promise<TransactionSignature>;
|
|
345
353
|
getUpdateAMMsIx(marketIndexes: number[]): Promise<TransactionInstruction>;
|
|
346
354
|
settleExpiredMarket(marketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
|
|
@@ -483,7 +491,7 @@ export declare class DriftClient {
|
|
|
483
491
|
getUpdateUserIdleIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, fillerPublicKey?: PublicKey): Promise<TransactionInstruction>;
|
|
484
492
|
updateUserOpenOrdersCount(userAccountPublicKey: PublicKey, user: UserAccount, txParams?: TxParams, fillerPublicKey?: PublicKey): Promise<TransactionSignature>;
|
|
485
493
|
getUpdateUserOpenOrdersCountIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, fillerPublicKey?: PublicKey): Promise<TransactionInstruction>;
|
|
486
|
-
placeAndTakePerpOrder(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
494
|
+
placeAndTakePerpOrder(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, successCondition?: PlaceAndTakeOrderSuccessCondition, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
487
495
|
preparePlaceAndTakePerpOrderWithAdditionalOrders(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, bracketOrdersParams?: OptionalOrderParams[], txParams?: TxParams, subAccountId?: number, cancelExistingOrders?: boolean, settlePnl?: boolean, exitEarlyIfSimFails?: boolean): Promise<{
|
|
488
496
|
placeAndTakeTx: Transaction | VersionedTransaction;
|
|
489
497
|
cancelExistingOrdersTx: Transaction | VersionedTransaction;
|
|
@@ -494,9 +502,36 @@ export declare class DriftClient {
|
|
|
494
502
|
signedCancelExistingOrdersTx?: Transaction;
|
|
495
503
|
signedSettlePnlTx?: Transaction;
|
|
496
504
|
}>;
|
|
497
|
-
getPlaceAndTakePerpOrderIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, subAccountId?: number): Promise<TransactionInstruction>;
|
|
505
|
+
getPlaceAndTakePerpOrderIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], referrerInfo?: ReferrerInfo, successCondition?: PlaceAndTakeOrderSuccessCondition, subAccountId?: number): Promise<TransactionInstruction>;
|
|
498
506
|
placeAndMakePerpOrder(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
499
507
|
getPlaceAndMakePerpOrderIx(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo, subAccountId?: number): Promise<TransactionInstruction>;
|
|
508
|
+
encodeSwiftServerMessage(message: SwiftServerMessage): Buffer;
|
|
509
|
+
decodeSwiftServerMessage(encodedMessage: Buffer): SwiftServerMessage;
|
|
510
|
+
signSwiftServerMessage(message: SwiftServerMessage): Promise<Buffer>;
|
|
511
|
+
signSwiftOrderParamsMessage(orderParamsMessage: SwiftOrderParamsMessage): Promise<Buffer>;
|
|
512
|
+
encodeSwiftOrderParamsMessage(orderParamsMessage: SwiftOrderParamsMessage): Buffer;
|
|
513
|
+
decodeSwiftOrderParamsMessage(encodedMessage: Buffer): SwiftOrderParamsMessage;
|
|
514
|
+
signMessage(message: Uint8Array, keypair?: Keypair): Promise<Buffer>;
|
|
515
|
+
placeSwiftTakerOrder(swiftServerMessage: Buffer, swiftSignature: Buffer, swiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, marketIndex: number, takerInfo: {
|
|
516
|
+
taker: PublicKey;
|
|
517
|
+
takerStats: PublicKey;
|
|
518
|
+
takerUserAccount: UserAccount;
|
|
519
|
+
}, txParams?: TxParams): Promise<TransactionSignature>;
|
|
520
|
+
getPlaceSwiftTakerPerpOrderIxs(encodedSwiftServerMessage: Buffer, swiftSignature: Buffer, encodedSwiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, marketIndex: number, takerInfo: {
|
|
521
|
+
taker: PublicKey;
|
|
522
|
+
takerStats: PublicKey;
|
|
523
|
+
takerUserAccount: UserAccount;
|
|
524
|
+
}): Promise<TransactionInstruction[]>;
|
|
525
|
+
placeAndMakeSwiftPerpOrder(encodedSwiftMessage: Buffer, swiftSignature: Buffer, encodedSwiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, takerExpectedOrderId: number, takerInfo: {
|
|
526
|
+
taker: PublicKey;
|
|
527
|
+
takerStats: PublicKey;
|
|
528
|
+
takerUserAccount: UserAccount;
|
|
529
|
+
}, orderParams: OptionalOrderParams, referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<TransactionSignature>;
|
|
530
|
+
getPlaceAndMakeSwiftPerpOrderIxs(encodedSwiftMessage: Buffer, swiftSignature: Buffer, encodedSwiftOrderParamsMessage: Buffer, swiftOrderParamsSignature: Buffer, takerExpectedOrderId: number, takerInfo: {
|
|
531
|
+
taker: PublicKey;
|
|
532
|
+
takerStats: PublicKey;
|
|
533
|
+
takerUserAccount: UserAccount;
|
|
534
|
+
}, orderParams: OptionalOrderParams, referrerInfo?: ReferrerInfo, subAccountId?: number): Promise<TransactionInstruction[]>;
|
|
500
535
|
preparePlaceAndTakeSpotOrder(orderParams: OptionalOrderParams, fulfillmentConfig?: SerumV3FulfillmentConfigAccount, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo, txParams?: TxParams, subAccountId?: number): Promise<{
|
|
501
536
|
placeAndTakeSpotOrderTx: anchor.web3.Transaction | anchor.web3.VersionedTransaction;
|
|
502
537
|
}>;
|
|
@@ -735,7 +770,7 @@ export declare class DriftClient {
|
|
|
735
770
|
marketType: MarketType;
|
|
736
771
|
} | undefined;
|
|
737
772
|
getReceiverProgram(): Program<PythSolanaReceiver>;
|
|
738
|
-
getSwitchboardOnDemandProgram(): Program30<Idl30
|
|
773
|
+
getSwitchboardOnDemandProgram(): Promise<Program30<Idl30>>;
|
|
739
774
|
postPythPullOracleUpdateAtomic(vaaString: string, feedId: string): Promise<TransactionSignature>;
|
|
740
775
|
postMultiPythPullOracleUpdatesAtomic(vaaString: string, feedIds: string[]): Promise<TransactionSignature>;
|
|
741
776
|
getPostPythPullOracleUpdateAtomicIxs(vaaString: string, feedIds: string | string[], numSignatures?: number): Promise<TransactionInstruction[]>;
|