@d8x/perpetuals-sdk 0.1.12 → 0.2.0

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 (165) hide show
  1. package/dist/cjs/abi/testnet/IPerpetualManager.json +5215 -0
  2. package/dist/cjs/abi/testnet/LimitOrderBook.json +1075 -0
  3. package/dist/cjs/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  4. package/dist/cjs/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  5. package/dist/cjs/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  6. package/dist/cjs/accountTrade.js +441 -0
  7. package/dist/cjs/accountTrade.js.map +1 -0
  8. package/dist/{src → cjs}/brokerTool.js +31 -84
  9. package/dist/cjs/brokerTool.js.map +1 -0
  10. package/dist/cjs/config/defaultConfig.json +47 -0
  11. package/dist/cjs/config/mockSwap.json +4 -0
  12. package/dist/cjs/config/priceFeedConfig.json +104 -0
  13. package/dist/cjs/config/symbolList.json +13 -0
  14. package/dist/cjs/d8XMath.js.map +1 -0
  15. package/dist/cjs/index.js +29 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/liquidatorTool.js +287 -0
  18. package/dist/cjs/liquidatorTool.js.map +1 -0
  19. package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
  20. package/dist/cjs/liquidityProviderTool.js.map +1 -0
  21. package/dist/{src → cjs}/marketData.js +52 -134
  22. package/dist/cjs/marketData.js.map +1 -0
  23. package/dist/{src → cjs}/nodeSDKTypes.d.ts +5 -5
  24. package/dist/cjs/nodeSDKTypes.js +64 -0
  25. package/dist/cjs/nodeSDKTypes.js.map +1 -0
  26. package/dist/{src → cjs}/orderReferrerTool.d.ts +12 -5
  27. package/dist/{src → cjs}/orderReferrerTool.js +114 -112
  28. package/dist/cjs/orderReferrerTool.js.map +1 -0
  29. package/dist/{src → cjs}/perpetualDataHandler.d.ts +1 -1
  30. package/dist/{src → cjs}/perpetualDataHandler.js +47 -109
  31. package/dist/cjs/perpetualDataHandler.js.map +1 -0
  32. package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
  33. package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
  34. package/dist/cjs/perpetualEventHandler.js.map +1 -0
  35. package/dist/cjs/priceFeeds.js +466 -0
  36. package/dist/cjs/priceFeeds.js.map +1 -0
  37. package/dist/{src → cjs}/traderDigests.js +7 -43
  38. package/dist/cjs/traderDigests.js.map +1 -0
  39. package/dist/{src → cjs}/traderInterface.js +13 -66
  40. package/dist/cjs/traderInterface.js.map +1 -0
  41. package/dist/{src → cjs}/triangulator.js +2 -17
  42. package/dist/cjs/triangulator.js.map +1 -0
  43. package/dist/{src → cjs}/utils.js +3 -29
  44. package/dist/cjs/utils.js.map +1 -0
  45. package/dist/cjs/version.d.ts +1 -0
  46. package/dist/{src → cjs}/version.js +1 -1
  47. package/dist/cjs/version.js.map +1 -0
  48. package/dist/{src → cjs}/writeAccessHandler.js +12 -65
  49. package/dist/cjs/writeAccessHandler.js.map +1 -0
  50. package/dist/esm/abi/ERC20.json +288 -0
  51. package/dist/esm/abi/MockTokenSwap.json +186 -0
  52. package/dist/{abi/testnet → esm/abi/central-park}/IPerpetualManager.json +404 -214
  53. package/dist/{abi/testnet → esm/abi/central-park}/LimitOrderBook.json +197 -15
  54. package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
  55. package/dist/esm/abi/testnet/IPerpetualManager.json +5215 -0
  56. package/dist/esm/abi/testnet/LimitOrderBook.json +1075 -0
  57. package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
  58. package/dist/esm/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  59. package/dist/esm/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  60. package/dist/esm/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  61. package/dist/esm/accountTrade.d.ts +221 -0
  62. package/dist/{src → esm}/accountTrade.js +22 -93
  63. package/dist/esm/accountTrade.js.map +1 -0
  64. package/dist/esm/brokerTool.d.ts +318 -0
  65. package/dist/esm/brokerTool.js +572 -0
  66. package/dist/esm/brokerTool.js.map +1 -0
  67. package/dist/esm/config/defaultConfig.json +47 -0
  68. package/dist/esm/config/mockSwap.json +4 -0
  69. package/dist/esm/config/priceFeedConfig.json +104 -0
  70. package/dist/esm/config/symbolList.json +13 -0
  71. package/dist/esm/d8XMath.d.ts +122 -0
  72. package/dist/esm/d8XMath.js +247 -0
  73. package/dist/esm/d8XMath.js.map +1 -0
  74. package/{src/index.ts → dist/esm/index.d.ts} +1 -15
  75. package/dist/esm/index.js +16 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/liquidatorTool.d.ts +158 -0
  78. package/dist/{src → esm}/liquidatorTool.js +10 -65
  79. package/dist/esm/liquidatorTool.js.map +1 -0
  80. package/dist/esm/liquidityProviderTool.d.ts +126 -0
  81. package/dist/esm/liquidityProviderTool.js +218 -0
  82. package/dist/esm/liquidityProviderTool.js.map +1 -0
  83. package/dist/esm/marketData.d.ts +309 -0
  84. package/dist/esm/marketData.js +1007 -0
  85. package/dist/esm/marketData.js.map +1 -0
  86. package/dist/esm/nodeSDKTypes.d.ts +266 -0
  87. package/dist/esm/nodeSDKTypes.js +60 -0
  88. package/dist/esm/nodeSDKTypes.js.map +1 -0
  89. package/dist/esm/orderReferrerTool.d.ts +196 -0
  90. package/dist/esm/orderReferrerTool.js +491 -0
  91. package/dist/esm/orderReferrerTool.js.map +1 -0
  92. package/dist/esm/perpetualDataHandler.d.ts +220 -0
  93. package/dist/esm/perpetualDataHandler.js +1060 -0
  94. package/dist/esm/perpetualDataHandler.js.map +1 -0
  95. package/dist/esm/perpetualEventHandler.d.ts +179 -0
  96. package/dist/esm/perpetualEventHandler.js +435 -0
  97. package/dist/esm/perpetualEventHandler.js.map +1 -0
  98. package/dist/esm/priceFeeds.d.ts +115 -0
  99. package/dist/{src → esm}/priceFeeds.js +16 -83
  100. package/dist/esm/priceFeeds.js.map +1 -0
  101. package/dist/esm/traderDigests.d.ts +21 -0
  102. package/dist/esm/traderDigests.js +80 -0
  103. package/dist/esm/traderDigests.js.map +1 -0
  104. package/dist/esm/traderInterface.d.ts +79 -0
  105. package/dist/esm/traderInterface.js +196 -0
  106. package/dist/esm/traderInterface.js.map +1 -0
  107. package/dist/esm/triangulator.d.ts +27 -0
  108. package/dist/esm/triangulator.js +110 -0
  109. package/dist/esm/triangulator.js.map +1 -0
  110. package/dist/esm/utils.d.ts +59 -0
  111. package/dist/esm/utils.js +138 -0
  112. package/dist/esm/utils.js.map +1 -0
  113. package/dist/esm/version.d.ts +1 -0
  114. package/dist/esm/version.js +2 -0
  115. package/dist/esm/version.js.map +1 -0
  116. package/dist/esm/writeAccessHandler.d.ts +50 -0
  117. package/dist/esm/writeAccessHandler.js +157 -0
  118. package/dist/esm/writeAccessHandler.js.map +1 -0
  119. package/package.json +16 -26
  120. package/dist/bundle.js +0 -36793
  121. package/dist/config/defaultConfig.json +0 -47
  122. package/dist/config/mockSwap.json +0 -4
  123. package/dist/config/priceFeedConfig.json +0 -104
  124. package/dist/config/symbolList.json +0 -13
  125. package/dist/src/index.js +0 -45
  126. package/dist/src/nodeSDKTypes.js +0 -115
  127. package/dist/src/version.d.ts +0 -1
  128. package/module.d.ts +0 -1
  129. package/src/accountTrade.ts +0 -392
  130. package/src/brokerTool.ts +0 -507
  131. package/src/d8XMath.ts +0 -319
  132. package/src/liquidatorTool.ts +0 -258
  133. package/src/liquidityProviderTool.ts +0 -186
  134. package/src/marketData.ts +0 -946
  135. package/src/nodeSDKTypes.ts +0 -293
  136. package/src/orderReferrerTool.ts +0 -389
  137. package/src/perpetualDataHandler.ts +0 -1061
  138. package/src/perpetualEventHandler.ts +0 -455
  139. package/src/priceFeeds.ts +0 -381
  140. package/src/traderDigests.ts +0 -91
  141. package/src/traderInterface.ts +0 -159
  142. package/src/triangulator.ts +0 -105
  143. package/src/utils.ts +0 -134
  144. package/src/version.ts +0 -1
  145. package/src/writeAccessHandler.ts +0 -127
  146. /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
  147. /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
  148. /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
  149. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
  150. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
  151. /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
  152. /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
  153. /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
  154. /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
  155. /package/dist/{src → cjs}/d8XMath.js +0 -0
  156. /package/dist/{src → cjs}/index.d.ts +0 -0
  157. /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
  158. /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
  159. /package/dist/{src → cjs}/marketData.d.ts +0 -0
  160. /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
  161. /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
  162. /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
  163. /package/dist/{src → cjs}/triangulator.d.ts +0 -0
  164. /package/dist/{src → cjs}/utils.d.ts +0 -0
  165. /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
@@ -0,0 +1,572 @@
1
+ import { __awaiter, __extends, __generator } from "tslib";
2
+ import WriteAccessHandler from "./writeAccessHandler";
3
+ import PerpetualDataHandler from "./perpetualDataHandler";
4
+ import { ABK64x64ToFloat } from "./d8XMath";
5
+ import { BigNumber, ethers } from "ethers";
6
+ import AccountTrade from "./accountTrade";
7
+ import { Buffer } from "buffer";
8
+ /**
9
+ * Functions for brokers to determine fees, deposit lots, and sign-up traders.
10
+ * This class requires a private key and executes smart-contract interactions that
11
+ * require gas-payments.
12
+ * @extends WriteAccessHandler
13
+ */
14
+ var BrokerTool = /** @class */ (function (_super) {
15
+ __extends(BrokerTool, _super);
16
+ /**
17
+ * Constructor
18
+ * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
19
+ * readSDKConfig.
20
+ * @param {string} privateKey Private key of a broker.
21
+ * @example
22
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
23
+ * async function main() {
24
+ * console.log(BrokerTool);
25
+ * // load configuration for testnet
26
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
27
+ * // BrokerTool (authentication required, PK is an environment variable with a private key)
28
+ * const pk: string = <string>process.env.PK;
29
+ * let brokTool = new BrokerTool(config, pk);
30
+ * // Create a proxy instance to access the blockchain
31
+ * await brokTool.createProxyInstance();
32
+ * }
33
+ * main();
34
+ *
35
+ */
36
+ function BrokerTool(config, privateKey) {
37
+ return _super.call(this, config, privateKey) || this;
38
+ }
39
+ // Fee getters
40
+ /**
41
+ * Determine the exchange fee based on lots, traded volume, and D8X balance of this broker.
42
+ * This is the final exchange fee that this broker can offer to traders that trade through him.
43
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
44
+ * @example
45
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
46
+ * async function main() {
47
+ * console.log(BrokerTool);
48
+ * // setup (authentication required, PK is an environment variable with a private key)
49
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
50
+ * const pk: string = <string>process.env.PK;
51
+ * let brokTool = new BrokerTool(config, pk);
52
+ * await brokTool.createProxyInstance();
53
+ * // get broker induced fee
54
+ * let brokFee = await brokTool.getBrokerInducedFee("MATIC");
55
+ * console.log(brokFee);
56
+ * }
57
+ * main();
58
+ *
59
+ * @returns {number} Exchange fee for this broker, in decimals (i.e. 0.1% is 0.001)
60
+ */
61
+ BrokerTool.prototype.getBrokerInducedFee = function (poolSymbolName) {
62
+ return __awaiter(this, void 0, void 0, function () {
63
+ var poolId, feeTbps, fee;
64
+ return __generator(this, function (_a) {
65
+ switch (_a.label) {
66
+ case 0:
67
+ if (this.proxyContract == null || this.signer == null) {
68
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
69
+ }
70
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
71
+ return [4 /*yield*/, this.proxyContract.getBrokerInducedFee(poolId, this.traderAddr)];
72
+ case 1:
73
+ feeTbps = _a.sent();
74
+ fee = feeTbps / 100000;
75
+ if (fee == 0.65535) {
76
+ return [2 /*return*/, undefined];
77
+ }
78
+ return [2 /*return*/, fee];
79
+ }
80
+ });
81
+ });
82
+ };
83
+ /**
84
+ * Determine the exchange fee based on lots purchased by this broker.
85
+ * The final exchange fee that this broker can offer to traders that trade through him is equal to
86
+ * maximum(brokerTool.getFeeForBrokerDesignation(poolSymbolName), brokerTool.getFeeForBrokerVolume(poolSymbolName), brokerTool.getFeeForBrokerStake())
87
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
88
+ * @param {number=} lots Optional, designation to use if different from this broker's.
89
+ * @example
90
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
91
+ * async function main() {
92
+ * console.log(BrokerTool);
93
+ * // setup (authentication required, PK is an environment variable with a private key)
94
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
95
+ * const pk: string = <string>process.env.PK;
96
+ * let brokTool = new BrokerTool(config, pk);
97
+ * await brokTool.createProxyInstance();
98
+ * // get broker fee induced by lots
99
+ * let brokFeeLots = await brokTool.getFeeForBrokerDesignation("MATIC");
100
+ * console.log(brokFeeLots);
101
+ * }
102
+ * main();
103
+ *
104
+ * @returns {number} Fee based solely on this broker's designation, in decimals (i.e. 0.1% is 0.001).
105
+ */
106
+ BrokerTool.prototype.getFeeForBrokerDesignation = function (poolSymbolName, lots) {
107
+ return __awaiter(this, void 0, void 0, function () {
108
+ var brokerDesignation, feeTbps;
109
+ return __generator(this, function (_a) {
110
+ switch (_a.label) {
111
+ case 0:
112
+ if (this.proxyContract == null || this.signer == null) {
113
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
114
+ }
115
+ if (!(typeof lots == "undefined")) return [3 /*break*/, 2];
116
+ return [4 /*yield*/, this.getBrokerDesignation(poolSymbolName)];
117
+ case 1:
118
+ brokerDesignation = _a.sent();
119
+ brokerDesignation = brokerDesignation > 0 ? brokerDesignation : 0;
120
+ return [3 /*break*/, 3];
121
+ case 2:
122
+ brokerDesignation = lots;
123
+ _a.label = 3;
124
+ case 3: return [4 /*yield*/, this.proxyContract.getFeeForBrokerDesignation(brokerDesignation)];
125
+ case 4:
126
+ feeTbps = _a.sent();
127
+ return [2 /*return*/, feeTbps / 100000];
128
+ }
129
+ });
130
+ });
131
+ };
132
+ /**
133
+ * Determine the exchange fee based on volume traded under this broker.
134
+ * The final exchange fee that this broker can offer to traders that trade through him is equal to
135
+ * maximum(brokerTool.getFeeForBrokerDesignation(poolSymbolName), brokerTool.getFeeForBrokerVolume(poolSymbolName), brokerTool.getFeeForBrokerStake())
136
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
137
+ * @example
138
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
139
+ * async function main() {
140
+ * console.log(BrokerTool);
141
+ * // setup (authentication required, PK is an environment variable with a private key)
142
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
143
+ * const pk: string = <string>process.env.PK;
144
+ * let brokTool = new BrokerTool(config, pk);
145
+ * await brokTool.createProxyInstance();
146
+ * // get broker fee induced by volume
147
+ * let brokFeeVol = await brokTool.getFeeForBrokerVolume("MATIC");
148
+ * console.log(brokFeeVol);
149
+ * }
150
+ * main();
151
+ *
152
+ * @returns {number} Fee based solely on a broker's traded volume in the corresponding pool, in decimals (i.e. 0.1% is 0.001).
153
+ */
154
+ BrokerTool.prototype.getFeeForBrokerVolume = function (poolSymbolName) {
155
+ return __awaiter(this, void 0, void 0, function () {
156
+ var poolId, feeTbps;
157
+ return __generator(this, function (_a) {
158
+ switch (_a.label) {
159
+ case 0:
160
+ if (this.proxyContract == null || this.signer == null) {
161
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
162
+ }
163
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
164
+ return [4 /*yield*/, this.proxyContract.getFeeForBrokerVolume(poolId, this.traderAddr)];
165
+ case 1:
166
+ feeTbps = _a.sent();
167
+ return [2 /*return*/, feeTbps / 100000];
168
+ }
169
+ });
170
+ });
171
+ };
172
+ /**
173
+ * Determine the exchange fee based on the current D8X balance in a broker's wallet.
174
+ * The final exchange fee that this broker can offer to traders that trade through him is equal to
175
+ * maximum(brokerTool.getFeeForBrokerDesignation(symbol, lots), brokerTool.getFeeForBrokerVolume(symbol), brokerTool.getFeeForBrokerStake)
176
+ * @param {string=} brokerAddr Address of the broker in question, if different from the one calling this function.
177
+ * @example
178
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
179
+ * async function main() {
180
+ * console.log(BrokerTool);
181
+ * // setup (authentication required, PK is an environment variable with a private key)
182
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
183
+ * const pk: string = <string>process.env.PK;
184
+ * let brokTool = new BrokerTool(config, pk);
185
+ * await brokTool.createProxyInstance();
186
+ * // get broker fee induced by staked d8x
187
+ * let brokFeeStake = await brokTool.getFeeForBrokerStake("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
188
+ * console.log(brokFeeStake);
189
+ * }
190
+ * main();
191
+ *
192
+ * @returns {number} Fee based solely on a broker's D8X balance, in decimals (i.e. 0.1% is 0.001).
193
+ */
194
+ BrokerTool.prototype.getFeeForBrokerStake = function (brokerAddr) {
195
+ return __awaiter(this, void 0, void 0, function () {
196
+ var feeTbps;
197
+ return __generator(this, function (_a) {
198
+ switch (_a.label) {
199
+ case 0:
200
+ if (this.proxyContract == null || this.signer == null) {
201
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
202
+ }
203
+ if (typeof brokerAddr == "undefined") {
204
+ brokerAddr = this.traderAddr;
205
+ }
206
+ return [4 /*yield*/, this.proxyContract.getFeeForBrokerStake(brokerAddr)];
207
+ case 1:
208
+ feeTbps = _a.sent();
209
+ return [2 /*return*/, feeTbps / 100000];
210
+ }
211
+ });
212
+ });
213
+ };
214
+ /**
215
+ * Determine exchange fee based on an order and a trader.
216
+ * This is the fee charged by the exchange only, excluding the broker fee,
217
+ * and it takes into account whether the order given here has been signed by a broker or not.
218
+ * Use this, for instance, to verify that the fee to be charged for a given order is as expected,
219
+ * before and after signing it with brokerTool.signOrder.
220
+ * This fee is equal or lower than the broker induced fee, provided the order is properly signed.
221
+ * @param {Order} order Order structure. As a minimum the structure needs to
222
+ * specify symbol, side, type and quantity.
223
+ * @param {string} traderAddr Address of the trader for whom to determine the fee.
224
+ * @example
225
+ * import { BrokerTool, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
226
+ * async function main() {
227
+ * console.log(BrokerTool);
228
+ * // setup (authentication required, PK is an environment variable with a private key)
229
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
230
+ * const pk: string = <string>process.env.PK;
231
+ * let brokTool = new BrokerTool(config, pk);
232
+ * await brokTool.createProxyInstance();
233
+ * // get exchange fee based on an order and trader
234
+ * let order: Order = {
235
+ * symbol: "MATIC-USD-MATIC",
236
+ * side: "BUY",
237
+ * type: "MARKET",
238
+ * quantity: 100,
239
+ * timestamp: Date.now()
240
+ * };
241
+ * let exchFee = await brokTool.determineExchangeFee(order,
242
+ * "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
243
+ * console.log(exchFee);
244
+ * }
245
+ * main();
246
+ *
247
+ * @returns {number} Fee in decimals (i.e. 0.1% is 0.001).
248
+ */
249
+ BrokerTool.prototype.determineExchangeFee = function (order, traderAddr) {
250
+ return __awaiter(this, void 0, void 0, function () {
251
+ var scOrder, feeTbps;
252
+ return __generator(this, function (_a) {
253
+ switch (_a.label) {
254
+ case 0:
255
+ if (this.proxyContract == null || this.signer == null) {
256
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
257
+ }
258
+ scOrder = AccountTrade.toSmartContractOrder(order, traderAddr, this.symbolToPerpStaticInfo);
259
+ return [4 /*yield*/, this.proxyContract.determineExchangeFee(scOrder)];
260
+ case 1:
261
+ feeTbps = _a.sent();
262
+ return [2 /*return*/, feeTbps / 100000];
263
+ }
264
+ });
265
+ });
266
+ };
267
+ // Volume
268
+ /**
269
+ * Exponentially weighted EMA of the total trading volume of all trades performed under this broker.
270
+ * The weights are chosen so that in average this coincides with the 30 day volume.
271
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
272
+ * @example
273
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
274
+ * async function main() {
275
+ * console.log(BrokerTool);
276
+ * // setup (authentication required, PK is an environment variable with a private key)
277
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
278
+ * const pk: string = <string>process.env.PK;
279
+ * let brokTool = new BrokerTool(config, pk);
280
+ * await brokTool.createProxyInstance();
281
+ * // get 30 day volume for broker
282
+ * let brokVolume = await brokTool.getCurrentBrokerVolume("MATIC");
283
+ * console.log(brokVolume);
284
+ * }
285
+ * main();
286
+ *
287
+ * @returns {number} Current trading volume for this broker, in USD.
288
+ */
289
+ BrokerTool.prototype.getCurrentBrokerVolume = function (poolSymbolName) {
290
+ return __awaiter(this, void 0, void 0, function () {
291
+ var poolId, volume;
292
+ return __generator(this, function (_a) {
293
+ switch (_a.label) {
294
+ case 0:
295
+ if (this.proxyContract == null || this.signer == null) {
296
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
297
+ }
298
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
299
+ return [4 /*yield*/, this.proxyContract.getCurrentBrokerVolume(poolId, this.traderAddr)];
300
+ case 1:
301
+ volume = _a.sent();
302
+ return [2 /*return*/, ABK64x64ToFloat(volume)];
303
+ }
304
+ });
305
+ });
306
+ };
307
+ // Lots
308
+ /**
309
+ * Total amount of collateral currency a broker has to deposit into the default fund to purchase one lot.
310
+ * This is equivalent to the price of a lot expressed in a given pool's currency (e.g. MATIC, USDC, etc).
311
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
312
+ * @example
313
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
314
+ * async function main() {
315
+ * console.log(BrokerTool);
316
+ * // setup (authentication required, PK is an environment variable with a private key)
317
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
318
+ * const pk: string = <string>process.env.PK;
319
+ * let brokTool = new BrokerTool(config, pk);
320
+ * await brokTool.createProxyInstance();
321
+ * // get lot price
322
+ * let brokLotSize = await brokTool.getLotSize("MATIC");
323
+ * console.log(brokLotSize);
324
+ * }
325
+ * main();
326
+ *
327
+ * @returns {number} Broker lot size in a given pool's currency, e.g. in MATIC for poolSymbolName MATIC.
328
+ */
329
+ BrokerTool.prototype.getLotSize = function (poolSymbolName) {
330
+ return __awaiter(this, void 0, void 0, function () {
331
+ var poolId, pool, lot;
332
+ return __generator(this, function (_a) {
333
+ switch (_a.label) {
334
+ case 0:
335
+ if (this.proxyContract == null) {
336
+ throw Error("no proxy contract initialized. Use createProxyInstance().");
337
+ }
338
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
339
+ return [4 /*yield*/, this.proxyContract.getLiquidityPool(poolId)];
340
+ case 1:
341
+ pool = _a.sent();
342
+ lot = ABK64x64ToFloat(pool.fBrokerCollateralLotSize);
343
+ return [2 /*return*/, lot];
344
+ }
345
+ });
346
+ });
347
+ };
348
+ /**
349
+ * Provides information on how many lots a broker purchased for a given pool.
350
+ * This is relevant to determine the broker's fee tier.
351
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
352
+ * @example
353
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
354
+ * async function main() {
355
+ * console.log(BrokerTool);
356
+ * // setup (authentication required, PK is an environment variable with a private key)
357
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
358
+ * const pk: string = <string>process.env.PK;
359
+ * let brokTool = new BrokerTool(config, pk);
360
+ * await brokTool.createProxyInstance();
361
+ * // get broker designation
362
+ * let brokDesignation = await brokTool.getBrokerDesignation("MATIC");
363
+ * console.log(brokDesignation);
364
+ * }
365
+ * main();
366
+ *
367
+ * @returns {number} Number of lots purchased by this broker.
368
+ */
369
+ BrokerTool.prototype.getBrokerDesignation = function (poolSymbolName) {
370
+ return __awaiter(this, void 0, void 0, function () {
371
+ var poolId, designation;
372
+ return __generator(this, function (_a) {
373
+ switch (_a.label) {
374
+ case 0:
375
+ if (this.proxyContract == null || this.signer == null) {
376
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
377
+ }
378
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
379
+ return [4 /*yield*/, this.proxyContract.getBrokerDesignation(poolId, this.traderAddr)];
380
+ case 1:
381
+ designation = _a.sent();
382
+ return [2 /*return*/, designation];
383
+ }
384
+ });
385
+ });
386
+ };
387
+ /**
388
+ * Deposit lots to the default fund of a given pool.
389
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
390
+ * @param {number} lots Number of lots to deposit into this pool.
391
+ * @example
392
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
393
+ * async function main() {
394
+ * console.log(BrokerTool);
395
+ * // setup (authentication required, PK is an environment variable with a private key)
396
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
397
+ * const pk: string = <string>process.env.PK;
398
+ * let brokTool = new BrokerTool(config, pk);
399
+ * await brokTool.createProxyInstance();
400
+ * // deposit to default fund
401
+ * await brokTool.setAllowance("MATIC");
402
+ * let respDeposit = await brokTool.brokerDepositToDefaultFund("MATIC",1);
403
+ * console.log(respDeposit);
404
+ * }
405
+ * main();
406
+ *
407
+ * @returns {ethers.ContractTransaction} ContractTransaction object.
408
+ */
409
+ BrokerTool.prototype.brokerDepositToDefaultFund = function (poolSymbolName, lots) {
410
+ return __awaiter(this, void 0, void 0, function () {
411
+ var poolId, tx;
412
+ return __generator(this, function (_a) {
413
+ switch (_a.label) {
414
+ case 0:
415
+ if (this.proxyContract == null || this.signer == null) {
416
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
417
+ }
418
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
419
+ return [4 /*yield*/, this.proxyContract.brokerDepositToDefaultFund(poolId, lots, { gasLimit: this.gasLimit })];
420
+ case 1:
421
+ tx = _a.sent();
422
+ return [2 /*return*/, tx];
423
+ }
424
+ });
425
+ });
426
+ };
427
+ // Signatures
428
+ /**
429
+ * Adds this broker's signature to an order. An order signed by a broker is considered
430
+ * to be routed through this broker and benefits from the broker's fee conditions.
431
+ * @param {Order} order Order to sign. It must contain valid broker fee, broker address, and order deadline.
432
+ * @param {string} traderAddr Address of trader submitting the order.
433
+ * @example
434
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
435
+ * async function main() {
436
+ * console.log(BrokerTool);
437
+ * // setup (authentication required, PK is an environment variable with a private key)
438
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
439
+ * const pk: string = <string>process.env.PK;
440
+ * let brokTool = new BrokerTool(config, pk);
441
+ * await brokTool.createProxyInstance();
442
+ * // sign order
443
+ * let order = {symbol: "ETH-USD-MATIC",
444
+ * side: "BUY",
445
+ * type: "MARKET",
446
+ * quantity: 1,
447
+ * timestamp: Date.now()
448
+ * };
449
+ * let signedOrder = await brokTool.signOrder(order, "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
450
+ * 0.0001, 1669723339);
451
+ * console.log(signedOrder);
452
+ * // execute order
453
+ * let orderTransaction = await accTrade.order(signedOrder);
454
+ * console.log(orderTransaction.hash);
455
+ * }
456
+ * main();
457
+ *
458
+ * @returns {Order} An order signed by this broker, which can be submitted directly with AccountTrade.order.
459
+ */
460
+ BrokerTool.prototype.signOrder = function (order, traderAddr) {
461
+ return __awaiter(this, void 0, void 0, function () {
462
+ var _a;
463
+ return __generator(this, function (_b) {
464
+ switch (_b.label) {
465
+ case 0:
466
+ if (this.proxyContract == null || this.signer == null) {
467
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
468
+ }
469
+ order.brokerAddr = this.traderAddr;
470
+ _a = order;
471
+ return [4 /*yield*/, BrokerTool._signOrder(order.symbol, order.brokerFeeTbps, traderAddr, BigNumber.from(order.deadline), this.signer, this.chainId, this.proxyAddr, this.symbolToPerpStaticInfo)];
472
+ case 1:
473
+ _a.brokerSignature = _b.sent();
474
+ return [2 /*return*/, order];
475
+ }
476
+ });
477
+ });
478
+ };
479
+ /**
480
+ * Creates a signature that a trader can use to place orders with this broker.
481
+ * This signature can be used to pass on to a trader who wishes to trade via this SDK or directly on the blockchain.
482
+ * @param {string} traderAddr Address of the trader signing up with this broker.
483
+ * @param {string} symbol Perpetual that this trader will be trading, of the form ETH-USD-MATIC.
484
+ * @param {number} brokerFee Broker fee for this trader, in decimals (i.e. 0.1% is 0.001).
485
+ * @param {number} deadline Deadline for the order to be executed.
486
+ * @returns {string} Broker signature approving this trader's fee, symbol, and deadline.
487
+ * @ignore
488
+ */
489
+ BrokerTool.prototype.createSignatureForTrader = function (traderAddr, symbol, brokerFee, deadline) {
490
+ return __awaiter(this, void 0, void 0, function () {
491
+ var iDeadline, brokerFeeTbps;
492
+ return __generator(this, function (_a) {
493
+ switch (_a.label) {
494
+ case 0:
495
+ if (this.proxyContract == null || this.signer == null) {
496
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
497
+ }
498
+ iDeadline = BigNumber.from(deadline);
499
+ brokerFeeTbps = 100000 * brokerFee;
500
+ return [4 /*yield*/, BrokerTool._signOrder(symbol, brokerFeeTbps, traderAddr, iDeadline, this.signer, this.chainId, this.proxyAddr, this.symbolToPerpStaticInfo)];
501
+ case 1: return [2 /*return*/, _a.sent()];
502
+ }
503
+ });
504
+ });
505
+ };
506
+ BrokerTool._signOrder = function (symbol, brokerFeeTbps, traderAddr, iDeadline, signer, chainId, proxyAddress, symbolToPerpStaticInfo) {
507
+ return __awaiter(this, void 0, void 0, function () {
508
+ var NAME, DOMAIN_TYPEHASH, abiCoder, domainSeparator, TRADE_BROKER_TYPEHASH, iPerpetualId, structHash, digest, digestBuffer;
509
+ return __generator(this, function (_a) {
510
+ switch (_a.label) {
511
+ case 0:
512
+ NAME = "Perpetual Trade Manager";
513
+ DOMAIN_TYPEHASH = ethers.utils.keccak256(Buffer.from("EIP712Domain(string name,uint256 chainId,address verifyingContract)"));
514
+ abiCoder = ethers.utils.defaultAbiCoder;
515
+ domainSeparator = ethers.utils.keccak256(abiCoder.encode(["bytes32", "bytes32", "uint256", "address"], [DOMAIN_TYPEHASH, ethers.utils.keccak256(Buffer.from(NAME)), chainId, proxyAddress]));
516
+ TRADE_BROKER_TYPEHASH = ethers.utils.keccak256(Buffer.from("Order(uint24 iPerpetualId,uint16 brokerFeeTbps,address traderAddr,uint64 iDeadline)"));
517
+ iPerpetualId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
518
+ structHash = ethers.utils.keccak256(abiCoder.encode(["bytes32", "uint24", "uint16", "address", "uint64"], [TRADE_BROKER_TYPEHASH, iPerpetualId, brokerFeeTbps, traderAddr, iDeadline]));
519
+ digest = ethers.utils.keccak256(abiCoder.encode(["bytes32", "bytes32"], [domainSeparator, structHash]));
520
+ digestBuffer = Buffer.from(digest.substring(2, digest.length), "hex");
521
+ return [4 /*yield*/, signer.signMessage(digestBuffer)];
522
+ case 1: return [2 /*return*/, _a.sent()];
523
+ }
524
+ });
525
+ });
526
+ };
527
+ // Transfer ownership
528
+ /**
529
+ * Transfer ownership of a broker's status to a new wallet. This function transfers the values related to
530
+ * (i) trading volume and (ii) deposited lots to newAddress. The broker needs in addition to manually transfer
531
+ * his D8X holdings to newAddress. Until this transfer is completed, the broker will not have his current designation reflected at newAddress.
532
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
533
+ * @param {string} newAddress The address this broker wants to use from now on.
534
+ * @example
535
+ * import { BrokerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
536
+ * async function main() {
537
+ * console.log(BrokerTool);
538
+ * // setup (authentication required, PK is an environment variable with a private key)
539
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
540
+ * const pk: string = <string>process.env.PK;
541
+ * let brokTool = new BrokerTool(config, pk);
542
+ * await brokTool.createProxyInstance();
543
+ * // transfer ownership
544
+ * let respTransferOwnership = await brokTool.transferOwnership("MATIC", "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
545
+ * console.log(respTransferOwnership);
546
+ * }
547
+ * main();
548
+ *
549
+ * @returns {ethers.providers.TransactionResponse} ethers transaction object
550
+ */
551
+ BrokerTool.prototype.transferOwnership = function (poolSymbolName, newAddress) {
552
+ return __awaiter(this, void 0, void 0, function () {
553
+ var poolId, tx;
554
+ return __generator(this, function (_a) {
555
+ switch (_a.label) {
556
+ case 0:
557
+ if (this.proxyContract == null) {
558
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
559
+ }
560
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
561
+ return [4 /*yield*/, this.proxyContract.transferBrokerOwnership(poolId, newAddress, { gasLimit: this.gasLimit })];
562
+ case 1:
563
+ tx = _a.sent();
564
+ return [2 /*return*/, tx];
565
+ }
566
+ });
567
+ });
568
+ };
569
+ return BrokerTool;
570
+ }(WriteAccessHandler));
571
+ export default BrokerTool;
572
+ //# sourceMappingURL=brokerTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brokerTool.js","sourceRoot":"","sources":["../../src/brokerTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ [
2
+ {
3
+ "name": "testnet",
4
+ "chainId": 80001,
5
+ "version": 6,
6
+ "proxyAddr": "0xDEDf0dd46757cE93E0D9439F78382c0c68cF76C2",
7
+ "nodeURL": "https://polygon-mumbai.blockpi.network/v1/rpc/public",
8
+ "priceFeedConfigNetwork": "testnet",
9
+ "proxyABILocation": "testnet/IPerpetualManager.json",
10
+ "limitOrderBookFactoryABILocation": "testnet/LimitOrderBookFactory.json",
11
+ "limitOrderBookABILocation": "testnet/LimitOrderBook.json"
12
+ },
13
+ {
14
+ "name": "mainnet",
15
+ "chainId": 137,
16
+ "version": 0,
17
+ "proxyAddr": "",
18
+ "nodeURL": "",
19
+ "priceFeedConfigNetwork": "mainnet",
20
+ "proxyABILocation": "",
21
+ "limitOrderBookFactoryAddr": "",
22
+ "limitOrderBookFactoryABILocation": "",
23
+ "limitOrderBookABILocation": ""
24
+ },
25
+ {
26
+ "name": "testnet",
27
+ "chainId": 80001,
28
+ "version": 5,
29
+ "proxyAddr": "0x4F1C7EE9E881Cc735f39Ca36c649ba9E930B4E4e",
30
+ "nodeURL": "https://polygon-mumbai.blockpi.network/v1/rpc/public",
31
+ "priceFeedConfigNetwork": "testnet",
32
+ "proxyABILocation": "central-park/IPerpetualManager.json",
33
+ "limitOrderBookFactoryABILocation": "central-park/LimitOrderBookFactory.json",
34
+ "limitOrderBookABILocation": "central-park/LimitOrderBook.json"
35
+ },
36
+ {
37
+ "name": "zkevmTestnet",
38
+ "chainId": 1442,
39
+ "version": 0,
40
+ "proxyAddr": "0xb56b81e40e1cDB77bb5Db6C0283e25C27DAE1Be6",
41
+ "nodeURL": "https://rpc.public.zkevm-test.net ",
42
+ "priceFeedConfigNetwork": "testnet",
43
+ "proxyABILocation": "zkevmTestnet/IPerpetualManager.json",
44
+ "limitOrderBookFactoryABILocation": "zkevmTestnet/LimitOrderBookFactory.json",
45
+ "limitOrderBookABILocation": "zkevmTestnet/LimitOrderBook.json"
46
+ }
47
+ ]
@@ -0,0 +1,4 @@
1
+ {
2
+ "0xeB4E22B2AD4D9d07C25A32f57d85a4F41ca6b8FF": "0xe5AD14bFb9D3dEc4dB97f89A782f3578eEE07C38",
3
+ "0x215975839684a365df2387b1f0FcEaBf4F0B77eb": "0xeb4cd22d2b7451c17Dd03fB34977abF1Becb9053"
4
+ }