@d8x/perpetuals-sdk 2.4.4 → 2.4.6

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 (178) hide show
  1. package/dist/cjs/abi/BeaconProxy.json +71 -0
  2. package/dist/cjs/abi/Maintainer.json +774 -0
  3. package/dist/cjs/abi/MockToken.json +347 -0
  4. package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
  5. package/dist/cjs/abi/WeETH.json +310 -0
  6. package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
  7. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
  8. package/dist/cjs/config/defaultConfig.json +26 -0
  9. package/dist/cjs/config/priceFeedConfig.json +155 -11
  10. package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
  11. package/dist/cjs/contracts/BeaconProxy.js +3 -0
  12. package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
  13. package/dist/cjs/contracts/Maintainer.d.ts +799 -0
  14. package/dist/cjs/contracts/Maintainer.js +3 -0
  15. package/dist/cjs/contracts/Maintainer.js.map +1 -0
  16. package/dist/cjs/contracts/MockToken.d.ts +263 -0
  17. package/dist/cjs/contracts/MockToken.js +3 -0
  18. package/dist/cjs/contracts/MockToken.js.map +1 -0
  19. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
  20. package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
  21. package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
  22. package/dist/cjs/contracts/WeETH.d.ts +503 -0
  23. package/dist/cjs/contracts/WeETH.js +3 -0
  24. package/dist/cjs/contracts/WeETH.js.map +1 -0
  25. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  26. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
  27. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
  28. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
  29. package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
  30. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
  31. package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
  32. package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
  33. package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
  34. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  35. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
  36. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  37. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
  38. package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
  39. package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
  40. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  41. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
  42. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  43. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  44. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
  45. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  46. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  47. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
  48. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  49. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  50. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
  51. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  52. package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
  53. package/dist/cjs/contracts/factories/lean0/index.js +15 -0
  54. package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
  55. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  56. package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
  57. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
  58. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
  59. package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
  60. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
  61. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  62. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
  63. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  64. package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
  65. package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
  66. package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
  67. package/dist/cjs/contracts/lean0/index.d.ts +4 -0
  68. package/dist/cjs/contracts/lean0/index.js +3 -0
  69. package/dist/cjs/contracts/lean0/index.js.map +1 -0
  70. package/dist/cjs/marketData.d.ts +2 -2
  71. package/dist/cjs/marketData.js +53 -34
  72. package/dist/cjs/marketData.js.map +1 -1
  73. package/dist/cjs/nodeSDKTypes.d.ts +1 -1
  74. package/dist/cjs/nodeSDKTypes.js.map +1 -1
  75. package/dist/cjs/perpetualDataHandler.d.ts +2 -0
  76. package/dist/cjs/perpetualDataHandler.js +23 -5
  77. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  78. package/dist/cjs/priceFeeds.d.ts +5 -6
  79. package/dist/cjs/priceFeeds.js +8 -8
  80. package/dist/cjs/priceFeeds.js.map +1 -1
  81. package/dist/cjs/version.d.ts +1 -1
  82. package/dist/cjs/version.js +1 -1
  83. package/dist/esm/abi/BeaconProxy.json +71 -0
  84. package/dist/esm/abi/Maintainer.json +774 -0
  85. package/dist/esm/abi/MockToken.json +347 -0
  86. package/dist/esm/abi/UUPSUpgradeable.json +104 -0
  87. package/dist/esm/abi/WeETH.json +310 -0
  88. package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
  89. package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
  90. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
  91. package/dist/esm/abi/lean0/ShareToken.json +438 -0
  92. package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
  93. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
  94. package/dist/esm/config/defaultConfig.json +26 -0
  95. package/dist/esm/config/priceFeedConfig.json +155 -11
  96. package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
  97. package/dist/esm/contracts/BeaconProxy.js +2 -0
  98. package/dist/esm/contracts/BeaconProxy.js.map +1 -0
  99. package/dist/esm/contracts/Maintainer.d.ts +799 -0
  100. package/dist/esm/contracts/Maintainer.js +2 -0
  101. package/dist/esm/contracts/Maintainer.js.map +1 -0
  102. package/dist/esm/contracts/MockToken.d.ts +263 -0
  103. package/dist/esm/contracts/MockToken.js +2 -0
  104. package/dist/esm/contracts/MockToken.js.map +1 -0
  105. package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
  106. package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
  107. package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
  108. package/dist/esm/contracts/WeETH.d.ts +503 -0
  109. package/dist/esm/contracts/WeETH.js +2 -0
  110. package/dist/esm/contracts/WeETH.js.map +1 -0
  111. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  112. package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
  113. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
  114. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
  115. package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
  116. package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
  117. package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
  118. package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
  119. package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
  120. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  121. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
  122. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  123. package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
  124. package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
  125. package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
  126. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  127. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
  128. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  129. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  130. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
  131. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  132. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  133. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
  134. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  135. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  136. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
  137. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  138. package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
  139. package/dist/esm/contracts/factories/lean0/index.js +8 -0
  140. package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
  141. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  142. package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
  143. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
  144. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
  145. package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
  146. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
  147. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  148. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
  149. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  150. package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
  151. package/dist/esm/contracts/lean0/ShareToken.js +2 -0
  152. package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
  153. package/dist/esm/contracts/lean0/index.d.ts +4 -0
  154. package/dist/esm/contracts/lean0/index.js +2 -0
  155. package/dist/esm/contracts/lean0/index.js.map +1 -0
  156. package/dist/esm/marketData.d.ts +2 -2
  157. package/dist/esm/marketData.js +54 -35
  158. package/dist/esm/marketData.js.map +1 -1
  159. package/dist/esm/nodeSDKTypes.d.ts +1 -1
  160. package/dist/esm/nodeSDKTypes.js.map +1 -1
  161. package/dist/esm/perpetualDataHandler.d.ts +2 -0
  162. package/dist/esm/perpetualDataHandler.js +23 -5
  163. package/dist/esm/perpetualDataHandler.js.map +1 -1
  164. package/dist/esm/priceFeeds.d.ts +5 -6
  165. package/dist/esm/priceFeeds.js +8 -8
  166. package/dist/esm/priceFeeds.js.map +1 -1
  167. package/dist/esm/version.d.ts +1 -1
  168. package/dist/esm/version.js +1 -1
  169. package/doc/d8x-perpetuals-sdk.md +3 -3
  170. package/package.json +1 -1
  171. package/src/config/defaultConfig.json +26 -0
  172. package/src/config/priceFeedConfig.json +155 -11
  173. package/src/marketData.ts +53 -35
  174. package/src/nodeSDKTypes.ts +2 -1
  175. package/src/perpetualDataHandler.ts +24 -5
  176. package/src/priceFeeds.ts +12 -10
  177. package/src/version.ts +1 -1
  178. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
@@ -2,6 +2,60 @@
2
2
  {
3
3
  "network": "mainnet",
4
4
  "ids": [
5
+ {
6
+ "symbol": "FED25BPS-USD",
7
+ "id": "0x199326ac3436c8a01052155eec8d85c5092c9c3c56e0f3590c5d96d89dceec2c",
8
+ "type": "polymarket",
9
+ "origin": "0xa11a9c66032cbe8c607bf1b21591f65dfee9d5eb65d73cc8ad5009c1f9826fa3"
10
+ },
11
+ {
12
+ "symbol": "TRMPUKR-USD",
13
+ "id": "0xbbad52c7a569d729424c917dd3181149d59b5f4fc3115d510b91197c4368c22a",
14
+ "type": "polymarket",
15
+ "origin": "0xa5ac4cdcfff44ddfb0d332d33575f766414465786fb7d4350782db40d5e9da11"
16
+ },
17
+ {
18
+ "symbol": "MANCITY-USD",
19
+ "id": "0x99949191c4996cfb75262a15ee1ecc16c1cd07b8f0561694db177636b58321d4",
20
+ "type": "polymarket",
21
+ "origin": "0x586e7ee86609bd6ea5b71bddff7ea7877100c03d22ece5a336baa98aadacdb1a"
22
+ },
23
+ {
24
+ "symbol": "BTCNOV90-USD",
25
+ "id": "0x3c711064722ff96741641b5b54f055874bbfb478042888fd4121a145c852060b",
26
+ "type": "polymarket",
27
+ "origin": "0x952e8d6dcd67c7d28720491a798e96a2729a57598cb04b4de6f6c2e6f75fd12b"
28
+ },
29
+ {
30
+ "symbol": "BTC24100-USD",
31
+ "id": "0x8f7dd95917a1bcf74cd5964c9a779c267d38d4c6a87e8c7a66fae7fe30ada9a6",
32
+ "type": "polymarket",
33
+ "origin": "0x9c66114d2dfe2139325cc7a408a5cd5d2e73b55d919e2141b3a0ed83fc15895d"
34
+ },
35
+ {
36
+ "symbol": "MCLAREN24-USD",
37
+ "id": "0xa54c8b0fca58649775eece82cf6bf4aea245a431bdff4dfba40f01a17e4c1248",
38
+ "type": "polymarket",
39
+ "origin": "0x6154df852fac6dd9748b97883c03220bb267ad2be71fa215c8df1431995db74d"
40
+ },
41
+ {
42
+ "symbol": "HARRIS24P-USD",
43
+ "id": "0x2f06f5a323466c1ad9a9a8afb19a21dd3fe0f39853a16ae58637086e8ff5838d",
44
+ "type": "polymarket",
45
+ "origin": "0x265366ede72d73e137b2b9095a6cdc9be6149290caa295738a95e3d881ad0865"
46
+ },
47
+ {
48
+ "symbol": "SUPBWL49-USD",
49
+ "id": "0x7eea0b94fc1916efdd031978918abba566b9aef7f12b3d5a5b0f7141fd8e0b33",
50
+ "type": "polymarket",
51
+ "origin": "0x67e68c5eee8ac767dd1177de8c653b20642fee48f0f2a56d784e4856b130749d"
52
+ },
53
+ {
54
+ "symbol": "INSOUT2-USD",
55
+ "id": "0x6ec8114a0dba99a037c7122c93a68f2ab905c3e42e2b82e1ce659aef96de58f2",
56
+ "type": "polymarket",
57
+ "origin": "0x1ab07117f9f698f28490f57754d6fe5309374230c95867a7eba572892a11d710"
58
+ },
5
59
  {
6
60
  "symbol": "USDC-USD",
7
61
  "id": "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
@@ -92,6 +146,18 @@
92
146
  "type": "pyth",
93
147
  "origin": "Crypto.DOGE/USD"
94
148
  },
149
+ {
150
+ "symbol": "GOAT-USD",
151
+ "id": "0xf7731dc812590214d3eb4343bfb13d1b4cfa9b1d4e020644b5d5d8e07d60c66c",
152
+ "type": "pyth",
153
+ "origin": "Crypto.GOAT/USD"
154
+ },
155
+ {
156
+ "symbol": "PNUT-USD",
157
+ "id": "0x116da895807f81f6b5c5f01b109376e7f6834dc8b51365ab7cdfa66634340e54",
158
+ "type": "pyth",
159
+ "origin": "Crypto.PNUT/USD"
160
+ },
95
161
  {
96
162
  "symbol": "WIF-USD",
97
163
  "id": "0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc",
@@ -101,6 +167,7 @@
101
167
  {
102
168
  "symbol": "PEPE-USD",
103
169
  "id": "0xd69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4",
170
+ "pxMultiplier": 1000,
104
171
  "type": "pyth",
105
172
  "origin": "Crypto.PEPE/USD"
106
173
  },
@@ -133,6 +200,30 @@
133
200
  "id": "0x9a4df90b25497f66b1afb012467e316e801ca3d839456db028892fe8c70c8016",
134
201
  "type": "pyth",
135
202
  "origin": "Crypto.PENDLE/USD"
203
+ },
204
+ {
205
+ "symbol": "TON-USD",
206
+ "id": "0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026",
207
+ "type": "pyth",
208
+ "origin": "Crypto.TON/USD"
209
+ },
210
+ {
211
+ "symbol": "BNB-USD",
212
+ "id": "0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f",
213
+ "type": "pyth",
214
+ "origin": "Crypto.BNB/USD"
215
+ },
216
+ {
217
+ "symbol": "SHIB-USD",
218
+ "id": "0xf0d57deca57b3da2fe63a493f4c25925fdfd8edf834b20f93e1f84dbd1504d4a",
219
+ "type": "pyth",
220
+ "origin": "Crypto.SHIB/USD"
221
+ },
222
+ {
223
+ "symbol": "POL-USD",
224
+ "id": "0xffd11c5a1cfd42f80afb2df4d9f264c15f956d68153335374ec10722edd70472",
225
+ "type": "pyth",
226
+ "origin": "Crypto.POL/USD"
136
227
  }
137
228
  ],
138
229
  "endpoints": [
@@ -142,23 +233,52 @@
142
233
  "writeEndpoints": ["https://hermes.pyth.network"]
143
234
  },
144
235
  { "type": "onchain", "endpoints": [], "writeEndpoints": [] },
145
- { "type": "polymarket", "endpoints": [], "writeEndpoints": ["https://odin-poly.d8x.xyz"] }
236
+ {
237
+ "type": "polymarket",
238
+ "endpoints": [],
239
+ "writeEndpoints": ["https://odin-poly.d8x.xyz"]
240
+ }
146
241
  ]
147
242
  },
148
243
  {
149
244
  "network": "odin",
150
245
  "ids": [
151
246
  {
152
- "symbol": "BTLJ-USD",
153
- "id": "0xE40F3EF726A04AD63510BAF90238F6BCACF4365DB2A38E02A6E8623C2BEDC97D",
154
- "type": "polymarket",
155
- "origin": "0x3157ea263270be44bd68a3d6bde1f6f639be2746974f65de24e00ea6378d7838"
247
+ "symbol": "HONEY-USDC",
248
+ "origin": "Crypto.HONEY/USDC",
249
+ "comment": "DAI price for temporary feed honey-usdc",
250
+ "id": "0xb0948a5e5313200c632b51bb5ca32f6de0d36e9950a942d19751e833f70dabfd",
251
+ "type": "odin"
156
252
  },
157
253
  {
158
- "symbol": "TRUMP24-USD",
159
- "id": "0x3011e4ede0f6befa0ad3f571001d3e1ffeef3d4af78c3112aaac90416e3a43e7",
160
- "type": "polymarket",
161
- "origin": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917"
254
+ "symbol": "DIRAC-HONEY",
255
+ "id": "0xebd937fe18c8122f35e2fb280f4b70343a8403dc848f02511d6791ae1db5a25f",
256
+ "type": "low-liq",
257
+ "origin": ""
258
+ },
259
+ {
260
+ "symbol": "BUDS-HONEY",
261
+ "id": "0xb859493d77dc52043bbeaa6aa090ebd24ae913a707b330a34e4f168b5d8dd58c",
262
+ "type": "low-liq",
263
+ "origin": ""
264
+ },
265
+ {
266
+ "symbol": "IBGT-HONEY",
267
+ "id": "0x2cb8e3da2690aee73a495107a849e58989d73c1151719920b06bbdf1bb1a0150",
268
+ "type": "low-liq",
269
+ "origin": ""
270
+ },
271
+ {
272
+ "symbol": "BDEG-HONEY",
273
+ "id": "0x0becdebd3154dfe6c06b952800b379f091374a16a8ee09aba0e503092479bfca",
274
+ "type": "low-liq",
275
+ "origin": ""
276
+ },
277
+ {
278
+ "symbol": "BEARTIC-HONEY",
279
+ "id": "0x617bbf5a0cb37d312fe6b1021fa42ab1502746cfe9eae37b5ff9f3d9eb71ae36",
280
+ "type": "low-liq",
281
+ "origin": ""
162
282
  },
163
283
  {
164
284
  "symbol": "USDC-USD",
@@ -228,8 +348,32 @@
228
348
  }
229
349
  ],
230
350
  "endpoints": [
231
- { "type": "odin", "endpoints": ["https://hermes.pyth.network"], "writeEndpoints": ["https://odin-poly.d8x.xyz"] },
232
- { "type": "polymarket", "endpoints": [""], "writeEndpoints": ["https://odin-poly.d8x.xyz"] }
351
+ {
352
+ "type": "odin",
353
+ "endpoints": ["https://hermes.pyth.network"],
354
+ "writeEndpoints": ["https://odin.d8x.xyz/"]
355
+ },
356
+ {
357
+ "type": "low-liq",
358
+ "comment": "legacy",
359
+ "endpoints": ["https://odin-lowliq.d8x.xyz/"],
360
+ "writeEndpoints": ["https://odin-lowliq.d8x.xyz/"]
361
+ },
362
+ {
363
+ "type": "v2",
364
+ "endpoints": ["https://odin-lowliq.d8x.xyz/"],
365
+ "writeEndpoints": ["https://odin-lowliq.d8x.xyz/"]
366
+ },
367
+ {
368
+ "type": "v3",
369
+ "endpoints": ["https://odin-lowliq.d8x.xyz/"],
370
+ "writeEndpoints": ["https://odin-lowliq.d8x.xyz/"]
371
+ },
372
+ {
373
+ "type": "polymarket",
374
+ "endpoints": [""],
375
+ "writeEndpoints": ["https://odin-poly.d8x.xyz"]
376
+ }
233
377
  ]
234
378
  }
235
379
  ]
package/src/marketData.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Contract, formatUnits, Interface, JsonRpcProvider, Overrides, Provider } from "ethers";
1
+ import { Contract, formatUnits, Interface, JsonRpcProvider, Overrides, Provider, hexlify } from "ethers";
2
2
  import {
3
3
  BUY_SIDE,
4
4
  CLOSED_SIDE,
@@ -1468,7 +1468,9 @@ export default class MarketData extends PerpetualDataHandler {
1468
1468
  if (!this.proxyContract) {
1469
1469
  throw Error("no proxy contract initialized. Use createProxyInstance().");
1470
1470
  }
1471
- return await this.proxyContract.getOraclePrice([toBytes4(base), toBytes4(quote)], overrides || {});
1471
+ const baseBytes = hexlify(Uint8Array.from(toBytes4(base)));
1472
+ const quoteBytes = hexlify(Uint8Array.from(toBytes4(quote)));
1473
+ return await this.proxyContract.getOraclePrice([baseBytes, quoteBytes], overrides || {});
1472
1474
  }
1473
1475
 
1474
1476
  /**
@@ -1963,13 +1965,13 @@ export default class MarketData extends PerpetualDataHandler {
1963
1965
  }
1964
1966
 
1965
1967
  /**
1966
- * Get all off-chain prices
1968
+ * Get all off-chain prices for normal perps
1967
1969
  * @param _symbolToPerpStaticInfo mapping: PerpetualStaticInfo for each perpetual
1968
1970
  * @param _priceFeedGetter priceFeed class from which we can get offchain price data
1969
1971
  * @returns mapping of symbol-pair (e.g. BTC-USD) to price/isMarketClosed
1970
1972
  * @ignore
1971
1973
  */
1972
- private static async _getAllIndexPrices(
1974
+ private static async _getAllActivePerpIndexPrices(
1973
1975
  _symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
1974
1976
  _priceFeedGetter: PriceFeeds
1975
1977
  ): Promise<Map<string, [number, boolean]>> {
@@ -1977,6 +1979,9 @@ export default class MarketData extends PerpetualDataHandler {
1977
1979
  let allSym = new Set<string>();
1978
1980
  for (let perpSymbol of _symbolToPerpStaticInfo.keys()) {
1979
1981
  let sInfo: PerpetualStaticInfo | undefined = _symbolToPerpStaticInfo.get(perpSymbol);
1982
+ if (sInfo?.state == "INVALID" || sInfo?.state == "INITIALIZING") {
1983
+ continue;
1984
+ }
1980
1985
  allSym.add(sInfo!.S2Symbol);
1981
1986
  if (sInfo!.S3Symbol != "") {
1982
1987
  allSym.add(sInfo!.S3Symbol);
@@ -2069,9 +2074,11 @@ export default class MarketData extends PerpetualDataHandler {
2069
2074
  // prepare calls
2070
2075
  const proxyCalls: Multicall3.Call3Struct[] = [];
2071
2076
  let midPriceMap = new Map<string, number>();
2077
+ const collectedPerpIds: Array<Array<number>> = [];
2072
2078
  for (let k = 0; k < perpetualIDChunks.length; k++) {
2073
2079
  let indexPrices: bigint[] = [];
2074
2080
  // collect/order all index prices
2081
+ const collectedIds = [];
2075
2082
  for (let j = 0; j < perpetualIDChunks[k].length; j++) {
2076
2083
  let id = perpetualIDChunks[k][j];
2077
2084
  const poolId = Math.floor(id / 100000);
@@ -2080,6 +2087,10 @@ export default class MarketData extends PerpetualDataHandler {
2080
2087
  }
2081
2088
  let symbol3s = _perpetualIdToSymbol.get(id);
2082
2089
  let info = _symbolToPerpStaticInfo.get(symbol3s!);
2090
+ if (info?.state == "INVALID" || info?.state == "INITIALIZING") {
2091
+ continue;
2092
+ }
2093
+ collectedIds.push(id);
2083
2094
  let S2 = floatToABK64x64(_idxPriceMap.get(info!.S2Symbol)![0]);
2084
2095
  let S3 = 0n;
2085
2096
  if (info!.S3Symbol != "") {
@@ -2088,25 +2099,28 @@ export default class MarketData extends PerpetualDataHandler {
2088
2099
  indexPrices.push(S2);
2089
2100
  indexPrices.push(S3);
2090
2101
  }
2102
+ collectedPerpIds.push(collectedIds);
2091
2103
  proxyCalls.push({
2092
2104
  target: _proxyContract.target,
2093
2105
  allowFailure: false,
2094
- callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [perpetualIDChunks[k], indexPrices]),
2106
+ callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [collectedIds, indexPrices]),
2095
2107
  });
2096
2108
  }
2097
2109
 
2098
2110
  // multicall
2099
2111
  const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
2100
2112
  // apply results
2101
- for (let k = 0; k < perpetualIDChunks.length; k++) {
2113
+ for (let k = 0; k < collectedPerpIds.length; k++) {
2102
2114
  let fMidPrice = _proxyContract.interface.decodeFunctionResult(
2103
2115
  "queryMidPrices",
2104
2116
  encodedResults[k].returnData
2105
2117
  )[0] as bigint[];
2106
2118
  for (let j = 0; j < fMidPrice.length; j++) {
2107
- let id = perpetualIDChunks[k][j];
2119
+ let id = collectedPerpIds[k][j];
2108
2120
  let symbol3s = _perpetualIdToSymbol.get(id);
2109
- midPriceMap.set(symbol3s!, ABK64x64ToFloat(fMidPrice[j]));
2121
+ if (symbol3s != undefined) {
2122
+ midPriceMap.set(symbol3s!, ABK64x64ToFloat(fMidPrice[j]));
2123
+ }
2110
2124
  }
2111
2125
  }
2112
2126
  return midPriceMap;
@@ -2294,7 +2308,7 @@ export default class MarketData extends PerpetualDataHandler {
2294
2308
  };
2295
2309
 
2296
2310
  // get all prices from off-chain price-sources: no RPC calls
2297
- let idxPriceMap = await MarketData._getAllIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
2311
+ let idxPriceMap = await MarketData._getAllActivePerpIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
2298
2312
 
2299
2313
  // query mid-prices from on-chain conditional on the off-chain prices
2300
2314
  let midPriceMap: Map<string, number> = await MarketData._queryMidPrices(
@@ -2319,34 +2333,38 @@ export default class MarketData extends PerpetualDataHandler {
2319
2333
  for (const perp of perpStateInfos) {
2320
2334
  let symbol3s = _perpetualIdToSymbol.get(perp.id);
2321
2335
  let info = _symbolToPerpStaticInfo.get(symbol3s!);
2322
- const idxPriceS2Pair = idxPriceMap.get(info!.S2Symbol);
2323
- let idxPriceS3Pair: [number, boolean] = [0, false];
2324
- perp.isMarketClosed = idxPriceS2Pair![1];
2325
- if (info!.S3Symbol != "") {
2326
- idxPriceS3Pair = idxPriceMap.get(info!.S3Symbol)!;
2327
- perp.isMarketClosed = perp.isMarketClosed || idxPriceS3Pair![1];
2328
- }
2329
- perp.indexPrice = idxPriceS2Pair![0];
2330
- let indexS3 = 1;
2331
- if (info!.collateralCurrencyType == COLLATERAL_CURRENCY_BASE) {
2332
- indexS3 = idxPriceS2Pair![0];
2333
- } else if (info!.collateralCurrencyType == COLLATERAL_CURRENCY_QUANTO) {
2334
- indexS3 = idxPriceS3Pair[0];
2335
- }
2336
- perp.collToQuoteIndexPrice = indexS3;
2337
-
2338
- const emaKey = info!.S2Symbol + ":ema";
2339
- let markPrice: number;
2340
- if (idxPriceMap.has(emaKey)) {
2341
- let ema: number;
2342
- let res = idxPriceMap.get(emaKey);
2343
- ema = res![0];
2344
- markPrice = Math.min(Math.max(ema + perp.markPremium, 1), 2);
2336
+ if (info?.state == "INVALID" || info?.state == "INITIALIZING") {
2337
+ perp.isMarketClosed = true;
2345
2338
  } else {
2346
- markPrice = perp.indexPrice * (1 + perp.markPremium);
2339
+ const idxPriceS2Pair = idxPriceMap.get(info!.S2Symbol);
2340
+ let idxPriceS3Pair: [number, boolean] = [0, false];
2341
+ perp.isMarketClosed = idxPriceS2Pair![1];
2342
+ if (info!.S3Symbol != "") {
2343
+ idxPriceS3Pair = idxPriceMap.get(info!.S3Symbol)!;
2344
+ perp.isMarketClosed = perp.isMarketClosed || idxPriceS3Pair![1];
2345
+ }
2346
+ perp.indexPrice = idxPriceS2Pair![0];
2347
+ let indexS3 = 1;
2348
+ if (info!.collateralCurrencyType == COLLATERAL_CURRENCY_BASE) {
2349
+ indexS3 = idxPriceS2Pair![0];
2350
+ } else if (info!.collateralCurrencyType == COLLATERAL_CURRENCY_QUANTO) {
2351
+ indexS3 = idxPriceS3Pair[0];
2352
+ }
2353
+ perp.collToQuoteIndexPrice = indexS3;
2354
+
2355
+ const emaKey = info!.S2Symbol + ":ema";
2356
+ let markPrice: number;
2357
+ if (idxPriceMap.has(emaKey)) {
2358
+ let ema: number;
2359
+ let res = idxPriceMap.get(emaKey);
2360
+ ema = res![0];
2361
+ markPrice = Math.min(Math.max(ema + perp.markPremium, 1), 2);
2362
+ } else {
2363
+ markPrice = perp.indexPrice * (1 + perp.markPremium);
2364
+ }
2365
+ perp.markPrice = markPrice;
2366
+ perp.midPrice = midPriceMap.get(symbol3s!)!;
2347
2367
  }
2348
- perp.markPrice = markPrice;
2349
- perp.midPrice = midPriceMap.get(symbol3s!)!;
2350
2368
  // which pool?
2351
2369
  const poolId = info!.poolId;
2352
2370
  poolStateInfos[poolId - 1].perpetuals.push(perp);
@@ -309,7 +309,8 @@ export interface PriceFeedConfig {
309
309
  }
310
310
 
311
311
  export interface PriceFeedEndpointsItem {
312
- type: string | "odin" | "pyth" | "onchain" | "polymarket";
312
+ // low-liq is the legacy version of v3
313
+ type: string | "odin" | "pyth" | "onchain" | "v2" | "v3" | "low-liq" | "polymarket";
313
314
  // Read only endpoints. Used by default.
314
315
  endpoints: string[];
315
316
  // Price feed endpoints which are used for fetching prices which will be
@@ -106,6 +106,7 @@ export default class PerpetualDataHandler {
106
106
  protected poolStaticInfos: Array<PoolStaticInfo>;
107
107
  protected symbolList: Map<string, string>; //mapping 4-digit symbol <-> long format
108
108
  protected settlementConfig: SettlementConfig;
109
+ public requiredSymbols: string[] = []; // array of symbols in the current perpetual deployment
109
110
  // config
110
111
  public config: NodeSDKConfig;
111
112
  //map margin token of the form MATIC or ETH or USDC into
@@ -348,9 +349,13 @@ export default class PerpetualDataHandler {
348
349
  // 3) fill mapping this.symbolToPerpStaticInf
349
350
  for (let j = 0; j < perpStaticInfos.length; j++) {
350
351
  const perp = perpStaticInfos[j];
351
- requiredPairs.add(perp.S2Symbol);
352
- if (perp.S3Symbol != "") {
353
- requiredPairs.add(perp.S3Symbol);
352
+ if (perp.state != "INVALID" && perp.state != "INITIALIZING") {
353
+ // we only require price feeds to be available if the perpetual
354
+ // is in normal state
355
+ requiredPairs.add(perp.S2Symbol);
356
+ if (perp.S3Symbol != "") {
357
+ requiredPairs.add(perp.S3Symbol);
358
+ }
354
359
  }
355
360
  let poolCCY = this.poolStaticInfos[perp.poolId - 1].poolMarginSymbol;
356
361
  if (poolCCY == "") {
@@ -400,13 +405,27 @@ export default class PerpetualDataHandler {
400
405
  // BTC-USDC : BTC-USD / USDC-USD
401
406
  this.priceFeedGetter.initializeTriangulations(requiredPairs);
402
407
  // ensure all feed prices can be fetched
403
- await this.priceFeedGetter.fetchFeedPrices();
408
+ this.setRequiredSymbols();
409
+ await this.priceFeedGetter.fetchFeedPrices(this.requiredSymbols);
404
410
  // fill this.perpetualIdToSymbol
405
411
  for (let [key, info] of this.symbolToPerpStaticInfo) {
406
412
  this.perpetualIdToSymbol.set(info.id, key);
407
413
  }
408
414
  }
409
415
 
416
+ // setRequiredSymbols determines which symbols (of the form BTC-USD)
417
+ // need to be available in the price sources
418
+ private setRequiredSymbols() {
419
+ const triang = this.priceFeedGetter.getTriangulations();
420
+ const pairs = new Set<string>();
421
+ for (const [key, [stringArray, _]] of triang) {
422
+ for (const s of stringArray) {
423
+ pairs.add(s);
424
+ }
425
+ }
426
+ this.requiredSymbols = Array.from(pairs);
427
+ }
428
+
410
429
  /**
411
430
  * Initializes settlement currency for all pools by
412
431
  * completing this.poolStaticInfos with settlement currency info
@@ -1519,7 +1538,7 @@ export default class PerpetualDataHandler {
1519
1538
  executionTimestamp: Number(order.executionTimestamp),
1520
1539
  submittedTimestamp: "submittedTimestamp" in order ? Number(order.submittedTimestamp) : undefined,
1521
1540
  parentChildOrderIds:
1522
- "parentChildDigest1" && "parentChildDigest2" in order
1541
+ "parentChildDigest1" in order && "parentChildDigest2" in order
1523
1542
  ? [order.parentChildDigest1.toString(), order.parentChildDigest2.toString()]
1524
1543
  : undefined,
1525
1544
  };
package/src/priceFeeds.ts CHANGED
@@ -292,7 +292,8 @@ export default class PriceFeeds {
292
292
 
293
293
  // if low liquidity, assume base-quote is a feed
294
294
  if (this.dataHandler.isLowLiquidityMarket(symbol)) {
295
- const [, , s2Info, s2EmaInfo] = feedResponses.get(indexSymbols[0])!;
295
+ const feedSymbol = feedSymbols.find((fs) => fs.split("-")[0] === indexSymbols[0].split("-")[0])!;
296
+ const [, , s2Info, s2EmaInfo] = feedResponses.get(feedSymbol)!;
296
297
  return {
297
298
  s2: prices[0],
298
299
  s3: prices[1],
@@ -318,15 +319,13 @@ export default class PriceFeeds {
318
319
  /**
319
320
  * Fetch the provided feed prices and bool whether market is closed or open
320
321
  * - requires the feeds to be defined in priceFeedConfig.json
321
- * - if symbols undefined, all feeds are queried
322
322
  * - vaas are not of interest here, therefore only readonly price feed
323
323
  * endpoints are used
324
- * @param symbols array of feed-price symbols (e.g., [btc-usd, eth-usd]) or
325
- * undefined
324
+ * @param symbols array of feed-price symbols (e.g., [btc-usd, eth-usd])
326
325
  * @returns mapping symbol-> [price, isMarketClosed], also has an entry
327
326
  * <symbol>:ema for each polymarket symbol that maps to the ema price
328
327
  */
329
- public async fetchFeedPrices(symbols?: string[]): Promise<Map<string, [number, boolean]>> {
328
+ public async fetchFeedPrices(symbols: string[]): Promise<Map<string, [number, boolean]>> {
330
329
  const resps = await this.fetchFeedPriceResponses(symbols);
331
330
  const result = new Map();
332
331
  for (const [key, value] of resps) {
@@ -336,7 +335,7 @@ export default class PriceFeeds {
336
335
  }
337
336
 
338
337
  public async fetchFeedPriceResponses(
339
- symbols?: string[]
338
+ symbols: string[]
340
339
  ): Promise<Map<string, [number, boolean, PriceFeedFormat | undefined, PriceFeedFormat | undefined]>> {
341
340
  if (this.config == undefined) {
342
341
  throw Error("init() required");
@@ -351,7 +350,7 @@ export default class PriceFeeds {
351
350
  let polyMktSyms: string[] = [];
352
351
  for (let k = 0; k < this.config.ids.length; k++) {
353
352
  let currFeed = this.config.ids[k];
354
- if (symbols != undefined && !symbols.includes(currFeed.symbol)) {
353
+ if (!symbols.includes(currFeed.symbol)) {
355
354
  continue;
356
355
  }
357
356
  if (currFeed.type == "onchain") {
@@ -362,7 +361,9 @@ export default class PriceFeeds {
362
361
  polyMktSyms.push(currFeed.symbol);
363
362
  continue;
364
363
  }
365
- const apiFormat = { pyth: this.PYTH, odin: this.PYTH, "low-liq": this.PYTH }[currFeed.type];
364
+ const apiFormat = { pyth: this.PYTH, odin: this.PYTH, v2: this.PYTH, v3: this.PYTH, "low-liq": this.PYTH }[
365
+ currFeed.type
366
+ ];
366
367
  if (apiFormat === undefined) {
367
368
  throw new Error(`API format for ${currFeed} unknown.`);
368
369
  }
@@ -450,11 +451,12 @@ export default class PriceFeeds {
450
451
  }
451
452
 
452
453
  /**
453
- * Get all configured feed prices via "latest_price_feeds".
454
+ * Get all required feed prices via "latest_price_feeds".
455
+ * 'required' means part of perpetuals/triangulations
454
456
  * @returns map of feed-price symbol to price/isMarketClosed
455
457
  */
456
458
  public async fetchAllFeedPrices(): Promise<Map<string, [number, boolean]>> {
457
- return this.fetchFeedPrices();
459
+ return this.fetchFeedPrices(this.dataHandler.requiredSymbols);
458
460
  }
459
461
 
460
462
  /**
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "2.4.4";
1
+ export const D8X_SDK_VERSION = "2.4.6";
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerpStorage__factory.js","sourceRoot":"","sources":["../../../../src/contracts/factories/PerpStorage__factory.ts"],"names":[],"mappings":"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"}