@d8x/perpetuals-sdk 2.0.13-alpha → 2.1.1-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.
- package/dist/cjs/abi/IPerpetualManager.json +154 -4
- package/dist/cjs/abi/OracleFactory.json +94 -25
- package/dist/cjs/abi/PerpetualManagerProxy.json +212 -2
- package/dist/cjs/accountTrade.d.ts +3 -3
- package/dist/cjs/accountTrade.js +1 -1
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.d.ts +5 -1
- package/dist/cjs/brokerTool.js +20 -7
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/config/defaultConfig.json +0 -12
- package/dist/cjs/config/priceFeedConfig.json +1 -19
- package/dist/cjs/constants.d.ts +0 -1
- package/dist/cjs/constants.js +2 -3
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts/IPerpetualManager.d.ts +93 -13
- package/dist/cjs/contracts/OracleFactory.d.ts +69 -20
- package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +109 -4
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +154 -4
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +75 -20
- package/dist/cjs/contracts/factories/OracleFactory__factory.js +94 -25
- package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/cjs/d8XMath.d.ts +59 -1
- package/dist/cjs/d8XMath.js +259 -3
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/liquidatorTool.d.ts +1 -0
- package/dist/cjs/liquidatorTool.js +24 -7
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/marketData.d.ts +45 -23
- package/dist/cjs/marketData.js +292 -197
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +24 -1
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderExecutorTool.d.ts +3 -3
- package/dist/cjs/orderExecutorTool.js +38 -13
- package/dist/cjs/orderExecutorTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +28 -17
- package/dist/cjs/perpetualDataHandler.js +71 -45
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.d.ts +1 -1
- package/dist/cjs/perpetualEventHandler.js +6 -7
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/polyMktsPxFeed.d.ts +5 -3
- package/dist/cjs/polyMktsPxFeed.js +34 -2
- package/dist/cjs/polyMktsPxFeed.js.map +1 -1
- package/dist/cjs/priceFeeds.d.ts +6 -7
- package/dist/cjs/priceFeeds.js +36 -14
- 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/cjs/writeAccessHandler.js +1 -1
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/abi/IPerpetualManager.json +154 -4
- package/dist/esm/abi/OracleFactory.json +94 -25
- package/dist/esm/abi/PerpetualManagerProxy.json +212 -2
- package/dist/esm/accountTrade.d.ts +3 -3
- package/dist/esm/accountTrade.js +1 -1
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.d.ts +5 -1
- package/dist/esm/brokerTool.js +21 -8
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/config/defaultConfig.json +0 -12
- package/dist/esm/config/priceFeedConfig.json +1 -19
- package/dist/esm/constants.d.ts +0 -1
- package/dist/esm/constants.js +1 -2
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts/IPerpetualManager.d.ts +93 -13
- package/dist/esm/contracts/OracleFactory.d.ts +69 -20
- package/dist/esm/contracts/PerpetualManagerProxy.d.ts +109 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +154 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +75 -20
- package/dist/esm/contracts/factories/OracleFactory__factory.js +94 -25
- package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
- package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
- package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +59 -1
- package/dist/esm/d8XMath.js +251 -2
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.d.ts +1 -0
- package/dist/esm/liquidatorTool.js +25 -8
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/marketData.d.ts +45 -23
- package/dist/esm/marketData.js +295 -200
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +24 -1
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderExecutorTool.d.ts +3 -3
- package/dist/esm/orderExecutorTool.js +38 -13
- package/dist/esm/orderExecutorTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +28 -17
- package/dist/esm/perpetualDataHandler.js +74 -48
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.d.ts +1 -1
- package/dist/esm/perpetualEventHandler.js +6 -7
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/polyMktsPxFeed.d.ts +5 -3
- package/dist/esm/polyMktsPxFeed.js +34 -2
- package/dist/esm/polyMktsPxFeed.js.map +1 -1
- package/dist/esm/priceFeeds.d.ts +6 -7
- package/dist/esm/priceFeeds.js +36 -14
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/writeAccessHandler.js +3 -3
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/doc/brokerTool.md +3 -1
- package/doc/d8x-perpetuals-sdk.md +804 -132
- package/doc/marketData.md +813 -0
- package/doc/perpetualDataHandler.md +76 -7
- package/package.json +1 -1
- package/src/abi/IPerpetualManager.json +154 -4
- package/src/abi/OracleFactory.json +523 -454
- package/src/abi/PerpetualManagerProxy.json +1596 -1386
- package/src/accountTrade.ts +3 -3
- package/src/brokerTool.ts +22 -8
- package/src/config/defaultConfig.json +0 -13
- package/src/config/priceFeedConfig.json +1 -19
- package/src/constants.ts +1 -2
- package/src/contracts/IPerpetualManager.ts +140 -10
- package/src/contracts/OracleFactory.ts +100 -26
- package/src/contracts/PerpetualManagerProxy.ts +192 -3
- package/src/contracts/factories/IPerpetualManager__factory.ts +154 -4
- package/src/contracts/factories/OracleFactory__factory.ts +94 -25
- package/src/contracts/factories/PerpetualManagerProxy__factory.ts +212 -2
- package/src/d8XMath.ts +327 -2
- package/src/liquidatorTool.ts +29 -14
- package/src/marketData.ts +448 -250
- package/src/nodeSDKTypes.ts +30 -1
- package/src/orderExecutorTool.ts +48 -20
- package/src/perpetualDataHandler.ts +108 -55
- package/src/perpetualEventHandler.ts +6 -7
- package/src/polyMktsPxFeed.ts +40 -4
- package/src/priceFeeds.ts +41 -17
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +2 -2
- package/dist/cjs/abi/BeaconProxy.json +0 -71
- package/dist/cjs/abi/Maintainer.json +0 -774
- package/dist/cjs/abi/MockToken.json +0 -347
- package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
- package/dist/cjs/abi/WeETH.json +0 -310
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
- package/dist/cjs/contracts/BeaconProxy.js +0 -3
- package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
- package/dist/cjs/contracts/Maintainer.d.ts +0 -799
- package/dist/cjs/contracts/Maintainer.js +0 -3
- package/dist/cjs/contracts/Maintainer.js.map +0 -1
- package/dist/cjs/contracts/MockToken.d.ts +0 -263
- package/dist/cjs/contracts/MockToken.js +0 -3
- package/dist/cjs/contracts/MockToken.js.map +0 -1
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/cjs/contracts/WeETH.d.ts +0 -503
- package/dist/cjs/contracts/WeETH.js +0 -3
- package/dist/cjs/contracts/WeETH.js.map +0 -1
- package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/factories/lean0/index.js +0 -15
- package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
- package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/cjs/contracts/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/lean0/index.js +0 -3
- package/dist/cjs/contracts/lean0/index.js.map +0 -1
- package/dist/esm/abi/BeaconProxy.json +0 -71
- package/dist/esm/abi/Maintainer.json +0 -774
- package/dist/esm/abi/MockToken.json +0 -347
- package/dist/esm/abi/UUPSUpgradeable.json +0 -104
- package/dist/esm/abi/WeETH.json +0 -310
- package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
- package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
- package/dist/esm/abi/lean0/ShareToken.json +0 -438
- package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
- package/dist/esm/contracts/BeaconProxy.js +0 -2
- package/dist/esm/contracts/BeaconProxy.js.map +0 -1
- package/dist/esm/contracts/Maintainer.d.ts +0 -799
- package/dist/esm/contracts/Maintainer.js +0 -2
- package/dist/esm/contracts/Maintainer.js.map +0 -1
- package/dist/esm/contracts/MockToken.d.ts +0 -263
- package/dist/esm/contracts/MockToken.js +0 -2
- package/dist/esm/contracts/MockToken.js.map +0 -1
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
- package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/esm/contracts/WeETH.d.ts +0 -503
- package/dist/esm/contracts/WeETH.js +0 -2
- package/dist/esm/contracts/WeETH.js.map +0 -1
- package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
- package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
- package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
- package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
- package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/factories/lean0/index.js +0 -8
- package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/esm/contracts/lean0/ShareToken.js +0 -2
- package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/esm/contracts/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/lean0/index.js +0 -2
- package/dist/esm/contracts/lean0/index.js.map +0 -1
- package/src/abi-zkevm/IPerpetualManager.json +0 -5366
|
@@ -175,7 +175,7 @@ export default class PerpetualEventHandler {
|
|
|
175
175
|
perp.state = perpState.state;
|
|
176
176
|
perp.indexPrice = perpState.indexPrice;
|
|
177
177
|
perp.collToQuoteIndexPrice = perpState.collToQuoteIndexPrice;
|
|
178
|
-
perp.
|
|
178
|
+
perp.markPremium = perpState.markPremium;
|
|
179
179
|
perp.midPrice = perpState.midPrice;
|
|
180
180
|
perp.currentFundingRateBps = perpState.currentFundingRateBps;
|
|
181
181
|
perp.openInterestBC = perpState.openInterestBC;
|
|
@@ -197,7 +197,7 @@ export default class PerpetualEventHandler {
|
|
|
197
197
|
fMarkPricePremium: bigint,
|
|
198
198
|
fSpotIndexPrice: bigint
|
|
199
199
|
): void {
|
|
200
|
-
let [newMidPrice,
|
|
200
|
+
let [newMidPrice, newMarkPricePrem, newIndexPrice] = PerpetualEventHandler.ConvertUpdateMarkPrice(
|
|
201
201
|
fMidPricePremium,
|
|
202
202
|
fMarkPricePremium,
|
|
203
203
|
fSpotIndexPrice
|
|
@@ -207,7 +207,7 @@ export default class PerpetualEventHandler {
|
|
|
207
207
|
return;
|
|
208
208
|
}
|
|
209
209
|
perpetual.midPrice = newMidPrice;
|
|
210
|
-
perpetual.
|
|
210
|
+
perpetual.markPremium = newMarkPricePrem;
|
|
211
211
|
perpetual.indexPrice = newIndexPrice;
|
|
212
212
|
}
|
|
213
213
|
|
|
@@ -436,18 +436,17 @@ export default class PerpetualEventHandler {
|
|
|
436
436
|
* )
|
|
437
437
|
* @param fMarkPricePremium premium rate in ABDK format
|
|
438
438
|
* @param fSpotIndexPrice spot index price in ABDK format
|
|
439
|
-
* @returns
|
|
439
|
+
* @returns midPrice, markPricePremium, indexPrice in float
|
|
440
440
|
*/
|
|
441
441
|
private static ConvertUpdateMarkPrice(
|
|
442
442
|
fMidPricePremium: bigint,
|
|
443
443
|
fMarkPricePremium: bigint,
|
|
444
444
|
fSpotIndexPrice: bigint
|
|
445
445
|
): [number, number, number] {
|
|
446
|
-
let fMarkPrice = mul64x64(fSpotIndexPrice, ONE_64x64 + fMarkPricePremium);
|
|
447
446
|
let fMidPrice = mul64x64(fSpotIndexPrice, ONE_64x64 + fMidPricePremium);
|
|
448
447
|
let midPrice = ABK64x64ToFloat(fMidPrice);
|
|
449
|
-
let
|
|
448
|
+
let markPricePremium = ABK64x64ToFloat(fMarkPricePremium);
|
|
450
449
|
let indexPrice = ABK64x64ToFloat(fSpotIndexPrice);
|
|
451
|
-
return [midPrice,
|
|
450
|
+
return [midPrice, markPricePremium, indexPrice];
|
|
452
451
|
}
|
|
453
452
|
}
|
package/src/polyMktsPxFeed.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { probToPrice } from "./d8XMath";
|
|
2
|
-
import type { PriceFeedConfig } from "./nodeSDKTypes";
|
|
2
|
+
import type { PriceFeedConfig, PriceFeedJson, PredMktPriceInfo } from "./nodeSDKTypes";
|
|
3
3
|
|
|
4
4
|
interface PolyConfig {
|
|
5
5
|
sym: string;
|
|
@@ -14,9 +14,21 @@ interface PolyConfig {
|
|
|
14
14
|
*/
|
|
15
15
|
export default class PolyMktsPxFeed {
|
|
16
16
|
private ids: Map<string, PolyConfig>;
|
|
17
|
+
private oracleEndpoint: string;
|
|
17
18
|
|
|
18
19
|
constructor(config: PriceFeedConfig) {
|
|
19
20
|
this.ids = new Map<string, PolyConfig>();
|
|
21
|
+
this.oracleEndpoint = "";
|
|
22
|
+
for (let k = 0; k < config.endpoints.length; k++) {
|
|
23
|
+
if (config.endpoints[k].type == "polymarket") {
|
|
24
|
+
let endp = config.endpoints[k].writeEndpoints;
|
|
25
|
+
this.oracleEndpoint = endp[Math.floor(Math.random() * endp.length)];
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (this.oracleEndpoint == "") {
|
|
30
|
+
throw Error("no polymarkets write endpoint defined in priceFeedConfig");
|
|
31
|
+
}
|
|
20
32
|
for (let k = 0; k < config.ids.length; k++) {
|
|
21
33
|
if (config.ids[k].type == "polymarket") {
|
|
22
34
|
const sym = config.ids[k].symbol;
|
|
@@ -29,21 +41,45 @@ export default class PolyMktsPxFeed {
|
|
|
29
41
|
this.ids.set(sym, el);
|
|
30
42
|
}
|
|
31
43
|
}
|
|
44
|
+
|
|
45
|
+
this.oracleEndpoint = this.oracleEndpoint.replace(/\/$/, "") + "/v2/updates/price/latest?encoding=base64&ids[]=";
|
|
32
46
|
}
|
|
33
47
|
|
|
34
48
|
public isPolyMktsSym(sym: string) {
|
|
35
49
|
return this.ids.get(sym) == undefined;
|
|
36
50
|
}
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
// returns index price, ema price, conf in tbps, parameters for order book
|
|
53
|
+
public async fetchPriceForSym(sym: string): Promise<PredMktPriceInfo> {
|
|
39
54
|
const mkt = this.ids.get(sym);
|
|
40
55
|
if (mkt == undefined) {
|
|
41
56
|
throw new Error(`symbol not in polymarket universe: ${sym}`);
|
|
42
57
|
}
|
|
43
|
-
return this.fetchPrice(mkt.
|
|
58
|
+
return this.fetchPrice(mkt.id);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// fetch price of the form 1+p from oracle, also fetches ema
|
|
62
|
+
public async fetchPrice(tokenIdHex: string): Promise<PredMktPriceInfo> {
|
|
63
|
+
const query = this.oracleEndpoint + tokenIdHex;
|
|
64
|
+
let response = await fetch(query);
|
|
65
|
+
if (response.status !== 200) {
|
|
66
|
+
throw new Error(`unexpected status code: ${response.status}`);
|
|
67
|
+
}
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
throw new Error(`failed to fetch posts (${response.status}): ${response.statusText} ${query}`);
|
|
70
|
+
}
|
|
71
|
+
const data = await response.json();
|
|
72
|
+
const emaObj = data.parsed[0].ema_price as PriceFeedJson;
|
|
73
|
+
const pxObj = data.parsed[0].price as PriceFeedJson;
|
|
74
|
+
|
|
75
|
+
const px = Number(pxObj.price) * Math.pow(10, pxObj.expo);
|
|
76
|
+
const ema = Number(emaObj.price) * Math.pow(10, emaObj.expo);
|
|
77
|
+
const params = BigInt(emaObj.conf);
|
|
78
|
+
const conf = BigInt(pxObj.conf);
|
|
79
|
+
return { s2: px, ema: ema, s2MktClosed: false, conf: conf, predMktCLOBParams: params } as PredMktPriceInfo;
|
|
44
80
|
}
|
|
45
81
|
|
|
46
|
-
public async
|
|
82
|
+
public async fetchPriceFromAPI(tokenIdDec: string): Promise<number> {
|
|
47
83
|
const query = "https://clob.polymarket.com/midpoint?token_id=" + tokenIdDec;
|
|
48
84
|
let response = await fetch(query);
|
|
49
85
|
if (response.status !== 200) {
|
package/src/priceFeeds.ts
CHANGED
|
@@ -7,6 +7,8 @@ import type {
|
|
|
7
7
|
PriceFeedFormat,
|
|
8
8
|
PriceFeedSubmission,
|
|
9
9
|
PythV2LatestPriceFeed,
|
|
10
|
+
IdxPriceInfo,
|
|
11
|
+
PredMktPriceInfo,
|
|
10
12
|
} from "./nodeSDKTypes";
|
|
11
13
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
12
14
|
import Triangulator from "./triangulator";
|
|
@@ -41,7 +43,7 @@ export default class PriceFeeds {
|
|
|
41
43
|
constructor(dataHandler: PerpetualDataHandler, priceFeedConfigNetwork: string) {
|
|
42
44
|
let configs = require("./config/priceFeedConfig.json") as PriceFeedConfig[];
|
|
43
45
|
this.config = PriceFeeds._selectConfig(configs, priceFeedConfigNetwork);
|
|
44
|
-
|
|
46
|
+
|
|
45
47
|
// if SDK config contains custom price feed endpoints, these override the
|
|
46
48
|
// public/default ones
|
|
47
49
|
if (dataHandler.config.priceFeedEndpoints && dataHandler.config.priceFeedEndpoints.length > 0) {
|
|
@@ -66,7 +68,7 @@ export default class PriceFeeds {
|
|
|
66
68
|
if (this.writeFeedEndpoints.length == 0) {
|
|
67
69
|
throw new Error("PriceFeeds: no writeEndpoints provided in config");
|
|
68
70
|
}
|
|
69
|
-
|
|
71
|
+
this.polyMktsPxFeed = new PolyMktsPxFeed(this.config);
|
|
70
72
|
this.dataHandler = dataHandler;
|
|
71
73
|
this.triangulations = new Map<string, [string[], boolean[]]>();
|
|
72
74
|
}
|
|
@@ -200,10 +202,25 @@ export default class PriceFeeds {
|
|
|
200
202
|
/**
|
|
201
203
|
* Get index prices and market closed information for the given perpetual
|
|
202
204
|
* @param symbol perpetual symbol such as ETH-USD-MATIC
|
|
203
|
-
* @returns Index prices and market closed information
|
|
205
|
+
* @returns Index prices and market closed information; for prediction markets also
|
|
206
|
+
* ema, confidence, and order book parameters.
|
|
204
207
|
*/
|
|
205
|
-
public async fetchPricesForPerpetual(symbol: string): Promise<
|
|
208
|
+
public async fetchPricesForPerpetual(symbol: string): Promise<IdxPriceInfo> {
|
|
206
209
|
let indexSymbols = this.dataHandler.getIndexSymbols(symbol).filter((x) => x != "");
|
|
210
|
+
if (this.dataHandler.isPredictionMarket(symbol)) {
|
|
211
|
+
let priceObj = await this.polyMktsPxFeed.fetchPriceForSym(indexSymbols[0]);
|
|
212
|
+
const s3map = await this.fetchFeedPrices([indexSymbols[1]]);
|
|
213
|
+
const s3 = s3map.get(indexSymbols[1])!;
|
|
214
|
+
return {
|
|
215
|
+
s2: priceObj.s2,
|
|
216
|
+
s3: s3[0],
|
|
217
|
+
ema: priceObj.ema,
|
|
218
|
+
s2MktClosed: priceObj.s2MktClosed,
|
|
219
|
+
s3MktClosed: s3[1],
|
|
220
|
+
conf: priceObj.conf,
|
|
221
|
+
predMktCLOBParams: priceObj.predMktCLOBParams,
|
|
222
|
+
} as IdxPriceInfo;
|
|
223
|
+
}
|
|
207
224
|
// determine relevant price feeds
|
|
208
225
|
let feedSymbols = new Array<string>();
|
|
209
226
|
for (let sym of indexSymbols) {
|
|
@@ -222,12 +239,15 @@ export default class PriceFeeds {
|
|
|
222
239
|
let feedPrices = await this.fetchFeedPrices(feedSymbols);
|
|
223
240
|
// triangulate
|
|
224
241
|
let [prices, mktClosed] = this.triangulatePricesFromFeedPrices(indexSymbols, feedPrices);
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
prices
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
242
|
+
return {
|
|
243
|
+
s2: prices[0],
|
|
244
|
+
s3: prices[1],
|
|
245
|
+
ema: prices[0],
|
|
246
|
+
s2MktClosed: mktClosed[0],
|
|
247
|
+
s3MktClosed: mktClosed[1],
|
|
248
|
+
conf: BigInt(0),
|
|
249
|
+
predMktCLOBParams: BigInt(0),
|
|
250
|
+
} as IdxPriceInfo;
|
|
231
251
|
}
|
|
232
252
|
|
|
233
253
|
/**
|
|
@@ -238,7 +258,8 @@ export default class PriceFeeds {
|
|
|
238
258
|
* endpoints are used
|
|
239
259
|
* @param symbols array of feed-price symbols (e.g., [btc-usd, eth-usd]) or
|
|
240
260
|
* undefined
|
|
241
|
-
* @returns mapping symbol-> [price, isMarketClosed]
|
|
261
|
+
* @returns mapping symbol-> [price, isMarketClosed], also has an entry
|
|
262
|
+
* <symbol>:ema for each polymarket symbol that maps to the ema price
|
|
242
263
|
*/
|
|
243
264
|
public async fetchFeedPrices(symbols?: string[]): Promise<Map<string, [number, boolean]>> {
|
|
244
265
|
let queries = new Array<string>(this.feedEndpoints.length);
|
|
@@ -301,10 +322,11 @@ export default class PriceFeeds {
|
|
|
301
322
|
let polyPxs = await polyMktsPromise;
|
|
302
323
|
for (let k = 0; k < polyPxs.length; k++) {
|
|
303
324
|
let sym = polyMktSyms[k];
|
|
304
|
-
if (polyPxs[k] ==
|
|
325
|
+
if (polyPxs[k] == undefined) {
|
|
305
326
|
continue;
|
|
306
327
|
}
|
|
307
|
-
resultPrices.set(sym, [polyPxs[k],
|
|
328
|
+
resultPrices.set(sym, [polyPxs[k]!.s2, polyPxs[k]!.s2MktClosed]);
|
|
329
|
+
resultPrices.set(sym + ":ema", [polyPxs[k]!.ema, polyPxs[k]!.s2MktClosed]);
|
|
308
330
|
}
|
|
309
331
|
return resultPrices;
|
|
310
332
|
}
|
|
@@ -320,15 +342,17 @@ export default class PriceFeeds {
|
|
|
320
342
|
return prices;
|
|
321
343
|
}
|
|
322
344
|
|
|
345
|
+
// returns an array with two values per symbol: price, ema
|
|
323
346
|
private async queryPolyMktsPxFeeds(symbols: string[]) {
|
|
324
|
-
let prices
|
|
347
|
+
let prices = new Array<PredMktPriceInfo | undefined>();
|
|
325
348
|
for (let k = 0; k < symbols.length; k++) {
|
|
326
349
|
try {
|
|
327
|
-
let
|
|
328
|
-
prices.push(
|
|
350
|
+
let info = await this.polyMktsPxFeed.fetchPriceForSym(symbols[k]);
|
|
351
|
+
prices.push(info);
|
|
329
352
|
} catch (error) {
|
|
330
353
|
console.log("fetchPriceForSym failed for " + symbols[k]);
|
|
331
|
-
|
|
354
|
+
console.log(error);
|
|
355
|
+
prices.push(undefined);
|
|
332
356
|
}
|
|
333
357
|
if (k > 0) {
|
|
334
358
|
await sleep(0.25);
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "2.
|
|
1
|
+
export const D8X_SDK_VERSION = "2.1.1-alpha2";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
Wallet,
|
|
10
10
|
} from "ethers";
|
|
11
11
|
import { MAX_UINT_256, MULTICALL_ADDRESS } from "./constants";
|
|
12
|
-
import { ERC20__factory, MockTokenSwap__factory, Multicall3__factory } from "./contracts";
|
|
12
|
+
import { ERC20__factory, IPerpetualManager__factory, MockTokenSwap__factory, Multicall3__factory } from "./contracts";
|
|
13
13
|
import { PayableOverrides } from "./contracts/common";
|
|
14
14
|
import { floatToDecN } from "./d8XMath";
|
|
15
15
|
import MarketData from "./marketData";
|
|
@@ -66,7 +66,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
|
|
|
66
66
|
const mktData = providerOrMarketData;
|
|
67
67
|
this.nodeURL = mktData.config.nodeURL;
|
|
68
68
|
this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
|
|
69
|
-
this.proxyContract =
|
|
69
|
+
this.proxyContract = IPerpetualManager__factory.connect(mktData.getProxyAddress(), this.provider);
|
|
70
70
|
this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
|
|
71
71
|
({
|
|
72
72
|
nestedPerpetualIDs: this.nestedPerpetualIDs,
|
|
@@ -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
|
-
]
|