@d8x/perpetuals-sdk 2.1.5-alpha2 → 2.1.7-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 (193) hide show
  1. package/dist/cjs/config/defaultConfig.json +8 -4
  2. package/dist/cjs/config/priceFeedConfig.json +12 -0
  3. package/dist/cjs/config/symbolList.json +2 -1
  4. package/dist/cjs/d8XMath.d.ts +1 -1
  5. package/dist/cjs/d8XMath.js +3 -3
  6. package/dist/cjs/marketData.d.ts +2 -2
  7. package/dist/cjs/marketData.js +4 -3
  8. package/dist/cjs/marketData.js.map +1 -1
  9. package/dist/cjs/nodeSDKTypes.d.ts +1 -0
  10. package/dist/cjs/nodeSDKTypes.js.map +1 -1
  11. package/dist/cjs/perpetualDataHandler.d.ts +4 -0
  12. package/dist/cjs/perpetualDataHandler.js +18 -0
  13. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  14. package/dist/cjs/priceFeeds.d.ts +6 -0
  15. package/dist/cjs/priceFeeds.js +49 -7
  16. package/dist/cjs/priceFeeds.js.map +1 -1
  17. package/dist/cjs/version.d.ts +1 -1
  18. package/dist/cjs/version.js +1 -1
  19. package/dist/cjs/writeAccessHandler.js +1 -0
  20. package/dist/cjs/writeAccessHandler.js.map +1 -1
  21. package/dist/esm/config/defaultConfig.json +8 -4
  22. package/dist/esm/config/priceFeedConfig.json +12 -0
  23. package/dist/esm/config/symbolList.json +2 -1
  24. package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
  25. package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
  26. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
  27. package/dist/esm/d8XMath.d.ts +1 -1
  28. package/dist/esm/d8XMath.js +3 -3
  29. package/dist/esm/marketData.d.ts +2 -2
  30. package/dist/esm/marketData.js +4 -3
  31. package/dist/esm/marketData.js.map +1 -1
  32. package/dist/esm/nodeSDKTypes.d.ts +1 -0
  33. package/dist/esm/nodeSDKTypes.js.map +1 -1
  34. package/dist/esm/perpetualDataHandler.d.ts +4 -0
  35. package/dist/esm/perpetualDataHandler.js +18 -0
  36. package/dist/esm/perpetualDataHandler.js.map +1 -1
  37. package/dist/esm/priceFeeds.d.ts +6 -0
  38. package/dist/esm/priceFeeds.js +49 -7
  39. package/dist/esm/priceFeeds.js.map +1 -1
  40. package/dist/esm/version.d.ts +1 -1
  41. package/dist/esm/version.js +1 -1
  42. package/dist/esm/writeAccessHandler.js +1 -0
  43. package/dist/esm/writeAccessHandler.js.map +1 -1
  44. package/doc/d8x-perpetuals-sdk.md +182 -2
  45. package/doc/marketData.md +13 -0
  46. package/doc/perpetualDataHandler.md +7 -0
  47. package/package.json +1 -1
  48. package/src/config/defaultConfig.json +8 -4
  49. package/src/config/priceFeedConfig.json +12 -0
  50. package/src/config/symbolList.json +2 -1
  51. package/src/d8XMath.ts +3 -3
  52. package/src/marketData.ts +4 -3
  53. package/src/nodeSDKTypes.ts +1 -0
  54. package/src/perpetualDataHandler.ts +19 -0
  55. package/src/priceFeeds.ts +50 -11
  56. package/src/version.ts +1 -1
  57. package/src/writeAccessHandler.ts +1 -0
  58. package/dist/cjs/abi/BeaconProxy.json +0 -71
  59. package/dist/cjs/abi/Maintainer.json +0 -774
  60. package/dist/cjs/abi/MockToken.json +0 -347
  61. package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
  62. package/dist/cjs/abi/WeETH.json +0 -310
  63. package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
  64. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
  65. package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
  66. package/dist/cjs/contracts/BeaconProxy.js +0 -3
  67. package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
  68. package/dist/cjs/contracts/Maintainer.d.ts +0 -799
  69. package/dist/cjs/contracts/Maintainer.js +0 -3
  70. package/dist/cjs/contracts/Maintainer.js.map +0 -1
  71. package/dist/cjs/contracts/MockToken.d.ts +0 -263
  72. package/dist/cjs/contracts/MockToken.js +0 -3
  73. package/dist/cjs/contracts/MockToken.js.map +0 -1
  74. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
  75. package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
  76. package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
  77. package/dist/cjs/contracts/WeETH.d.ts +0 -503
  78. package/dist/cjs/contracts/WeETH.js +0 -3
  79. package/dist/cjs/contracts/WeETH.js.map +0 -1
  80. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  81. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
  82. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
  83. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
  84. package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
  85. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
  86. package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
  87. package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
  88. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  89. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
  90. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  91. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
  92. package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
  93. package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
  94. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  95. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
  96. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  97. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  98. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
  99. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  100. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  101. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
  102. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  103. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  104. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
  105. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  106. package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
  107. package/dist/cjs/contracts/factories/lean0/index.js +0 -15
  108. package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
  109. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  110. package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
  111. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
  112. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
  113. package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
  114. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
  115. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  116. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
  117. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  118. package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
  119. package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
  120. package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
  121. package/dist/cjs/contracts/lean0/index.d.ts +0 -4
  122. package/dist/cjs/contracts/lean0/index.js +0 -3
  123. package/dist/cjs/contracts/lean0/index.js.map +0 -1
  124. package/dist/esm/abi/BeaconProxy.json +0 -71
  125. package/dist/esm/abi/Maintainer.json +0 -774
  126. package/dist/esm/abi/MockToken.json +0 -347
  127. package/dist/esm/abi/UUPSUpgradeable.json +0 -104
  128. package/dist/esm/abi/WeETH.json +0 -310
  129. package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
  130. package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
  131. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
  132. package/dist/esm/abi/lean0/ShareToken.json +0 -438
  133. package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
  134. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
  135. package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
  136. package/dist/esm/contracts/BeaconProxy.js +0 -2
  137. package/dist/esm/contracts/BeaconProxy.js.map +0 -1
  138. package/dist/esm/contracts/Maintainer.d.ts +0 -799
  139. package/dist/esm/contracts/Maintainer.js +0 -2
  140. package/dist/esm/contracts/Maintainer.js.map +0 -1
  141. package/dist/esm/contracts/MockToken.d.ts +0 -263
  142. package/dist/esm/contracts/MockToken.js +0 -2
  143. package/dist/esm/contracts/MockToken.js.map +0 -1
  144. package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
  145. package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
  146. package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
  147. package/dist/esm/contracts/WeETH.d.ts +0 -503
  148. package/dist/esm/contracts/WeETH.js +0 -2
  149. package/dist/esm/contracts/WeETH.js.map +0 -1
  150. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  151. package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
  152. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
  153. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
  154. package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
  155. package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
  156. package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
  157. package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
  158. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  159. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
  160. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  161. package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
  162. package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
  163. package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
  164. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  165. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
  166. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  167. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  168. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
  169. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  170. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  171. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
  172. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  173. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  174. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
  175. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  176. package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
  177. package/dist/esm/contracts/factories/lean0/index.js +0 -8
  178. package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
  179. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  180. package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
  181. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
  182. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
  183. package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
  184. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
  185. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  186. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
  187. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  188. package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
  189. package/dist/esm/contracts/lean0/ShareToken.js +0 -2
  190. package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
  191. package/dist/esm/contracts/lean0/index.d.ts +0 -4
  192. package/dist/esm/contracts/lean0/index.js +0 -2
  193. package/dist/esm/contracts/lean0/index.js.map +0 -1
@@ -9,6 +9,7 @@ common data and chain operations.</p>
9
9
  * [PerpetualDataHandler](#PerpetualDataHandler)
10
10
  * [new PerpetualDataHandler(config)](#new_PerpetualDataHandler_new)
11
11
  * _instance_
12
+ * [.fetchSymbolList()](#PerpetualDataHandler+fetchSymbolList)
12
13
  * [.getOrderBookContract(symbol)](#PerpetualDataHandler+getOrderBookContract) ⇒
13
14
  * [.getOrderBookAddress(symbol)](#PerpetualDataHandler+getOrderBookAddress) ⇒
14
15
  * [.getPerpetuals(ids, overrides)](#PerpetualDataHandler+getPerpetuals) ⇒
@@ -72,6 +73,12 @@ common data and chain operations.</p>
72
73
  | --- | --- | --- |
73
74
  | config | <code>NodeSDKConfig</code> | <p>Configuration object, see PerpetualDataHandler.readSDKConfig.</p> |
74
75
 
76
+ <a name="PerpetualDataHandler+fetchSymbolList"></a>
77
+
78
+ ### perpetualDataHandler.fetchSymbolList()
79
+ <p>sets the symbollist if a remote config url is specified</p>
80
+
81
+ **Kind**: instance method of [<code>PerpetualDataHandler</code>](#PerpetualDataHandler)
75
82
  <a name="PerpetualDataHandler+getOrderBookContract"></a>
76
83
 
77
84
  ### perpetualDataHandler.getOrderBookContract(symbol) ⇒
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d8x/perpetuals-sdk",
3
- "version": "2.1.5-alpha2",
3
+ "version": "2.1.7-alpha2",
4
4
  "description": "Node TypeScript SDK for D8X Perpetual Futures",
5
5
  "author": "D8X",
6
6
  "homepage": "https://github.com/D8-X/d8x-futures-node-sdk#readme",
@@ -93,7 +93,8 @@
93
93
  "shareTokenABILocation": "./abi/ShareToken.json",
94
94
  "proxyABILocation": "./abi/IPerpetualManager.json",
95
95
  "limitOrderBookFactoryABILocation": "./abi/LimitOrderBookFactory.json",
96
- "limitOrderBookABILocation": "./abi/LimitOrderBook.json"
96
+ "limitOrderBookABILocation": "./abi/LimitOrderBook.json",
97
+ "configSource": "https://raw.githubusercontent.com/D8-X/sync-hub/main/d8x-futures-node-sdk/"
97
98
  },
98
99
  {
99
100
  "name": "artio",
@@ -118,7 +119,8 @@
118
119
  "shareTokenABILocation": "./abi/ShareToken.json",
119
120
  "proxyABILocation": "./abi/IPerpetualManager.json",
120
121
  "limitOrderBookFactoryABILocation": "./abi/LimitOrderBookFactory.json",
121
- "limitOrderBookABILocation": "./abi/LimitOrderBook.json"
122
+ "limitOrderBookABILocation": "./abi/LimitOrderBook.json",
123
+ "configSource": "https://raw.githubusercontent.com/D8-X/sync-hub/main/d8x-futures-node-sdk/"
122
124
  },
123
125
  {
124
126
  "name": "xlayer",
@@ -130,7 +132,8 @@
130
132
  "shareTokenABILocation": "./abi/ShareToken.json",
131
133
  "proxyABILocation": "./abi/IPerpetualManager.json",
132
134
  "limitOrderBookFactoryABILocation": "./abi/LimitOrderBookFactory.json",
133
- "limitOrderBookABILocation": "./abi/LimitOrderBook.json"
135
+ "limitOrderBookABILocation": "./abi/LimitOrderBook.json",
136
+ "configSource": "https://raw.githubusercontent.com/D8-X/sync-hub/main/d8x-futures-node-sdk/"
134
137
  },
135
138
  {
136
139
  "name": "bartio",
@@ -142,7 +145,8 @@
142
145
  "shareTokenABILocation": "./abi/ShareToken.json",
143
146
  "proxyABILocation": "./abi/IPerpetualManager.json",
144
147
  "limitOrderBookFactoryABILocation": "./abi/LimitOrderBookFactory.json",
145
- "limitOrderBookABILocation": "./abi/LimitOrderBook.json"
148
+ "limitOrderBookABILocation": "./abi/LimitOrderBook.json",
149
+ "configSource": "https://raw.githubusercontent.com/D8-X/sync-hub/main/d8x-futures-node-sdk/"
146
150
  },
147
151
  {
148
152
  "name": "europaTestnet",
@@ -2,6 +2,12 @@
2
2
  {
3
3
  "network": "mainnet",
4
4
  "ids": [
5
+ {
6
+ "symbol": "BTLJ-USD",
7
+ "id": "0xE40F3EF726A04AD63510BAF90238F6BCACF4365DB2A38E02A6E8623C2BEDC97D",
8
+ "type": "polymarket",
9
+ "origin": "0x3157ea263270be44bd68a3d6bde1f6f639be2746974f65de24e00ea6378d7838"
10
+ },
5
11
  {
6
12
  "symbol": "TRUMP24-USD",
7
13
  "id": "0x3011e4ede0f6befa0ad3f571001d3e1ffeef3d4af78c3112aaac90416e3a43e7",
@@ -166,6 +172,12 @@
166
172
  {
167
173
  "network": "odin",
168
174
  "ids": [
175
+ {
176
+ "symbol": "BTLJ-USD",
177
+ "id": "0xE40F3EF726A04AD63510BAF90238F6BCACF4365DB2A38E02A6E8623C2BEDC97D",
178
+ "type": "polymarket",
179
+ "origin": "0x3157ea263270be44bd68a3d6bde1f6f639be2746974f65de24e00ea6378d7838"
180
+ },
169
181
  {
170
182
  "symbol": "TRUMP24-USD",
171
183
  "id": "0x3011e4ede0f6befa0ad3f571001d3e1ffeef3d4af78c3112aaac90416e3a43e7",
@@ -26,5 +26,6 @@
26
26
  "ETHf": "ETHFI",
27
27
  "ZK": "ZK",
28
28
  "PNDL": "PENDLE",
29
- "TR24": "TRUMP24"
29
+ "TR24": "TRUMP24",
30
+ "BTLJ": "BTLJ"
30
31
  }
package/src/d8XMath.ts CHANGED
@@ -664,7 +664,7 @@ function excessMargin(
664
664
  * @param price
665
665
  * @param S3
666
666
  * @param S2Mark
667
- * @returns
667
+ * @returns deposit amount
668
668
  */
669
669
  function pmGetDepositAmtForLvgTrade(
670
670
  tradeAmt: number,
@@ -703,7 +703,7 @@ function pmGetDepositAmtForLvgTrade(
703
703
  * @param S3
704
704
  * @param totLong
705
705
  * @param totShort
706
- * @returns
706
+ * @returns excess cash
707
707
  */
708
708
  function pmExcessCashAtLvg(
709
709
  tradeAmt: number,
@@ -776,7 +776,7 @@ function pmExcessCashAtLvg(
776
776
  * @param totShort
777
777
  * @param maxShort
778
778
  * @param maxLong
779
- * @returns
779
+ * @returns max trade size
780
780
  */
781
781
  export function pmFindMaxPersonalTradeSizeAtLeverage(
782
782
  dir: number,
package/src/marketData.ts CHANGED
@@ -108,6 +108,7 @@ export default class MarketData extends PerpetualDataHandler {
108
108
  * @param providerOrMarketData optional provider or existing market data instance
109
109
  */
110
110
  public async createProxyInstance(providerOrMarketData?: Provider | MarketData, overrides?: Overrides): Promise<void> {
111
+ await this.priceFeedGetter.init();
111
112
  if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
112
113
  this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL);
113
114
  await this.initContractsAndData(this.provider, overrides);
@@ -2507,11 +2508,11 @@ export default class MarketData extends PerpetualDataHandler {
2507
2508
  }
2508
2509
 
2509
2510
  /**
2510
- * fetch prediction markets question
2511
+ * fetch prediction markets meta data
2511
2512
  * @param symbol symbol of the form "TRUMP24-USD"
2512
2513
  * @returns question for given symbol
2513
2514
  */
2514
- public async fetchPrdMktQuestion(symbol: string): Promise<string> {
2515
+ public async fetchPrdMktMetaData(symbol: string): Promise<string> {
2515
2516
  const c = this.priceFeedGetter.getConfig().ids;
2516
2517
  let j = -1;
2517
2518
  for (let k = 0; k < c.length; k++) {
@@ -2533,6 +2534,6 @@ export default class MarketData extends PerpetualDataHandler {
2533
2534
  throw new Error(`failed to fetch posts (${response.status}): ${response.statusText} ${query}`);
2534
2535
  }
2535
2536
  const data = await response.json();
2536
- return data.question;
2537
+ return data;
2537
2538
  }
2538
2539
  }
@@ -6,6 +6,7 @@ export interface NodeSDKConfig {
6
6
  chainId: number;
7
7
  version: number;
8
8
  nodeURL: string;
9
+ configSource: string;
9
10
  proxyAddr: string;
10
11
  proxyABILocation: string;
11
12
  shareTokenABILocation: string;
@@ -166,6 +166,7 @@ export default class PerpetualDataHandler {
166
166
  }
167
167
 
168
168
  protected async initContractsAndData(signerOrProvider: Signer | Provider, overrides?: Overrides) {
169
+ await this.fetchSymbolList();
169
170
  this.signerOrProvider = signerOrProvider;
170
171
  // check network
171
172
  let network: Network;
@@ -187,6 +188,24 @@ export default class PerpetualDataHandler {
187
188
  await this._fillSymbolMaps(overrides);
188
189
  }
189
190
 
191
+ /**
192
+ * sets the symbollist if a remote config url is specified
193
+ */
194
+ private async fetchSymbolList() {
195
+ if (this.config.configSource == "" || this.config.configSource == undefined) {
196
+ return;
197
+ }
198
+ const res = await fetch(this.config.configSource + "/symbolList.json");
199
+ if (res.status !== 200) {
200
+ throw new Error(`failed to fetch symbolList status code: ${res.status}`);
201
+ }
202
+ if (!res.ok) {
203
+ throw new Error(`failed to fetch config (${res.status}): ${res.statusText} ${this.config.configSource}`);
204
+ }
205
+ let symlist = await res.json();
206
+ this.symbolList = new Map<string, string>(Object.entries(symlist));
207
+ }
208
+
190
209
  /**
191
210
  * Returns the order-book contract for the symbol if found or fails
192
211
  * @param symbol symbol of the form ETH-USD-MATIC
package/src/priceFeeds.ts CHANGED
@@ -22,10 +22,11 @@ import { sleep } from "./utils";
22
22
  * trader liquidations, trade executions, change of trader margin amount.
23
23
  */
24
24
  export default class PriceFeeds {
25
- private config: PriceFeedConfig;
25
+ private config: PriceFeedConfig | undefined;
26
+ private priceFeedConfigNetwork: string;
26
27
  // Read only price info endpoints. Used by default. feedEndpoints[endpointId]
27
28
  // = endpointstring
28
- public feedEndpoints: Array<string>;
29
+ public feedEndpoints: Array<string> = [];
29
30
  // Endpoints which are used to fetch prices for submissions
30
31
  public writeFeedEndpoints: Array<string> = [];
31
32
  private feedInfo: Map<string, { symbol: string; endpointId: number }[]>; // priceFeedId -> [symbol, endpointId]
@@ -38,22 +39,47 @@ export default class PriceFeeds {
38
39
  // api formatting constants
39
40
  private PYTH = { endpoint: "/v2/updates/price/latest?encoding=base64&ids[]=", separator: "&ids[]=", suffix: "" };
40
41
 
41
- private polyMktsPxFeed: PolyMktsPxFeed;
42
+ private polyMktsPxFeed: PolyMktsPxFeed | undefined;
42
43
 
43
44
  constructor(dataHandler: PerpetualDataHandler, priceFeedConfigNetwork: string) {
44
- let configs = require("./config/priceFeedConfig.json") as PriceFeedConfig[];
45
- this.config = PriceFeeds._selectConfig(configs, priceFeedConfigNetwork);
45
+ this.priceFeedConfigNetwork = priceFeedConfigNetwork;
46
+ this.onChainPxFeeds = new Map<string, OnChainPxFeed>();
47
+ this.dataHandler = dataHandler;
48
+ this.triangulations = new Map<string, [string[], boolean[]]>();
49
+ this.feedInfo = new Map<string, { symbol: string; endpointId: number }[]>();
50
+ }
51
+
52
+ /**
53
+ * initialization function. Gathers config from config-hub if url
54
+ * specified
55
+ */
56
+ public async init() {
57
+ let configs: PriceFeedConfig[];
58
+ const configSrc = this.dataHandler.config.configSource;
59
+ if (configSrc == "" || configSrc == undefined) {
60
+ // embedded config
61
+ configs = require("./config/priceFeedConfig.json") as PriceFeedConfig[];
62
+ } else {
63
+ //load remote config
64
+ const res = await fetch(configSrc + "/priceFeedConfig.json");
65
+ if (res.status !== 200) {
66
+ throw new Error(`failed to fetch priceFeedConfig status code: ${res.status}`);
67
+ }
68
+ if (!res.ok) {
69
+ throw new Error(`failed to fetch config (${res.status}): ${res.statusText} ${configSrc}`);
70
+ }
71
+ configs = await res.json();
72
+ }
73
+ this.config = PriceFeeds._selectConfig(configs, this.priceFeedConfigNetwork);
46
74
 
47
75
  // if SDK config contains custom price feed endpoints, these override the
48
76
  // public/default ones
49
- if (dataHandler.config.priceFeedEndpoints && dataHandler.config.priceFeedEndpoints.length > 0) {
77
+ if (this.dataHandler.config.priceFeedEndpoints && this.dataHandler.config.priceFeedEndpoints.length > 0) {
50
78
  this.config.endpoints = PriceFeeds.overridePriceEndpointsOfSameType(
51
79
  this.config.endpoints,
52
- dataHandler.config.priceFeedEndpoints
80
+ this.dataHandler.config.priceFeedEndpoints
53
81
  );
54
82
  }
55
-
56
- this.onChainPxFeeds = new Map<string, OnChainPxFeed>();
57
83
  for (let k = 0; k < this.config.ids.length; k++) {
58
84
  if (this.config.ids[k].type == "onchain") {
59
85
  let sym = this.config.ids[k].symbol;
@@ -69,11 +95,12 @@ export default class PriceFeeds {
69
95
  throw new Error("PriceFeeds: no writeEndpoints provided in config");
70
96
  }
71
97
  this.polyMktsPxFeed = new PolyMktsPxFeed(this.config);
72
- this.dataHandler = dataHandler;
73
- this.triangulations = new Map<string, [string[], boolean[]]>();
74
98
  }
75
99
 
76
100
  public getConfig(): PriceFeedConfig {
101
+ if (this.config == undefined) {
102
+ throw Error("init() required");
103
+ }
77
104
  return this.config;
78
105
  }
79
106
  // overridePriceEndpointsOfSameType overrides endpoints of config with same
@@ -209,6 +236,9 @@ export default class PriceFeeds {
209
236
  * ema, confidence, and order book parameters.
210
237
  */
211
238
  public async fetchPricesForPerpetual(symbol: string): Promise<IdxPriceInfo> {
239
+ if (this.polyMktsPxFeed == undefined) {
240
+ throw Error("init() required");
241
+ }
212
242
  let indexSymbols = this.dataHandler.getIndexSymbols(symbol).filter((x) => x != "");
213
243
  if (this.dataHandler.isPredictionMarket(symbol)) {
214
244
  let priceObj = await this.polyMktsPxFeed.fetchPriceForSym(indexSymbols[0]);
@@ -265,6 +295,9 @@ export default class PriceFeeds {
265
295
  * <symbol>:ema for each polymarket symbol that maps to the ema price
266
296
  */
267
297
  public async fetchFeedPrices(symbols?: string[]): Promise<Map<string, [number, boolean]>> {
298
+ if (this.config == undefined) {
299
+ throw Error("init() required");
300
+ }
268
301
  let queries = new Array<string>(this.feedEndpoints.length);
269
302
  let suffixes = new Array<string>(queries.length);
270
303
  let symbolsOfEndpoint: string[][] = [];
@@ -347,6 +380,9 @@ export default class PriceFeeds {
347
380
 
348
381
  // returns an array with two values per symbol: price, ema
349
382
  private async queryPolyMktsPxFeeds(symbols: string[]) {
383
+ if (this.polyMktsPxFeed == undefined) {
384
+ throw Error("init() required");
385
+ }
350
386
  let prices = new Array<PredMktPriceInfo | undefined>();
351
387
  for (let k = 0; k < symbols.length; k++) {
352
388
  try {
@@ -380,6 +416,9 @@ export default class PriceFeeds {
380
416
  * contract and corresponding price information
381
417
  */
382
418
  public async fetchLatestFeedPriceInfoForPerpetual(symbol: string): Promise<PriceFeedSubmission> {
419
+ if (this.config == undefined) {
420
+ throw Error("init() required");
421
+ }
383
422
  // get the feedIds that the contract uses
384
423
  let feedIds = this.dataHandler.getPriceIds(symbol);
385
424
  let queries = new Array<string>();
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "2.1.5-alpha2";
1
+ export const D8X_SDK_VERSION = "2.1.7-alpha2";
@@ -55,6 +55,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
55
55
  * @param provider optional provider
56
56
  */
57
57
  public async createProxyInstance(providerOrMarketData?: Provider | MarketData, overrides?: Overrides) {
58
+ await this.priceFeedGetter.init();
58
59
  if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
59
60
  this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL, this.network, { staticNetwork: true });
60
61
  if (!this.signer) {
@@ -1,71 +0,0 @@
1
- [
2
- {
3
- "inputs": [
4
- {
5
- "internalType": "address",
6
- "name": "beacon",
7
- "type": "address"
8
- },
9
- {
10
- "internalType": "bytes",
11
- "name": "data",
12
- "type": "bytes"
13
- }
14
- ],
15
- "stateMutability": "payable",
16
- "type": "constructor"
17
- },
18
- {
19
- "anonymous": false,
20
- "inputs": [
21
- {
22
- "indexed": false,
23
- "internalType": "address",
24
- "name": "previousAdmin",
25
- "type": "address"
26
- },
27
- {
28
- "indexed": false,
29
- "internalType": "address",
30
- "name": "newAdmin",
31
- "type": "address"
32
- }
33
- ],
34
- "name": "AdminChanged",
35
- "type": "event"
36
- },
37
- {
38
- "anonymous": false,
39
- "inputs": [
40
- {
41
- "indexed": true,
42
- "internalType": "address",
43
- "name": "beacon",
44
- "type": "address"
45
- }
46
- ],
47
- "name": "BeaconUpgraded",
48
- "type": "event"
49
- },
50
- {
51
- "anonymous": false,
52
- "inputs": [
53
- {
54
- "indexed": true,
55
- "internalType": "address",
56
- "name": "implementation",
57
- "type": "address"
58
- }
59
- ],
60
- "name": "Upgraded",
61
- "type": "event"
62
- },
63
- {
64
- "stateMutability": "payable",
65
- "type": "fallback"
66
- },
67
- {
68
- "stateMutability": "payable",
69
- "type": "receive"
70
- }
71
- ]