@d8x/perpetuals-sdk 2.1.0-alpha2 → 2.1.2-alpha2

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 (236) hide show
  1. package/dist/cjs/abi/BeaconProxy.json +71 -0
  2. package/dist/cjs/abi/IPerpetualManager.json +35 -1
  3. package/dist/cjs/abi/Maintainer.json +774 -0
  4. package/dist/cjs/abi/MockToken.json +347 -0
  5. package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
  6. package/dist/cjs/abi/WeETH.json +310 -0
  7. package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
  8. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
  9. package/dist/cjs/accountTrade.d.ts +3 -3
  10. package/dist/cjs/accountTrade.js +1 -1
  11. package/dist/cjs/accountTrade.js.map +1 -1
  12. package/dist/cjs/brokerTool.js +8 -8
  13. package/dist/cjs/brokerTool.js.map +1 -1
  14. package/dist/cjs/config/defaultConfig.json +0 -12
  15. package/dist/cjs/config/priceFeedConfig.json +1 -1
  16. package/dist/cjs/constants.d.ts +0 -1
  17. package/dist/cjs/constants.js +2 -3
  18. package/dist/cjs/constants.js.map +1 -1
  19. package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
  20. package/dist/cjs/contracts/BeaconProxy.js +3 -0
  21. package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
  22. package/dist/cjs/contracts/IPerpetualManager.d.ts +22 -4
  23. package/dist/cjs/contracts/Maintainer.d.ts +799 -0
  24. package/dist/cjs/contracts/Maintainer.js +3 -0
  25. package/dist/cjs/contracts/Maintainer.js.map +1 -0
  26. package/dist/cjs/contracts/MockToken.d.ts +263 -0
  27. package/dist/cjs/contracts/MockToken.js +3 -0
  28. package/dist/cjs/contracts/MockToken.js.map +1 -0
  29. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
  30. package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
  31. package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
  32. package/dist/cjs/contracts/WeETH.d.ts +503 -0
  33. package/dist/cjs/contracts/WeETH.js +3 -0
  34. package/dist/cjs/contracts/WeETH.js.map +1 -0
  35. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  36. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
  37. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
  38. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +27 -1
  39. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +35 -1
  40. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  41. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
  42. package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
  43. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
  44. package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
  45. package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
  46. package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
  47. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  48. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
  49. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  50. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
  51. package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
  52. package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
  53. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  54. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
  55. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  56. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  57. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
  58. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  59. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  60. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
  61. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  62. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  63. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
  64. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  65. package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
  66. package/dist/cjs/contracts/factories/lean0/index.js +15 -0
  67. package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
  68. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  69. package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
  70. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
  71. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
  72. package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
  73. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
  74. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  75. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
  76. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  77. package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
  78. package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
  79. package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
  80. package/dist/cjs/contracts/lean0/index.d.ts +4 -0
  81. package/dist/cjs/contracts/lean0/index.js +3 -0
  82. package/dist/cjs/contracts/lean0/index.js.map +1 -0
  83. package/dist/cjs/d8XMath.d.ts +17 -1
  84. package/dist/cjs/d8XMath.js +29 -5
  85. package/dist/cjs/d8XMath.js.map +1 -1
  86. package/dist/cjs/liquidatorTool.js +2 -2
  87. package/dist/cjs/liquidatorTool.js.map +1 -1
  88. package/dist/cjs/marketData.d.ts +4 -4
  89. package/dist/cjs/marketData.js +45 -17
  90. package/dist/cjs/marketData.js.map +1 -1
  91. package/dist/cjs/nodeSDKTypes.d.ts +3 -2
  92. package/dist/cjs/nodeSDKTypes.js.map +1 -1
  93. package/dist/cjs/perpetualDataHandler.d.ts +9 -8
  94. package/dist/cjs/perpetualDataHandler.js +17 -6
  95. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  96. package/dist/cjs/polyMktsPxFeed.d.ts +1 -1
  97. package/dist/cjs/polyMktsPxFeed.js +15 -4
  98. package/dist/cjs/polyMktsPxFeed.js.map +1 -1
  99. package/dist/cjs/priceFeeds.js +2 -2
  100. package/dist/cjs/priceFeeds.js.map +1 -1
  101. package/dist/cjs/version.d.ts +1 -1
  102. package/dist/cjs/version.js +1 -1
  103. package/dist/cjs/writeAccessHandler.js +1 -1
  104. package/dist/cjs/writeAccessHandler.js.map +1 -1
  105. package/dist/esm/abi/BeaconProxy.json +71 -0
  106. package/dist/esm/abi/IPerpetualManager.json +35 -1
  107. package/dist/esm/abi/Maintainer.json +774 -0
  108. package/dist/esm/abi/MockToken.json +347 -0
  109. package/dist/esm/abi/UUPSUpgradeable.json +104 -0
  110. package/dist/esm/abi/WeETH.json +310 -0
  111. package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
  112. package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
  113. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
  114. package/dist/esm/abi/lean0/ShareToken.json +438 -0
  115. package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
  116. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
  117. package/dist/esm/accountTrade.d.ts +3 -3
  118. package/dist/esm/accountTrade.js +1 -1
  119. package/dist/esm/accountTrade.js.map +1 -1
  120. package/dist/esm/brokerTool.js +8 -8
  121. package/dist/esm/brokerTool.js.map +1 -1
  122. package/dist/esm/config/defaultConfig.json +0 -12
  123. package/dist/esm/config/priceFeedConfig.json +1 -1
  124. package/dist/esm/constants.d.ts +0 -1
  125. package/dist/esm/constants.js +1 -2
  126. package/dist/esm/constants.js.map +1 -1
  127. package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
  128. package/dist/esm/contracts/BeaconProxy.js +2 -0
  129. package/dist/esm/contracts/BeaconProxy.js.map +1 -0
  130. package/dist/esm/contracts/IPerpetualManager.d.ts +22 -4
  131. package/dist/esm/contracts/Maintainer.d.ts +799 -0
  132. package/dist/esm/contracts/Maintainer.js +2 -0
  133. package/dist/esm/contracts/Maintainer.js.map +1 -0
  134. package/dist/esm/contracts/MockToken.d.ts +263 -0
  135. package/dist/esm/contracts/MockToken.js +2 -0
  136. package/dist/esm/contracts/MockToken.js.map +1 -0
  137. package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
  138. package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
  139. package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
  140. package/dist/esm/contracts/WeETH.d.ts +503 -0
  141. package/dist/esm/contracts/WeETH.js +2 -0
  142. package/dist/esm/contracts/WeETH.js.map +1 -0
  143. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  144. package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
  145. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
  146. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +27 -1
  147. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +35 -1
  148. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  149. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
  150. package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
  151. package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
  152. package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
  153. package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
  154. package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
  155. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  156. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
  157. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  158. package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
  159. package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
  160. package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
  161. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  162. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
  163. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  164. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  165. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
  166. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  167. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  168. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
  169. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  170. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  171. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
  172. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  173. package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
  174. package/dist/esm/contracts/factories/lean0/index.js +8 -0
  175. package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
  176. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  177. package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
  178. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
  179. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
  180. package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
  181. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
  182. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  183. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
  184. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  185. package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
  186. package/dist/esm/contracts/lean0/ShareToken.js +2 -0
  187. package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
  188. package/dist/esm/contracts/lean0/index.d.ts +4 -0
  189. package/dist/esm/contracts/lean0/index.js +2 -0
  190. package/dist/esm/contracts/lean0/index.js.map +1 -0
  191. package/dist/esm/d8XMath.d.ts +17 -1
  192. package/dist/esm/d8XMath.js +27 -4
  193. package/dist/esm/d8XMath.js.map +1 -1
  194. package/dist/esm/liquidatorTool.js +2 -2
  195. package/dist/esm/liquidatorTool.js.map +1 -1
  196. package/dist/esm/marketData.d.ts +4 -4
  197. package/dist/esm/marketData.js +46 -18
  198. package/dist/esm/marketData.js.map +1 -1
  199. package/dist/esm/nodeSDKTypes.d.ts +3 -2
  200. package/dist/esm/nodeSDKTypes.js.map +1 -1
  201. package/dist/esm/perpetualDataHandler.d.ts +9 -8
  202. package/dist/esm/perpetualDataHandler.js +19 -8
  203. package/dist/esm/perpetualDataHandler.js.map +1 -1
  204. package/dist/esm/polyMktsPxFeed.d.ts +1 -1
  205. package/dist/esm/polyMktsPxFeed.js +15 -4
  206. package/dist/esm/polyMktsPxFeed.js.map +1 -1
  207. package/dist/esm/priceFeeds.js +2 -2
  208. package/dist/esm/priceFeeds.js.map +1 -1
  209. package/dist/esm/version.d.ts +1 -1
  210. package/dist/esm/version.js +1 -1
  211. package/dist/esm/writeAccessHandler.js +3 -3
  212. package/dist/esm/writeAccessHandler.js.map +1 -1
  213. package/doc/brokerTool.md +3 -1
  214. package/doc/d8x-perpetuals-sdk.md +804 -132
  215. package/doc/marketData.md +813 -0
  216. package/doc/perpetualDataHandler.md +76 -7
  217. package/package.json +1 -1
  218. package/src/abi/IPerpetualManager.json +35 -1
  219. package/src/accountTrade.ts +3 -3
  220. package/src/brokerTool.ts +8 -8
  221. package/src/config/defaultConfig.json +0 -13
  222. package/src/config/priceFeedConfig.json +1 -1
  223. package/src/constants.ts +1 -2
  224. package/src/contracts/IPerpetualManager.ts +35 -3
  225. package/src/contracts/factories/IPerpetualManager__factory.ts +35 -1
  226. package/src/d8XMath.ts +28 -4
  227. package/src/liquidatorTool.ts +2 -2
  228. package/src/marketData.ts +49 -20
  229. package/src/nodeSDKTypes.ts +3 -2
  230. package/src/perpetualDataHandler.ts +26 -15
  231. package/src/polyMktsPxFeed.ts +15 -4
  232. package/src/priceFeeds.ts +2 -2
  233. package/src/version.ts +1 -1
  234. package/src/writeAccessHandler.ts +2 -2
  235. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
  236. package/src/abi-zkevm/IPerpetualManager.json +0 -5366
package/doc/marketData.md CHANGED
@@ -0,0 +1,813 @@
1
+ <a name="MarketData"></a>
2
+
3
+ ## MarketData ⇐ <code>PerpetualDataHandler</code>
4
+ <p>Functions to access market data (e.g., information on open orders, information on products that can be traded).
5
+ This class requires no private key and is blockchain read-only.
6
+ No gas required for the queries here.</p>
7
+
8
+ **Kind**: global class
9
+ **Extends**: <code>PerpetualDataHandler</code>
10
+
11
+ * [MarketData](#MarketData) ⇐ <code>PerpetualDataHandler</code>
12
+ * [new MarketData(config)](#new_MarketData_new)
13
+ * _instance_
14
+ * [.createProxyInstance(providerOrMarketData)](#MarketData+createProxyInstance)
15
+ * [.getProxyAddress()](#MarketData+getProxyAddress) ⇒ <code>string</code>
16
+ * [.getTriangulations()](#MarketData+getTriangulations) ⇒
17
+ * [.smartContractOrderToOrder(smOrder)](#MarketData+smartContractOrderToOrder) ⇒ <code>Order</code>
18
+ * [.getReadOnlyProxyInstance()](#MarketData+getReadOnlyProxyInstance) ⇒
19
+ * [.exchangeInfo()](#MarketData+exchangeInfo) ⇒ <code>ExchangeInfo</code>
20
+ * [.openOrders(traderAddr, symbol)](#MarketData+openOrders) ⇒
21
+ * [.positionRisk(traderAddr, symbol)](#MarketData+positionRisk) ⇒ <code>Array.&lt;MarginAccount&gt;</code>
22
+ * [.positionRiskOnTrade(traderAddr, order, signedPositionNotionalBaseCCY, tradingFeeTbps, indexPriceInfo)](#MarketData+positionRiskOnTrade) ⇒
23
+ * [.positionRiskOnCollateralAction(deltaCollateral, account)](#MarketData+positionRiskOnCollateralAction) ⇒ <code>MarginAccount</code>
24
+ * [.getWalletBalance(address, symbol)](#MarketData+getWalletBalance) ⇒
25
+ * [.getPoolShareTokenBalance(address, symbolOrId)](#MarketData+getPoolShareTokenBalance) ⇒ <code>number</code>
26
+ * [.getShareTokenPrice(symbolOrId)](#MarketData+getShareTokenPrice) ⇒ <code>number</code>
27
+ * [.getParticipationValue(address, symbolOrId)](#MarketData+getParticipationValue) ⇒
28
+ * [.maxOrderSizeForTrader(traderAddr, symbol)](#MarketData+maxOrderSizeForTrader) ⇒
29
+ * [.getMaxShortLongPos(perpId, currentTraderPos, overrides)](#MarketData+getMaxShortLongPos) ⇒
30
+ * [.maxSignedPosition(side, symbol)](#MarketData+maxSignedPosition) ⇒ <code>number</code>
31
+ * [.getOraclePrice(base, quote)](#MarketData+getOraclePrice) ⇒ <code>number</code>
32
+ * [.getOrderStatus(symbol, orderId, overrides)](#MarketData+getOrderStatus) ⇒
33
+ * [.getOrdersStatus(symbol, orderId)](#MarketData+getOrdersStatus) ⇒
34
+ * [.getMarkPrice(symbol, indexPrices)](#MarketData+getMarkPrice) ⇒ <code>number</code>
35
+ * [.getPerpetualPrice(symbol, quantity, priceInfo)](#MarketData+getPerpetualPrice) ⇒ <code>number</code>
36
+ * [.getPerpetualState(symbol)](#MarketData+getPerpetualState) ⇒ <code>PerpetualState</code>
37
+ * [.getPoolState(poolSymbol)](#MarketData+getPoolState) ⇒ <code>PoolState</code>
38
+ * [.getPerpetualStaticInfo(symbol)](#MarketData+getPerpetualStaticInfo) ⇒ <code>PerpetualStaticInfo</code>
39
+ * [.getPerpetualMidPrice(symbol)](#MarketData+getPerpetualMidPrice) ⇒ <code>number</code>
40
+ * [.getAvailableMargin(traderAddr, symbol, indexPrices)](#MarketData+getAvailableMargin) ⇒
41
+ * [.getTraderLoyalityScore(traderAddr)](#MarketData+getTraderLoyalityScore) ⇒ <code>number</code>
42
+ * [.isMarketClosed(symbol)](#MarketData+isMarketClosed) ⇒ <code>boolean</code>
43
+ * [.getPriceInUSD(symbol)](#MarketData+getPriceInUSD) ⇒ <code>Map.&lt;string, number&gt;</code>
44
+ * [.fetchPricesForPerpetual(symbol)](#MarketData+fetchPricesForPerpetual) ⇒
45
+ * _static_
46
+ * [.exchangeFeePrdMkts(state, maxMaintMgnRate, Sm, tradeAmtBC, tradeMgnRate)](#MarketData.exchangeFeePrdMkts) ⇒
47
+
48
+ <a name="new_MarketData_new"></a>
49
+
50
+ ### new MarketData(config)
51
+ <p>Constructor</p>
52
+
53
+
54
+ | Param | Type | Description |
55
+ | --- | --- | --- |
56
+ | config | <code>NodeSDKConfig</code> | <p>Configuration object, see PerpetualDataHandler.readSDKConfig.</p> |
57
+
58
+ **Example**
59
+ ```js
60
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
61
+ async function main() {
62
+ console.log(MarketData);
63
+ // load configuration for Polygon zkEVM (testnet)
64
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
65
+ // MarketData (read only, no authentication needed)
66
+ let mktData = new MarketData(config);
67
+ // Create a proxy instance to access the blockchain
68
+ await mktData.createProxyInstance();
69
+ }
70
+ main();
71
+ ```
72
+ <a name="MarketData+createProxyInstance"></a>
73
+
74
+ ### marketData.createProxyInstance(providerOrMarketData)
75
+ <p>Initialize the marketData-Class with this function
76
+ to create instance of D8X perpetual contract and gather information
77
+ about perpetual currencies</p>
78
+
79
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
80
+
81
+ | Param | Description |
82
+ | --- | --- |
83
+ | providerOrMarketData | <p>optional provider or existing market data instance</p> |
84
+
85
+ <a name="MarketData+getProxyAddress"></a>
86
+
87
+ ### marketData.getProxyAddress() ⇒ <code>string</code>
88
+ <p>Get the proxy address</p>
89
+
90
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
91
+ **Returns**: <code>string</code> - <p>Address of the perpetual proxy contract</p>
92
+ <a name="MarketData+getTriangulations"></a>
93
+
94
+ ### marketData.getTriangulations() ⇒
95
+ <p>Get the pre-computed triangulations</p>
96
+
97
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
98
+ **Returns**: <p>Triangulations</p>
99
+ <a name="MarketData+smartContractOrderToOrder"></a>
100
+
101
+ ### marketData.smartContractOrderToOrder(smOrder) ⇒ <code>Order</code>
102
+ <p>Convert the smart contract output of an order into a convenient format of type &quot;Order&quot;</p>
103
+
104
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
105
+ **Returns**: <code>Order</code> - <p>more convenient format of order, type &quot;Order&quot;</p>
106
+
107
+ | Param | Type | Description |
108
+ | --- | --- | --- |
109
+ | smOrder | <code>SmartContractOrder</code> | <p>SmartContractOrder, as obtained e.g., by PerpetualLimitOrderCreated event</p> |
110
+
111
+ <a name="MarketData+getReadOnlyProxyInstance"></a>
112
+
113
+ ### marketData.getReadOnlyProxyInstance() ⇒
114
+ <p>Get contract instance. Useful for event listening.</p>
115
+
116
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
117
+ **Returns**: <p>read-only proxy instance</p>
118
+ **Example**
119
+ ```js
120
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
121
+ async function main() {
122
+ console.log(MarketData);
123
+ // setup
124
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
125
+ let mktData = new MarketData(config);
126
+ await mktData.createProxyInstance();
127
+ // Get contract instance
128
+ let proxy = await mktData.getReadOnlyProxyInstance();
129
+ console.log(proxy);
130
+ }
131
+ main();
132
+ ```
133
+ <a name="MarketData+exchangeInfo"></a>
134
+
135
+ ### marketData.exchangeInfo() ⇒ <code>ExchangeInfo</code>
136
+ <p>Information about the products traded in the exchange.</p>
137
+
138
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
139
+ **Returns**: <code>ExchangeInfo</code> - <p>Array of static data for all the pools and perpetuals in the system.</p>
140
+ **Example**
141
+ ```js
142
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
143
+ async function main() {
144
+ console.log(MarketData);
145
+ // setup
146
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
147
+ let mktData = new MarketData(config);
148
+ await mktData.createProxyInstance();
149
+ // Get exchange info
150
+ let info = await mktData.exchangeInfo();
151
+ console.log(info);
152
+ }
153
+ main();
154
+ ```
155
+ <a name="MarketData+openOrders"></a>
156
+
157
+ ### marketData.openOrders(traderAddr, symbol) ⇒
158
+ <p>All open orders for a trader-address and a symbol.</p>
159
+
160
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
161
+ **Returns**: <p>For each perpetual an array of open orders and corresponding order-ids.</p>
162
+
163
+ | Param | Type | Description |
164
+ | --- | --- | --- |
165
+ | traderAddr | <code>string</code> | <p>Address of the trader for which we get the open orders.</p> |
166
+ | symbol | <code>string</code> | <p>Symbol of the form ETH-USD-MATIC or a pool symbol, or undefined. If a poolSymbol is provided, the response includes orders in all perpetuals of the given pool. If no symbol is provided, the response includes orders from all perpetuals in all pools.</p> |
167
+
168
+ **Example**
169
+ ```js
170
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
171
+ async function main() {
172
+ console.log(MarketData);
173
+ // setup
174
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
175
+ let mktData = new MarketData(config);
176
+ await mktData.createProxyInstance();
177
+ // Get all open orders for a trader/symbol
178
+ let opOrder = await mktData.openOrders("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
179
+ "ETH-USD-MATIC");
180
+ console.log(opOrder);
181
+ }
182
+ main();
183
+ ```
184
+ <a name="MarketData+positionRisk"></a>
185
+
186
+ ### marketData.positionRisk(traderAddr, symbol) ⇒ <code>Array.&lt;MarginAccount&gt;</code>
187
+ <p>Information about the position open by a given trader in a given perpetual contract, or
188
+ for all perpetuals in a pool</p>
189
+
190
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
191
+ **Returns**: <code>Array.&lt;MarginAccount&gt;</code> - <p>Array of position risks of trader.</p>
192
+
193
+ | Param | Type | Description |
194
+ | --- | --- | --- |
195
+ | traderAddr | <code>string</code> | <p>Address of the trader for which we get the position risk.</p> |
196
+ | symbol | <code>string</code> | <p>Symbol of the form ETH-USD-MATIC, or pool symbol (&quot;MATIC&quot;) to get all positions in a given pool, or no symbol to get all positions in all pools.</p> |
197
+
198
+ **Example**
199
+ ```js
200
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
201
+ async function main() {
202
+ console.log(MarketData);
203
+ // setup
204
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
205
+ let mktData = new MarketData(config);
206
+ await mktData.createProxyInstance();
207
+ // Get position risk info
208
+ let posRisk = await mktData.positionRisk("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
209
+ "ETH-USD-MATIC");
210
+ console.log(posRisk);
211
+ }
212
+ main();
213
+ ```
214
+ <a name="MarketData+positionRiskOnTrade"></a>
215
+
216
+ ### marketData.positionRiskOnTrade(traderAddr, order, signedPositionNotionalBaseCCY, tradingFeeTbps, indexPriceInfo) ⇒
217
+ <p>Estimates what the position risk will be if a given order is executed.</p>
218
+
219
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
220
+ **Returns**: <p>Position risk after trade, including order cost and maximal trade sizes for position</p>
221
+
222
+ | Param | Description |
223
+ | --- | --- |
224
+ | traderAddr | <p>Address of trader</p> |
225
+ | order | <p>Order to be submitted</p> |
226
+ | signedPositionNotionalBaseCCY | <p>signed position notional of current position (before trade)</p> |
227
+ | tradingFeeTbps | <p>trading fee in tenth of basis points (exchange fee and broker fee)</p> |
228
+ | indexPriceInfo | <p>Index prices and market status (open/closed). Defaults to current market status if not given.</p> |
229
+
230
+ **Example**
231
+ ```js
232
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
233
+ async function main() {
234
+ console.log(MarketData);
235
+ // setup
236
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
237
+ const mktData = new MarketData(config);
238
+ await mktData.createProxyInstance();
239
+ const order: Order = {
240
+ symbol: "MATIC-USD-MATIC",
241
+ side: "BUY",
242
+ type: "MARKET",
243
+ quantity: 100,
244
+ leverage: 2,
245
+ executionTimestamp: Date.now()/1000,
246
+ };
247
+ // Get position risk conditional on this order being executed
248
+ const posRisk = await mktData.positionRiskOnTrade("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B", order, 0, 60);
249
+ console.log(posRisk);
250
+ }
251
+ main();
252
+ ```
253
+ <a name="MarketData+positionRiskOnCollateralAction"></a>
254
+
255
+ ### marketData.positionRiskOnCollateralAction(deltaCollateral, account) ⇒ <code>MarginAccount</code>
256
+ <p>Estimates what the position risk will be if given amount of collateral is added/removed from the account.</p>
257
+
258
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
259
+ **Returns**: <code>MarginAccount</code> - <p>Position risk after collateral has been added/removed</p>
260
+
261
+ | Param | Type | Description |
262
+ | --- | --- | --- |
263
+ | deltaCollateral | <code>number</code> | <p>Amount of collateral to add or remove (signed)</p> |
264
+ | account | <code>MarginAccount</code> | <p>Position risk before collateral is added or removed</p> |
265
+
266
+ **Example**
267
+ ```js
268
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
269
+ async function main() {
270
+ console.log(MarketData);
271
+ // setup
272
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
273
+ const mktData = new MarketData(config);
274
+ await mktData.createProxyInstance();
275
+ // Get position risk conditional on removing 3.14 MATIC
276
+ const traderAddr = "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B";
277
+ const curPos = await mktData.positionRisk("traderAddr", "BTC-USD-MATIC");
278
+ const posRisk = await mktData.positionRiskOnCollateralAction(-3.14, curPos);
279
+ console.log(posRisk);
280
+ }
281
+ main();
282
+ ```
283
+ <a name="MarketData+getWalletBalance"></a>
284
+
285
+ ### marketData.getWalletBalance(address, symbol) ⇒
286
+ <p>Gets the wallet balance in the settlement currency corresponding to a given perpetual symbol.
287
+ The settlement currency is usually the same as the collateral currency.</p>
288
+
289
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
290
+ **Returns**: <p>Perpetual's collateral token balance of the given address.</p>
291
+
292
+ | Param | Description |
293
+ | --- | --- |
294
+ | address | <p>Address to check</p> |
295
+ | symbol | <p>Symbol of the form ETH-USD-MATIC.</p> |
296
+
297
+ **Example**
298
+ ```js
299
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
300
+ async function main() {
301
+ console.log(MarketData);
302
+ // setup (authentication required, PK is an environment variable with a private key)
303
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
304
+ let md = new MarketData(config);
305
+ await md.createProxyInstance();
306
+ // get MATIC balance of address
307
+ let marginTokenBalance = await md.getWalletBalance(myaddress, "BTC-USD-MATIC");
308
+ console.log(marginTokenBalance);
309
+ }
310
+ main();
311
+ ```
312
+ <a name="MarketData+getPoolShareTokenBalance"></a>
313
+
314
+ ### marketData.getPoolShareTokenBalance(address, symbolOrId) ⇒ <code>number</code>
315
+ <p>Get the address' balance of the pool share token</p>
316
+
317
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
318
+ **Returns**: <code>number</code> - <p>Pool share token balance of the given address (e.g. dMATIC balance)</p>
319
+
320
+ | Param | Type | Description |
321
+ | --- | --- | --- |
322
+ | address | <code>string</code> | <p>address of the liquidity provider</p> |
323
+ | symbolOrId | <code>string</code> \| <code>number</code> | <p>Symbol of the form ETH-USD-MATIC, or MATIC (collateral only), or Pool-Id</p> |
324
+
325
+ **Example**
326
+ ```js
327
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
328
+ async function main() {
329
+ console.log(MarketData);
330
+ // setup (authentication required, PK is an environment variable with a private key)
331
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
332
+ let md = new MarketData(config);
333
+ await md.createProxyInstance();
334
+ // get dMATIC balance of address
335
+ let shareTokenBalance = await md.getPoolShareTokenBalance(myaddress, "MATIC");
336
+ console.log(shareTokenBalance);
337
+ }
338
+ main();
339
+ ```
340
+ <a name="MarketData+getShareTokenPrice"></a>
341
+
342
+ ### marketData.getShareTokenPrice(symbolOrId) ⇒ <code>number</code>
343
+ <p>Value of pool token in collateral currency</p>
344
+
345
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
346
+ **Returns**: <code>number</code> - <p>current pool share token price in collateral currency</p>
347
+
348
+ | Param | Type | Description |
349
+ | --- | --- | --- |
350
+ | symbolOrId | <code>string</code> \| <code>number</code> | <p>symbol of the form ETH-USD-MATIC, MATIC (collateral), or poolId</p> |
351
+
352
+ **Example**
353
+ ```js
354
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
355
+ async function main() {
356
+ console.log(MarketData);
357
+ // setup (authentication required, PK is an environment variable with a private key)
358
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
359
+ let md = new MarketData(config);
360
+ await md.createProxyInstance();
361
+ // get price of 1 dMATIC in MATIC
362
+ let shareTokenPrice = await md.getShareTokenPrice(myaddress, "MATIC");
363
+ console.log(shareTokenPrice);
364
+ }
365
+ main();
366
+ ```
367
+ <a name="MarketData+getParticipationValue"></a>
368
+
369
+ ### marketData.getParticipationValue(address, symbolOrId) ⇒
370
+ <p>Value of the pool share tokens for this liquidity provider
371
+ in poolSymbol-currency (e.g. MATIC, USDC).</p>
372
+
373
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
374
+ **Returns**: <p>the value (in collateral tokens) of the pool share, #share tokens, shareTokenAddress</p>
375
+
376
+ | Param | Type | Description |
377
+ | --- | --- | --- |
378
+ | address | <code>string</code> | <p>address of liquidity provider</p> |
379
+ | symbolOrId | <code>string</code> \| <code>number</code> | <p>symbol of the form ETH-USD-MATIC, MATIC (collateral), or poolId</p> |
380
+
381
+ **Example**
382
+ ```js
383
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
384
+ async function main() {
385
+ console.log(MarketData);
386
+ // setup (authentication required, PK is an environment variable with a private key)
387
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
388
+ let md = new MarketData(config);
389
+ await md.createProxyInstance();
390
+ // get value of pool share token
391
+ let shareToken = await md.getParticipationValue(myaddress, "MATIC");
392
+ console.log(shareToken);
393
+ }
394
+ main();
395
+ ```
396
+ <a name="MarketData+maxOrderSizeForTrader"></a>
397
+
398
+ ### marketData.maxOrderSizeForTrader(traderAddr, symbol) ⇒
399
+ <p>Gets the maximal order sizes to open positions (increase size), both long and short,
400
+ considering the existing position, state of the perpetual
401
+ Accounts for user's wallet balance.</p>
402
+
403
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
404
+ **Returns**: <p>Maximal trade sizes</p>
405
+
406
+ | Param | Type | Description |
407
+ | --- | --- | --- |
408
+ | traderAddr | <code>string</code> | <p>Address of trader</p> |
409
+ | symbol | <code>symbol</code> | <p>Symbol of the form ETH-USD-MATIC</p> |
410
+
411
+ **Example**
412
+ ```js
413
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
414
+ async function main() {
415
+ console.log(MarketData);
416
+ // setup (authentication required, PK is an environment variable with a private key)
417
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
418
+ let md = new MarketData(config);
419
+ await md.createProxyInstance();
420
+ // max order sizes
421
+ let shareToken = await md.maxOrderSizeForTrader(myaddress, "BTC-USD-MATIC");
422
+ console.log(shareToken); // {buy: 314, sell: 415}
423
+ }
424
+ main();
425
+ ```
426
+ <a name="MarketData+getMaxShortLongPos"></a>
427
+
428
+ ### marketData.getMaxShortLongPos(perpId, currentTraderPos, overrides) ⇒
429
+ <p>Returns the maximal allowed short pos and long pos (signed) for a trader
430
+ with given notional (in ABDK format) in the perpetual, ignoring the traders wallet balance</p>
431
+
432
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
433
+ **Returns**: <p>[maxShortPos, maxLongPos] signed maximal position sizes</p>
434
+
435
+ | Param | Description |
436
+ | --- | --- |
437
+ | perpId | |
438
+ | currentTraderPos | <p>ABDK64x64 notional position of trader</p> |
439
+ | overrides | |
440
+
441
+ <a name="MarketData+maxSignedPosition"></a>
442
+
443
+ ### marketData.maxSignedPosition(side, symbol) ⇒ <code>number</code>
444
+ <p>Perpetual-wide maximal signed position size in perpetual.</p>
445
+
446
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
447
+ **Returns**: <code>number</code> - <p>signed maximal position size in base currency</p>
448
+
449
+ | Param | Type | Description |
450
+ | --- | --- | --- |
451
+ | side | | <p>BUY_SIDE or SELL_SIDE</p> |
452
+ | symbol | <code>string</code> | <p>of the form ETH-USD-MATIC.</p> |
453
+
454
+ **Example**
455
+ ```js
456
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
457
+ async function main() {
458
+ console.log(MarketData);
459
+ // setup
460
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
461
+ let mktData = new MarketData(config);
462
+ await mktData.createProxyInstance();
463
+ // get oracle price
464
+ let maxLongPos = await mktData.maxSignedPosition(BUY_SIDE, "BTC-USD-MATIC");
465
+ console.log(maxLongPos);
466
+ }
467
+ main();
468
+ ```
469
+ <a name="MarketData+getOraclePrice"></a>
470
+
471
+ ### marketData.getOraclePrice(base, quote) ⇒ <code>number</code>
472
+ <p>Uses the Oracle(s) in the exchange to get the latest price of a given index in a given currency, if a route exists.</p>
473
+
474
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
475
+ **Returns**: <code>number</code> - <p>Price of index in given currency.</p>
476
+
477
+ | Param | Type | Description |
478
+ | --- | --- | --- |
479
+ | base | <code>string</code> | <p>Index name, e.g. ETH.</p> |
480
+ | quote | <code>string</code> | <p>Quote currency, e.g. USD.</p> |
481
+
482
+ **Example**
483
+ ```js
484
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
485
+ async function main() {
486
+ console.log(MarketData);
487
+ // setup
488
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
489
+ let mktData = new MarketData(config);
490
+ await mktData.createProxyInstance();
491
+ // get oracle price
492
+ let price = await mktData.getOraclePrice("ETH", "USD");
493
+ console.log(price);
494
+ }
495
+ main();
496
+ ```
497
+ <a name="MarketData+getOrderStatus"></a>
498
+
499
+ ### marketData.getOrderStatus(symbol, orderId, overrides) ⇒
500
+ <p>Get the status of an order given a symbol and order Id</p>
501
+
502
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
503
+ **Returns**: <p>Order status (cancelled = 0, executed = 1, open = 2, unkown = 3)</p>
504
+
505
+ | Param | Description |
506
+ | --- | --- |
507
+ | symbol | <p>Symbol of the form ETH-USD-MATIC</p> |
508
+ | orderId | <p>Order Id</p> |
509
+ | overrides | |
510
+
511
+ **Example**
512
+ ```js
513
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
514
+ async function main() {
515
+ console.log(MarketData);
516
+ // setup
517
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
518
+ let mktData = new MarketData(config);
519
+ await mktData.createProxyInstance();
520
+ // get order stauts
521
+ let status = await mktData.getOrderStatus("ETH-USD-MATIC", "0xmyOrderId");
522
+ console.log(status);
523
+ }
524
+ main();
525
+ ```
526
+ <a name="MarketData+getOrdersStatus"></a>
527
+
528
+ ### marketData.getOrdersStatus(symbol, orderId) ⇒
529
+ <p>Get the status of an array of orders given a symbol and their Ids</p>
530
+
531
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
532
+ **Returns**: <p>Array of order status</p>
533
+
534
+ | Param | Description |
535
+ | --- | --- |
536
+ | symbol | <p>Symbol of the form ETH-USD-MATIC</p> |
537
+ | orderId | <p>Array of order Ids</p> |
538
+
539
+ **Example**
540
+ ```js
541
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
542
+ async function main() {
543
+ console.log(MarketData);
544
+ // setup
545
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
546
+ let mktData = new MarketData(config);
547
+ await mktData.createProxyInstance();
548
+ // get order stauts
549
+ let status = await mktData.getOrdersStatus("ETH-USD-MATIC", ["0xmyOrderId1", "0xmyOrderId2"]);
550
+ console.log(status);
551
+ }
552
+ main();
553
+ ```
554
+ <a name="MarketData+getMarkPrice"></a>
555
+
556
+ ### marketData.getMarkPrice(symbol, indexPrices) ⇒ <code>number</code>
557
+ <p>Get the current mark price</p>
558
+
559
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
560
+ **Returns**: <code>number</code> - <p>mark price</p>
561
+
562
+ | Param | Description |
563
+ | --- | --- |
564
+ | symbol | <p>symbol of the form ETH-USD-MATIC</p> |
565
+ | indexPrices | <p>optional. IdxPriceInfo</p> |
566
+
567
+ **Example**
568
+ ```js
569
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
570
+ async function main() {
571
+ console.log(MarketData);
572
+ // setup
573
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
574
+ let mktData = new MarketData(config);
575
+ await mktData.createProxyInstance();
576
+ // get mark price
577
+ let price = await mktData.getMarkPrice("ETH-USD-MATIC");
578
+ console.log(price);
579
+ }
580
+ main();
581
+ ```
582
+ <a name="MarketData+getPerpetualPrice"></a>
583
+
584
+ ### marketData.getPerpetualPrice(symbol, quantity, priceInfo) ⇒ <code>number</code>
585
+ <p>get the current price for a given quantity</p>
586
+
587
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
588
+ **Returns**: <code>number</code> - <p>price</p>
589
+
590
+ | Param | Description |
591
+ | --- | --- |
592
+ | symbol | <p>symbol of the form ETH-USD-MATIC</p> |
593
+ | quantity | <p>quantity to be traded, negative if short</p> |
594
+ | priceInfo | <p>[s2, s3, conf, params]; for non-prediction markets conf/params can be 0</p> |
595
+
596
+ **Example**
597
+ ```js
598
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
599
+ async function main() {
600
+ console.log(MarketData);
601
+ // setup
602
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
603
+ let mktData = new MarketData(config);
604
+ await mktData.createProxyInstance();
605
+ // get perpetual price
606
+ let price = await mktData.getPerpetualPrice("ETH-USD-MATIC", 1);
607
+ console.log(price);
608
+ }
609
+ main();
610
+ ```
611
+ <a name="MarketData+getPerpetualState"></a>
612
+
613
+ ### marketData.getPerpetualState(symbol) ⇒ <code>PerpetualState</code>
614
+ <p>Query recent perpetual state from blockchain</p>
615
+
616
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
617
+ **Returns**: <code>PerpetualState</code> - <p>PerpetualState copy</p>
618
+
619
+ | Param | Type | Description |
620
+ | --- | --- | --- |
621
+ | symbol | <code>string</code> | <p>symbol of the form ETH-USD-MATIC</p> |
622
+
623
+ <a name="MarketData+getPoolState"></a>
624
+
625
+ ### marketData.getPoolState(poolSymbol) ⇒ <code>PoolState</code>
626
+ <p>Query recent pool state from blockchain, not including perpetual states</p>
627
+
628
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
629
+ **Returns**: <code>PoolState</code> - <p>PoolState copy</p>
630
+
631
+ | Param | Type | Description |
632
+ | --- | --- | --- |
633
+ | poolSymbol | <code>string</code> | <p>symbol of the form USDC</p> |
634
+
635
+ <a name="MarketData+getPerpetualStaticInfo"></a>
636
+
637
+ ### marketData.getPerpetualStaticInfo(symbol) ⇒ <code>PerpetualStaticInfo</code>
638
+ <p>Query perpetual static info.
639
+ This information is queried once at createProxyInstance-time, and remains static after that.</p>
640
+
641
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
642
+ **Returns**: <code>PerpetualStaticInfo</code> - <p>Perpetual static info copy.</p>
643
+
644
+ | Param | Type | Description |
645
+ | --- | --- | --- |
646
+ | symbol | <code>string</code> | <p>Perpetual symbol</p> |
647
+
648
+ <a name="MarketData+getPerpetualMidPrice"></a>
649
+
650
+ ### marketData.getPerpetualMidPrice(symbol) ⇒ <code>number</code>
651
+ <p>get the current mid-price for a perpetual</p>
652
+
653
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
654
+ **Returns**: <code>number</code> - <p>price</p>
655
+
656
+ | Param | Description |
657
+ | --- | --- |
658
+ | symbol | <p>symbol of the form ETH-USD-MATIC</p> |
659
+
660
+ **Example**
661
+ ```js
662
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
663
+ async function main() {
664
+ console.log(MarketData);
665
+ // setup
666
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
667
+ let mktData = new MarketData(config);
668
+ await mktData.createProxyInstance();
669
+ // get perpetual mid price
670
+ let midPrice = await mktData.getPerpetualMidPrice("ETH-USD-MATIC");
671
+ console.log(midPrice);
672
+ }
673
+ main();
674
+ ```
675
+ <a name="MarketData+getAvailableMargin"></a>
676
+
677
+ ### marketData.getAvailableMargin(traderAddr, symbol, indexPrices) ⇒
678
+ <p>Query the available margin conditional on the given (or current) index prices
679
+ Result is in collateral currency</p>
680
+
681
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
682
+ **Returns**: <p>available margin in collateral currency</p>
683
+
684
+ | Param | Type | Description |
685
+ | --- | --- | --- |
686
+ | traderAddr | <code>string</code> | <p>address of the trader</p> |
687
+ | symbol | <code>string</code> | <p>perpetual symbol of the form BTC-USD-MATIC</p> |
688
+ | indexPrices | | <p>optional indexPriceInfo</p> |
689
+
690
+ **Example**
691
+ ```js
692
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
693
+ async function main() {
694
+ console.log(MarketData);
695
+ // setup
696
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
697
+ let mktData = new MarketData(config);
698
+ await mktData.createProxyInstance();
699
+ // get available margin
700
+ let mgn = await mktData.getAvailableMargin("0xmyAddress", "ETH-USD-MATIC");
701
+ console.log(mgn);
702
+ }
703
+ main();
704
+ ```
705
+ <a name="MarketData+getTraderLoyalityScore"></a>
706
+
707
+ ### marketData.getTraderLoyalityScore(traderAddr) ⇒ <code>number</code>
708
+ <p>Calculate a type of exchange loyality score based on trader volume</p>
709
+
710
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
711
+ **Returns**: <code>number</code> - <p>a loyality score (4 worst, 1 best)</p>
712
+
713
+ | Param | Type | Description |
714
+ | --- | --- | --- |
715
+ | traderAddr | <code>string</code> | <p>address of the trader</p> |
716
+
717
+ **Example**
718
+ ```js
719
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
720
+ async function main() {
721
+ console.log(MarketData);
722
+ // setup
723
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
724
+ let mktData = new MarketData(config);
725
+ await mktData.createProxyInstance();
726
+ // get scpre
727
+ let s = await mktData.getTraderLoyalityScore("0xmyAddress");
728
+ console.log(s);
729
+ }
730
+ main();
731
+ ```
732
+ <a name="MarketData+isMarketClosed"></a>
733
+
734
+ ### marketData.isMarketClosed(symbol) ⇒ <code>boolean</code>
735
+ <p>Get market open/closed status</p>
736
+
737
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
738
+ **Returns**: <code>boolean</code> - <p>True if the market is closed</p>
739
+
740
+ | Param | Type | Description |
741
+ | --- | --- | --- |
742
+ | symbol | <code>string</code> | <p>Perpetual symbol of the form ETH-USD-MATIC</p> |
743
+
744
+ **Example**
745
+ ```js
746
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
747
+ async function main() {
748
+ console.log(MarketData);
749
+ // setup
750
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
751
+ let mktData = new MarketData(config);
752
+ await mktData.createProxyInstance();
753
+ // is market closed?
754
+ let s = await mktData.isMarketClosed("ETH-USD-MATIC");
755
+ console.log(s);
756
+ }
757
+ main();
758
+ ```
759
+ <a name="MarketData+getPriceInUSD"></a>
760
+
761
+ ### marketData.getPriceInUSD(symbol) ⇒ <code>Map.&lt;string, number&gt;</code>
762
+ <p>Get the latest on-chain price of a perpetual base index in USD.</p>
763
+
764
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
765
+ **Returns**: <code>Map.&lt;string, number&gt;</code> - <p>Price of the base index in USD, e.g. for ETH-USDC-MATIC, it returns the value of ETH-USD.</p>
766
+
767
+ | Param | Type | Description |
768
+ | --- | --- | --- |
769
+ | symbol | <code>string</code> | <p>Symbol of the form ETH-USDC-MATIC. If a pool symbol is used, it returns an array of all the USD prices of the indices in the pool. If no argument is provided, it returns all prices of all the indices in the pools of the exchange.</p> |
770
+
771
+ **Example**
772
+ ```js
773
+ import { MarketData, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
774
+ async function main() {
775
+ console.log(MarketData);
776
+ // setup
777
+ const config = PerpetualDataHandler.readSDKConfig("cardona");
778
+ let mktData = new MarketData(config);
779
+ await mktData.createProxyInstance();
780
+ // is market closed?
781
+ let px = await mktData.getPriceInUSD("ETH-USDC-USDC");
782
+ console.log(px); // {'ETH-USD' -> 1800}
783
+ }
784
+ main();
785
+ ```
786
+ <a name="MarketData+fetchPricesForPerpetual"></a>
787
+
788
+ ### marketData.fetchPricesForPerpetual(symbol) ⇒
789
+ <p>Fetch latest off-chain index and collateral prices</p>
790
+
791
+ **Kind**: instance method of [<code>MarketData</code>](#MarketData)
792
+ **Returns**: <p>Prices and market-closed information</p>
793
+
794
+ | Param | Description |
795
+ | --- | --- |
796
+ | symbol | <p>Perpetual symbol of the form BTC-USDc-USDC</p> |
797
+
798
+ <a name="MarketData.exchangeFeePrdMkts"></a>
799
+
800
+ ### MarketData.exchangeFeePrdMkts(state, maxMaintMgnRate, Sm, tradeAmtBC, tradeMgnRate) ⇒
801
+ <p>Fee is relative to base-currency amount (=trade amount)</p>
802
+
803
+ **Kind**: static method of [<code>MarketData</code>](#MarketData)
804
+ **Returns**: <p>relative exchange fee in decimals</p>
805
+
806
+ | Param | Description |
807
+ | --- | --- |
808
+ | state | <p>current perpetual state (need longBC and shortBC)</p> |
809
+ | maxMaintMgnRate | <p>maintenance margin rate param for pred mkts</p> |
810
+ | Sm | <p>Mark price</p> |
811
+ | tradeAmtBC | <p>signed trade amount</p> |
812
+ | tradeMgnRate | <p>margin rate param from perpetual</p> |
813
+