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