@drift-labs/sdk 0.1.36-master.7 → 0.2.0-master.2
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/lib/accounts/bulkAccountLoader.d.ts +6 -6
- package/lib/accounts/bulkAccountLoader.js +81 -95
- package/lib/accounts/bulkUserSubscription.js +13 -57
- package/lib/accounts/fetch.d.ts +4 -0
- package/lib/accounts/fetch.js +18 -0
- package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +34 -38
- package/lib/accounts/pollingClearingHouseAccountSubscriber.js +224 -224
- package/lib/accounts/pollingOracleSubscriber.d.ts +3 -3
- package/lib/accounts/pollingOracleSubscriber.js +37 -49
- package/lib/accounts/pollingTokenAccountSubscriber.d.ts +3 -3
- package/lib/accounts/pollingTokenAccountSubscriber.js +35 -50
- package/lib/accounts/pollingUserAccountSubscriber.d.ts +7 -13
- package/lib/accounts/pollingUserAccountSubscriber.js +71 -134
- package/lib/accounts/types.d.ts +34 -41
- package/lib/accounts/webSocketAccountSubscriber.d.ts +6 -4
- package/lib/accounts/webSocketAccountSubscriber.js +39 -35
- package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +33 -28
- package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +153 -185
- package/lib/accounts/webSocketUserAccountSubscriber.d.ts +5 -11
- package/lib/accounts/webSocketUserAccountSubscriber.js +22 -67
- package/lib/addresses/marketAddresses.d.ts +4 -0
- package/lib/addresses/marketAddresses.js +15 -0
- package/lib/addresses/pda.d.ts +12 -0
- package/lib/addresses/pda.js +83 -0
- package/lib/admin.d.ts +9 -17
- package/lib/admin.js +375 -558
- package/lib/clearingHouse.d.ts +86 -109
- package/lib/clearingHouse.js +828 -895
- package/lib/clearingHouseConfig.d.ts +34 -0
- package/lib/clearingHouseConfig.js +2 -0
- package/lib/clearingHouseUser.d.ts +19 -22
- package/lib/clearingHouseUser.js +155 -141
- package/lib/clearingHouseUserConfig.d.ts +14 -0
- package/lib/clearingHouseUserConfig.js +2 -0
- package/lib/config.d.ts +12 -0
- package/lib/config.js +35 -4
- package/lib/constants/banks.d.ts +16 -0
- package/lib/constants/banks.js +34 -0
- package/lib/constants/markets.d.ts +8 -3
- package/lib/constants/markets.js +13 -206
- package/lib/constants/numericConstants.d.ts +17 -0
- package/lib/constants/numericConstants.js +23 -6
- package/lib/events/eventList.d.ts +22 -0
- package/lib/events/eventList.js +77 -0
- package/lib/events/eventSubscriber.d.ts +34 -0
- package/lib/events/eventSubscriber.js +126 -0
- package/lib/events/fetchLogs.d.ts +13 -0
- package/lib/events/fetchLogs.js +39 -0
- package/lib/events/pollingLogProvider.d.ts +15 -0
- package/lib/events/pollingLogProvider.js +53 -0
- package/lib/events/sort.d.ts +2 -0
- package/lib/events/sort.js +44 -0
- package/lib/events/txEventCache.d.ts +24 -0
- package/lib/events/txEventCache.js +71 -0
- package/lib/events/types.d.ts +49 -0
- package/lib/events/types.js +20 -0
- package/lib/events/webSocketLogProvider.d.ts +12 -0
- package/lib/events/webSocketLogProvider.js +30 -0
- package/lib/examples/makeTradeExample.js +26 -27
- package/lib/factory/bigNum.d.ts +118 -0
- package/lib/factory/bigNum.js +364 -0
- package/lib/factory/oracleClient.d.ts +1 -2
- package/lib/factory/oracleClient.js +6 -2
- package/lib/idl/clearing_house.json +2287 -2938
- package/lib/index.d.ts +12 -4
- package/lib/index.js +12 -4
- package/lib/math/amm.d.ts +24 -29
- package/lib/math/amm.js +239 -178
- package/lib/math/auction.d.ts +5 -0
- package/lib/math/auction.js +39 -0
- package/lib/math/bankBalance.d.ts +9 -0
- package/lib/math/bankBalance.js +75 -0
- package/lib/math/conversion.d.ts +0 -1
- package/lib/math/conversion.js +1 -5
- package/lib/math/funding.d.ts +6 -6
- package/lib/math/funding.js +158 -175
- package/lib/math/market.d.ts +6 -6
- package/lib/math/market.js +10 -9
- package/lib/math/orders.d.ts +5 -0
- package/lib/math/orders.js +31 -1
- package/lib/math/position.d.ts +7 -5
- package/lib/math/position.js +27 -27
- package/lib/math/repeg.d.ts +22 -0
- package/lib/math/repeg.js +128 -0
- package/lib/math/trade.d.ts +5 -4
- package/lib/math/trade.js +29 -21
- package/lib/mockUSDCFaucet.js +87 -116
- package/lib/oracles/oracleClientCache.d.ts +8 -0
- package/lib/oracles/oracleClientCache.js +19 -0
- package/lib/oracles/pythClient.d.ts +3 -5
- package/lib/oracles/pythClient.js +12 -31
- package/lib/oracles/quoteAssetOracleClient.d.ts +9 -0
- package/lib/oracles/quoteAssetOracleClient.js +21 -0
- package/lib/oracles/switchboardClient.d.ts +3 -5
- package/lib/oracles/switchboardClient.js +29 -50
- package/lib/oracles/types.d.ts +6 -1
- package/lib/orders.d.ts +6 -7
- package/lib/orders.js +10 -80
- package/lib/slot/SlotSubscriber.d.ts +12 -0
- package/lib/slot/SlotSubscriber.js +23 -0
- package/lib/tx/retryTxSender.d.ts +2 -2
- package/lib/tx/retryTxSender.js +108 -123
- package/lib/tx/types.d.ts +5 -1
- package/lib/tx/utils.d.ts +1 -1
- package/lib/tx/utils.js +11 -2
- package/lib/types.d.ts +110 -109
- package/lib/types.js +14 -1
- package/lib/userName.d.ts +4 -0
- package/lib/userName.js +20 -0
- package/lib/util/computeUnits.js +10 -21
- package/lib/util/tps.js +11 -22
- package/lib/wallet.js +7 -20
- package/package.json +11 -4
- package/src/accounts/bulkAccountLoader.ts +21 -15
- package/src/accounts/bulkUserSubscription.ts +1 -45
- package/src/accounts/fetch.ts +33 -0
- package/src/accounts/pollingClearingHouseAccountSubscriber.ts +249 -214
- package/src/accounts/pollingOracleSubscriber.ts +16 -8
- package/src/accounts/pollingTokenAccountSubscriber.ts +11 -8
- package/src/accounts/pollingUserAccountSubscriber.ts +21 -86
- package/src/accounts/types.ts +41 -70
- package/src/accounts/webSocketAccountSubscriber.ts +33 -16
- package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +190 -240
- package/src/accounts/webSocketUserAccountSubscriber.ts +11 -71
- package/src/addresses/marketAddresses.ts +18 -0
- package/src/addresses/pda.ts +118 -0
- package/src/admin.ts +218 -346
- package/src/clearingHouse.ts +983 -952
- package/src/clearingHouseConfig.ts +37 -0
- package/src/clearingHouseUser.ts +275 -185
- package/src/clearingHouseUserConfig.ts +18 -0
- package/src/config.ts +54 -1
- package/src/constants/banks.ts +43 -0
- package/src/constants/markets.ts +16 -207
- package/src/constants/numericConstants.ts +34 -5
- package/src/events/eventList.ts +94 -0
- package/src/events/eventSubscriber.ts +194 -0
- package/src/events/fetchLogs.ts +80 -0
- package/src/events/pollingLogProvider.ts +79 -0
- package/src/events/sort.ts +65 -0
- package/src/events/txEventCache.ts +74 -0
- package/src/events/types.ts +98 -0
- package/src/events/webSocketLogProvider.ts +38 -0
- package/src/examples/makeTradeExample.ts +20 -11
- package/src/factory/bigNum.ts +524 -0
- package/src/factory/oracleClient.ts +7 -4
- package/src/idl/clearing_house.json +2287 -2938
- package/src/index.ts +12 -4
- package/src/math/amm.ts +414 -245
- package/src/math/auction.ts +39 -0
- package/src/math/bankBalance.ts +112 -0
- package/src/math/conversion.ts +1 -11
- package/src/math/funding.ts +12 -9
- package/src/math/market.ts +37 -30
- package/src/math/orders.ts +38 -0
- package/src/math/position.ts +48 -35
- package/src/math/repeg.ts +176 -0
- package/src/math/trade.ts +45 -35
- package/src/math/utils.js +27 -0
- package/src/math/utils.js.map +1 -0
- package/src/oracles/oracleClientCache.ts +20 -0
- package/src/oracles/pythClient.ts +4 -11
- package/src/oracles/quoteAssetOracleClient.ts +25 -0
- package/src/oracles/switchboardClient.ts +11 -24
- package/src/oracles/types.ts +7 -1
- package/src/orders.ts +24 -126
- package/src/slot/SlotSubscriber.ts +32 -0
- package/src/tx/retryTxSender.ts +6 -4
- package/src/tx/types.ts +6 -1
- package/src/tx/utils.ts +22 -3
- package/src/types.ts +111 -122
- package/src/userName.ts +20 -0
- package/src/util/computeUnits.js +17 -0
- package/src/util/computeUnits.js.map +1 -0
- package/tests/bn/test.ts +255 -0
- package/tsconfig.json +12 -12
- package/lib/addresses.d.ts +0 -10
- package/lib/addresses.js +0 -93
- package/lib/constants/accounts.d.ts +0 -15
- package/lib/constants/accounts.js +0 -18
- package/lib/factory/clearingHouse.d.ts +0 -35
- package/lib/factory/clearingHouse.js +0 -81
- package/lib/factory/clearingHouseUser.d.ts +0 -19
- package/lib/factory/clearingHouseUser.js +0 -34
- package/lib/math/insuranceFund.d.ts +0 -15
- package/lib/math/insuranceFund.js +0 -33
- package/lib/settlement.d.ts +0 -4
- package/lib/settlement.js +0 -10
- package/lib/tx/defaultTxSender.d.ts +0 -8
- package/lib/tx/defaultTxSender.js +0 -12
- package/src/addresses.ts +0 -82
- package/src/constants/accounts.ts +0 -26
- package/src/factory/clearingHouse.ts +0 -173
- package/src/factory/clearingHouseUser.ts +0 -73
- package/src/math/insuranceFund.ts +0 -29
- package/src/settlement.ts +0 -9
- package/src/tx/defaultTxSender.ts +0 -24
package/lib/tx/retryTxSender.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -24,133 +15,127 @@ class RetryTxSender {
|
|
|
24
15
|
this.retrySleep = retrySleep !== null && retrySleep !== void 0 ? retrySleep : DEFAULT_RETRY;
|
|
25
16
|
this.additionalConnections = additionalConnections;
|
|
26
17
|
}
|
|
27
|
-
send(tx, additionalSigners, opts) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
18
|
+
async send(tx, additionalSigners, opts) {
|
|
19
|
+
if (additionalSigners === undefined) {
|
|
20
|
+
additionalSigners = [];
|
|
21
|
+
}
|
|
22
|
+
if (opts === undefined) {
|
|
23
|
+
opts = this.provider.opts;
|
|
24
|
+
}
|
|
25
|
+
await this.prepareTx(tx, additionalSigners, opts);
|
|
26
|
+
const rawTransaction = tx.serialize();
|
|
27
|
+
const startTime = this.getTimestamp();
|
|
28
|
+
const txid = await this.provider.connection.sendRawTransaction(rawTransaction, opts);
|
|
29
|
+
this.sendToAdditionalConnections(rawTransaction, opts);
|
|
30
|
+
let done = false;
|
|
31
|
+
const resolveReference = {
|
|
32
|
+
resolve: undefined,
|
|
33
|
+
};
|
|
34
|
+
const stopWaiting = () => {
|
|
35
|
+
done = true;
|
|
36
|
+
if (resolveReference.resolve) {
|
|
37
|
+
resolveReference.resolve();
|
|
34
38
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
resolveReference.resolve();
|
|
39
|
+
};
|
|
40
|
+
(async () => {
|
|
41
|
+
while (!done && this.getTimestamp() - startTime < this.timeout) {
|
|
42
|
+
await this.sleep(resolveReference);
|
|
43
|
+
if (!done) {
|
|
44
|
+
this.provider.connection
|
|
45
|
+
.sendRawTransaction(rawTransaction, opts)
|
|
46
|
+
.catch((e) => {
|
|
47
|
+
console.error(e);
|
|
48
|
+
stopWaiting();
|
|
49
|
+
});
|
|
50
|
+
this.sendToAdditionalConnections(rawTransaction, opts);
|
|
48
51
|
}
|
|
49
|
-
};
|
|
50
|
-
(() => __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
while (!done && this.getTimestamp() - startTime < this.timeout) {
|
|
52
|
-
yield this.sleep(resolveReference);
|
|
53
|
-
if (!done) {
|
|
54
|
-
this.provider.connection
|
|
55
|
-
.sendRawTransaction(rawTransaction, opts)
|
|
56
|
-
.catch((e) => {
|
|
57
|
-
console.error(e);
|
|
58
|
-
stopWaiting();
|
|
59
|
-
});
|
|
60
|
-
this.sendToAdditionalConnections(rawTransaction, opts);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}))();
|
|
64
|
-
try {
|
|
65
|
-
yield this.confirmTransaction(txid, opts.commitment);
|
|
66
|
-
}
|
|
67
|
-
catch (e) {
|
|
68
|
-
console.error(e);
|
|
69
|
-
throw e;
|
|
70
52
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
53
|
+
})();
|
|
54
|
+
let slot;
|
|
55
|
+
try {
|
|
56
|
+
const result = await this.confirmTransaction(txid, opts.commitment);
|
|
57
|
+
slot = result.context.slot;
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
console.error(e);
|
|
61
|
+
throw e;
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
stopWaiting();
|
|
65
|
+
}
|
|
66
|
+
return { txSig: txid, slot };
|
|
76
67
|
}
|
|
77
|
-
prepareTx(tx, additionalSigners, opts) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
tx.partialSign(kp);
|
|
86
|
-
});
|
|
87
|
-
return tx;
|
|
68
|
+
async prepareTx(tx, additionalSigners, opts) {
|
|
69
|
+
tx.feePayer = this.provider.wallet.publicKey;
|
|
70
|
+
tx.recentBlockhash = (await this.provider.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;
|
|
71
|
+
await this.provider.wallet.signTransaction(tx);
|
|
72
|
+
additionalSigners
|
|
73
|
+
.filter((s) => s !== undefined)
|
|
74
|
+
.forEach((kp) => {
|
|
75
|
+
tx.partialSign(kp);
|
|
88
76
|
});
|
|
77
|
+
return tx;
|
|
89
78
|
}
|
|
90
|
-
confirmTransaction(signature, commitment) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
subscriptionIds.push(subscriptionId);
|
|
126
|
-
return confirmPromise;
|
|
79
|
+
async confirmTransaction(signature, commitment) {
|
|
80
|
+
let decodedSignature;
|
|
81
|
+
try {
|
|
82
|
+
decodedSignature = bs58_1.default.decode(signature);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
throw new Error('signature must be base58 encoded: ' + signature);
|
|
86
|
+
}
|
|
87
|
+
(0, assert_1.default)(decodedSignature.length === 64, 'signature has invalid length');
|
|
88
|
+
const start = Date.now();
|
|
89
|
+
const subscriptionCommitment = commitment || this.provider.opts.commitment;
|
|
90
|
+
const subscriptionIds = new Array();
|
|
91
|
+
const connections = [
|
|
92
|
+
this.provider.connection,
|
|
93
|
+
...this.additionalConnections,
|
|
94
|
+
];
|
|
95
|
+
let response = null;
|
|
96
|
+
const promises = connections.map((connection, i) => {
|
|
97
|
+
let subscriptionId;
|
|
98
|
+
const confirmPromise = new Promise((resolve, reject) => {
|
|
99
|
+
try {
|
|
100
|
+
subscriptionId = connection.onSignature(signature, (result, context) => {
|
|
101
|
+
subscriptionIds[i] = undefined;
|
|
102
|
+
response = {
|
|
103
|
+
context,
|
|
104
|
+
value: result,
|
|
105
|
+
};
|
|
106
|
+
resolve(null);
|
|
107
|
+
}, subscriptionCommitment);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
reject(err);
|
|
111
|
+
}
|
|
127
112
|
});
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
113
|
+
subscriptionIds.push(subscriptionId);
|
|
114
|
+
return confirmPromise;
|
|
115
|
+
});
|
|
116
|
+
try {
|
|
117
|
+
await this.promiseTimeout(promises, this.timeout);
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
for (const [i, subscriptionId] of subscriptionIds.entries()) {
|
|
121
|
+
if (subscriptionId) {
|
|
122
|
+
connections[i].removeSignatureListener(subscriptionId);
|
|
136
123
|
}
|
|
137
124
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
125
|
+
}
|
|
126
|
+
if (response === null) {
|
|
127
|
+
const duration = (Date.now() - start) / 1000;
|
|
128
|
+
throw new Error(`Transaction was not confirmed in ${duration.toFixed(2)} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`);
|
|
129
|
+
}
|
|
130
|
+
return response;
|
|
144
131
|
}
|
|
145
132
|
getTimestamp() {
|
|
146
133
|
return new Date().getTime();
|
|
147
134
|
}
|
|
148
|
-
sleep(reference) {
|
|
149
|
-
return
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
setTimeout(resolve, this.retrySleep);
|
|
153
|
-
});
|
|
135
|
+
async sleep(reference) {
|
|
136
|
+
return new Promise((resolve) => {
|
|
137
|
+
reference.resolve = resolve;
|
|
138
|
+
setTimeout(resolve, this.retrySleep);
|
|
154
139
|
});
|
|
155
140
|
}
|
|
156
141
|
promiseTimeout(promises, timeoutMs) {
|
package/lib/tx/types.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Provider } from '@project-serum/anchor';
|
|
2
2
|
import { ConfirmOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';
|
|
3
|
+
export declare type TxSigAndSlot = {
|
|
4
|
+
txSig: TransactionSignature;
|
|
5
|
+
slot: number;
|
|
6
|
+
};
|
|
3
7
|
export interface TxSender {
|
|
4
8
|
provider: Provider;
|
|
5
|
-
send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions): Promise<
|
|
9
|
+
send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions): Promise<TxSigAndSlot>;
|
|
6
10
|
}
|
package/lib/tx/utils.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Transaction, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
-
export declare function wrapInTx(instruction: TransactionInstruction): Transaction;
|
|
2
|
+
export declare function wrapInTx(instruction: TransactionInstruction, computeUnits?: number): Transaction;
|
package/lib/tx/utils.js
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.wrapInTx = void 0;
|
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const COMPUTE_UNITS_DEFAULT = 200000;
|
|
6
|
+
function wrapInTx(instruction, computeUnits = 500000 // TODO, requires less code change
|
|
7
|
+
) {
|
|
8
|
+
const tx = new web3_js_1.Transaction();
|
|
9
|
+
if (computeUnits != COMPUTE_UNITS_DEFAULT) {
|
|
10
|
+
tx.add(web3_js_1.ComputeBudgetProgram.requestUnits({
|
|
11
|
+
units: computeUnits,
|
|
12
|
+
additionalFee: 0,
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
return tx.add(instruction);
|
|
7
16
|
}
|
|
8
17
|
exports.wrapInTx = wrapInTx;
|
package/lib/types.d.ts
CHANGED
|
@@ -9,6 +9,14 @@ export declare class SwapDirection {
|
|
|
9
9
|
remove: {};
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
+
export declare class BankBalanceType {
|
|
13
|
+
static readonly DEPOSIT: {
|
|
14
|
+
deposit: {};
|
|
15
|
+
};
|
|
16
|
+
static readonly BORROW: {
|
|
17
|
+
borrow: {};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
12
20
|
export declare class PositionDirection {
|
|
13
21
|
static readonly LONG: {
|
|
14
22
|
long: {};
|
|
@@ -24,6 +32,9 @@ export declare class OracleSource {
|
|
|
24
32
|
static readonly SWITCHBOARD: {
|
|
25
33
|
switchboard: {};
|
|
26
34
|
};
|
|
35
|
+
static readonly QUOTE_ASSET: {
|
|
36
|
+
quoteAsset: {};
|
|
37
|
+
};
|
|
27
38
|
}
|
|
28
39
|
export declare class OrderType {
|
|
29
40
|
static readonly LIMIT: {
|
|
@@ -77,6 +88,9 @@ export declare class OrderAction {
|
|
|
77
88
|
static readonly FILL: {
|
|
78
89
|
fill: {};
|
|
79
90
|
};
|
|
91
|
+
static readonly TRIGGER: {
|
|
92
|
+
trigger: {};
|
|
93
|
+
};
|
|
80
94
|
}
|
|
81
95
|
export declare class OrderTriggerCondition {
|
|
82
96
|
static readonly ABOVE: {
|
|
@@ -87,55 +101,27 @@ export declare class OrderTriggerCondition {
|
|
|
87
101
|
};
|
|
88
102
|
}
|
|
89
103
|
export declare function isVariant(object: unknown, type: string): boolean;
|
|
104
|
+
export declare function isOneOfVariant(object: unknown, types: string[]): boolean;
|
|
90
105
|
export declare enum TradeSide {
|
|
91
106
|
None = 0,
|
|
92
107
|
Buy = 1,
|
|
93
108
|
Sell = 2
|
|
94
109
|
}
|
|
95
110
|
export declare type CandleResolution = '1' | '5' | '15' | '60' | '240' | 'D' | 'W' | 'M';
|
|
96
|
-
export declare type TradeHistoryAccount = {
|
|
97
|
-
head: BN;
|
|
98
|
-
tradeRecords: TradeRecord[];
|
|
99
|
-
};
|
|
100
|
-
export declare type DepositHistoryAccount = {
|
|
101
|
-
head: BN;
|
|
102
|
-
depositRecords: DepositRecord[];
|
|
103
|
-
};
|
|
104
|
-
export declare type ExtendedCurveHistoryAccount = {
|
|
105
|
-
head: BN;
|
|
106
|
-
curveRecords: ExtendedCurveRecord[];
|
|
107
|
-
};
|
|
108
|
-
export declare type FundingRateHistoryAccount = {
|
|
109
|
-
head: BN;
|
|
110
|
-
fundingRateRecords: FundingRateRecord[];
|
|
111
|
-
};
|
|
112
|
-
export declare type FundingPaymentHistoryAccount = {
|
|
113
|
-
head: BN;
|
|
114
|
-
fundingPaymentRecords: FundingPaymentRecord[];
|
|
115
|
-
};
|
|
116
|
-
export declare type LiquidationHistoryAccount = {
|
|
117
|
-
head: BN;
|
|
118
|
-
liquidationRecords: LiquidationRecord[];
|
|
119
|
-
};
|
|
120
|
-
export declare type OrderHistoryAccount = {
|
|
121
|
-
head: BN;
|
|
122
|
-
lastOrderId: BN;
|
|
123
|
-
orderRecords: OrderRecord[];
|
|
124
|
-
};
|
|
125
111
|
export declare type DepositRecord = {
|
|
126
112
|
ts: BN;
|
|
127
|
-
recordId: BN;
|
|
128
113
|
userAuthority: PublicKey;
|
|
129
114
|
user: PublicKey;
|
|
130
115
|
direction: {
|
|
131
116
|
deposit?: any;
|
|
132
117
|
withdraw?: any;
|
|
133
118
|
};
|
|
134
|
-
|
|
135
|
-
cumulativeDepositsBefore: BN;
|
|
119
|
+
bankIndex: BN;
|
|
136
120
|
amount: BN;
|
|
121
|
+
from?: PublicKey;
|
|
122
|
+
to?: PublicKey;
|
|
137
123
|
};
|
|
138
|
-
export declare type
|
|
124
|
+
export declare type CurveRecord = {
|
|
139
125
|
ts: BN;
|
|
140
126
|
recordId: BN;
|
|
141
127
|
marketIndex: BN;
|
|
@@ -154,27 +140,6 @@ export declare type ExtendedCurveRecord = {
|
|
|
154
140
|
oraclePrice: BN;
|
|
155
141
|
tradeId: BN;
|
|
156
142
|
};
|
|
157
|
-
export declare type TradeRecord = {
|
|
158
|
-
ts: BN;
|
|
159
|
-
recordId: BN;
|
|
160
|
-
userAuthority: PublicKey;
|
|
161
|
-
user: PublicKey;
|
|
162
|
-
direction: {
|
|
163
|
-
long?: any;
|
|
164
|
-
short?: any;
|
|
165
|
-
};
|
|
166
|
-
baseAssetAmount: BN;
|
|
167
|
-
quoteAssetAmount: BN;
|
|
168
|
-
markPriceBefore: BN;
|
|
169
|
-
markPriceAfter: BN;
|
|
170
|
-
fee: BN;
|
|
171
|
-
quoteAssetAmountSurplus: BN;
|
|
172
|
-
refereeDiscount: BN;
|
|
173
|
-
tokenDiscount: BN;
|
|
174
|
-
marketIndex: BN;
|
|
175
|
-
liquidation: boolean;
|
|
176
|
-
oraclePrice: BN;
|
|
177
|
-
};
|
|
178
143
|
export declare type FundingRateRecord = {
|
|
179
144
|
ts: BN;
|
|
180
145
|
recordId: BN;
|
|
@@ -187,7 +152,6 @@ export declare type FundingRateRecord = {
|
|
|
187
152
|
};
|
|
188
153
|
export declare type FundingPaymentRecord = {
|
|
189
154
|
ts: BN;
|
|
190
|
-
recordId: BN;
|
|
191
155
|
userAuthority: PublicKey;
|
|
192
156
|
user: PublicKey;
|
|
193
157
|
marketIndex: BN;
|
|
@@ -217,41 +181,33 @@ export declare type LiquidationRecord = {
|
|
|
217
181
|
};
|
|
218
182
|
export declare type OrderRecord = {
|
|
219
183
|
ts: BN;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
184
|
+
taker: PublicKey;
|
|
185
|
+
maker: PublicKey;
|
|
186
|
+
takerOrder: Order;
|
|
187
|
+
makerOrder: Order;
|
|
224
188
|
action: OrderAction;
|
|
225
189
|
filler: PublicKey;
|
|
190
|
+
fillRecordId: BN;
|
|
191
|
+
marketIndex: BN;
|
|
226
192
|
baseAssetAmountFilled: BN;
|
|
227
193
|
quoteAssetAmountFilled: BN;
|
|
228
|
-
|
|
194
|
+
makerRebate: BN;
|
|
195
|
+
takerFee: BN;
|
|
229
196
|
fillerReward: BN;
|
|
230
|
-
tradeRecordId: BN;
|
|
231
197
|
quoteAssetAmountSurplus: BN;
|
|
198
|
+
oraclePrice: BN;
|
|
232
199
|
};
|
|
233
200
|
export declare type StateAccount = {
|
|
234
201
|
admin: PublicKey;
|
|
235
202
|
fundingPaused: boolean;
|
|
236
203
|
exchangePaused: boolean;
|
|
237
204
|
adminControlsPrices: boolean;
|
|
238
|
-
collateralMint: PublicKey;
|
|
239
|
-
collateralVault: PublicKey;
|
|
240
|
-
collateralVaultAuthority: PublicKey;
|
|
241
|
-
collateralVaultNonce: number;
|
|
242
205
|
insuranceVault: PublicKey;
|
|
243
206
|
insuranceVaultAuthority: PublicKey;
|
|
244
207
|
insuranceVaultNonce: number;
|
|
245
208
|
marginRatioInitial: BN;
|
|
246
209
|
marginRatioMaintenance: BN;
|
|
247
210
|
marginRatioPartial: BN;
|
|
248
|
-
markets: PublicKey;
|
|
249
|
-
curveHistory: PublicKey;
|
|
250
|
-
depositHistory: PublicKey;
|
|
251
|
-
fundingRateHistory: PublicKey;
|
|
252
|
-
fundingPaymentHistory: PublicKey;
|
|
253
|
-
tradeHistory: PublicKey;
|
|
254
|
-
liquidationHistory: PublicKey;
|
|
255
211
|
partialLiquidationClosePercentageNumerator: BN;
|
|
256
212
|
partialLiquidationClosePercentageDenominator: BN;
|
|
257
213
|
partialLiquidationPenaltyPercentageNumerator: BN;
|
|
@@ -267,33 +223,49 @@ export declare type StateAccount = {
|
|
|
267
223
|
discountMint: PublicKey;
|
|
268
224
|
oracleGuardRails: OracleGuardRails;
|
|
269
225
|
maxDeposit: BN;
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
};
|
|
273
|
-
export declare type OrderStateAccount = {
|
|
274
|
-
orderHistory: PublicKey;
|
|
275
|
-
orderFillerRewardStructure: OrderFillerRewardStructure;
|
|
226
|
+
numberOfMarkets: BN;
|
|
227
|
+
numberOfBanks: BN;
|
|
276
228
|
minOrderQuoteAssetAmount: BN;
|
|
277
229
|
};
|
|
278
|
-
export declare type
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
enabled: boolean;
|
|
283
|
-
};
|
|
284
|
-
export declare type MarketsAccount = {
|
|
285
|
-
markets: Market[];
|
|
286
|
-
};
|
|
287
|
-
export declare type Market = {
|
|
230
|
+
export declare type MarketAccount = {
|
|
231
|
+
initialized: boolean;
|
|
232
|
+
marketIndex: BN;
|
|
233
|
+
pubkey: PublicKey;
|
|
288
234
|
amm: AMM;
|
|
289
235
|
baseAssetAmount: BN;
|
|
290
236
|
baseAssetAmountLong: BN;
|
|
291
237
|
baseAssetAmountShort: BN;
|
|
292
|
-
initialized: boolean;
|
|
293
238
|
openInterest: BN;
|
|
294
239
|
marginRatioInitial: number;
|
|
295
240
|
marginRatioMaintenance: number;
|
|
296
241
|
marginRatioPartial: number;
|
|
242
|
+
nextFillRecordId: BN;
|
|
243
|
+
pnlPool: PoolBalance;
|
|
244
|
+
};
|
|
245
|
+
export declare type BankAccount = {
|
|
246
|
+
bankIndex: BN;
|
|
247
|
+
pubkey: PublicKey;
|
|
248
|
+
mint: PublicKey;
|
|
249
|
+
vault: PublicKey;
|
|
250
|
+
vaultAuthority: PublicKey;
|
|
251
|
+
vaultAuthorityNonce: number;
|
|
252
|
+
decimals: number;
|
|
253
|
+
optimalUtilization: BN;
|
|
254
|
+
optimalBorrowRate: BN;
|
|
255
|
+
maxBorrowRate: BN;
|
|
256
|
+
cumulativeDepositInterest: BN;
|
|
257
|
+
cumulativeBorrowInterest: BN;
|
|
258
|
+
depositBalance: BN;
|
|
259
|
+
borrowBalance: BN;
|
|
260
|
+
lastUpdated: BN;
|
|
261
|
+
oracle: PublicKey;
|
|
262
|
+
initialAssetWeight: BN;
|
|
263
|
+
maintenanceAssetWeight: BN;
|
|
264
|
+
initialLiabilityWeight: BN;
|
|
265
|
+
maintenanceLiabilityWeight: BN;
|
|
266
|
+
};
|
|
267
|
+
export declare type PoolBalance = {
|
|
268
|
+
balance: BN;
|
|
297
269
|
};
|
|
298
270
|
export declare type AMM = {
|
|
299
271
|
baseAssetReserve: BN;
|
|
@@ -318,50 +290,67 @@ export declare type AMM = {
|
|
|
318
290
|
totalFeeWithdrawn: BN;
|
|
319
291
|
totalFee: BN;
|
|
320
292
|
minimumQuoteAssetTradeSize: BN;
|
|
321
|
-
|
|
293
|
+
baseAssetAmountStepSize: BN;
|
|
322
294
|
lastOraclePrice: BN;
|
|
323
295
|
baseSpread: number;
|
|
296
|
+
curveUpdateIntensity: number;
|
|
297
|
+
netBaseAssetAmount: BN;
|
|
298
|
+
quoteAssetAmountLong: BN;
|
|
299
|
+
quoteAssetAmountShort: BN;
|
|
300
|
+
terminalQuoteAssetReserve: BN;
|
|
301
|
+
feePool: PoolBalance;
|
|
302
|
+
totalExchangeFee: BN;
|
|
303
|
+
totalMmFee: BN;
|
|
304
|
+
netRevenueSinceLastFunding: BN;
|
|
305
|
+
lastUpdateSlot: BN;
|
|
306
|
+
lastBidPriceTwap: BN;
|
|
307
|
+
lastAskPriceTwap: BN;
|
|
308
|
+
longSpread: BN;
|
|
309
|
+
shortSpread: BN;
|
|
310
|
+
maxSpread: number;
|
|
324
311
|
};
|
|
325
312
|
export declare type UserPosition = {
|
|
326
313
|
baseAssetAmount: BN;
|
|
327
314
|
lastCumulativeFundingRate: BN;
|
|
328
315
|
marketIndex: BN;
|
|
329
316
|
quoteAssetAmount: BN;
|
|
317
|
+
quoteEntryAmount: BN;
|
|
330
318
|
openOrders: BN;
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
user: PublicKey;
|
|
319
|
+
unsettledPnl: BN;
|
|
320
|
+
openBids: BN;
|
|
321
|
+
openAsks: BN;
|
|
335
322
|
};
|
|
336
323
|
export declare type UserAccount = {
|
|
337
324
|
authority: PublicKey;
|
|
325
|
+
name: number[];
|
|
326
|
+
userId: number;
|
|
327
|
+
bankBalances: UserBankBalance[];
|
|
338
328
|
collateral: BN;
|
|
339
329
|
cumulativeDeposits: BN;
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
lastCollateralAvailableToClaim: BN;
|
|
349
|
-
forgoPositionSettlement: number;
|
|
350
|
-
hasSettledPosition: number;
|
|
351
|
-
};
|
|
352
|
-
export declare type UserOrdersAccount = {
|
|
330
|
+
fees: {
|
|
331
|
+
totalFeePaid: BN;
|
|
332
|
+
totalFeeRebate: BN;
|
|
333
|
+
totalTokenDiscount: BN;
|
|
334
|
+
totalReferralReward: BN;
|
|
335
|
+
totalRefereeDiscount: BN;
|
|
336
|
+
};
|
|
337
|
+
positions: UserPosition[];
|
|
353
338
|
orders: Order[];
|
|
354
|
-
|
|
339
|
+
};
|
|
340
|
+
export declare type UserBankBalance = {
|
|
341
|
+
bankIndex: BN;
|
|
342
|
+
balanceType: BankBalanceType;
|
|
343
|
+
balance: BN;
|
|
355
344
|
};
|
|
356
345
|
export declare type Order = {
|
|
357
346
|
status: OrderStatus;
|
|
358
347
|
orderType: OrderType;
|
|
359
348
|
ts: BN;
|
|
349
|
+
slot: BN;
|
|
360
350
|
orderId: BN;
|
|
361
351
|
userOrderId: number;
|
|
362
352
|
marketIndex: BN;
|
|
363
353
|
price: BN;
|
|
364
|
-
userBaseAssetAmount: BN;
|
|
365
354
|
baseAssetAmount: BN;
|
|
366
355
|
baseAssetAmountFilled: BN;
|
|
367
356
|
quoteAssetAmount: BN;
|
|
@@ -371,11 +360,16 @@ export declare type Order = {
|
|
|
371
360
|
reduceOnly: boolean;
|
|
372
361
|
triggerPrice: BN;
|
|
373
362
|
triggerCondition: OrderTriggerCondition;
|
|
363
|
+
triggered: boolean;
|
|
374
364
|
discountTier: OrderDiscountTier;
|
|
365
|
+
existingPositionDirection: PositionDirection;
|
|
375
366
|
referrer: PublicKey;
|
|
376
367
|
postOnly: boolean;
|
|
377
368
|
immediateOrCancel: boolean;
|
|
378
369
|
oraclePriceOffset: BN;
|
|
370
|
+
auctionDuration: number;
|
|
371
|
+
auctionStartPrice: BN;
|
|
372
|
+
auctionEndPrice: BN;
|
|
379
373
|
};
|
|
380
374
|
export declare type OrderParams = {
|
|
381
375
|
orderType: OrderType;
|
|
@@ -399,6 +393,10 @@ export declare type OrderParams = {
|
|
|
399
393
|
referrer: boolean;
|
|
400
394
|
};
|
|
401
395
|
};
|
|
396
|
+
export declare type MakerInfo = {
|
|
397
|
+
maker: PublicKey;
|
|
398
|
+
order: Order;
|
|
399
|
+
};
|
|
402
400
|
export interface IWallet {
|
|
403
401
|
signTransaction(tx: Transaction): Promise<Transaction>;
|
|
404
402
|
signAllTransactions(txs: Transaction[]): Promise<Transaction[]>;
|
|
@@ -435,6 +433,9 @@ export declare type FeeStructure = {
|
|
|
435
433
|
refereeDiscountNumerator: BN;
|
|
436
434
|
refereeDiscountDenominator: BN;
|
|
437
435
|
};
|
|
436
|
+
makerRebateNumerator: BN;
|
|
437
|
+
makerRebateDenominator: BN;
|
|
438
|
+
fillerRewardStructure: OrderFillerRewardStructure;
|
|
438
439
|
};
|
|
439
440
|
export declare type OracleGuardRails = {
|
|
440
441
|
priceDivergence: {
|