@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,309 @@
1
+ import { ethers } from "ethers";
2
+ import "./nodeSDKTypes";
3
+ import { ExchangeInfo, MarginAccount, NodeSDKConfig, Order, PerpetualState, PerpetualStaticInfo, PoolStaticInfo, SmartContractOrder } from "./nodeSDKTypes";
4
+ import PerpetualDataHandler from "./perpetualDataHandler";
5
+ import PriceFeeds from "./priceFeeds";
6
+ /**
7
+ * Functions to access market data (e.g., information on open orders, information on products that can be traded).
8
+ * This class requires no private key and is blockchain read-only.
9
+ * No gas required for the queries here.
10
+ * @extends PerpetualDataHandler
11
+ */
12
+ export default class MarketData extends PerpetualDataHandler {
13
+ /**
14
+ * Constructor
15
+ * @param {NodeSDKConfig} config Configuration object, see
16
+ * PerpetualDataHandler.readSDKConfig.
17
+ * @example
18
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
19
+ * async function main() {
20
+ * console.log(MarketData);
21
+ * // load configuration for testnet
22
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
23
+ * // MarketData (read only, no authentication needed)
24
+ * let mktData = new MarketData(config);
25
+ * // Create a proxy instance to access the blockchain
26
+ * await mktData.createProxyInstance();
27
+ * }
28
+ * main();
29
+ *
30
+ */
31
+ constructor(config: NodeSDKConfig);
32
+ /**
33
+ * Initialize the marketData-Class with this function
34
+ * to create instance of D8X perpetual contract and gather information
35
+ * about perpetual currencies
36
+ * @param provider optional provider
37
+ */
38
+ createProxyInstance(provider?: ethers.providers.Provider): Promise<void>;
39
+ /**
40
+ * Get the proxy address
41
+ * @returns Address of the perpetual proxy contract
42
+ */
43
+ getProxyAddress(): string;
44
+ /**
45
+ * Convert the smart contract output of an order into a convenient format of type "Order"
46
+ * @param smOrder SmartContractOrder, as obtained e.g., by PerpetualLimitOrderCreated event
47
+ * @returns more convenient format of order, type "Order"
48
+ */
49
+ smartContractOrderToOrder(smOrder: SmartContractOrder): Order;
50
+ /**
51
+ * Get contract instance. Useful for event listening.
52
+ * @example
53
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
54
+ * async function main() {
55
+ * console.log(MarketData);
56
+ * // setup
57
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
58
+ * let mktData = new MarketData(config);
59
+ * await mktData.createProxyInstance();
60
+ * // Get contract instance
61
+ * let proxy = await mktData.getReadOnlyProxyInstance();
62
+ * console.log(proxy);
63
+ * }
64
+ * main();
65
+ *
66
+ * @returns read-only proxy instance
67
+ */
68
+ getReadOnlyProxyInstance(): ethers.Contract;
69
+ /**
70
+ * Information about the products traded in the exchange.
71
+ * @example
72
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
73
+ * async function main() {
74
+ * console.log(MarketData);
75
+ * // setup
76
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
77
+ * let mktData = new MarketData(config);
78
+ * await mktData.createProxyInstance();
79
+ * // Get exchange info
80
+ * let info = await mktData.exchangeInfo();
81
+ * console.log(info);
82
+ * }
83
+ * main();
84
+ *
85
+ * @returns {ExchangeInfo} Array of static data for all the pools and perpetuals in the system.
86
+ */
87
+ exchangeInfo(): Promise<ExchangeInfo>;
88
+ /**
89
+ * All open orders for a trader-address and a symbol.
90
+ * @param {string} traderAddr Address of the trader for which we get the open orders.
91
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
92
+ * @example
93
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
94
+ * async function main() {
95
+ * console.log(MarketData);
96
+ * // setup
97
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
98
+ * let mktData = new MarketData(config);
99
+ * await mktData.createProxyInstance();
100
+ * // Get all open orders for a trader/symbol
101
+ * let opOrder = await mktData.openOrders("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
102
+ * "ETH-USD-MATIC");
103
+ * console.log(opOrder);
104
+ * }
105
+ * main();
106
+ *
107
+ * @returns {Array<Array<Order>, Array<string>>} Array of open orders and corresponding order-ids.
108
+ */
109
+ openOrders(traderAddr: string, symbol: string): Promise<{
110
+ orders: Order[];
111
+ orderIds: string[];
112
+ }>;
113
+ /**
114
+ * Information about the position open by a given trader in a given perpetual contract.
115
+ * @param {string} traderAddr Address of the trader for which we get the position risk.
116
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC. Can also be the perpetual id as string
117
+ * @example
118
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
119
+ * async function main() {
120
+ * console.log(MarketData);
121
+ * // setup
122
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
123
+ * let mktData = new MarketData(config);
124
+ * await mktData.createProxyInstance();
125
+ * // Get position risk info
126
+ * let posRisk = await mktData.positionRisk("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
127
+ * "ETH-USD-MATIC");
128
+ * console.log(posRisk);
129
+ * }
130
+ * main();
131
+ *
132
+ * @returns {MarginAccount} Position risk of trader.
133
+ */
134
+ positionRisk(traderAddr: string, symbol: string): Promise<MarginAccount>;
135
+ /**
136
+ * Estimates what the position risk will be if a given order is executed.
137
+ * @param traderAddr Address of trader
138
+ * @param order Order to be submitted
139
+ * @param account Position risk before trade
140
+ * @param indexPriceInfo Index prices and market status (open/closed)
141
+ * @returns {MarginAccount} Position risk after trade
142
+ */
143
+ positionRiskOnTrade(traderAddr: string, order: Order, account?: MarginAccount, indexPriceInfo?: [number, number, boolean, boolean]): Promise<{
144
+ newPositionRisk: MarginAccount;
145
+ orderCost: number;
146
+ }>;
147
+ /**
148
+ * Estimates what the position risk will be if given amount of collateral is added/removed from the account.
149
+ * @param traderAddr Address of trader
150
+ * @param deltaCollateral Amount of collateral to add or remove (signed)
151
+ * @param currentPositionRisk Position risk before
152
+ * @returns {MarginAccount} Position risk after
153
+ */
154
+ positionRiskOnCollateralAction(deltaCollateral: number, account: MarginAccount, indexPriceInfo?: [number, number, boolean, boolean]): Promise<MarginAccount>;
155
+ protected static _getLiquidationParams(symbol: string, lockedInQC: number, signedPositionBC: number, marginCashCC: number, markPrice: number, collToQuoteConversion: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>): [number, number | undefined, number];
156
+ /**
157
+ * Gets the wallet balance in the collateral currency corresponding to a given perpetual symbol.
158
+ * @param address Address to check
159
+ * @param symbol Symbol of the form ETH-USD-MATIC.
160
+ * @returns Balance
161
+ */
162
+ getWalletBalance(address: string, symbol: string): Promise<number>;
163
+ /**
164
+ * Gets the maximal order size to open positions (increase size),
165
+ * considering the existing position, state of the perpetual
166
+ * Ignores users wallet balance.
167
+ * @param side BUY or SELL
168
+ * @param positionRisk Current position risk (as seen in positionRisk)
169
+ * @returns Maximal trade size, not signed
170
+ */
171
+ maxOrderSizeForTrader(side: string, positionRisk: MarginAccount): Promise<number>;
172
+ /**
173
+ *
174
+ * @param side BUY_SIDE or SELL_SIDE
175
+ * @param symbol of the form ETH-USD-MATIC.
176
+ * @returns signed maximal position size in base currency
177
+ */
178
+ maxSignedPosition(side: string, symbol: string): Promise<number>;
179
+ /**
180
+ * Uses the Oracle(s) in the exchange to get the latest price of a given index in a given currency, if a route exists.
181
+ * @param {string} base Index name, e.g. ETH.
182
+ * @param {string} quote Quote currency, e.g. USD.
183
+ * @example
184
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
185
+ * async function main() {
186
+ * console.log(MarketData);
187
+ * // setup
188
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
189
+ * let mktData = new MarketData(config);
190
+ * await mktData.createProxyInstance();
191
+ * // get oracle price
192
+ * let price = await mktData.getOraclePrice("ETH", "USD");
193
+ * console.log(price);
194
+ * }
195
+ * main();
196
+ *
197
+ * @returns {number} Price of index in given currency.
198
+ */
199
+ getOraclePrice(base: string, quote: string): Promise<number | undefined>;
200
+ getOrderStatus(symbol: string, orderId: string): Promise<string>;
201
+ /**
202
+ * Get the current mark price
203
+ * @param symbol symbol of the form ETH-USD-MATIC
204
+ * @example
205
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
206
+ * async function main() {
207
+ * console.log(MarketData);
208
+ * // setup
209
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
210
+ * let mktData = new MarketData(config);
211
+ * await mktData.createProxyInstance();
212
+ * // get mark price
213
+ * let price = await mktData.getMarkPrice("ETH-USD-MATIC");
214
+ * console.log(price);
215
+ * }
216
+ * main();
217
+ *
218
+ * @returns mark price
219
+ */
220
+ getMarkPrice(symbol: string, indexPrices?: [number, number]): Promise<number>;
221
+ /**
222
+ * get the current price for a given quantity
223
+ * @param symbol symbol of the form ETH-USD-MATIC
224
+ * @param quantity quantity to be traded, negative if short
225
+ * @example
226
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
227
+ * async function main() {
228
+ * console.log(MarketData);
229
+ * // setup
230
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
231
+ * let mktData = new MarketData(config);
232
+ * await mktData.createProxyInstance();
233
+ * // get perpetual price
234
+ * let price = await mktData.getPerpetualPrice("ETH-USD-MATIC", 1);
235
+ * console.log(price);
236
+ * }
237
+ * main();
238
+ *
239
+ * @returns price (number)
240
+ */
241
+ getPerpetualPrice(symbol: string, quantity: number, indexPrices?: [number, number]): Promise<number>;
242
+ /**
243
+ * Query recent perpetual state from blockchain
244
+ * @param symbol symbol of the form ETH-USD-MATIC
245
+ * @param indexPrices S2 and S3 prices/isMarketOpen if not provided fetch via REST API
246
+ * @returns PerpetualState reference
247
+ */
248
+ getPerpetualState(symbol: string, indexPriceInfo?: [number, number, boolean, boolean]): Promise<PerpetualState>;
249
+ /**
250
+ * Query perpetual static info.
251
+ * This information is queried once at createProxyInstance-time and remains static after that.
252
+ * @param symbol symbol of the form ETH-USD-MATIC
253
+ * @returns PerpetualStaticInfo copy.
254
+ */
255
+ getPerpetualStaticInfo(symbol: string): PerpetualStaticInfo;
256
+ /**
257
+ * get the current mid-price for a perpetual
258
+ * @param symbol symbol of the form ETH-USD-MATIC
259
+ * @example
260
+ * import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
261
+ * async function main() {
262
+ * console.log(MarketData);
263
+ * // setup
264
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
265
+ * let mktData = new MarketData(config);
266
+ * await mktData.createProxyInstance();
267
+ * // get perpetual mid price
268
+ * let midPrice = await mktData.getPerpetualMidPrice("ETH-USD-MATIC");
269
+ * console.log(midPrice);
270
+ * }
271
+ * main();
272
+ *
273
+ * @returns {number} price
274
+ */
275
+ getPerpetualMidPrice(symbol: string): Promise<number>;
276
+ /**
277
+ * Query smart contract to get user orders and convert to user friendly order format.
278
+ * @param {string} traderAddr Address of trader.
279
+ * @param {ethers.Contract} orderBookContract Instance of order book.
280
+ * @returns {Order[]} Array of user friendly order struct.
281
+ * @ignore
282
+ */
283
+ protected openOrdersOnOrderBook(traderAddr: string, orderBookContract: ethers.Contract): Promise<Order[]>;
284
+ /**
285
+ *
286
+ * @param traderAddr Address of the trader
287
+ * @param orderBookContract Instance of order book contract
288
+ * @returns Array of order-id's
289
+ * @ignore
290
+ */
291
+ static orderIdsOfTrader(traderAddr: string, orderBookContract: ethers.Contract): Promise<string[]>;
292
+ /**
293
+ * Query the available margin conditional on the given (or current) index prices
294
+ * Result is in collateral currency
295
+ * @param traderAddr address of the trader
296
+ * @param symbol perpetual symbol of the form BTC-USD-MATIC
297
+ * @param indexPrices optional index prices, will otherwise fetch from REST API
298
+ * @returns available margin in collateral currency
299
+ */
300
+ getAvailableMargin(traderAddr: string, symbol: string, indexPrices?: [number, number]): Promise<number>;
301
+ /**
302
+ * Calculate a type of exchange loyality score based on trader volume
303
+ * @param traderAddr address of the trader
304
+ * @param brokerAddr address of the trader's broker or undefined
305
+ * @returns a loyality score (4 worst, 1 best)
306
+ */
307
+ getTraderLoyalityScore(traderAddr: string, brokerAddr?: string): Promise<number>;
308
+ static _exchangeInfo(_proxyContract: ethers.Contract, _poolStaticInfos: Array<PoolStaticInfo>, _symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _symbolList: Map<string, string>, _priceFeedGetter: PriceFeeds): Promise<ExchangeInfo>;
309
+ }