@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.
- package/dist/cjs/abi/BeaconProxy.json +71 -0
- package/dist/cjs/abi/Maintainer.json +774 -0
- package/dist/cjs/abi/MockToken.json +347 -0
- package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
- package/dist/cjs/abi/WeETH.json +310 -0
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
- package/dist/cjs/config/defaultConfig.json +26 -0
- package/dist/cjs/config/priceFeedConfig.json +155 -11
- package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
- package/dist/cjs/contracts/BeaconProxy.js +3 -0
- package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
- package/dist/cjs/contracts/Maintainer.d.ts +799 -0
- package/dist/cjs/contracts/Maintainer.js +3 -0
- package/dist/cjs/contracts/Maintainer.js.map +1 -0
- package/dist/cjs/contracts/MockToken.d.ts +263 -0
- package/dist/cjs/contracts/MockToken.js +3 -0
- package/dist/cjs/contracts/MockToken.js.map +1 -0
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
- package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
- package/dist/cjs/contracts/WeETH.d.ts +503 -0
- package/dist/cjs/contracts/WeETH.js +3 -0
- package/dist/cjs/contracts/WeETH.js.map +1 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
- package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
- package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
- package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
- package/dist/cjs/contracts/factories/lean0/index.js +15 -0
- package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
- package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
- package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
- package/dist/cjs/contracts/lean0/index.d.ts +4 -0
- package/dist/cjs/contracts/lean0/index.js +3 -0
- package/dist/cjs/contracts/lean0/index.js.map +1 -0
- package/dist/cjs/marketData.d.ts +2 -2
- package/dist/cjs/marketData.js +53 -34
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +1 -1
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +2 -0
- package/dist/cjs/perpetualDataHandler.js +23 -5
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.d.ts +5 -6
- package/dist/cjs/priceFeeds.js +8 -8
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/abi/BeaconProxy.json +71 -0
- package/dist/esm/abi/Maintainer.json +774 -0
- package/dist/esm/abi/MockToken.json +347 -0
- package/dist/esm/abi/UUPSUpgradeable.json +104 -0
- package/dist/esm/abi/WeETH.json +310 -0
- package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
- package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
- package/dist/esm/abi/lean0/ShareToken.json +438 -0
- package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
- package/dist/esm/config/defaultConfig.json +26 -0
- package/dist/esm/config/priceFeedConfig.json +155 -11
- package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
- package/dist/esm/contracts/BeaconProxy.js +2 -0
- package/dist/esm/contracts/BeaconProxy.js.map +1 -0
- package/dist/esm/contracts/Maintainer.d.ts +799 -0
- package/dist/esm/contracts/Maintainer.js +2 -0
- package/dist/esm/contracts/Maintainer.js.map +1 -0
- package/dist/esm/contracts/MockToken.d.ts +263 -0
- package/dist/esm/contracts/MockToken.js +2 -0
- package/dist/esm/contracts/MockToken.js.map +1 -0
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
- package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
- package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
- package/dist/esm/contracts/WeETH.d.ts +503 -0
- package/dist/esm/contracts/WeETH.js +2 -0
- package/dist/esm/contracts/WeETH.js.map +1 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
- package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
- package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
- package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
- package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
- package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
- package/dist/esm/contracts/factories/lean0/index.js +8 -0
- package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
- package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
- package/dist/esm/contracts/lean0/ShareToken.js +2 -0
- package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
- package/dist/esm/contracts/lean0/index.d.ts +4 -0
- package/dist/esm/contracts/lean0/index.js +2 -0
- package/dist/esm/contracts/lean0/index.js.map +1 -0
- package/dist/esm/marketData.d.ts +2 -2
- package/dist/esm/marketData.js +54 -35
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +1 -1
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +2 -0
- package/dist/esm/perpetualDataHandler.js +23 -5
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/priceFeeds.d.ts +5 -6
- package/dist/esm/priceFeeds.js +8 -8
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/doc/d8x-perpetuals-sdk.md +3 -3
- package/package.json +1 -1
- package/src/config/defaultConfig.json +26 -0
- package/src/config/priceFeedConfig.json +155 -11
- package/src/marketData.ts +53 -35
- package/src/nodeSDKTypes.ts +2 -1
- package/src/perpetualDataHandler.ts +24 -5
- package/src/priceFeeds.ts +12 -10
- package/src/version.ts +1 -1
- 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
|
-
{
|
|
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": "
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
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": "
|
|
159
|
-
"id": "
|
|
160
|
-
"type": "
|
|
161
|
-
"origin": "
|
|
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
|
-
{
|
|
232
|
-
|
|
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
|
-
|
|
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
|
|
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", [
|
|
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 <
|
|
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 =
|
|
2119
|
+
let id = collectedPerpIds[k][j];
|
|
2108
2120
|
let symbol3s = _perpetualIdToSymbol.get(id);
|
|
2109
|
-
|
|
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.
|
|
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
|
-
|
|
2323
|
-
|
|
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
|
-
|
|
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);
|
package/src/nodeSDKTypes.ts
CHANGED
|
@@ -309,7 +309,8 @@ export interface PriceFeedConfig {
|
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
export interface PriceFeedEndpointsItem {
|
|
312
|
-
|
|
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
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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
|
-
|
|
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
|
|
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])
|
|
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
|
|
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
|
|
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 (
|
|
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 }[
|
|
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
|
|
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.
|
|
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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"}
|