@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.
Files changed (197) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +6 -6
  2. package/lib/accounts/bulkAccountLoader.js +81 -95
  3. package/lib/accounts/bulkUserSubscription.js +13 -57
  4. package/lib/accounts/fetch.d.ts +4 -0
  5. package/lib/accounts/fetch.js +18 -0
  6. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +34 -38
  7. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +224 -224
  8. package/lib/accounts/pollingOracleSubscriber.d.ts +3 -3
  9. package/lib/accounts/pollingOracleSubscriber.js +37 -49
  10. package/lib/accounts/pollingTokenAccountSubscriber.d.ts +3 -3
  11. package/lib/accounts/pollingTokenAccountSubscriber.js +35 -50
  12. package/lib/accounts/pollingUserAccountSubscriber.d.ts +7 -13
  13. package/lib/accounts/pollingUserAccountSubscriber.js +71 -134
  14. package/lib/accounts/types.d.ts +34 -41
  15. package/lib/accounts/webSocketAccountSubscriber.d.ts +6 -4
  16. package/lib/accounts/webSocketAccountSubscriber.js +39 -35
  17. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +33 -28
  18. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +153 -185
  19. package/lib/accounts/webSocketUserAccountSubscriber.d.ts +5 -11
  20. package/lib/accounts/webSocketUserAccountSubscriber.js +22 -67
  21. package/lib/addresses/marketAddresses.d.ts +4 -0
  22. package/lib/addresses/marketAddresses.js +15 -0
  23. package/lib/addresses/pda.d.ts +12 -0
  24. package/lib/addresses/pda.js +83 -0
  25. package/lib/admin.d.ts +9 -17
  26. package/lib/admin.js +375 -558
  27. package/lib/clearingHouse.d.ts +86 -109
  28. package/lib/clearingHouse.js +828 -895
  29. package/lib/clearingHouseConfig.d.ts +34 -0
  30. package/lib/clearingHouseConfig.js +2 -0
  31. package/lib/clearingHouseUser.d.ts +19 -22
  32. package/lib/clearingHouseUser.js +155 -141
  33. package/lib/clearingHouseUserConfig.d.ts +14 -0
  34. package/lib/clearingHouseUserConfig.js +2 -0
  35. package/lib/config.d.ts +12 -0
  36. package/lib/config.js +35 -4
  37. package/lib/constants/banks.d.ts +16 -0
  38. package/lib/constants/banks.js +34 -0
  39. package/lib/constants/markets.d.ts +8 -3
  40. package/lib/constants/markets.js +13 -206
  41. package/lib/constants/numericConstants.d.ts +17 -0
  42. package/lib/constants/numericConstants.js +23 -6
  43. package/lib/events/eventList.d.ts +22 -0
  44. package/lib/events/eventList.js +77 -0
  45. package/lib/events/eventSubscriber.d.ts +34 -0
  46. package/lib/events/eventSubscriber.js +126 -0
  47. package/lib/events/fetchLogs.d.ts +13 -0
  48. package/lib/events/fetchLogs.js +39 -0
  49. package/lib/events/pollingLogProvider.d.ts +15 -0
  50. package/lib/events/pollingLogProvider.js +53 -0
  51. package/lib/events/sort.d.ts +2 -0
  52. package/lib/events/sort.js +44 -0
  53. package/lib/events/txEventCache.d.ts +24 -0
  54. package/lib/events/txEventCache.js +71 -0
  55. package/lib/events/types.d.ts +49 -0
  56. package/lib/events/types.js +20 -0
  57. package/lib/events/webSocketLogProvider.d.ts +12 -0
  58. package/lib/events/webSocketLogProvider.js +30 -0
  59. package/lib/examples/makeTradeExample.js +26 -27
  60. package/lib/factory/bigNum.d.ts +118 -0
  61. package/lib/factory/bigNum.js +364 -0
  62. package/lib/factory/oracleClient.d.ts +1 -2
  63. package/lib/factory/oracleClient.js +6 -2
  64. package/lib/idl/clearing_house.json +2287 -2938
  65. package/lib/index.d.ts +12 -4
  66. package/lib/index.js +12 -4
  67. package/lib/math/amm.d.ts +24 -29
  68. package/lib/math/amm.js +239 -178
  69. package/lib/math/auction.d.ts +5 -0
  70. package/lib/math/auction.js +39 -0
  71. package/lib/math/bankBalance.d.ts +9 -0
  72. package/lib/math/bankBalance.js +75 -0
  73. package/lib/math/conversion.d.ts +0 -1
  74. package/lib/math/conversion.js +1 -5
  75. package/lib/math/funding.d.ts +6 -6
  76. package/lib/math/funding.js +158 -175
  77. package/lib/math/market.d.ts +6 -6
  78. package/lib/math/market.js +10 -9
  79. package/lib/math/orders.d.ts +5 -0
  80. package/lib/math/orders.js +31 -1
  81. package/lib/math/position.d.ts +7 -5
  82. package/lib/math/position.js +27 -27
  83. package/lib/math/repeg.d.ts +22 -0
  84. package/lib/math/repeg.js +128 -0
  85. package/lib/math/trade.d.ts +5 -4
  86. package/lib/math/trade.js +29 -21
  87. package/lib/mockUSDCFaucet.js +87 -116
  88. package/lib/oracles/oracleClientCache.d.ts +8 -0
  89. package/lib/oracles/oracleClientCache.js +19 -0
  90. package/lib/oracles/pythClient.d.ts +3 -5
  91. package/lib/oracles/pythClient.js +12 -31
  92. package/lib/oracles/quoteAssetOracleClient.d.ts +9 -0
  93. package/lib/oracles/quoteAssetOracleClient.js +21 -0
  94. package/lib/oracles/switchboardClient.d.ts +3 -5
  95. package/lib/oracles/switchboardClient.js +29 -50
  96. package/lib/oracles/types.d.ts +6 -1
  97. package/lib/orders.d.ts +6 -7
  98. package/lib/orders.js +10 -80
  99. package/lib/slot/SlotSubscriber.d.ts +12 -0
  100. package/lib/slot/SlotSubscriber.js +23 -0
  101. package/lib/tx/retryTxSender.d.ts +2 -2
  102. package/lib/tx/retryTxSender.js +108 -123
  103. package/lib/tx/types.d.ts +5 -1
  104. package/lib/tx/utils.d.ts +1 -1
  105. package/lib/tx/utils.js +11 -2
  106. package/lib/types.d.ts +110 -109
  107. package/lib/types.js +14 -1
  108. package/lib/userName.d.ts +4 -0
  109. package/lib/userName.js +20 -0
  110. package/lib/util/computeUnits.js +10 -21
  111. package/lib/util/tps.js +11 -22
  112. package/lib/wallet.js +7 -20
  113. package/package.json +11 -4
  114. package/src/accounts/bulkAccountLoader.ts +21 -15
  115. package/src/accounts/bulkUserSubscription.ts +1 -45
  116. package/src/accounts/fetch.ts +33 -0
  117. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +249 -214
  118. package/src/accounts/pollingOracleSubscriber.ts +16 -8
  119. package/src/accounts/pollingTokenAccountSubscriber.ts +11 -8
  120. package/src/accounts/pollingUserAccountSubscriber.ts +21 -86
  121. package/src/accounts/types.ts +41 -70
  122. package/src/accounts/webSocketAccountSubscriber.ts +33 -16
  123. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +190 -240
  124. package/src/accounts/webSocketUserAccountSubscriber.ts +11 -71
  125. package/src/addresses/marketAddresses.ts +18 -0
  126. package/src/addresses/pda.ts +118 -0
  127. package/src/admin.ts +218 -346
  128. package/src/clearingHouse.ts +983 -952
  129. package/src/clearingHouseConfig.ts +37 -0
  130. package/src/clearingHouseUser.ts +275 -185
  131. package/src/clearingHouseUserConfig.ts +18 -0
  132. package/src/config.ts +54 -1
  133. package/src/constants/banks.ts +43 -0
  134. package/src/constants/markets.ts +16 -207
  135. package/src/constants/numericConstants.ts +34 -5
  136. package/src/events/eventList.ts +94 -0
  137. package/src/events/eventSubscriber.ts +194 -0
  138. package/src/events/fetchLogs.ts +80 -0
  139. package/src/events/pollingLogProvider.ts +79 -0
  140. package/src/events/sort.ts +65 -0
  141. package/src/events/txEventCache.ts +74 -0
  142. package/src/events/types.ts +98 -0
  143. package/src/events/webSocketLogProvider.ts +38 -0
  144. package/src/examples/makeTradeExample.ts +20 -11
  145. package/src/factory/bigNum.ts +524 -0
  146. package/src/factory/oracleClient.ts +7 -4
  147. package/src/idl/clearing_house.json +2287 -2938
  148. package/src/index.ts +12 -4
  149. package/src/math/amm.ts +414 -245
  150. package/src/math/auction.ts +39 -0
  151. package/src/math/bankBalance.ts +112 -0
  152. package/src/math/conversion.ts +1 -11
  153. package/src/math/funding.ts +12 -9
  154. package/src/math/market.ts +37 -30
  155. package/src/math/orders.ts +38 -0
  156. package/src/math/position.ts +48 -35
  157. package/src/math/repeg.ts +176 -0
  158. package/src/math/trade.ts +45 -35
  159. package/src/math/utils.js +27 -0
  160. package/src/math/utils.js.map +1 -0
  161. package/src/oracles/oracleClientCache.ts +20 -0
  162. package/src/oracles/pythClient.ts +4 -11
  163. package/src/oracles/quoteAssetOracleClient.ts +25 -0
  164. package/src/oracles/switchboardClient.ts +11 -24
  165. package/src/oracles/types.ts +7 -1
  166. package/src/orders.ts +24 -126
  167. package/src/slot/SlotSubscriber.ts +32 -0
  168. package/src/tx/retryTxSender.ts +6 -4
  169. package/src/tx/types.ts +6 -1
  170. package/src/tx/utils.ts +22 -3
  171. package/src/types.ts +111 -122
  172. package/src/userName.ts +20 -0
  173. package/src/util/computeUnits.js +17 -0
  174. package/src/util/computeUnits.js.map +1 -0
  175. package/tests/bn/test.ts +255 -0
  176. package/tsconfig.json +12 -12
  177. package/lib/addresses.d.ts +0 -10
  178. package/lib/addresses.js +0 -93
  179. package/lib/constants/accounts.d.ts +0 -15
  180. package/lib/constants/accounts.js +0 -18
  181. package/lib/factory/clearingHouse.d.ts +0 -35
  182. package/lib/factory/clearingHouse.js +0 -81
  183. package/lib/factory/clearingHouseUser.d.ts +0 -19
  184. package/lib/factory/clearingHouseUser.js +0 -34
  185. package/lib/math/insuranceFund.d.ts +0 -15
  186. package/lib/math/insuranceFund.js +0 -33
  187. package/lib/settlement.d.ts +0 -4
  188. package/lib/settlement.js +0 -10
  189. package/lib/tx/defaultTxSender.d.ts +0 -8
  190. package/lib/tx/defaultTxSender.js +0 -12
  191. package/src/addresses.ts +0 -82
  192. package/src/constants/accounts.ts +0 -26
  193. package/src/factory/clearingHouse.ts +0 -173
  194. package/src/factory/clearingHouseUser.ts +0 -73
  195. package/src/math/insuranceFund.ts +0 -29
  196. package/src/settlement.ts +0 -9
  197. package/src/tx/defaultTxSender.ts +0 -24
@@ -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
- return __awaiter(this, void 0, void 0, function* () {
29
- if (additionalSigners === undefined) {
30
- additionalSigners = [];
31
- }
32
- if (opts === undefined) {
33
- opts = this.provider.opts;
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
- yield this.prepareTx(tx, additionalSigners, opts);
36
- const rawTransaction = tx.serialize();
37
- const startTime = this.getTimestamp();
38
- const txid = yield this.provider.connection.sendRawTransaction(rawTransaction, opts);
39
- this.sendToAdditionalConnections(rawTransaction, opts);
40
- let done = false;
41
- const resolveReference = {
42
- resolve: undefined,
43
- };
44
- const stopWaiting = () => {
45
- done = true;
46
- if (resolveReference.resolve) {
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
- finally {
72
- stopWaiting();
73
- }
74
- return txid;
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
- return __awaiter(this, void 0, void 0, function* () {
79
- tx.feePayer = this.provider.wallet.publicKey;
80
- tx.recentBlockhash = (yield this.provider.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;
81
- yield this.provider.wallet.signTransaction(tx);
82
- additionalSigners
83
- .filter((s) => s !== undefined)
84
- .forEach((kp) => {
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
- return __awaiter(this, void 0, void 0, function* () {
92
- let decodedSignature;
93
- try {
94
- decodedSignature = bs58_1.default.decode(signature);
95
- }
96
- catch (err) {
97
- throw new Error('signature must be base58 encoded: ' + signature);
98
- }
99
- (0, assert_1.default)(decodedSignature.length === 64, 'signature has invalid length');
100
- const start = Date.now();
101
- const subscriptionCommitment = commitment || this.provider.opts.commitment;
102
- const subscriptionIds = new Array();
103
- const connections = [
104
- this.provider.connection,
105
- ...this.additionalConnections,
106
- ];
107
- let response = null;
108
- const promises = connections.map((connection, i) => {
109
- let subscriptionId;
110
- const confirmPromise = new Promise((resolve, reject) => {
111
- try {
112
- subscriptionId = connection.onSignature(signature, (result, context) => {
113
- subscriptionIds[i] = undefined;
114
- response = {
115
- context,
116
- value: result,
117
- };
118
- resolve(null);
119
- }, subscriptionCommitment);
120
- }
121
- catch (err) {
122
- reject(err);
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
- try {
129
- yield this.promiseTimeout(promises, this.timeout);
130
- }
131
- finally {
132
- for (const [i, subscriptionId] of subscriptionIds.entries()) {
133
- if (subscriptionId) {
134
- connections[i].removeSignatureListener(subscriptionId);
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
- if (response === null) {
139
- const duration = (Date.now() - start) / 1000;
140
- 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.`);
141
- }
142
- return response;
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 __awaiter(this, void 0, void 0, function* () {
150
- return new Promise((resolve) => {
151
- reference.resolve = resolve;
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<TransactionSignature>;
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
- function wrapInTx(instruction) {
6
- return new web3_js_1.Transaction().add(instruction);
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
- collateralBefore: BN;
135
- cumulativeDepositsBefore: BN;
119
+ bankIndex: BN;
136
120
  amount: BN;
121
+ from?: PublicKey;
122
+ to?: PublicKey;
137
123
  };
138
- export declare type ExtendedCurveRecord = {
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
- recordId: BN;
221
- order: Order;
222
- user: PublicKey;
223
- authority: PublicKey;
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
- fee: BN;
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
- orderState: PublicKey;
271
- extendedCurveHistory: PublicKey;
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 SettlementStateAccount = {
279
- totalSettlementValue: BN;
280
- collateralAvailableToClaim: BN;
281
- collateralClaimed: BN;
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
- minimumBaseAssetTradeSize: BN;
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
- export declare type UserPositionsAccount = {
333
- positions: UserPosition[];
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
- positions: PublicKey;
341
- totalFeePaid: BN;
342
- totalFeeRebate: BN;
343
- totalTokenDiscount: BN;
344
- totalReferralReward: BN;
345
- totalRefereeDiscount: BN;
346
- settledPositionValue: BN;
347
- collateralClaimed: BN;
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
- user: PublicKey;
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: {