@d8x/perpetuals-sdk 0.7.6 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/accountTrade.js +243 -134
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.js +290 -144
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/config/priceFeedConfig.json +1 -1
- package/dist/cjs/contracts/factories/ERC20__factory.js +12 -9
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +12 -9
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +12 -9
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +12 -9
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +12 -9
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.js +12 -9
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/index.js +1 -1
- package/dist/cjs/d8XMath.js +66 -65
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/index.js +11 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/liquidatorTool.js +137 -80
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.js +65 -33
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.js +978 -635
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.js +22 -10
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderReferrerTool.js +323 -200
- package/dist/cjs/orderReferrerTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.js +550 -404
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.js +190 -129
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +335 -223
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/traderDigests.js +23 -20
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.js +87 -54
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/triangulator.js +38 -34
- package/dist/cjs/triangulator.js.map +1 -1
- package/dist/cjs/utils.js +32 -18
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/writeAccessHandler.js +112 -78
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.js +237 -126
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.js +284 -136
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/config/priceFeedConfig.json +1 -1
- package/dist/esm/contracts/factories/ERC20__factory.js +12 -8
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +12 -8
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +12 -8
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +12 -8
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +12 -8
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.js +12 -8
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.js +64 -63
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.js +136 -77
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.js +63 -29
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.js +971 -626
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.js +48 -36
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderReferrerTool.js +319 -194
- package/dist/esm/orderReferrerTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.js +542 -394
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.js +188 -126
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +332 -218
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/traderDigests.js +19 -15
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.js +83 -48
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/triangulator.js +39 -34
- package/dist/esm/triangulator.js.map +1 -1
- package/dist/esm/utils.js +30 -16
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/writeAccessHandler.js +105 -69
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +1 -1
- package/src/accountTrade.ts +6 -1
- package/src/config/priceFeedConfig.json +1 -1
- package/src/orderReferrerTool.ts +2 -0
- package/src/version.ts +1 -1
package/dist/cjs/brokerTool.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var abi_1 = require("@ethersproject/abi");
|
|
5
|
+
var keccak256_1 = require("@ethersproject/keccak256");
|
|
6
|
+
var d8XMath_1 = require("./d8XMath");
|
|
7
|
+
var perpetualDataHandler_1 = tslib_1.__importDefault(require("./perpetualDataHandler"));
|
|
8
|
+
var writeAccessHandler_1 = tslib_1.__importDefault(require("./writeAccessHandler"));
|
|
9
|
+
var buffer_1 = require("buffer");
|
|
10
|
+
var accountTrade_1 = tslib_1.__importDefault(require("./accountTrade"));
|
|
11
11
|
/**
|
|
12
12
|
* Functions for brokers to determine fees, deposit lots, and sign-up traders.
|
|
13
13
|
* This class requires a private key and executes smart-contract interactions that
|
|
14
14
|
* require gas-payments.
|
|
15
15
|
* @extends WriteAccessHandler
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
var BrokerTool = /** @class */ (function (_super) {
|
|
18
|
+
tslib_1.__extends(BrokerTool, _super);
|
|
18
19
|
/**
|
|
19
20
|
* Constructor
|
|
20
21
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -36,8 +37,8 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
36
37
|
* main();
|
|
37
38
|
*
|
|
38
39
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
function BrokerTool(config, signer) {
|
|
41
|
+
return _super.call(this, config, signer) || this;
|
|
41
42
|
}
|
|
42
43
|
// Fee getters
|
|
43
44
|
/**
|
|
@@ -61,18 +62,28 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
61
62
|
*
|
|
62
63
|
* @returns {number} Exchange fee for this broker, in decimals (i.e. 0.1% is 0.001)
|
|
63
64
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
65
|
+
BrokerTool.prototype.getBrokerInducedFee = function (poolSymbolName, overrides) {
|
|
66
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
67
|
+
var poolId, feeTbps, fee;
|
|
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
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
75
|
+
return [4 /*yield*/, this.proxyContract.getBrokerInducedFee(poolId, this.traderAddr, overrides || {})];
|
|
76
|
+
case 1:
|
|
77
|
+
feeTbps = _a.sent();
|
|
78
|
+
fee = feeTbps / 100000;
|
|
79
|
+
if (fee == 0.65535) {
|
|
80
|
+
return [2 /*return*/, undefined];
|
|
81
|
+
}
|
|
82
|
+
return [2 /*return*/, fee];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
};
|
|
76
87
|
/**
|
|
77
88
|
* Determine the exchange fee based on lots purchased by this broker.
|
|
78
89
|
* The final exchange fee that this broker can offer to traders that trade through him is equal to
|
|
@@ -96,22 +107,32 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
96
107
|
*
|
|
97
108
|
* @returns {number} Fee based solely on this broker's designation, in decimals (i.e. 0.1% is 0.001).
|
|
98
109
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
BrokerTool.prototype.getFeeForBrokerDesignation = function (poolSymbolName, lots, overrides) {
|
|
111
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
112
|
+
var brokerDesignation, feeTbps;
|
|
113
|
+
return tslib_1.__generator(this, function (_a) {
|
|
114
|
+
switch (_a.label) {
|
|
115
|
+
case 0:
|
|
116
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
117
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
118
|
+
}
|
|
119
|
+
if (!(typeof lots == "undefined")) return [3 /*break*/, 2];
|
|
120
|
+
return [4 /*yield*/, this.getBrokerDesignation(poolSymbolName)];
|
|
121
|
+
case 1:
|
|
122
|
+
brokerDesignation = _a.sent();
|
|
123
|
+
brokerDesignation = brokerDesignation > 0 ? brokerDesignation : 0;
|
|
124
|
+
return [3 /*break*/, 3];
|
|
125
|
+
case 2:
|
|
126
|
+
brokerDesignation = lots;
|
|
127
|
+
_a.label = 3;
|
|
128
|
+
case 3: return [4 /*yield*/, this.proxyContract.getFeeForBrokerDesignation(brokerDesignation, overrides || {})];
|
|
129
|
+
case 4:
|
|
130
|
+
feeTbps = _a.sent();
|
|
131
|
+
return [2 /*return*/, feeTbps / 100000];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
};
|
|
115
136
|
/**
|
|
116
137
|
* Determine the exchange fee based on volume traded under this broker.
|
|
117
138
|
* The final exchange fee that this broker can offer to traders that trade through him is equal to
|
|
@@ -134,14 +155,24 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
134
155
|
*
|
|
135
156
|
* @returns {number} Fee based solely on a broker's traded volume in the corresponding pool, in decimals (i.e. 0.1% is 0.001).
|
|
136
157
|
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
158
|
+
BrokerTool.prototype.getFeeForBrokerVolume = function (poolSymbolName, overrides) {
|
|
159
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
160
|
+
var poolId, feeTbps;
|
|
161
|
+
return tslib_1.__generator(this, function (_a) {
|
|
162
|
+
switch (_a.label) {
|
|
163
|
+
case 0:
|
|
164
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
165
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
166
|
+
}
|
|
167
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
168
|
+
return [4 /*yield*/, this.proxyContract.getFeeForBrokerVolume(poolId, this.traderAddr, overrides || {})];
|
|
169
|
+
case 1:
|
|
170
|
+
feeTbps = _a.sent();
|
|
171
|
+
return [2 /*return*/, feeTbps / 100000];
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
};
|
|
145
176
|
/**
|
|
146
177
|
* Determine the exchange fee based on the current D8X balance in a broker's wallet.
|
|
147
178
|
* The final exchange fee that this broker can offer to traders that trade through him is equal to
|
|
@@ -164,16 +195,26 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
164
195
|
*
|
|
165
196
|
* @returns {number} Fee based solely on a broker's D8X balance, in decimals (i.e. 0.1% is 0.001).
|
|
166
197
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
198
|
+
BrokerTool.prototype.getFeeForBrokerStake = function (brokerAddr, overrides) {
|
|
199
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
200
|
+
var feeTbps;
|
|
201
|
+
return tslib_1.__generator(this, function (_a) {
|
|
202
|
+
switch (_a.label) {
|
|
203
|
+
case 0:
|
|
204
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
205
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
206
|
+
}
|
|
207
|
+
if (typeof brokerAddr == "undefined") {
|
|
208
|
+
brokerAddr = this.traderAddr;
|
|
209
|
+
}
|
|
210
|
+
return [4 /*yield*/, this.proxyContract.getFeeForBrokerStake(brokerAddr, overrides || {})];
|
|
211
|
+
case 1:
|
|
212
|
+
feeTbps = _a.sent();
|
|
213
|
+
return [2 /*return*/, feeTbps / 100000];
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
};
|
|
177
218
|
/**
|
|
178
219
|
* Determine exchange fee based on an order and a trader.
|
|
179
220
|
* This is the fee charged by the exchange only, excluding the broker fee,
|
|
@@ -209,14 +250,24 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
209
250
|
*
|
|
210
251
|
* @returns {number} Fee in decimals (i.e. 0.1% is 0.001).
|
|
211
252
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
253
|
+
BrokerTool.prototype.determineExchangeFee = function (order, traderAddr, overrides) {
|
|
254
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
255
|
+
var scOrder, feeTbps;
|
|
256
|
+
return tslib_1.__generator(this, function (_a) {
|
|
257
|
+
switch (_a.label) {
|
|
258
|
+
case 0:
|
|
259
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
260
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
261
|
+
}
|
|
262
|
+
scOrder = accountTrade_1.default.toSmartContractOrder(order, traderAddr, this.symbolToPerpStaticInfo);
|
|
263
|
+
return [4 /*yield*/, this.proxyContract.determineExchangeFee(scOrder, overrides || {})];
|
|
264
|
+
case 1:
|
|
265
|
+
feeTbps = _a.sent();
|
|
266
|
+
return [2 /*return*/, feeTbps / 100000];
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
};
|
|
220
271
|
// Volume
|
|
221
272
|
/**
|
|
222
273
|
* Exponentially weighted EMA of the total trading volume of all trades performed under this broker.
|
|
@@ -239,14 +290,24 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
239
290
|
*
|
|
240
291
|
* @returns {number} Current trading volume for this broker, in USD.
|
|
241
292
|
*/
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
293
|
+
BrokerTool.prototype.getCurrentBrokerVolume = function (poolSymbolName, overrides) {
|
|
294
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
295
|
+
var poolId, volume;
|
|
296
|
+
return tslib_1.__generator(this, function (_a) {
|
|
297
|
+
switch (_a.label) {
|
|
298
|
+
case 0:
|
|
299
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
300
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
301
|
+
}
|
|
302
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
303
|
+
return [4 /*yield*/, this.proxyContract.getCurrentBrokerVolume(poolId, this.traderAddr, overrides || {})];
|
|
304
|
+
case 1:
|
|
305
|
+
volume = _a.sent();
|
|
306
|
+
return [2 /*return*/, (0, d8XMath_1.ABK64x64ToFloat)(volume)];
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
};
|
|
250
311
|
// Lots
|
|
251
312
|
/**
|
|
252
313
|
* Total amount of collateral currency a broker has to deposit into the default fund to purchase one lot.
|
|
@@ -269,15 +330,25 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
269
330
|
*
|
|
270
331
|
* @returns {number} Broker lot size in a given pool's currency, e.g. in MATIC for poolSymbolName MATIC.
|
|
271
332
|
*/
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
333
|
+
BrokerTool.prototype.getLotSize = function (poolSymbolName, overrides) {
|
|
334
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
335
|
+
var poolId, pool, lot;
|
|
336
|
+
return tslib_1.__generator(this, function (_a) {
|
|
337
|
+
switch (_a.label) {
|
|
338
|
+
case 0:
|
|
339
|
+
if (this.proxyContract == null) {
|
|
340
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
341
|
+
}
|
|
342
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
343
|
+
return [4 /*yield*/, this.proxyContract.getLiquidityPool(poolId, overrides || {})];
|
|
344
|
+
case 1:
|
|
345
|
+
pool = _a.sent();
|
|
346
|
+
lot = (0, d8XMath_1.ABK64x64ToFloat)(pool.fBrokerCollateralLotSize);
|
|
347
|
+
return [2 /*return*/, lot];
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
};
|
|
281
352
|
/**
|
|
282
353
|
* Provides information on how many lots a broker purchased for a given pool.
|
|
283
354
|
* This is relevant to determine the broker's fee tier.
|
|
@@ -299,14 +370,24 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
299
370
|
*
|
|
300
371
|
* @returns {number} Number of lots purchased by this broker.
|
|
301
372
|
*/
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
373
|
+
BrokerTool.prototype.getBrokerDesignation = function (poolSymbolName, overrides) {
|
|
374
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
375
|
+
var poolId, designation;
|
|
376
|
+
return tslib_1.__generator(this, function (_a) {
|
|
377
|
+
switch (_a.label) {
|
|
378
|
+
case 0:
|
|
379
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
380
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
381
|
+
}
|
|
382
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
383
|
+
return [4 /*yield*/, this.proxyContract.getBrokerDesignation(poolId, this.traderAddr, overrides || {})];
|
|
384
|
+
case 1:
|
|
385
|
+
designation = _a.sent();
|
|
386
|
+
return [2 /*return*/, designation];
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
};
|
|
310
391
|
/**
|
|
311
392
|
* Deposit lots to the default fund of a given pool.
|
|
312
393
|
* @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
|
|
@@ -329,14 +410,24 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
329
410
|
*
|
|
330
411
|
* @returns {ContractTransaction} ContractTransaction object.
|
|
331
412
|
*/
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
413
|
+
BrokerTool.prototype.brokerDepositToDefaultFund = function (poolSymbolName, lots, overrides) {
|
|
414
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
415
|
+
var poolId, tx;
|
|
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
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
423
|
+
return [4 /*yield*/, this.proxyContract.brokerDepositToDefaultFund(poolId, lots, overrides || {})];
|
|
424
|
+
case 1:
|
|
425
|
+
tx = _a.sent();
|
|
426
|
+
return [2 /*return*/, tx];
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
});
|
|
430
|
+
};
|
|
340
431
|
// Signatures
|
|
341
432
|
/**
|
|
342
433
|
* Adds this broker's signature to an order. An order signed by a broker is considered
|
|
@@ -370,20 +461,38 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
370
461
|
*
|
|
371
462
|
* @returns {Order} An order signed by this broker, which can be submitted directly with AccountTrade.order.
|
|
372
463
|
*/
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
464
|
+
BrokerTool.prototype.signOrder = function (order, traderAddr) {
|
|
465
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
466
|
+
var _a;
|
|
467
|
+
return tslib_1.__generator(this, function (_b) {
|
|
468
|
+
switch (_b.label) {
|
|
469
|
+
case 0:
|
|
470
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
471
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
472
|
+
}
|
|
473
|
+
order.brokerAddr = this.traderAddr;
|
|
474
|
+
if (order.deadline == undefined) {
|
|
475
|
+
throw Error("brokerTool::signOrder: deadline not defined");
|
|
476
|
+
}
|
|
477
|
+
_a = order;
|
|
478
|
+
return [4 /*yield*/, BrokerTool._signOrder(order.symbol, order.brokerFeeTbps, traderAddr, order.deadline, this.signer, this.chainId, this.proxyAddr, this.symbolToPerpStaticInfo)];
|
|
479
|
+
case 1:
|
|
480
|
+
_a.brokerSignature = _b.sent();
|
|
481
|
+
return [2 /*return*/, order];
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
});
|
|
485
|
+
};
|
|
486
|
+
BrokerTool.prototype.signSCOrder = function (scOrder) {
|
|
487
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
488
|
+
return tslib_1.__generator(this, function (_a) {
|
|
489
|
+
switch (_a.label) {
|
|
490
|
+
case 0: return [4 /*yield*/, BrokerTool._signOrderFromRawData(scOrder.iPerpetualId, scOrder.brokerFeeTbps, scOrder.traderAddr, scOrder.iDeadline, this.signer, this.chainId, this.proxyAddr)];
|
|
491
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
});
|
|
495
|
+
};
|
|
387
496
|
/**
|
|
388
497
|
* Creates a signature that a trader can use to place orders with this broker.
|
|
389
498
|
* This signature can be used to pass on to a trader who wishes to trade via this SDK or directly on the blockchain.
|
|
@@ -394,29 +503,55 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
394
503
|
* @returns {string} Broker signature approving this trader's fee, symbol, and deadline.
|
|
395
504
|
* @ignore
|
|
396
505
|
*/
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
return
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
506
|
+
BrokerTool.prototype.createSignatureForTrader = function (traderAddr, symbol, brokerFee, deadline) {
|
|
507
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
508
|
+
var brokerFeeTbps;
|
|
509
|
+
return tslib_1.__generator(this, function (_a) {
|
|
510
|
+
switch (_a.label) {
|
|
511
|
+
case 0:
|
|
512
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
513
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
514
|
+
}
|
|
515
|
+
brokerFeeTbps = 100000 * brokerFee;
|
|
516
|
+
return [4 /*yield*/, BrokerTool._signOrder(symbol, brokerFeeTbps, traderAddr, deadline, this.signer, this.chainId, this.proxyAddr, this.symbolToPerpStaticInfo)];
|
|
517
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
});
|
|
521
|
+
};
|
|
522
|
+
BrokerTool._signOrderFromRawData = function (iPerpetualId, brokerFeeTbps, traderAddr, iDeadline, signer, chainId, proxyAddress) {
|
|
523
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
524
|
+
var NAME, DOMAIN_TYPEHASH, abiCoder, domainSeparator, TRADE_BROKER_TYPEHASH, structHash, digest, digestBuffer;
|
|
525
|
+
return tslib_1.__generator(this, function (_a) {
|
|
526
|
+
switch (_a.label) {
|
|
527
|
+
case 0:
|
|
528
|
+
NAME = "Perpetual Trade Manager";
|
|
529
|
+
DOMAIN_TYPEHASH = (0, keccak256_1.keccak256)(buffer_1.Buffer.from("EIP712Domain(string name,uint256 chainId,address verifyingContract)"));
|
|
530
|
+
abiCoder = abi_1.defaultAbiCoder;
|
|
531
|
+
domainSeparator = (0, keccak256_1.keccak256)(abiCoder.encode(["bytes32", "bytes32", "uint256", "address"], [DOMAIN_TYPEHASH, (0, keccak256_1.keccak256)(buffer_1.Buffer.from(NAME)), chainId, proxyAddress]));
|
|
532
|
+
TRADE_BROKER_TYPEHASH = (0, keccak256_1.keccak256)(buffer_1.Buffer.from("Order(uint24 iPerpetualId,uint16 brokerFeeTbps,address traderAddr,uint32 iDeadline)"));
|
|
533
|
+
structHash = (0, keccak256_1.keccak256)(abiCoder.encode(["bytes32", "uint24", "uint16", "address", "uint32"], [TRADE_BROKER_TYPEHASH, iPerpetualId, brokerFeeTbps, traderAddr, iDeadline]));
|
|
534
|
+
digest = (0, keccak256_1.keccak256)(abiCoder.encode(["bytes32", "bytes32"], [domainSeparator, structHash]));
|
|
535
|
+
digestBuffer = buffer_1.Buffer.from(digest.substring(2, digest.length), "hex");
|
|
536
|
+
return [4 /*yield*/, signer.signMessage(digestBuffer)];
|
|
537
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
538
|
+
}
|
|
539
|
+
});
|
|
540
|
+
});
|
|
541
|
+
};
|
|
542
|
+
BrokerTool._signOrder = function (symbol, brokerFeeTbps, traderAddr, iDeadline, signer, chainId, proxyAddress, symbolToPerpStaticInfo) {
|
|
543
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
544
|
+
var iPerpetualId;
|
|
545
|
+
return tslib_1.__generator(this, function (_a) {
|
|
546
|
+
switch (_a.label) {
|
|
547
|
+
case 0:
|
|
548
|
+
iPerpetualId = perpetualDataHandler_1.default.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
|
|
549
|
+
return [4 /*yield*/, BrokerTool._signOrderFromRawData(iPerpetualId, brokerFeeTbps, traderAddr, iDeadline, signer, chainId, proxyAddress)];
|
|
550
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
});
|
|
554
|
+
};
|
|
420
555
|
// Transfer ownership
|
|
421
556
|
/**
|
|
422
557
|
* Transfer ownership of a broker's status to a new wallet. This function transfers the values related to
|
|
@@ -441,14 +576,25 @@ class BrokerTool extends writeAccessHandler_1.default {
|
|
|
441
576
|
*
|
|
442
577
|
* @returns {ContractTransaction} ethers transaction object
|
|
443
578
|
*/
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
}
|
|
579
|
+
BrokerTool.prototype.transferOwnership = function (poolSymbolName, newAddress, overrides) {
|
|
580
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
581
|
+
var poolId, tx;
|
|
582
|
+
return tslib_1.__generator(this, function (_a) {
|
|
583
|
+
switch (_a.label) {
|
|
584
|
+
case 0:
|
|
585
|
+
if (this.proxyContract == null) {
|
|
586
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
587
|
+
}
|
|
588
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
589
|
+
return [4 /*yield*/, this.proxyContract.transferBrokerOwnership(poolId, newAddress, overrides || {})];
|
|
590
|
+
case 1:
|
|
591
|
+
tx = _a.sent();
|
|
592
|
+
return [2 /*return*/, tx];
|
|
593
|
+
}
|
|
594
|
+
});
|
|
595
|
+
});
|
|
596
|
+
};
|
|
597
|
+
return BrokerTool;
|
|
598
|
+
}(writeAccessHandler_1.default));
|
|
453
599
|
exports.default = BrokerTool;
|
|
454
600
|
//# sourceMappingURL=brokerTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brokerTool.js","sourceRoot":"","sources":["../../src/brokerTool.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"brokerTool.js","sourceRoot":"","sources":["../../src/brokerTool.ts"],"names":[],"mappings":"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"}
|