@d8x/perpetuals-sdk 0.1.12 → 0.2.0
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/testnet/IPerpetualManager.json +5215 -0
- package/dist/cjs/abi/testnet/LimitOrderBook.json +1075 -0
- package/dist/cjs/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
- package/dist/cjs/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
- package/dist/cjs/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
- package/dist/cjs/accountTrade.js +441 -0
- package/dist/cjs/accountTrade.js.map +1 -0
- package/dist/{src → cjs}/brokerTool.js +31 -84
- package/dist/cjs/brokerTool.js.map +1 -0
- package/dist/cjs/config/defaultConfig.json +47 -0
- package/dist/cjs/config/mockSwap.json +4 -0
- package/dist/cjs/config/priceFeedConfig.json +104 -0
- package/dist/cjs/config/symbolList.json +13 -0
- package/dist/cjs/d8XMath.js.map +1 -0
- package/dist/cjs/index.js +29 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/liquidatorTool.js +287 -0
- package/dist/cjs/liquidatorTool.js.map +1 -0
- package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
- package/dist/cjs/liquidityProviderTool.js.map +1 -0
- package/dist/{src → cjs}/marketData.js +52 -134
- package/dist/cjs/marketData.js.map +1 -0
- package/dist/{src → cjs}/nodeSDKTypes.d.ts +5 -5
- package/dist/cjs/nodeSDKTypes.js +64 -0
- package/dist/cjs/nodeSDKTypes.js.map +1 -0
- package/dist/{src → cjs}/orderReferrerTool.d.ts +12 -5
- package/dist/{src → cjs}/orderReferrerTool.js +114 -112
- package/dist/cjs/orderReferrerTool.js.map +1 -0
- package/dist/{src → cjs}/perpetualDataHandler.d.ts +1 -1
- package/dist/{src → cjs}/perpetualDataHandler.js +47 -109
- package/dist/cjs/perpetualDataHandler.js.map +1 -0
- package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
- package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
- package/dist/cjs/perpetualEventHandler.js.map +1 -0
- package/dist/cjs/priceFeeds.js +466 -0
- package/dist/cjs/priceFeeds.js.map +1 -0
- package/dist/{src → cjs}/traderDigests.js +7 -43
- package/dist/cjs/traderDigests.js.map +1 -0
- package/dist/{src → cjs}/traderInterface.js +13 -66
- package/dist/cjs/traderInterface.js.map +1 -0
- package/dist/{src → cjs}/triangulator.js +2 -17
- package/dist/cjs/triangulator.js.map +1 -0
- package/dist/{src → cjs}/utils.js +3 -29
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -0
- package/dist/{src → cjs}/version.js +1 -1
- package/dist/cjs/version.js.map +1 -0
- package/dist/{src → cjs}/writeAccessHandler.js +12 -65
- package/dist/cjs/writeAccessHandler.js.map +1 -0
- package/dist/esm/abi/ERC20.json +288 -0
- package/dist/esm/abi/MockTokenSwap.json +186 -0
- package/dist/{abi/testnet → esm/abi/central-park}/IPerpetualManager.json +404 -214
- package/dist/{abi/testnet → esm/abi/central-park}/LimitOrderBook.json +197 -15
- package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
- package/dist/esm/abi/testnet/IPerpetualManager.json +5215 -0
- package/dist/esm/abi/testnet/LimitOrderBook.json +1075 -0
- package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
- package/dist/esm/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
- package/dist/esm/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
- package/dist/esm/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
- package/dist/esm/accountTrade.d.ts +221 -0
- package/dist/{src → esm}/accountTrade.js +22 -93
- package/dist/esm/accountTrade.js.map +1 -0
- package/dist/esm/brokerTool.d.ts +318 -0
- package/dist/esm/brokerTool.js +572 -0
- package/dist/esm/brokerTool.js.map +1 -0
- package/dist/esm/config/defaultConfig.json +47 -0
- package/dist/esm/config/mockSwap.json +4 -0
- package/dist/esm/config/priceFeedConfig.json +104 -0
- package/dist/esm/config/symbolList.json +13 -0
- package/dist/esm/d8XMath.d.ts +122 -0
- package/dist/esm/d8XMath.js +247 -0
- package/dist/esm/d8XMath.js.map +1 -0
- package/{src/index.ts → dist/esm/index.d.ts} +1 -15
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/liquidatorTool.d.ts +158 -0
- package/dist/{src → esm}/liquidatorTool.js +10 -65
- package/dist/esm/liquidatorTool.js.map +1 -0
- package/dist/esm/liquidityProviderTool.d.ts +126 -0
- package/dist/esm/liquidityProviderTool.js +218 -0
- package/dist/esm/liquidityProviderTool.js.map +1 -0
- package/dist/esm/marketData.d.ts +309 -0
- package/dist/esm/marketData.js +1007 -0
- package/dist/esm/marketData.js.map +1 -0
- package/dist/esm/nodeSDKTypes.d.ts +266 -0
- package/dist/esm/nodeSDKTypes.js +60 -0
- package/dist/esm/nodeSDKTypes.js.map +1 -0
- package/dist/esm/orderReferrerTool.d.ts +196 -0
- package/dist/esm/orderReferrerTool.js +491 -0
- package/dist/esm/orderReferrerTool.js.map +1 -0
- package/dist/esm/perpetualDataHandler.d.ts +220 -0
- package/dist/esm/perpetualDataHandler.js +1060 -0
- package/dist/esm/perpetualDataHandler.js.map +1 -0
- package/dist/esm/perpetualEventHandler.d.ts +179 -0
- package/dist/esm/perpetualEventHandler.js +435 -0
- package/dist/esm/perpetualEventHandler.js.map +1 -0
- package/dist/esm/priceFeeds.d.ts +115 -0
- package/dist/{src → esm}/priceFeeds.js +16 -83
- package/dist/esm/priceFeeds.js.map +1 -0
- package/dist/esm/traderDigests.d.ts +21 -0
- package/dist/esm/traderDigests.js +80 -0
- package/dist/esm/traderDigests.js.map +1 -0
- package/dist/esm/traderInterface.d.ts +79 -0
- package/dist/esm/traderInterface.js +196 -0
- package/dist/esm/traderInterface.js.map +1 -0
- package/dist/esm/triangulator.d.ts +27 -0
- package/dist/esm/triangulator.js +110 -0
- package/dist/esm/triangulator.js.map +1 -0
- package/dist/esm/utils.d.ts +59 -0
- package/dist/esm/utils.js +138 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/esm/writeAccessHandler.d.ts +50 -0
- package/dist/esm/writeAccessHandler.js +157 -0
- package/dist/esm/writeAccessHandler.js.map +1 -0
- package/package.json +16 -26
- package/dist/bundle.js +0 -36793
- package/dist/config/defaultConfig.json +0 -47
- package/dist/config/mockSwap.json +0 -4
- package/dist/config/priceFeedConfig.json +0 -104
- package/dist/config/symbolList.json +0 -13
- package/dist/src/index.js +0 -45
- package/dist/src/nodeSDKTypes.js +0 -115
- package/dist/src/version.d.ts +0 -1
- package/module.d.ts +0 -1
- package/src/accountTrade.ts +0 -392
- package/src/brokerTool.ts +0 -507
- package/src/d8XMath.ts +0 -319
- package/src/liquidatorTool.ts +0 -258
- package/src/liquidityProviderTool.ts +0 -186
- package/src/marketData.ts +0 -946
- package/src/nodeSDKTypes.ts +0 -293
- package/src/orderReferrerTool.ts +0 -389
- package/src/perpetualDataHandler.ts +0 -1061
- package/src/perpetualEventHandler.ts +0 -455
- package/src/priceFeeds.ts +0 -381
- package/src/traderDigests.ts +0 -91
- package/src/traderInterface.ts +0 -159
- package/src/triangulator.ts +0 -105
- package/src/utils.ts +0 -134
- package/src/version.ts +0 -1
- package/src/writeAccessHandler.ts +0 -127
- /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
- /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
- /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
- /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
- /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
- /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
- /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
- /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
- /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
- /package/dist/{src → cjs}/d8XMath.js +0 -0
- /package/dist/{src → cjs}/index.d.ts +0 -0
- /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
- /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
- /package/dist/{src → cjs}/marketData.d.ts +0 -0
- /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
- /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
- /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
- /package/dist/{src → cjs}/triangulator.d.ts +0 -0
- /package/dist/{src → cjs}/utils.d.ts +0 -0
- /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var ethers_1 = require("ethers");
|
|
5
|
+
var triangulator_1 = tslib_1.__importDefault(require("./triangulator"));
|
|
6
|
+
var d8XMath_1 = require("./d8XMath");
|
|
7
|
+
var buffer_1 = require("buffer");
|
|
8
|
+
/**
|
|
9
|
+
* This class communicates with the REST API that provides price-data that is
|
|
10
|
+
* to be submitted to the smart contracts for certain functions such as
|
|
11
|
+
* trader liquidations, trade executions, change of trader margin amount.
|
|
12
|
+
*/
|
|
13
|
+
var PriceFeeds = /** @class */ (function () {
|
|
14
|
+
function PriceFeeds(dataHandler, priceFeedConfigNetwork) {
|
|
15
|
+
var _a;
|
|
16
|
+
this.THRESHOLD_MARKET_CLOSED_SEC = 15; // smallest lag for which we consider the market as being closed
|
|
17
|
+
var configs = require("./config/priceFeedConfig.json");
|
|
18
|
+
this.config = PriceFeeds._selectConfig(configs, priceFeedConfigNetwork);
|
|
19
|
+
_a = tslib_1.__read(PriceFeeds._constructFeedInfo(this.config), 2), this.feedInfo = _a[0], this.feedEndpoints = _a[1];
|
|
20
|
+
this.dataHandler = dataHandler;
|
|
21
|
+
this.triangulations = new Map();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Pre-processing of triangulations for symbols, given the price feeds
|
|
25
|
+
* @param symbols set of symbols we want to triangulate from price feeds
|
|
26
|
+
*/
|
|
27
|
+
PriceFeeds.prototype.initializeTriangulations = function (symbols) {
|
|
28
|
+
var e_1, _a, e_2, _b;
|
|
29
|
+
var feedSymbols = new Array();
|
|
30
|
+
try {
|
|
31
|
+
for (var _c = tslib_1.__values(this.feedInfo), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
32
|
+
var _e = tslib_1.__read(_d.value, 2), value = _e[1];
|
|
33
|
+
feedSymbols.push(value.symbol);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
37
|
+
finally {
|
|
38
|
+
try {
|
|
39
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
40
|
+
}
|
|
41
|
+
finally { if (e_1) throw e_1.error; }
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
for (var _f = tslib_1.__values(symbols.values()), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
45
|
+
var symbol = _g.value;
|
|
46
|
+
var triangulation = triangulator_1.default.triangulate(feedSymbols, symbol);
|
|
47
|
+
this.triangulations.set(symbol, triangulation);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
51
|
+
finally {
|
|
52
|
+
try {
|
|
53
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
54
|
+
}
|
|
55
|
+
finally { if (e_2) throw e_2.error; }
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Get required information to be able to submit a blockchain transaction with price-update
|
|
60
|
+
* such as trade execution, liquidation
|
|
61
|
+
* @param symbol symbol of perpetual, e.g., BTC-USD-MATIC
|
|
62
|
+
* @returns PriceFeedSubmission, index prices, market closed information
|
|
63
|
+
*/
|
|
64
|
+
PriceFeeds.prototype.fetchFeedPriceInfoAndIndicesForPerpetual = function (symbol) {
|
|
65
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
66
|
+
var indexSymbols, submission, _a, _idxPrices, _mktClosed, idxPrices, mktClosed;
|
|
67
|
+
return tslib_1.__generator(this, function (_b) {
|
|
68
|
+
switch (_b.label) {
|
|
69
|
+
case 0:
|
|
70
|
+
indexSymbols = this.dataHandler.getIndexSymbols(symbol);
|
|
71
|
+
return [4 /*yield*/, this.fetchLatestFeedPriceInfoForPerpetual(symbol)];
|
|
72
|
+
case 1:
|
|
73
|
+
submission = _b.sent();
|
|
74
|
+
_a = tslib_1.__read(this.calculateTriangulatedPricesFromFeedInfo(indexSymbols.filter(function (x) { return x != ""; }), submission), 2), _idxPrices = _a[0], _mktClosed = _a[1];
|
|
75
|
+
idxPrices = [_idxPrices[0], 0];
|
|
76
|
+
mktClosed = [_mktClosed[0], false];
|
|
77
|
+
if (idxPrices.length > 1) {
|
|
78
|
+
idxPrices[1] = _idxPrices[1];
|
|
79
|
+
mktClosed[1] = _mktClosed[1];
|
|
80
|
+
}
|
|
81
|
+
return [2 /*return*/, { submission: submission, pxS2S3: idxPrices, mktClosed: mktClosed }];
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Get all prices/isMarketClosed for the provided symbols via
|
|
88
|
+
* "latest_price_feeds" and triangulation. Triangulation must be defined in config, unless
|
|
89
|
+
* it is a direct price feed.
|
|
90
|
+
* @returns map of feed-price symbol to price/isMarketClosed
|
|
91
|
+
*/
|
|
92
|
+
PriceFeeds.prototype.fetchPrices = function (symbols) {
|
|
93
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
94
|
+
var feedPrices, _a, prices, mktClosed, symMap, k;
|
|
95
|
+
return tslib_1.__generator(this, function (_b) {
|
|
96
|
+
switch (_b.label) {
|
|
97
|
+
case 0: return [4 /*yield*/, this.fetchAllFeedPrices()];
|
|
98
|
+
case 1:
|
|
99
|
+
feedPrices = _b.sent();
|
|
100
|
+
_a = tslib_1.__read(this.triangulatePricesFromFeedPrices(symbols, feedPrices), 2), prices = _a[0], mktClosed = _a[1];
|
|
101
|
+
symMap = new Map();
|
|
102
|
+
for (k = 0; k < symbols.length; k++) {
|
|
103
|
+
symMap.set(symbols[k], [prices[k], mktClosed[k]]);
|
|
104
|
+
}
|
|
105
|
+
return [2 /*return*/, symMap];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Get index prices and market closed information for the given perpetual
|
|
112
|
+
* @param symbol perpetual symbol such as ETH-USD-MATIC
|
|
113
|
+
* @returns Index prices and market closed information
|
|
114
|
+
*/
|
|
115
|
+
PriceFeeds.prototype.fetchPricesForPerpetual = function (symbol) {
|
|
116
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
117
|
+
var indexSymbols, feedSymbols, indexSymbols_1, indexSymbols_1_1, sym, triang, feedPrices, _a, prices, mktClosed;
|
|
118
|
+
var e_3, _b;
|
|
119
|
+
return tslib_1.__generator(this, function (_c) {
|
|
120
|
+
switch (_c.label) {
|
|
121
|
+
case 0:
|
|
122
|
+
indexSymbols = this.dataHandler.getIndexSymbols(symbol).filter(function (x) { return x != ""; });
|
|
123
|
+
feedSymbols = new Array();
|
|
124
|
+
try {
|
|
125
|
+
for (indexSymbols_1 = tslib_1.__values(indexSymbols), indexSymbols_1_1 = indexSymbols_1.next(); !indexSymbols_1_1.done; indexSymbols_1_1 = indexSymbols_1.next()) {
|
|
126
|
+
sym = indexSymbols_1_1.value;
|
|
127
|
+
if (sym != "") {
|
|
128
|
+
triang = this.triangulations.get(sym);
|
|
129
|
+
if (triang == undefined) {
|
|
130
|
+
// no triangulation defined, so symbol must be a feed (unless misconfigured)
|
|
131
|
+
feedSymbols.push(sym);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// push all required feeds to array
|
|
135
|
+
triang[0].map(function (feedSym) { return feedSymbols.push(feedSym); });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
141
|
+
finally {
|
|
142
|
+
try {
|
|
143
|
+
if (indexSymbols_1_1 && !indexSymbols_1_1.done && (_b = indexSymbols_1.return)) _b.call(indexSymbols_1);
|
|
144
|
+
}
|
|
145
|
+
finally { if (e_3) throw e_3.error; }
|
|
146
|
+
}
|
|
147
|
+
return [4 /*yield*/, this.fetchFeedPrices(feedSymbols)];
|
|
148
|
+
case 1:
|
|
149
|
+
feedPrices = _c.sent();
|
|
150
|
+
_a = tslib_1.__read(this.triangulatePricesFromFeedPrices(indexSymbols, feedPrices), 2), prices = _a[0], mktClosed = _a[1];
|
|
151
|
+
// ensure we return an array of 2 in all cases
|
|
152
|
+
if (prices.length == 1) {
|
|
153
|
+
prices.push(0);
|
|
154
|
+
mktClosed.push(false);
|
|
155
|
+
}
|
|
156
|
+
return [2 /*return*/, { idxPrices: prices, mktClosed: mktClosed }];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Fetch the provided feed prices and bool whether market is closed or open
|
|
163
|
+
* - requires the feeds to be defined in priceFeedConfig.json
|
|
164
|
+
* - if undefined, all feeds are queried
|
|
165
|
+
* @param symbols array of feed-price symbols (e.g., [btc-usd, eth-usd]) or undefined
|
|
166
|
+
* @returns mapping symbol-> [price, isMarketClosed]
|
|
167
|
+
*/
|
|
168
|
+
PriceFeeds.prototype.fetchFeedPrices = function (symbols) {
|
|
169
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
170
|
+
var queries, symbolsOfEndpoint, j, k, currFeed, endpointId, resultPrices, k, _a, pxInfo, tsSecNow, j, price, isMarketClosed;
|
|
171
|
+
return tslib_1.__generator(this, function (_b) {
|
|
172
|
+
switch (_b.label) {
|
|
173
|
+
case 0:
|
|
174
|
+
queries = new Array(this.feedEndpoints.length);
|
|
175
|
+
symbolsOfEndpoint = [];
|
|
176
|
+
for (j = 0; j < queries.length; j++) {
|
|
177
|
+
symbolsOfEndpoint.push([]);
|
|
178
|
+
}
|
|
179
|
+
for (k = 0; k < this.config.ids.length; k++) {
|
|
180
|
+
currFeed = this.config.ids[k];
|
|
181
|
+
if (symbols != undefined && !symbols.includes(currFeed.symbol)) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
endpointId = this.feedInfo.get(currFeed.id).endpointId;
|
|
185
|
+
symbolsOfEndpoint[endpointId].push(currFeed.symbol);
|
|
186
|
+
if (queries[endpointId] == undefined) {
|
|
187
|
+
// each id can have a different endpoint, but we cluster
|
|
188
|
+
// the queries into one per endpoint
|
|
189
|
+
queries[endpointId] = this.feedEndpoints[endpointId] + "/latest_price_feeds?";
|
|
190
|
+
}
|
|
191
|
+
queries[endpointId] = queries[endpointId] + "ids[]=" + currFeed.id + "&";
|
|
192
|
+
}
|
|
193
|
+
resultPrices = new Map();
|
|
194
|
+
k = 0;
|
|
195
|
+
_b.label = 1;
|
|
196
|
+
case 1:
|
|
197
|
+
if (!(k < queries.length)) return [3 /*break*/, 4];
|
|
198
|
+
if (queries[k] == undefined) {
|
|
199
|
+
return [3 /*break*/, 3];
|
|
200
|
+
}
|
|
201
|
+
return [4 /*yield*/, this.fetchPriceQuery(queries[k])];
|
|
202
|
+
case 2:
|
|
203
|
+
_a = tslib_1.__read.apply(void 0, [_b.sent(), 2]), pxInfo = _a[1];
|
|
204
|
+
tsSecNow = Math.round(Date.now() / 1000);
|
|
205
|
+
for (j = 0; j < pxInfo.length; j++) {
|
|
206
|
+
price = (0, d8XMath_1.decNToFloat)(ethers_1.BigNumber.from(pxInfo[j].price), -pxInfo[j].expo);
|
|
207
|
+
isMarketClosed = tsSecNow - pxInfo[j].publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
|
|
208
|
+
resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed]);
|
|
209
|
+
}
|
|
210
|
+
_b.label = 3;
|
|
211
|
+
case 3:
|
|
212
|
+
k++;
|
|
213
|
+
return [3 /*break*/, 1];
|
|
214
|
+
case 4: return [2 /*return*/, resultPrices];
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Get all configured feed prices via "latest_price_feeds"
|
|
221
|
+
* @returns map of feed-price symbol to price/isMarketClosed
|
|
222
|
+
*/
|
|
223
|
+
PriceFeeds.prototype.fetchAllFeedPrices = function () {
|
|
224
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
225
|
+
return tslib_1.__generator(this, function (_a) {
|
|
226
|
+
return [2 /*return*/, this.fetchFeedPrices()];
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* Get the latest prices for a given perpetual from the offchain oracle
|
|
232
|
+
* networks
|
|
233
|
+
* @param symbol perpetual symbol of the form BTC-USD-MATIC
|
|
234
|
+
* @returns array of price feed updates that can be submitted to the smart contract
|
|
235
|
+
* and corresponding price information
|
|
236
|
+
*/
|
|
237
|
+
PriceFeeds.prototype.fetchLatestFeedPriceInfoForPerpetual = function (symbol) {
|
|
238
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
239
|
+
var feedIds, queries, orderEndpointNumber, idCountPriceFeeds, symbols, k, info, id, data, priceFeedUpdates, prices, mktClosed, timestamps, tsSecNow, k, endpointId, idWithinEndpoint, pxInfo, price, isMarketClosed;
|
|
240
|
+
var _this = this;
|
|
241
|
+
return tslib_1.__generator(this, function (_a) {
|
|
242
|
+
switch (_a.label) {
|
|
243
|
+
case 0:
|
|
244
|
+
feedIds = this.dataHandler.getPriceIds(symbol);
|
|
245
|
+
queries = new Array(this.feedEndpoints.length);
|
|
246
|
+
orderEndpointNumber = new Array();
|
|
247
|
+
idCountPriceFeeds = new Array(this.feedEndpoints.length);
|
|
248
|
+
symbols = new Array();
|
|
249
|
+
for (k = 0; k < feedIds.length; k++) {
|
|
250
|
+
info = this.feedInfo.get(feedIds[k]);
|
|
251
|
+
if (info == undefined) {
|
|
252
|
+
throw new Error("priceFeeds: config for symbol ".concat(symbol, " insufficient"));
|
|
253
|
+
}
|
|
254
|
+
id = info.endpointId;
|
|
255
|
+
symbols.push(info.symbol);
|
|
256
|
+
if (queries[id] == undefined) {
|
|
257
|
+
// each id can have a different endpoint, but we cluster
|
|
258
|
+
// the queries into one per endpoint
|
|
259
|
+
queries[id] = this.feedEndpoints[id] + "/latest_vaas_px?";
|
|
260
|
+
idCountPriceFeeds[id] = 0;
|
|
261
|
+
}
|
|
262
|
+
queries[id] = queries[id] + "ids[]=" + feedIds[k] + "&";
|
|
263
|
+
orderEndpointNumber.push(id * 100 + idCountPriceFeeds[id]);
|
|
264
|
+
idCountPriceFeeds[id] = idCountPriceFeeds[id] + 1;
|
|
265
|
+
}
|
|
266
|
+
return [4 /*yield*/, Promise.all(queries.map(function (q) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
267
|
+
return tslib_1.__generator(this, function (_a) {
|
|
268
|
+
if (q != undefined) {
|
|
269
|
+
return [2 /*return*/, this.fetchVAAQuery(q)];
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
return [2 /*return*/, [[], []]];
|
|
273
|
+
}
|
|
274
|
+
return [2 /*return*/];
|
|
275
|
+
});
|
|
276
|
+
}); }))];
|
|
277
|
+
case 1:
|
|
278
|
+
data = _a.sent();
|
|
279
|
+
priceFeedUpdates = new Array();
|
|
280
|
+
prices = new Array();
|
|
281
|
+
mktClosed = new Array();
|
|
282
|
+
timestamps = new Array();
|
|
283
|
+
tsSecNow = Math.round(Date.now() / 1000);
|
|
284
|
+
for (k = 0; k < orderEndpointNumber.length; k++) {
|
|
285
|
+
endpointId = Math.floor(orderEndpointNumber[k] / 100);
|
|
286
|
+
idWithinEndpoint = orderEndpointNumber[k] - 100 * endpointId;
|
|
287
|
+
priceFeedUpdates.push(data[endpointId][0][idWithinEndpoint]);
|
|
288
|
+
pxInfo = data[endpointId][1][idWithinEndpoint];
|
|
289
|
+
price = (0, d8XMath_1.decNToFloat)(ethers_1.BigNumber.from(pxInfo.price), -pxInfo.expo);
|
|
290
|
+
isMarketClosed = tsSecNow - pxInfo.publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
|
|
291
|
+
mktClosed.push(isMarketClosed);
|
|
292
|
+
prices.push(price);
|
|
293
|
+
timestamps.push(pxInfo.publish_time);
|
|
294
|
+
}
|
|
295
|
+
return [2 /*return*/, {
|
|
296
|
+
symbols: symbols,
|
|
297
|
+
priceFeedVaas: priceFeedUpdates,
|
|
298
|
+
prices: prices,
|
|
299
|
+
isMarketClosed: mktClosed,
|
|
300
|
+
timestamps: timestamps,
|
|
301
|
+
}];
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* Extract pair-prices from underlying price feeds via triangulation
|
|
308
|
+
* The function either needs a direct price feed or a defined triangulation to succesfully
|
|
309
|
+
* return a triangulated price
|
|
310
|
+
* @param symbols array of pairs for which we want prices, e.g., [BTC-USDC, ETH-USD]
|
|
311
|
+
* @param feeds data obtained via fetchLatestFeedPriceInfo or fetchLatestFeedPrices
|
|
312
|
+
* @returns array of prices with same order as symbols
|
|
313
|
+
*/
|
|
314
|
+
PriceFeeds.prototype.calculateTriangulatedPricesFromFeedInfo = function (symbols, feeds) {
|
|
315
|
+
var priceMap = new Map();
|
|
316
|
+
for (var j = 0; j < feeds.prices.length; j++) {
|
|
317
|
+
priceMap.set(feeds.symbols[j], [feeds.prices[j], feeds.isMarketClosed[j]]);
|
|
318
|
+
}
|
|
319
|
+
return this.triangulatePricesFromFeedPrices(symbols, priceMap);
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* Extract pair-prices from underlying price feeds via triangulation
|
|
323
|
+
* The function either needs a direct price feed or a defined triangulation to succesfully
|
|
324
|
+
* return a triangulated price
|
|
325
|
+
* @param symbols array of pairs for which we want prices, e.g., [BTC-USDC, ETH-USD]
|
|
326
|
+
* @param feeds data obtained via fetchLatestFeedPriceInfo or fetchLatestFeedPrices
|
|
327
|
+
* @returns array of prices with same order as symbols
|
|
328
|
+
*/
|
|
329
|
+
PriceFeeds.prototype.triangulatePricesFromFeedPrices = function (symbols, feedPriceMap) {
|
|
330
|
+
var prices = new Array();
|
|
331
|
+
var mktClosed = new Array();
|
|
332
|
+
for (var k = 0; k < symbols.length; k++) {
|
|
333
|
+
var triangulation = this.triangulations.get(symbols[k]);
|
|
334
|
+
if (triangulation == undefined) {
|
|
335
|
+
var feedPrice = feedPriceMap.get(symbols[k]);
|
|
336
|
+
if (feedPrice == undefined) {
|
|
337
|
+
throw new Error("PriceFeeds: no triangulation defined for ".concat(symbols[k]));
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
prices.push(feedPrice[0]); //price
|
|
341
|
+
mktClosed.push(feedPrice[1]); //market closed?
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
var _a = tslib_1.__read(triangulator_1.default.calculateTriangulatedPrice(triangulation, feedPriceMap), 2), px = _a[0], isMktClosed = _a[1];
|
|
346
|
+
prices.push(px);
|
|
347
|
+
mktClosed.push(isMktClosed);
|
|
348
|
+
}
|
|
349
|
+
return [prices, mktClosed];
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Queries the REST endpoint and returns parsed VAA price data
|
|
353
|
+
* @param query query price-info from endpoint
|
|
354
|
+
* @returns vaa and price info
|
|
355
|
+
*/
|
|
356
|
+
PriceFeeds.prototype.fetchVAAQuery = function (query) {
|
|
357
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
358
|
+
var headers, response, values, priceFeedUpdates, px, k;
|
|
359
|
+
return tslib_1.__generator(this, function (_a) {
|
|
360
|
+
switch (_a.label) {
|
|
361
|
+
case 0:
|
|
362
|
+
headers = { headers: { "Content-Type": "application/json" } };
|
|
363
|
+
return [4 /*yield*/, fetch(query, headers)];
|
|
364
|
+
case 1:
|
|
365
|
+
response = _a.sent();
|
|
366
|
+
if (!response.ok) {
|
|
367
|
+
throw new Error("Failed to fetch posts (".concat(response.status, "): ").concat(response.statusText));
|
|
368
|
+
}
|
|
369
|
+
return [4 /*yield*/, response.json()];
|
|
370
|
+
case 2:
|
|
371
|
+
values = (_a.sent());
|
|
372
|
+
priceFeedUpdates = new Array();
|
|
373
|
+
px = new Array();
|
|
374
|
+
for (k = 0; k < values.length; k++) {
|
|
375
|
+
priceFeedUpdates.push("0x" + buffer_1.Buffer.from(values[k][0], "base64").toString("hex"));
|
|
376
|
+
px.push(values[k][1]);
|
|
377
|
+
}
|
|
378
|
+
return [2 /*return*/, [priceFeedUpdates, px]];
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
};
|
|
383
|
+
/**
|
|
384
|
+
* Queries the REST endpoint and returns parsed price data
|
|
385
|
+
* @param query query price-info from endpoint
|
|
386
|
+
* @returns vaa and price info
|
|
387
|
+
*/
|
|
388
|
+
PriceFeeds.prototype.fetchPriceQuery = function (query) {
|
|
389
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
390
|
+
var headers, response, values, priceFeedUpdates, px, k;
|
|
391
|
+
return tslib_1.__generator(this, function (_a) {
|
|
392
|
+
switch (_a.label) {
|
|
393
|
+
case 0:
|
|
394
|
+
headers = { headers: { "Content-Type": "application/json" } };
|
|
395
|
+
return [4 /*yield*/, fetch(query, headers)];
|
|
396
|
+
case 1:
|
|
397
|
+
response = _a.sent();
|
|
398
|
+
if (!response.ok) {
|
|
399
|
+
throw new Error("Failed to fetch posts (".concat(response.status, "): ").concat(response.statusText));
|
|
400
|
+
}
|
|
401
|
+
return [4 /*yield*/, response.json()];
|
|
402
|
+
case 2:
|
|
403
|
+
values = _a.sent();
|
|
404
|
+
priceFeedUpdates = new Array();
|
|
405
|
+
px = new Array();
|
|
406
|
+
for (k = 0; k < values.length; k++) {
|
|
407
|
+
priceFeedUpdates.push("0x" + buffer_1.Buffer.from(values[k].id, "base64").toString("hex"));
|
|
408
|
+
px.push(values[k].price);
|
|
409
|
+
}
|
|
410
|
+
return [2 /*return*/, [priceFeedUpdates, px]];
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
};
|
|
415
|
+
/**
|
|
416
|
+
* Searches for configuration for given network
|
|
417
|
+
* @param configs pricefeed configuration from json
|
|
418
|
+
* @param network e.g. testnet
|
|
419
|
+
* @returns selected configuration
|
|
420
|
+
*/
|
|
421
|
+
PriceFeeds._selectConfig = function (configs, network) {
|
|
422
|
+
var k = 0;
|
|
423
|
+
while (k < configs.length) {
|
|
424
|
+
if (configs[k].network == network) {
|
|
425
|
+
return configs[k];
|
|
426
|
+
}
|
|
427
|
+
k = k + 1;
|
|
428
|
+
}
|
|
429
|
+
throw new Error("PriceFeeds: config not found for network ".concat(network));
|
|
430
|
+
};
|
|
431
|
+
/**
|
|
432
|
+
* Wraps configuration into convenient data-structure
|
|
433
|
+
* @param config configuration for the selected network
|
|
434
|
+
* @returns feedInfo-map and endPoints-array
|
|
435
|
+
*/
|
|
436
|
+
PriceFeeds._constructFeedInfo = function (config) {
|
|
437
|
+
var feed = new Map();
|
|
438
|
+
var endpointId = -1;
|
|
439
|
+
var type = "";
|
|
440
|
+
var feedEndpoints = new Array();
|
|
441
|
+
for (var k = 0; k < config.endpoints.length; k++) {
|
|
442
|
+
feedEndpoints.push(config.endpoints[k].endpoint);
|
|
443
|
+
}
|
|
444
|
+
for (var k = 0; k < config.ids.length; k++) {
|
|
445
|
+
if (type != config.ids[k].type) {
|
|
446
|
+
type = config.ids[k].type;
|
|
447
|
+
var j = 0;
|
|
448
|
+
while (j < config.endpoints.length) {
|
|
449
|
+
if (config.endpoints[j].type == type) {
|
|
450
|
+
endpointId = j;
|
|
451
|
+
j = config.endpoints.length;
|
|
452
|
+
}
|
|
453
|
+
j++;
|
|
454
|
+
}
|
|
455
|
+
if (config.endpoints[endpointId].type != type) {
|
|
456
|
+
throw new Error("priceFeeds: no enpoint found for ".concat(type, " check priceFeedConfig"));
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
feed.set(config.ids[k].id, { symbol: config.ids[k].symbol.toUpperCase(), endpointId: endpointId });
|
|
460
|
+
}
|
|
461
|
+
return [feed, feedEndpoints];
|
|
462
|
+
};
|
|
463
|
+
return PriceFeeds;
|
|
464
|
+
}());
|
|
465
|
+
exports.default = PriceFeeds;
|
|
466
|
+
//# sourceMappingURL=priceFeeds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priceFeeds.js","sourceRoot":"","sources":["../../src/priceFeeds.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var
|
|
40
|
-
var bytes_1 = require("@ethersproject/bytes");
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
41
4
|
var ethers_1 = require("ethers");
|
|
42
5
|
var buffer_1 = require("buffer");
|
|
6
|
+
var utils_1 = require("ethers/lib/utils");
|
|
43
7
|
var TraderDigests = /** @class */ (function () {
|
|
44
8
|
function TraderDigests() {
|
|
45
9
|
}
|
|
@@ -50,12 +14,12 @@ var TraderDigests = /** @class */ (function () {
|
|
|
50
14
|
* @ignore
|
|
51
15
|
*/
|
|
52
16
|
TraderDigests.prototype.createOrderId = function (digest) {
|
|
53
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
17
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
54
18
|
var digestBuffer, messagePrefix, tmp;
|
|
55
|
-
return __generator(this, function (_a) {
|
|
19
|
+
return tslib_1.__generator(this, function (_a) {
|
|
56
20
|
digestBuffer = buffer_1.Buffer.from(digest.substring(2, digest.length), "hex");
|
|
57
21
|
messagePrefix = "\x19Ethereum Signed Message:\n";
|
|
58
|
-
tmp = (0,
|
|
22
|
+
tmp = (0, utils_1.concat)([(0, utils_1.toUtf8Bytes)(messagePrefix), (0, utils_1.toUtf8Bytes)(String(digestBuffer.length)), digestBuffer]);
|
|
59
23
|
// see: https://github.com/ethers-io/ethers.js/blob/c80fcddf50a9023486e9f9acb1848aba4c19f7b6/packages/hash/src.ts/message.ts#L7
|
|
60
24
|
return [2 /*return*/, ethers_1.ethers.utils.keccak256(tmp)];
|
|
61
25
|
});
|
|
@@ -72,9 +36,9 @@ var TraderDigests = /** @class */ (function () {
|
|
|
72
36
|
* @ignore
|
|
73
37
|
*/
|
|
74
38
|
TraderDigests.prototype.createDigest = function (order, chainId, isNewOrder, proxyAddress) {
|
|
75
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
39
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
76
40
|
var NAME, DOMAIN_TYPEHASH, abiCoder, domainSeparator, TRADE_ORDER_TYPEHASH, structHash, digest;
|
|
77
|
-
return __generator(this, function (_a) {
|
|
41
|
+
return tslib_1.__generator(this, function (_a) {
|
|
78
42
|
NAME = "Perpetual Trade Manager";
|
|
79
43
|
DOMAIN_TYPEHASH = ethers_1.ethers.utils.keccak256(buffer_1.Buffer.from("EIP712Domain(string name,uint256 chainId,address verifyingContract)"));
|
|
80
44
|
abiCoder = ethers_1.ethers.utils.defaultAbiCoder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traderDigests.js","sourceRoot":"","sources":["../../src/traderDigests.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,iCAAgC;AAChC,0CAAuD;AAEvD;IAAA;IAoFA,CAAC;IAnFC;;;;;OAKG;IACU,qCAAa,GAA1B,UAA2B,MAAc;;;;gBACnC,YAAY,GAAG,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpE,aAAa,GAAG,gCAAgC,CAAC;gBACnD,GAAG,GAAG,IAAA,cAAM,EAAC,CAAC,IAAA,mBAAW,EAAC,aAAa,CAAC,EAAE,IAAA,mBAAW,EAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;gBACvG,+HAA+H;gBAC/H,sBAAO,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC;;;KACpC;IAED;;;;;;;;;OASG;IACU,oCAAY,GAAzB,UACE,KAAyB,EACzB,OAAe,EACf,UAAmB,EACnB,YAAoB;;;;gBAEd,IAAI,GAAG,yBAAyB,CAAC;gBACjC,eAAe,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CAC5C,eAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CACnF,CAAC;gBACE,QAAQ,GAAG,eAAM,CAAC,KAAK,CAAC,eAAe,CAAC;gBACxC,eAAe,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CAC1C,QAAQ,CAAC,MAAM,CACb,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAC5C,CAAC,eAAe,EAAE,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CACpF,CACF,CAAC;gBACI,oBAAoB,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CACjD,eAAM,CAAC,IAAI,CACT,qNAAqN,CACtN,CACF,CAAC;gBACE,UAAU,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CACrC,QAAQ,CAAC,MAAM,CACb;oBACE,SAAS;oBACT,QAAQ;oBACR,QAAQ;oBACR,SAAS;oBACT,SAAS;oBACT,QAAQ;oBACR,QAAQ;oBACR,QAAQ;oBACR,QAAQ;oBACR,QAAQ;oBACR,QAAQ;oBACR,QAAQ;iBACT,EACD;oBACE,oBAAoB;oBACpB,KAAK,CAAC,YAAY;oBAClB,KAAK,CAAC,aAAa;oBACnB,KAAK,CAAC,UAAU;oBAChB,KAAK,CAAC,UAAU;oBAChB,KAAK,CAAC,OAAO;oBACb,KAAK,CAAC,WAAW;oBACjB,KAAK,CAAC,aAAa;oBACnB,KAAK,CAAC,SAAS;oBACf,KAAK,CAAC,KAAK;oBACX,KAAK,CAAC,SAAS;oBACf,KAAK,CAAC,gBAAgB;iBACvB,CACF,CACF,CAAC;gBACE,MAAM,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CACjC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAC3F,CAAC;gBACF,sBAAO,MAAM,EAAC;;;KACf;IACH,oBAAC;AAAD,CAAC,AApFD,IAoFC"}
|