@d8x/perpetuals-sdk 0.1.12 → 0.1.13

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 (159) hide show
  1. package/dist/cjs/accountTrade.js +441 -0
  2. package/dist/cjs/accountTrade.js.map +1 -0
  3. package/dist/{src → cjs}/brokerTool.js +31 -84
  4. package/dist/cjs/brokerTool.js.map +1 -0
  5. package/dist/cjs/config/defaultConfig.json +47 -0
  6. package/dist/cjs/config/mockSwap.json +4 -0
  7. package/dist/cjs/config/priceFeedConfig.json +104 -0
  8. package/dist/cjs/config/symbolList.json +13 -0
  9. package/dist/cjs/d8XMath.js.map +1 -0
  10. package/dist/cjs/index.js +29 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/liquidatorTool.js +287 -0
  13. package/dist/cjs/liquidatorTool.js.map +1 -0
  14. package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
  15. package/dist/cjs/liquidityProviderTool.js.map +1 -0
  16. package/dist/{src → cjs}/marketData.js +52 -134
  17. package/dist/cjs/marketData.js.map +1 -0
  18. package/dist/{src → cjs}/nodeSDKTypes.d.ts +1 -1
  19. package/dist/cjs/nodeSDKTypes.js +64 -0
  20. package/dist/cjs/nodeSDKTypes.js.map +1 -0
  21. package/dist/{src → cjs}/orderReferrerTool.js +22 -91
  22. package/dist/cjs/orderReferrerTool.js.map +1 -0
  23. package/dist/{src → cjs}/perpetualDataHandler.js +32 -98
  24. package/dist/cjs/perpetualDataHandler.js.map +1 -0
  25. package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
  26. package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
  27. package/dist/cjs/perpetualEventHandler.js.map +1 -0
  28. package/dist/cjs/priceFeeds.js +466 -0
  29. package/dist/cjs/priceFeeds.js.map +1 -0
  30. package/dist/{src → cjs}/traderDigests.js +7 -43
  31. package/dist/cjs/traderDigests.js.map +1 -0
  32. package/dist/{src → cjs}/traderInterface.js +13 -66
  33. package/dist/cjs/traderInterface.js.map +1 -0
  34. package/dist/{src → cjs}/triangulator.js +2 -17
  35. package/dist/cjs/triangulator.js.map +1 -0
  36. package/dist/{src → cjs}/utils.js +3 -29
  37. package/dist/cjs/utils.js.map +1 -0
  38. package/dist/cjs/version.d.ts +1 -0
  39. package/dist/{src → cjs}/version.js +1 -1
  40. package/dist/cjs/version.js.map +1 -0
  41. package/dist/{src → cjs}/writeAccessHandler.js +12 -65
  42. package/dist/cjs/writeAccessHandler.js.map +1 -0
  43. package/dist/esm/abi/ERC20.json +288 -0
  44. package/dist/esm/abi/MockTokenSwap.json +186 -0
  45. package/dist/esm/abi/central-park/IPerpetualManager.json +5215 -0
  46. package/dist/esm/abi/central-park/LimitOrderBook.json +1075 -0
  47. package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
  48. package/dist/esm/abi/testnet/IPerpetualManager.json +5025 -0
  49. package/dist/esm/abi/testnet/LimitOrderBook.json +893 -0
  50. package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
  51. package/dist/esm/accountTrade.d.ts +221 -0
  52. package/dist/{src → esm}/accountTrade.js +22 -93
  53. package/dist/esm/accountTrade.js.map +1 -0
  54. package/dist/esm/brokerTool.d.ts +318 -0
  55. package/dist/esm/brokerTool.js +572 -0
  56. package/dist/esm/brokerTool.js.map +1 -0
  57. package/dist/esm/config/defaultConfig.json +47 -0
  58. package/dist/esm/config/mockSwap.json +4 -0
  59. package/dist/esm/config/priceFeedConfig.json +104 -0
  60. package/dist/esm/config/symbolList.json +13 -0
  61. package/dist/esm/d8XMath.d.ts +122 -0
  62. package/dist/esm/d8XMath.js +247 -0
  63. package/dist/esm/d8XMath.js.map +1 -0
  64. package/{src/index.ts → dist/esm/index.d.ts} +1 -15
  65. package/dist/esm/index.js +16 -0
  66. package/dist/esm/index.js.map +1 -0
  67. package/dist/esm/liquidatorTool.d.ts +158 -0
  68. package/dist/{src → esm}/liquidatorTool.js +10 -65
  69. package/dist/esm/liquidatorTool.js.map +1 -0
  70. package/dist/esm/liquidityProviderTool.d.ts +126 -0
  71. package/dist/esm/liquidityProviderTool.js +218 -0
  72. package/dist/esm/liquidityProviderTool.js.map +1 -0
  73. package/dist/esm/marketData.d.ts +309 -0
  74. package/dist/esm/marketData.js +1007 -0
  75. package/dist/esm/marketData.js.map +1 -0
  76. package/dist/esm/nodeSDKTypes.d.ts +266 -0
  77. package/dist/esm/nodeSDKTypes.js +60 -0
  78. package/dist/esm/nodeSDKTypes.js.map +1 -0
  79. package/dist/esm/orderReferrerTool.d.ts +189 -0
  80. package/dist/esm/orderReferrerTool.js +420 -0
  81. package/dist/esm/orderReferrerTool.js.map +1 -0
  82. package/dist/esm/perpetualDataHandler.d.ts +220 -0
  83. package/dist/esm/perpetualDataHandler.js +1056 -0
  84. package/dist/esm/perpetualDataHandler.js.map +1 -0
  85. package/dist/esm/perpetualEventHandler.d.ts +179 -0
  86. package/dist/esm/perpetualEventHandler.js +435 -0
  87. package/dist/esm/perpetualEventHandler.js.map +1 -0
  88. package/dist/esm/priceFeeds.d.ts +115 -0
  89. package/dist/{src → esm}/priceFeeds.js +16 -83
  90. package/dist/esm/priceFeeds.js.map +1 -0
  91. package/dist/esm/traderDigests.d.ts +21 -0
  92. package/dist/esm/traderDigests.js +80 -0
  93. package/dist/esm/traderDigests.js.map +1 -0
  94. package/dist/esm/traderInterface.d.ts +79 -0
  95. package/dist/esm/traderInterface.js +196 -0
  96. package/dist/esm/traderInterface.js.map +1 -0
  97. package/dist/esm/triangulator.d.ts +27 -0
  98. package/dist/esm/triangulator.js +110 -0
  99. package/dist/esm/triangulator.js.map +1 -0
  100. package/dist/esm/utils.d.ts +59 -0
  101. package/dist/esm/utils.js +138 -0
  102. package/dist/esm/utils.js.map +1 -0
  103. package/dist/esm/version.d.ts +1 -0
  104. package/dist/esm/version.js +2 -0
  105. package/dist/esm/version.js.map +1 -0
  106. package/dist/esm/writeAccessHandler.d.ts +50 -0
  107. package/dist/esm/writeAccessHandler.js +157 -0
  108. package/dist/esm/writeAccessHandler.js.map +1 -0
  109. package/package.json +16 -26
  110. package/dist/bundle.js +0 -36793
  111. package/dist/config/defaultConfig.json +0 -47
  112. package/dist/config/mockSwap.json +0 -4
  113. package/dist/config/priceFeedConfig.json +0 -104
  114. package/dist/config/symbolList.json +0 -13
  115. package/dist/src/index.js +0 -45
  116. package/dist/src/nodeSDKTypes.js +0 -115
  117. package/dist/src/version.d.ts +0 -1
  118. package/module.d.ts +0 -1
  119. package/src/accountTrade.ts +0 -392
  120. package/src/brokerTool.ts +0 -507
  121. package/src/d8XMath.ts +0 -319
  122. package/src/liquidatorTool.ts +0 -258
  123. package/src/liquidityProviderTool.ts +0 -186
  124. package/src/marketData.ts +0 -946
  125. package/src/nodeSDKTypes.ts +0 -293
  126. package/src/orderReferrerTool.ts +0 -389
  127. package/src/perpetualDataHandler.ts +0 -1061
  128. package/src/perpetualEventHandler.ts +0 -455
  129. package/src/priceFeeds.ts +0 -381
  130. package/src/traderDigests.ts +0 -91
  131. package/src/traderInterface.ts +0 -159
  132. package/src/triangulator.ts +0 -105
  133. package/src/utils.ts +0 -134
  134. package/src/version.ts +0 -1
  135. package/src/writeAccessHandler.ts +0 -127
  136. /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
  137. /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
  138. /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
  139. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
  140. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
  141. /package/dist/{abi → cjs/abi}/testnet/IPerpetualManager.json +0 -0
  142. /package/dist/{abi → cjs/abi}/testnet/LimitOrderBook.json +0 -0
  143. /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
  144. /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
  145. /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
  146. /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
  147. /package/dist/{src → cjs}/d8XMath.js +0 -0
  148. /package/dist/{src → cjs}/index.d.ts +0 -0
  149. /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
  150. /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
  151. /package/dist/{src → cjs}/marketData.d.ts +0 -0
  152. /package/dist/{src → cjs}/orderReferrerTool.d.ts +0 -0
  153. /package/dist/{src → cjs}/perpetualDataHandler.d.ts +0 -0
  154. /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
  155. /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
  156. /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
  157. /package/dist/{src → cjs}/triangulator.d.ts +0 -0
  158. /package/dist/{src → cjs}/utils.d.ts +0 -0
  159. /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var d8XMath_1 = require("./d8XMath");
5
+ var marketData_1 = tslib_1.__importDefault(require("./marketData"));
6
+ var nodeSDKTypes_1 = require("./nodeSDKTypes");
7
+ var perpetualDataHandler_1 = tslib_1.__importDefault(require("./perpetualDataHandler"));
8
+ var traderDigests_1 = tslib_1.__importDefault(require("./traderDigests"));
9
+ var writeAccessHandler_1 = tslib_1.__importDefault(require("./writeAccessHandler"));
10
+ var buffer_1 = require("buffer");
11
+ /**
12
+ * Functions to create, submit and cancel orders on the exchange.
13
+ * This class requires a private key and executes smart-contract interactions that
14
+ * require gas-payments.
15
+ * @extends WriteAccessHandler
16
+ */
17
+ var AccountTrade = /** @class */ (function (_super) {
18
+ tslib_1.__extends(AccountTrade, _super);
19
+ /**
20
+ * Constructor
21
+ * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
22
+ * readSDKConfig.
23
+ * @example
24
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
25
+ * async function main() {
26
+ * console.log(AccountTrade);
27
+ * // load configuration for testnet
28
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
29
+ * // AccountTrade (authentication required, PK is an environment variable with a private key)
30
+ * const pk: string = <string>process.env.PK;
31
+ * let accTrade = new AccountTrade(config, pk);
32
+ * // Create a proxy instance to access the blockchain
33
+ * await accTrade.createProxyInstance();
34
+ * }
35
+ * main();
36
+ *
37
+ * @param {string} privateKey Private key of account that trades.
38
+ */
39
+ function AccountTrade(config, privateKey) {
40
+ var _this = _super.call(this, config, privateKey) || this;
41
+ _this.digestTool = new traderDigests_1.default();
42
+ return _this;
43
+ }
44
+ /**
45
+ * Cancels an existing order on the exchange.
46
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
47
+ * @param {string} orderId ID of the order to be cancelled.
48
+ * @example
49
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
50
+ * async function main() {
51
+ * console.log(AccountTrade);
52
+ * // setup (authentication required, PK is an environment variable with a private key)
53
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
54
+ * const pk: string = <string>process.env.PK;
55
+ * let accTrade = new AccountTrade(config, pk);
56
+ * await accTrade.createProxyInstance();
57
+ * // cancel order
58
+ * let cancelTransaction = accTrade.cancelOrder("MATIC-USD-MATIC",
59
+ * "0x4639061a58dcf34f4c9c703f49f1cb00d6a4fba490d62c0eb4a4fb06e1c76c19")
60
+ * console.log(cancelTransaction);
61
+ * }
62
+ * main();
63
+ * @returns {ContractTransaction} Contract Transaction (containing events).
64
+ */
65
+ AccountTrade.prototype.cancelOrder = function (symbol, orderId, submission) {
66
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
67
+ var orderBookContract;
68
+ return tslib_1.__generator(this, function (_a) {
69
+ switch (_a.label) {
70
+ case 0:
71
+ if (this.proxyContract == null || this.signer == null) {
72
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
73
+ }
74
+ if (!(submission == undefined)) return [3 /*break*/, 2];
75
+ return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
76
+ case 1:
77
+ submission = _a.sent();
78
+ _a.label = 2;
79
+ case 2:
80
+ orderBookContract = null;
81
+ orderBookContract = this.getOrderBookContract(symbol);
82
+ return [4 /*yield*/, this._cancelOrder(symbol, orderId, orderBookContract, submission)];
83
+ case 3: return [2 /*return*/, _a.sent()];
84
+ }
85
+ });
86
+ });
87
+ };
88
+ /**
89
+ * Submits an order to the exchange.
90
+ * @param {Order} order Order structure. As a minimum the structure needs to
91
+ * specify symbol, side, type and quantity.
92
+ * @example
93
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
94
+ * async function main() {
95
+ * console.log(AccountTrade);
96
+ * // setup (authentication required, PK is an environment variable with a private key)
97
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
98
+ * const pk: string = <string>process.env.PK;
99
+ * let accTrade = new AccountTrade(config, pk);
100
+ * await accTrade.createProxyInstance();
101
+ * // set allowance
102
+ * await accTrade.setAllowance("MATIC");
103
+ * // set an order
104
+ * let order: Order = {
105
+ * symbol: "MATIC-USD-MATIC",
106
+ * side: "BUY",
107
+ * type: "MARKET",
108
+ * quantity: 100,
109
+ * leverage: 2,
110
+ * timestamp: Date.now()/1000,
111
+ * };
112
+ * let orderTransaction = await accTrade.order(order);
113
+ * console.log(orderTransaction);
114
+ * }
115
+ * main();
116
+ *
117
+ * @example
118
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
119
+ * async function main() {
120
+ * console.log(AccountTrade);
121
+ * // setup (authentication required, PK is an environment variable with a private key)
122
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
123
+ * const pk: string = <string>process.env.PK;
124
+ * let accTrade = new AccountTrade(config, pk);
125
+ * await accTrade.createProxyInstance();
126
+ * // set allowance
127
+ * await accTrade.setAllowance("MATIC");
128
+ * // set an order
129
+ * let order: Order = {
130
+ * symbol: "MATIC-USD-MATIC",
131
+ * side: "BUY",
132
+ * type: "LIMIT",
133
+ * limitPrice: 1,
134
+ * quantity: 5,
135
+ * leverage: 2,
136
+ * timestamp: Date.now() / 1000,
137
+ * deadline: Date.now() / 1000 + 8*60*60, // order expires 8 hours from now
138
+ * };
139
+ * let orderTransaction = await accTrade.order(order);
140
+ * console.log(orderTransaction);
141
+ * }
142
+ * main();
143
+ *
144
+ * @returns {ContractTransaction} Contract Transaction (containing events).
145
+ */
146
+ AccountTrade.prototype.order = function (order, parentChildIds) {
147
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
148
+ var minSize, orderBookContract, res;
149
+ return tslib_1.__generator(this, function (_a) {
150
+ switch (_a.label) {
151
+ case 0:
152
+ if (this.proxyContract == null || this.signer == null) {
153
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
154
+ }
155
+ minSize = perpetualDataHandler_1.default._getMinimalPositionSize(order.symbol, this.symbolToPerpStaticInfo);
156
+ if (Math.abs(order.quantity) < minSize) {
157
+ throw Error("order size too small");
158
+ }
159
+ orderBookContract = this.getOrderBookContract(order.symbol);
160
+ return [4 /*yield*/, this._order(order, this.traderAddr, this.symbolToPerpStaticInfo, this.proxyContract, orderBookContract, this.chainId, this.signer, this.gasLimit, parentChildIds)];
161
+ case 1:
162
+ res = _a.sent();
163
+ return [2 /*return*/, res];
164
+ }
165
+ });
166
+ });
167
+ };
168
+ /**
169
+ * Fee charged by the exchange for trading any perpetual on a given pool.
170
+ * It accounts for the current trader's fee tier (based on the trader's D8X balance and trading volume).
171
+ * If trading with a broker, it also accounts for the selected broker's fee tier.
172
+ * Note that this result only includes exchange fees, additional broker fees are not included.
173
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
174
+ * @param {string=} brokerAddr Optional address of a broker this trader may use to trade under.
175
+ * @example
176
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
177
+ * async function main() {
178
+ * console.log(AccountTrade);
179
+ * // setup (authentication required, PK is an environment variable with a private key)
180
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
181
+ * const pk: string = <string>process.env.PK;
182
+ * let accTrade = new AccountTrade(config, pk);
183
+ * await accTrade.createProxyInstance();
184
+ * // query exchange fee
185
+ * let fees = await accTrade.queryExchangeFee("MATIC");
186
+ * console.log(fees);
187
+ * }
188
+ * main();
189
+ *
190
+ * @returns Exchange fee, in decimals (i.e. 0.1% is 0.001).
191
+ */
192
+ AccountTrade.prototype.queryExchangeFee = function (poolSymbolName, brokerAddr) {
193
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
194
+ var poolId, feeTbps;
195
+ return tslib_1.__generator(this, function (_a) {
196
+ switch (_a.label) {
197
+ case 0:
198
+ if (this.proxyContract == null) {
199
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
200
+ }
201
+ if (typeof brokerAddr == "undefined") {
202
+ brokerAddr = nodeSDKTypes_1.ZERO_ADDRESS;
203
+ }
204
+ poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
205
+ return [4 /*yield*/, this.proxyContract.queryExchangeFee(poolId, this.traderAddr, brokerAddr)];
206
+ case 1:
207
+ feeTbps = _a.sent();
208
+ return [2 /*return*/, feeTbps / 100000];
209
+ }
210
+ });
211
+ });
212
+ };
213
+ /**
214
+ * Exponentially weighted EMA of the total USD trading volume of all trades performed by this trader.
215
+ * The weights are chosen so that in average this coincides with the 30 day volume.
216
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
217
+ * @example
218
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
219
+ * async function main() {
220
+ * console.log(AccountTrade);
221
+ * // setup (authentication required, PK is an environment variable with a private key)
222
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
223
+ * const pk: string = <string>process.env.PK;
224
+ * let accTrade = new AccountTrade(config, pk);
225
+ * await accTrade.createProxyInstance();
226
+ * // query 30 day volume
227
+ * let vol = await accTrade.getCurrentTraderVolume("MATIC");
228
+ * console.log(vol);
229
+ * }
230
+ * main();
231
+ *
232
+ * @returns {number} Current trading volume for this trader, in USD.
233
+ */
234
+ AccountTrade.prototype.getCurrentTraderVolume = function (poolSymbolName) {
235
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
236
+ var poolId, volume;
237
+ return tslib_1.__generator(this, function (_a) {
238
+ switch (_a.label) {
239
+ case 0:
240
+ if (this.proxyContract == null || this.signer == null) {
241
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
242
+ }
243
+ poolId = writeAccessHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
244
+ return [4 /*yield*/, this.proxyContract.getCurrentTraderVolume(poolId, this.traderAddr)];
245
+ case 1:
246
+ volume = _a.sent();
247
+ return [2 /*return*/, (0, d8XMath_1.ABK64x64ToFloat)(volume)];
248
+ }
249
+ });
250
+ });
251
+ };
252
+ /**
253
+ *
254
+ * @param symbol Symbol of the form ETH-USD-MATIC.
255
+ * @example
256
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
257
+ * async function main() {
258
+ * console.log(AccountTrade);
259
+ * // setup (authentication required, PK is an environment variable with a private key)
260
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
261
+ * const pk: string = <string>process.env.PK;
262
+ * let accTrade = new AccountTrade(config, pk);
263
+ * await accTrade.createProxyInstance();
264
+ * // get order IDs
265
+ * let orderIds = await accTrade.getOrderIds("MATIC-USD-MATIC");
266
+ * console.log(orderIds);
267
+ * }
268
+ * main();
269
+ *
270
+ * @returns {string[]} Array of Ids for all the orders currently open by this trader.
271
+ */
272
+ AccountTrade.prototype.getOrderIds = function (symbol) {
273
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
274
+ var orderBookContract;
275
+ return tslib_1.__generator(this, function (_a) {
276
+ switch (_a.label) {
277
+ case 0:
278
+ if (this.proxyContract == null || this.signer == null) {
279
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
280
+ }
281
+ orderBookContract = this.getOrderBookContract(symbol);
282
+ return [4 /*yield*/, marketData_1.default.orderIdsOfTrader(this.traderAddr, orderBookContract)];
283
+ case 1: return [2 /*return*/, _a.sent()];
284
+ }
285
+ });
286
+ });
287
+ };
288
+ /**
289
+ * Static order function
290
+ * @param order order type (not SmartContractOrder but Order)
291
+ * @param traderAddr trader address
292
+ * @param symbolToPerpetualMap maps the symbol (MATIC-USD-MATIC)-type format to the perpetual id
293
+ * @param proxyContract contract instance of D8X perpetuals
294
+ * @param orderBookContract order book contract or null
295
+ * @param chainId chain Id of network
296
+ * @param signer instance of ethers wallet that can write
297
+ * @param gasLimit gas limit to be used for the trade
298
+ * @returns [transaction hash, order id]
299
+ * @ignore
300
+ */
301
+ AccountTrade.prototype._order = function (order, traderAddr, symbolToPerpetualMap, proxyContract, orderBookContract, chainId, signer, gasLimit, parentChildIds) {
302
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
303
+ var scOrder, clientOrder, tx, _a, signature, digest, id;
304
+ return tslib_1.__generator(this, function (_b) {
305
+ switch (_b.label) {
306
+ case 0:
307
+ scOrder = AccountTrade.toSmartContractOrder(order, traderAddr, symbolToPerpetualMap);
308
+ clientOrder = AccountTrade.fromSmartContratOrderToClientOrder(scOrder, parentChildIds);
309
+ return [4 /*yield*/, this._createSignature(scOrder, chainId, true, signer, proxyContract.address)];
310
+ case 1:
311
+ _a = tslib_1.__read.apply(void 0, [_b.sent(), 2]), signature = _a[0], digest = _a[1];
312
+ return [4 /*yield*/, orderBookContract.postOrder(clientOrder, signature, { gasLimit: gasLimit })];
313
+ case 2:
314
+ tx = _b.sent();
315
+ return [4 /*yield*/, this.digestTool.createOrderId(digest)];
316
+ case 3:
317
+ id = _b.sent();
318
+ return [2 /*return*/, { tx: tx, orderId: id }];
319
+ }
320
+ });
321
+ });
322
+ };
323
+ AccountTrade.prototype._cancelOrder = function (symbol, orderId, orderBookContract, submission) {
324
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
325
+ var scOrder, _a, signature;
326
+ return tslib_1.__generator(this, function (_b) {
327
+ switch (_b.label) {
328
+ case 0:
329
+ if (orderBookContract == null || this.signer == null) {
330
+ throw Error("Order Book contract for symbol ".concat(symbol, " or signer not defined"));
331
+ }
332
+ if (!(submission == undefined)) return [3 /*break*/, 2];
333
+ return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
334
+ case 1:
335
+ submission = _b.sent();
336
+ _b.label = 2;
337
+ case 2: return [4 /*yield*/, orderBookContract.orderOfDigest(orderId)];
338
+ case 3:
339
+ scOrder = _b.sent();
340
+ return [4 /*yield*/, this._createSignature(scOrder, this.chainId, false, this.signer, this.proxyAddr)];
341
+ case 4:
342
+ _a = tslib_1.__read.apply(void 0, [_b.sent(), 1]), signature = _a[0];
343
+ return [4 /*yield*/, orderBookContract.cancelOrder(orderId, signature, submission.priceFeedVaas, submission.timestamps, {
344
+ value: submission.timestamps.length * this.PRICE_UPDATE_FEE_GWEI,
345
+ })];
346
+ case 5: return [2 /*return*/, _b.sent()];
347
+ }
348
+ });
349
+ });
350
+ };
351
+ /**
352
+ * Creates a signature
353
+ * @param order smart-contract-type order
354
+ * @param chainId chainId of network
355
+ * @param isNewOrder true unless we cancel
356
+ * @param signer ethereum-type wallet
357
+ * @param proxyAddress address of the contract
358
+ * @returns signature as string
359
+ * @ignore
360
+ */
361
+ AccountTrade.prototype._createSignature = function (order, chainId, isNewOrder, signer, proxyAddress) {
362
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
363
+ var digest, digestBuffer, signature;
364
+ return tslib_1.__generator(this, function (_a) {
365
+ switch (_a.label) {
366
+ case 0: return [4 /*yield*/, this.digestTool.createDigest(order, chainId, isNewOrder, proxyAddress)];
367
+ case 1:
368
+ digest = _a.sent();
369
+ digestBuffer = buffer_1.Buffer.from(digest.substring(2, digest.length), "hex");
370
+ return [4 /*yield*/, signer.signMessage(digestBuffer)];
371
+ case 2:
372
+ signature = _a.sent();
373
+ return [2 /*return*/, [signature, digest]];
374
+ }
375
+ });
376
+ });
377
+ };
378
+ /**
379
+ *
380
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
381
+ * @param {number} amount How much collateral to add, in units of collateral currency, e.g. MATIC
382
+ */
383
+ AccountTrade.prototype.addCollateral = function (symbol, amount, submission) {
384
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
385
+ var perpId, fAmountCC;
386
+ return tslib_1.__generator(this, function (_a) {
387
+ switch (_a.label) {
388
+ case 0:
389
+ if (this.proxyContract == null || this.signer == null) {
390
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
391
+ }
392
+ perpId = this.getPerpIdFromSymbol(symbol);
393
+ fAmountCC = (0, d8XMath_1.floatToABK64x64)(amount);
394
+ if (!(submission == undefined)) return [3 /*break*/, 2];
395
+ return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
396
+ case 1:
397
+ submission = _a.sent();
398
+ _a.label = 2;
399
+ case 2: return [4 /*yield*/, this.proxyContract.deposit(perpId, fAmountCC, submission.priceFeedVaas, submission.timestamps, {
400
+ gasLimit: this.gasLimit,
401
+ value: this.PRICE_UPDATE_FEE_GWEI * submission.priceFeedVaas.length,
402
+ })];
403
+ case 3: return [2 /*return*/, _a.sent()];
404
+ }
405
+ });
406
+ });
407
+ };
408
+ /**
409
+ *
410
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
411
+ * @param {number} amount How much collateral to remove, in units of collateral currency, e.g. MATIC
412
+ */
413
+ AccountTrade.prototype.removeCollateral = function (symbol, amount, submission) {
414
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
415
+ var perpId, fAmountCC;
416
+ return tslib_1.__generator(this, function (_a) {
417
+ switch (_a.label) {
418
+ case 0:
419
+ if (this.proxyContract == null || this.signer == null) {
420
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
421
+ }
422
+ perpId = this.getPerpIdFromSymbol(symbol);
423
+ fAmountCC = (0, d8XMath_1.floatToABK64x64)(amount);
424
+ if (!(submission == undefined)) return [3 /*break*/, 2];
425
+ return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
426
+ case 1:
427
+ submission = _a.sent();
428
+ _a.label = 2;
429
+ case 2: return [4 /*yield*/, this.proxyContract.withdraw(perpId, fAmountCC, submission.priceFeedVaas, submission.timestamps, {
430
+ gasLimit: this.gasLimit,
431
+ value: this.PRICE_UPDATE_FEE_GWEI * submission.priceFeedVaas.length,
432
+ })];
433
+ case 3: return [2 /*return*/, _a.sent()];
434
+ }
435
+ });
436
+ });
437
+ };
438
+ return AccountTrade;
439
+ }(writeAccessHandler_1.default));
440
+ exports.default = AccountTrade;
441
+ //# sourceMappingURL=accountTrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountTrade.js","sourceRoot":"","sources":["../../src/accountTrade.ts"],"names":[],"mappings":"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"}