@drift-labs/sdk 0.2.0-master.24 → 0.2.0-master.26

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 (193) hide show
  1. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +13 -13
  2. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +27 -27
  3. package/lib/accounts/types.d.ts +8 -9
  4. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +14 -14
  5. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +35 -34
  6. package/lib/addresses/pda.d.ts +8 -6
  7. package/lib/addresses/pda.js +35 -27
  8. package/lib/admin.d.ts +9 -6
  9. package/lib/admin.js +90 -54
  10. package/lib/clearingHouse.d.ts +71 -42
  11. package/lib/clearingHouse.js +765 -282
  12. package/lib/clearingHouseConfig.d.ts +2 -2
  13. package/lib/clearingHouseUser.d.ts +19 -17
  14. package/lib/clearingHouseUser.js +145 -123
  15. package/lib/config.d.ts +7 -7
  16. package/lib/config.js +21 -21
  17. package/lib/constants/numericConstants.d.ts +12 -12
  18. package/lib/constants/numericConstants.js +13 -13
  19. package/lib/constants/{markets.d.ts → perpMarkets.d.ts} +5 -5
  20. package/{src/constants/markets.js → lib/constants/perpMarkets.js} +4 -4
  21. package/lib/constants/{banks.d.ts → spotMarkets.d.ts} +6 -6
  22. package/lib/constants/{banks.js → spotMarkets.js} +16 -16
  23. package/lib/events/eventSubscriber.d.ts +4 -2
  24. package/lib/events/eventSubscriber.js +16 -9
  25. package/lib/events/fetchLogs.d.ts +10 -1
  26. package/lib/events/fetchLogs.js +27 -7
  27. package/lib/events/pollingLogProvider.d.ts +2 -1
  28. package/lib/events/pollingLogProvider.js +6 -2
  29. package/lib/events/types.d.ts +4 -2
  30. package/lib/events/types.js +2 -0
  31. package/lib/examples/makeTradeExample.js +18 -6
  32. package/lib/idl/clearing_house.json +1128 -347
  33. package/lib/index.d.ts +6 -3
  34. package/lib/index.js +6 -3
  35. package/lib/math/amm.d.ts +5 -3
  36. package/lib/math/amm.js +42 -4
  37. package/lib/math/funding.d.ts +6 -6
  38. package/lib/math/funding.js +2 -1
  39. package/lib/math/margin.d.ts +4 -4
  40. package/lib/math/margin.js +18 -11
  41. package/lib/math/market.d.ts +10 -9
  42. package/lib/math/market.js +29 -6
  43. package/lib/math/oracles.d.ts +2 -1
  44. package/lib/math/oracles.js +11 -1
  45. package/lib/math/orders.d.ts +5 -5
  46. package/lib/math/position.d.ts +13 -13
  47. package/lib/math/position.js +19 -19
  48. package/lib/math/spotBalance.d.ts +19 -0
  49. package/lib/math/spotBalance.js +176 -0
  50. package/lib/math/spotMarket.d.ts +4 -0
  51. package/lib/math/spotMarket.js +8 -0
  52. package/lib/math/spotPosition.d.ts +2 -0
  53. package/lib/math/spotPosition.js +8 -0
  54. package/lib/math/state.js +2 -2
  55. package/lib/math/trade.d.ts +4 -4
  56. package/lib/orderParams.d.ts +4 -4
  57. package/lib/orderParams.js +12 -4
  58. package/lib/serum/serumSubscriber.d.ts +23 -0
  59. package/lib/serum/serumSubscriber.js +41 -0
  60. package/lib/serum/types.d.ts +11 -0
  61. package/lib/serum/types.js +2 -0
  62. package/lib/tx/retryTxSender.d.ts +1 -1
  63. package/lib/tx/retryTxSender.js +4 -2
  64. package/lib/tx/types.d.ts +1 -1
  65. package/lib/types.d.ts +148 -39
  66. package/lib/types.js +37 -9
  67. package/my-script/.env +7 -0
  68. package/my-script/getUserStats.ts +106 -0
  69. package/my-script/multiConnections.ts +119 -0
  70. package/my-script/test-regex.ts +11 -0
  71. package/my-script/utils.ts +52 -0
  72. package/package.json +1 -1
  73. package/src/accounts/bulkAccountLoader.js +249 -0
  74. package/src/accounts/bulkUserStatsSubscription.js +75 -0
  75. package/src/accounts/bulkUserSubscription.js +75 -0
  76. package/src/accounts/fetch.js +92 -0
  77. package/src/accounts/pollingClearingHouseAccountSubscriber.js +465 -0
  78. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +38 -38
  79. package/src/accounts/pollingOracleSubscriber.js +156 -0
  80. package/src/accounts/pollingTokenAccountSubscriber.js +141 -0
  81. package/src/accounts/pollingUserAccountSubscriber.js +208 -0
  82. package/src/accounts/pollingUserStatsAccountSubscriber.js +208 -0
  83. package/src/accounts/types.js +28 -0
  84. package/src/accounts/types.ts +11 -9
  85. package/src/accounts/utils.js +7 -0
  86. package/src/accounts/webSocketAccountSubscriber.js +138 -0
  87. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +433 -0
  88. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +59 -52
  89. package/src/accounts/webSocketUserAccountSubscriber.js +113 -0
  90. package/src/accounts/webSocketUserStatsAccountSubsriber.js +113 -0
  91. package/src/addresses/pda.js +186 -0
  92. package/src/addresses/pda.ts +56 -42
  93. package/src/admin.js +1284 -0
  94. package/src/admin.ts +149 -75
  95. package/src/assert/assert.js +1 -1
  96. package/src/clearingHouse.js +3433 -0
  97. package/src/clearingHouse.ts +1097 -380
  98. package/src/clearingHouseConfig.js +2 -0
  99. package/src/clearingHouseConfig.ts +2 -2
  100. package/src/clearingHouseUser.js +874 -0
  101. package/src/clearingHouseUser.ts +237 -172
  102. package/src/clearingHouseUserConfig.js +2 -0
  103. package/src/clearingHouseUserStats.js +115 -0
  104. package/src/clearingHouseUserStatsConfig.js +2 -0
  105. package/src/config.js +80 -0
  106. package/src/config.ts +30 -30
  107. package/src/constants/numericConstants.js +18 -11
  108. package/src/constants/numericConstants.ts +17 -15
  109. package/{lib/constants/markets.js → src/constants/perpMarkets.js} +11 -11
  110. package/src/constants/{markets.ts → perpMarkets.ts} +5 -5
  111. package/src/constants/spotMarkets.js +51 -0
  112. package/src/constants/{banks.ts → spotMarkets.ts} +19 -19
  113. package/src/events/eventList.js +66 -23
  114. package/src/events/eventSubscriber.js +202 -0
  115. package/src/events/eventSubscriber.ts +20 -12
  116. package/src/events/fetchLogs.js +117 -0
  117. package/src/events/fetchLogs.ts +35 -8
  118. package/src/events/pollingLogProvider.js +113 -0
  119. package/src/events/pollingLogProvider.ts +10 -2
  120. package/src/events/sort.js +41 -0
  121. package/src/events/txEventCache.js +22 -19
  122. package/src/events/types.js +25 -0
  123. package/src/events/types.ts +7 -1
  124. package/src/events/webSocketLogProvider.js +76 -0
  125. package/src/examples/makeTradeExample.ts +27 -6
  126. package/src/factory/bigNum.js +183 -180
  127. package/src/factory/oracleClient.js +9 -9
  128. package/src/idl/clearing_house.json +1128 -347
  129. package/src/index.js +75 -0
  130. package/src/index.ts +6 -3
  131. package/src/math/amm.js +422 -0
  132. package/src/math/amm.ts +73 -5
  133. package/src/math/auction.js +10 -10
  134. package/src/math/conversion.js +4 -3
  135. package/src/math/funding.js +223 -175
  136. package/src/math/funding.ts +7 -7
  137. package/src/math/insurance.js +27 -0
  138. package/src/math/margin.js +77 -0
  139. package/src/math/margin.ts +34 -23
  140. package/src/math/market.js +105 -0
  141. package/src/math/market.ts +71 -19
  142. package/src/math/oracles.js +40 -10
  143. package/src/math/oracles.ts +18 -1
  144. package/src/math/orders.js +153 -0
  145. package/src/math/orders.ts +5 -5
  146. package/src/math/position.js +172 -0
  147. package/src/math/position.ts +31 -31
  148. package/src/math/repeg.js +40 -40
  149. package/src/math/spotBalance.js +176 -0
  150. package/src/math/spotBalance.ts +290 -0
  151. package/src/math/spotMarket.js +8 -0
  152. package/src/math/spotMarket.ts +9 -0
  153. package/src/math/spotPosition.js +8 -0
  154. package/src/math/spotPosition.ts +6 -0
  155. package/src/math/state.ts +2 -2
  156. package/src/math/trade.js +81 -74
  157. package/src/math/trade.ts +4 -4
  158. package/src/math/utils.js +8 -7
  159. package/src/oracles/oracleClientCache.js +10 -9
  160. package/src/oracles/pythClient.js +52 -17
  161. package/src/oracles/quoteAssetOracleClient.js +44 -13
  162. package/src/oracles/switchboardClient.js +69 -37
  163. package/src/oracles/types.js +1 -1
  164. package/src/orderParams.js +14 -6
  165. package/src/orderParams.ts +16 -8
  166. package/src/serum/serumSubscriber.js +102 -0
  167. package/src/serum/serumSubscriber.ts +80 -0
  168. package/src/serum/types.js +2 -0
  169. package/src/serum/types.ts +13 -0
  170. package/src/slot/SlotSubscriber.js +67 -20
  171. package/src/token/index.js +4 -4
  172. package/src/tokenFaucet.js +288 -154
  173. package/src/tx/retryTxSender.js +280 -0
  174. package/src/tx/retryTxSender.ts +5 -2
  175. package/src/tx/types.js +1 -1
  176. package/src/tx/types.ts +2 -1
  177. package/src/tx/utils.js +7 -6
  178. package/src/types.js +216 -0
  179. package/src/types.ts +131 -39
  180. package/src/userName.js +5 -5
  181. package/src/util/computeUnits.js +46 -11
  182. package/src/util/promiseTimeout.js +5 -5
  183. package/src/util/tps.js +46 -12
  184. package/src/wallet.js +55 -18
  185. package/lib/math/bankBalance.d.ts +0 -15
  186. package/lib/math/bankBalance.js +0 -150
  187. package/src/addresses/marketAddresses.js +0 -26
  188. package/src/constants/banks.js +0 -42
  189. package/src/examples/makeTradeExample.js +0 -80
  190. package/src/math/bankBalance.ts +0 -258
  191. package/src/math/state.js +0 -15
  192. package/src/math/utils.js.map +0 -1
  193. package/src/util/getTokenAddress.js +0 -9
@@ -0,0 +1,113 @@
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
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ exports.__esModule = true;
39
+ exports.WebSocketUserAccountSubscriber = void 0;
40
+ var types_1 = require("./types");
41
+ var events_1 = require("events");
42
+ var webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
43
+ var WebSocketUserAccountSubscriber = /** @class */ (function () {
44
+ function WebSocketUserAccountSubscriber(program, userAccountPublicKey) {
45
+ this.isSubscribed = false;
46
+ this.program = program;
47
+ this.userAccountPublicKey = userAccountPublicKey;
48
+ this.eventEmitter = new events_1.EventEmitter();
49
+ }
50
+ WebSocketUserAccountSubscriber.prototype.subscribe = function () {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ var _this = this;
53
+ return __generator(this, function (_a) {
54
+ switch (_a.label) {
55
+ case 0:
56
+ if (this.isSubscribed) {
57
+ return [2 /*return*/, true];
58
+ }
59
+ this.userDataAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('user', this.program, this.userAccountPublicKey);
60
+ return [4 /*yield*/, this.userDataAccountSubscriber.subscribe(function (data) {
61
+ _this.eventEmitter.emit('userAccountUpdate', data);
62
+ _this.eventEmitter.emit('update');
63
+ })];
64
+ case 1:
65
+ _a.sent();
66
+ this.eventEmitter.emit('update');
67
+ this.isSubscribed = true;
68
+ return [2 /*return*/, true];
69
+ }
70
+ });
71
+ });
72
+ };
73
+ WebSocketUserAccountSubscriber.prototype.fetch = function () {
74
+ return __awaiter(this, void 0, void 0, function () {
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0: return [4 /*yield*/, Promise.all([this.userDataAccountSubscriber.fetch()])];
78
+ case 1:
79
+ _a.sent();
80
+ return [2 /*return*/];
81
+ }
82
+ });
83
+ });
84
+ };
85
+ WebSocketUserAccountSubscriber.prototype.unsubscribe = function () {
86
+ return __awaiter(this, void 0, void 0, function () {
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0:
90
+ if (!this.isSubscribed) {
91
+ return [2 /*return*/];
92
+ }
93
+ return [4 /*yield*/, Promise.all([this.userDataAccountSubscriber.unsubscribe()])];
94
+ case 1:
95
+ _a.sent();
96
+ this.isSubscribed = false;
97
+ return [2 /*return*/];
98
+ }
99
+ });
100
+ });
101
+ };
102
+ WebSocketUserAccountSubscriber.prototype.assertIsSubscribed = function () {
103
+ if (!this.isSubscribed) {
104
+ throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
105
+ }
106
+ };
107
+ WebSocketUserAccountSubscriber.prototype.getUserAccountAndSlot = function () {
108
+ this.assertIsSubscribed();
109
+ return this.userDataAccountSubscriber.dataAndSlot;
110
+ };
111
+ return WebSocketUserAccountSubscriber;
112
+ }());
113
+ exports.WebSocketUserAccountSubscriber = WebSocketUserAccountSubscriber;
@@ -0,0 +1,113 @@
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
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ exports.__esModule = true;
39
+ exports.WebSocketUserStatsAccountSubscriber = void 0;
40
+ var types_1 = require("./types");
41
+ var events_1 = require("events");
42
+ var webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
43
+ var WebSocketUserStatsAccountSubscriber = /** @class */ (function () {
44
+ function WebSocketUserStatsAccountSubscriber(program, userStatsAccountPublicKey) {
45
+ this.isSubscribed = false;
46
+ this.program = program;
47
+ this.userStatsAccountPublicKey = userStatsAccountPublicKey;
48
+ this.eventEmitter = new events_1.EventEmitter();
49
+ }
50
+ WebSocketUserStatsAccountSubscriber.prototype.subscribe = function () {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ var _this = this;
53
+ return __generator(this, function (_a) {
54
+ switch (_a.label) {
55
+ case 0:
56
+ if (this.isSubscribed) {
57
+ return [2 /*return*/, true];
58
+ }
59
+ this.userStatsAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('userStats', this.program, this.userStatsAccountPublicKey);
60
+ return [4 /*yield*/, this.userStatsAccountSubscriber.subscribe(function (data) {
61
+ _this.eventEmitter.emit('userStatsAccountUpdate', data);
62
+ _this.eventEmitter.emit('update');
63
+ })];
64
+ case 1:
65
+ _a.sent();
66
+ this.eventEmitter.emit('update');
67
+ this.isSubscribed = true;
68
+ return [2 /*return*/, true];
69
+ }
70
+ });
71
+ });
72
+ };
73
+ WebSocketUserStatsAccountSubscriber.prototype.fetch = function () {
74
+ return __awaiter(this, void 0, void 0, function () {
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0: return [4 /*yield*/, Promise.all([this.userStatsAccountSubscriber.fetch()])];
78
+ case 1:
79
+ _a.sent();
80
+ return [2 /*return*/];
81
+ }
82
+ });
83
+ });
84
+ };
85
+ WebSocketUserStatsAccountSubscriber.prototype.unsubscribe = function () {
86
+ return __awaiter(this, void 0, void 0, function () {
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0:
90
+ if (!this.isSubscribed) {
91
+ return [2 /*return*/];
92
+ }
93
+ return [4 /*yield*/, Promise.all([this.userStatsAccountSubscriber.unsubscribe()])];
94
+ case 1:
95
+ _a.sent();
96
+ this.isSubscribed = false;
97
+ return [2 /*return*/];
98
+ }
99
+ });
100
+ });
101
+ };
102
+ WebSocketUserStatsAccountSubscriber.prototype.assertIsSubscribed = function () {
103
+ if (!this.isSubscribed) {
104
+ throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
105
+ }
106
+ };
107
+ WebSocketUserStatsAccountSubscriber.prototype.getUserStatsAccountAndSlot = function () {
108
+ this.assertIsSubscribed();
109
+ return this.userStatsAccountSubscriber.dataAndSlot;
110
+ };
111
+ return WebSocketUserStatsAccountSubscriber;
112
+ }());
113
+ exports.WebSocketUserStatsAccountSubscriber = WebSocketUserStatsAccountSubscriber;
@@ -0,0 +1,186 @@
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
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ exports.__esModule = true;
39
+ exports.getSerumFulfillmentConfigPublicKey = exports.getSerumSignerPublicKey = exports.getSerumOpenOrdersPublicKey = exports.getClearingHouseSignerPublicKey = exports.getInsuranceFundStakeAccountPublicKey = exports.getInsuranceFundVaultPublicKey = exports.getSpotMarketVaultPublicKey = exports.getSpotMarketPublicKey = exports.getMarketPublicKey = exports.getUserStatsAccountPublicKey = exports.getUserAccountPublicKeySync = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getClearingHouseStateAccountPublicKey = exports.getClearingHouseStateAccountPublicKeyAndNonce = void 0;
40
+ var anchor = require("@project-serum/anchor");
41
+ function getClearingHouseStateAccountPublicKeyAndNonce(programId) {
42
+ return __awaiter(this, void 0, void 0, function () {
43
+ return __generator(this, function (_a) {
44
+ return [2 /*return*/, anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('clearing_house'))], programId)];
45
+ });
46
+ });
47
+ }
48
+ exports.getClearingHouseStateAccountPublicKeyAndNonce = getClearingHouseStateAccountPublicKeyAndNonce;
49
+ function getClearingHouseStateAccountPublicKey(programId) {
50
+ return __awaiter(this, void 0, void 0, function () {
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0: return [4 /*yield*/, getClearingHouseStateAccountPublicKeyAndNonce(programId)];
54
+ case 1: return [2 /*return*/, (_a.sent())[0]];
55
+ }
56
+ });
57
+ });
58
+ }
59
+ exports.getClearingHouseStateAccountPublicKey = getClearingHouseStateAccountPublicKey;
60
+ function getUserAccountPublicKeyAndNonce(programId, authority, userId) {
61
+ if (userId === void 0) { userId = 0; }
62
+ return __awaiter(this, void 0, void 0, function () {
63
+ return __generator(this, function (_a) {
64
+ return [2 /*return*/, anchor.web3.PublicKey.findProgramAddress([
65
+ Buffer.from(anchor.utils.bytes.utf8.encode('user')),
66
+ authority.toBuffer(),
67
+ Uint8Array.from([userId]),
68
+ ], programId)];
69
+ });
70
+ });
71
+ }
72
+ exports.getUserAccountPublicKeyAndNonce = getUserAccountPublicKeyAndNonce;
73
+ function getUserAccountPublicKey(programId, authority, userId) {
74
+ if (userId === void 0) { userId = 0; }
75
+ return __awaiter(this, void 0, void 0, function () {
76
+ return __generator(this, function (_a) {
77
+ switch (_a.label) {
78
+ case 0: return [4 /*yield*/, getUserAccountPublicKeyAndNonce(programId, authority, userId)];
79
+ case 1: return [2 /*return*/, (_a.sent())[0]];
80
+ }
81
+ });
82
+ });
83
+ }
84
+ exports.getUserAccountPublicKey = getUserAccountPublicKey;
85
+ function getUserAccountPublicKeySync(programId, authority, userId) {
86
+ if (userId === void 0) { userId = 0; }
87
+ return anchor.web3.PublicKey.findProgramAddressSync([
88
+ Buffer.from(anchor.utils.bytes.utf8.encode('user')),
89
+ authority.toBuffer(),
90
+ Uint8Array.from([userId]),
91
+ ], programId)[0];
92
+ }
93
+ exports.getUserAccountPublicKeySync = getUserAccountPublicKeySync;
94
+ function getUserStatsAccountPublicKey(programId, authority) {
95
+ return anchor.web3.PublicKey.findProgramAddressSync([
96
+ Buffer.from(anchor.utils.bytes.utf8.encode('user_stats')),
97
+ authority.toBuffer(),
98
+ ], programId)[0];
99
+ }
100
+ exports.getUserStatsAccountPublicKey = getUserStatsAccountPublicKey;
101
+ function getMarketPublicKey(programId, marketIndex) {
102
+ return __awaiter(this, void 0, void 0, function () {
103
+ return __generator(this, function (_a) {
104
+ switch (_a.label) {
105
+ case 0: return [4 /*yield*/, anchor.web3.PublicKey.findProgramAddress([
106
+ Buffer.from(anchor.utils.bytes.utf8.encode('market')),
107
+ marketIndex.toArrayLike(Buffer, 'le', 8),
108
+ ], programId)];
109
+ case 1: return [2 /*return*/, (_a.sent())[0]];
110
+ }
111
+ });
112
+ });
113
+ }
114
+ exports.getMarketPublicKey = getMarketPublicKey;
115
+ function getSpotMarketPublicKey(programId, marketIndex) {
116
+ return __awaiter(this, void 0, void 0, function () {
117
+ return __generator(this, function (_a) {
118
+ switch (_a.label) {
119
+ case 0: return [4 /*yield*/, anchor.web3.PublicKey.findProgramAddress([
120
+ Buffer.from(anchor.utils.bytes.utf8.encode('spot_market')),
121
+ marketIndex.toArrayLike(Buffer, 'le', 8),
122
+ ], programId)];
123
+ case 1: return [2 /*return*/, (_a.sent())[0]];
124
+ }
125
+ });
126
+ });
127
+ }
128
+ exports.getSpotMarketPublicKey = getSpotMarketPublicKey;
129
+ function getSpotMarketVaultPublicKey(programId, marketIndex) {
130
+ return __awaiter(this, void 0, void 0, function () {
131
+ return __generator(this, function (_a) {
132
+ switch (_a.label) {
133
+ case 0: return [4 /*yield*/, anchor.web3.PublicKey.findProgramAddress([
134
+ Buffer.from(anchor.utils.bytes.utf8.encode('spot_market_vault')),
135
+ marketIndex.toArrayLike(Buffer, 'le', 8),
136
+ ], programId)];
137
+ case 1: return [2 /*return*/, (_a.sent())[0]];
138
+ }
139
+ });
140
+ });
141
+ }
142
+ exports.getSpotMarketVaultPublicKey = getSpotMarketVaultPublicKey;
143
+ function getInsuranceFundVaultPublicKey(programId, marketIndex) {
144
+ return __awaiter(this, void 0, void 0, function () {
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0: return [4 /*yield*/, anchor.web3.PublicKey.findProgramAddress([
148
+ Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_vault')),
149
+ marketIndex.toArrayLike(Buffer, 'le', 8),
150
+ ], programId)];
151
+ case 1: return [2 /*return*/, (_a.sent())[0]];
152
+ }
153
+ });
154
+ });
155
+ }
156
+ exports.getInsuranceFundVaultPublicKey = getInsuranceFundVaultPublicKey;
157
+ function getInsuranceFundStakeAccountPublicKey(programId, authority, marketIndex) {
158
+ return anchor.web3.PublicKey.findProgramAddressSync([
159
+ Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_stake')),
160
+ authority.toBuffer(),
161
+ marketIndex.toArrayLike(Buffer, 'le', 8),
162
+ ], programId)[0];
163
+ }
164
+ exports.getInsuranceFundStakeAccountPublicKey = getInsuranceFundStakeAccountPublicKey;
165
+ function getClearingHouseSignerPublicKey(programId) {
166
+ return anchor.web3.PublicKey.findProgramAddressSync([Buffer.from(anchor.utils.bytes.utf8.encode('clearing_house_signer'))], programId)[0];
167
+ }
168
+ exports.getClearingHouseSignerPublicKey = getClearingHouseSignerPublicKey;
169
+ function getSerumOpenOrdersPublicKey(programId, market) {
170
+ return anchor.web3.PublicKey.findProgramAddressSync([
171
+ Buffer.from(anchor.utils.bytes.utf8.encode('serum_open_orders')),
172
+ market.toBuffer(),
173
+ ], programId)[0];
174
+ }
175
+ exports.getSerumOpenOrdersPublicKey = getSerumOpenOrdersPublicKey;
176
+ function getSerumSignerPublicKey(programId, market, nonce) {
177
+ return anchor.web3.PublicKey.createProgramAddressSync([market.toBuffer(), nonce.toArrayLike(Buffer, 'le', 8)], programId);
178
+ }
179
+ exports.getSerumSignerPublicKey = getSerumSignerPublicKey;
180
+ function getSerumFulfillmentConfigPublicKey(programId, market) {
181
+ return anchor.web3.PublicKey.findProgramAddressSync([
182
+ Buffer.from(anchor.utils.bytes.utf8.encode('serum_fulfillment_config')),
183
+ market.toBuffer(),
184
+ ], programId)[0];
185
+ }
186
+ exports.getSerumFulfillmentConfigPublicKey = getSerumFulfillmentConfigPublicKey;
@@ -85,93 +85,107 @@ export async function getMarketPublicKey(
85
85
  )[0];
86
86
  }
87
87
 
88
- export async function getBankPublicKey(
88
+ export async function getSpotMarketPublicKey(
89
89
  programId: PublicKey,
90
- bankIndex: BN
90
+ marketIndex: BN
91
91
  ): Promise<PublicKey> {
92
92
  return (
93
93
  await anchor.web3.PublicKey.findProgramAddress(
94
94
  [
95
- Buffer.from(anchor.utils.bytes.utf8.encode('bank')),
96
- bankIndex.toArrayLike(Buffer, 'le', 8),
95
+ Buffer.from(anchor.utils.bytes.utf8.encode('spot_market')),
96
+ marketIndex.toArrayLike(Buffer, 'le', 8),
97
97
  ],
98
98
  programId
99
99
  )
100
100
  )[0];
101
101
  }
102
102
 
103
- export async function getBankVaultPublicKey(
103
+ export async function getSpotMarketVaultPublicKey(
104
104
  programId: PublicKey,
105
- bankIndex: BN
105
+ marketIndex: BN
106
106
  ): Promise<PublicKey> {
107
107
  return (
108
108
  await anchor.web3.PublicKey.findProgramAddress(
109
109
  [
110
- Buffer.from(anchor.utils.bytes.utf8.encode('bank_vault')),
111
- bankIndex.toArrayLike(Buffer, 'le', 8),
110
+ Buffer.from(anchor.utils.bytes.utf8.encode('spot_market_vault')),
111
+ marketIndex.toArrayLike(Buffer, 'le', 8),
112
112
  ],
113
113
  programId
114
114
  )
115
115
  )[0];
116
116
  }
117
117
 
118
- export async function getBankVaultAuthorityPublicKey(
118
+ export async function getInsuranceFundVaultPublicKey(
119
119
  programId: PublicKey,
120
- bankIndex: BN
120
+ marketIndex: BN
121
121
  ): Promise<PublicKey> {
122
122
  return (
123
123
  await anchor.web3.PublicKey.findProgramAddress(
124
124
  [
125
- Buffer.from(anchor.utils.bytes.utf8.encode('bank_vault_authority')),
126
- bankIndex.toArrayLike(Buffer, 'le', 8),
125
+ Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_vault')),
126
+ marketIndex.toArrayLike(Buffer, 'le', 8),
127
127
  ],
128
128
  programId
129
129
  )
130
130
  )[0];
131
131
  }
132
132
 
133
- export async function getInsuranceFundVaultPublicKey(
133
+ export function getInsuranceFundStakeAccountPublicKey(
134
134
  programId: PublicKey,
135
- bankIndex: BN
136
- ): Promise<PublicKey> {
137
- return (
138
- await anchor.web3.PublicKey.findProgramAddress(
139
- [
140
- Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_vault')),
141
- bankIndex.toArrayLike(Buffer, 'le', 8),
142
- ],
143
- programId
144
- )
135
+ authority: PublicKey,
136
+ marketIndex: BN
137
+ ): PublicKey {
138
+ return anchor.web3.PublicKey.findProgramAddressSync(
139
+ [
140
+ Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_stake')),
141
+ authority.toBuffer(),
142
+ marketIndex.toArrayLike(Buffer, 'le', 8),
143
+ ],
144
+ programId
145
+ )[0];
146
+ }
147
+
148
+ export function getClearingHouseSignerPublicKey(
149
+ programId: PublicKey
150
+ ): PublicKey {
151
+ return anchor.web3.PublicKey.findProgramAddressSync(
152
+ [Buffer.from(anchor.utils.bytes.utf8.encode('clearing_house_signer'))],
153
+ programId
145
154
  )[0];
146
155
  }
147
156
 
148
- export async function getInsuranceFundVaultAuthorityPublicKey(
157
+ export function getSerumOpenOrdersPublicKey(
149
158
  programId: PublicKey,
150
- bankIndex: BN
151
- ): Promise<PublicKey> {
152
- return (
153
- await anchor.web3.PublicKey.findProgramAddress(
154
- [
155
- Buffer.from(
156
- anchor.utils.bytes.utf8.encode('insurance_fund_vault_authority')
157
- ),
158
- bankIndex.toArrayLike(Buffer, 'le', 8),
159
- ],
160
- programId
161
- )
159
+ market: PublicKey
160
+ ): PublicKey {
161
+ return anchor.web3.PublicKey.findProgramAddressSync(
162
+ [
163
+ Buffer.from(anchor.utils.bytes.utf8.encode('serum_open_orders')),
164
+ market.toBuffer(),
165
+ ],
166
+ programId
162
167
  )[0];
163
168
  }
164
169
 
165
- export function getInsuranceFundStakeAccountPublicKey(
170
+ export function getSerumSignerPublicKey(
166
171
  programId: PublicKey,
167
- authority: PublicKey,
168
- bankIndex: BN
172
+ market: PublicKey,
173
+ nonce: BN
174
+ ): PublicKey {
175
+ return anchor.web3.PublicKey.createProgramAddressSync(
176
+ [market.toBuffer(), nonce.toArrayLike(Buffer, 'le', 8)],
177
+ programId
178
+ );
179
+ }
180
+
181
+ export function getSerumFulfillmentConfigPublicKey(
182
+ programId: PublicKey,
183
+ market: PublicKey
169
184
  ): PublicKey {
170
185
  return anchor.web3.PublicKey.findProgramAddressSync(
171
186
  [
172
- Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_stake')),
173
- authority.toBuffer(),
174
- bankIndex.toArrayLike(Buffer, 'le', 8),
187
+ Buffer.from(anchor.utils.bytes.utf8.encode('serum_fulfillment_config')),
188
+ market.toBuffer(),
175
189
  ],
176
190
  programId
177
191
  )[0];