@xyo-network/uniswap-crypto-market-plugin 2.75.5 → 2.75.7
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/browser/Plugin.cjs +12 -2
- package/dist/browser/Plugin.cjs.map +1 -1
- package/dist/browser/Plugin.js +2 -2
- package/dist/browser/Plugin.js.map +1 -1
- package/dist/browser/Witness.cjs +12 -2
- package/dist/browser/Witness.cjs.map +1 -1
- package/dist/browser/Witness.js +2 -2
- package/dist/browser/Witness.js.map +1 -1
- package/dist/browser/index.cjs +12 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.cjs +12 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.cjs.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.js +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.js.map +1 -1
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.cjs +12 -2
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.cjs.map +1 -1
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.js +2 -2
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.js.map +1 -1
- package/dist/browser/lib/Ethers/index.cjs +12 -2
- package/dist/browser/lib/Ethers/index.cjs.map +1 -1
- package/dist/browser/lib/Ethers/index.js +2 -2
- package/dist/browser/lib/Ethers/index.js.map +1 -1
- package/dist/browser/lib/index.cjs +12 -2
- package/dist/browser/lib/index.cjs.map +1 -1
- package/dist/browser/lib/index.js +2 -2
- package/dist/browser/lib/index.js.map +1 -1
- package/dist/docs.json +961 -927
- package/dist/node/Config.cjs +19 -0
- package/dist/node/Config.cjs.map +1 -0
- package/dist/node/Config.js +0 -18
- package/dist/node/Config.js.map +1 -1
- package/dist/node/{Plugin.mjs → Plugin.cjs} +71 -39
- package/dist/node/Plugin.cjs.map +1 -0
- package/dist/node/Plugin.js +38 -60
- package/dist/node/Plugin.js.map +1 -1
- package/dist/node/{Witness.mjs → Witness.cjs} +66 -34
- package/dist/node/Witness.cjs.map +1 -0
- package/dist/node/Witness.js +33 -55
- package/dist/node/Witness.js.map +1 -1
- package/dist/node/index.cjs +293 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +39 -69
- package/dist/node/index.js.map +1 -1
- package/dist/node/lib/Ethers/{UniSwap3Pair.mjs → UniSwap3Pair.cjs} +56 -21
- package/dist/node/lib/Ethers/UniSwap3Pair.cjs.map +1 -0
- package/dist/node/lib/Ethers/UniSwap3Pair.d.cts +2 -2
- package/dist/node/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.d.mts +2 -2
- package/dist/node/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.d.ts +2 -2
- package/dist/node/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.js +20 -45
- package/dist/node/lib/Ethers/UniSwap3Pair.js.map +1 -1
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.cjs +57 -0
- package/dist/node/lib/Ethers/{Uniswap3PoolSlot0Wrapper.mjs.map → Uniswap3PoolSlot0Wrapper.cjs.map} +1 -1
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.js +2 -27
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.js.map +1 -1
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.cjs +19 -0
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.cjs.map +1 -0
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.js +0 -18
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.js.map +1 -1
- package/dist/node/lib/Ethers/{createUniswapPoolContracts.mjs → createUniswapPoolContracts.cjs} +58 -21
- package/dist/node/lib/Ethers/createUniswapPoolContracts.cjs.map +1 -0
- package/dist/node/lib/Ethers/createUniswapPoolContracts.js +20 -47
- package/dist/node/lib/Ethers/createUniswapPoolContracts.js.map +1 -1
- package/dist/node/lib/Ethers/{index.mjs → index.cjs} +60 -21
- package/dist/node/lib/Ethers/index.cjs.map +1 -0
- package/dist/node/lib/Ethers/index.js +20 -49
- package/dist/node/lib/Ethers/index.js.map +1 -1
- package/dist/node/lib/UniswapPoolContracts.cjs +58 -0
- package/dist/node/lib/{UniswapPoolContracts.mjs.map → UniswapPoolContracts.cjs.map} +1 -1
- package/dist/node/lib/UniswapPoolContracts.js +2 -27
- package/dist/node/lib/UniswapPoolContracts.js.map +1 -1
- package/dist/node/lib/UniswapV3Slot0Fields.cjs +19 -0
- package/dist/node/lib/UniswapV3Slot0Fields.cjs.map +1 -0
- package/dist/node/lib/UniswapV3Slot0Fields.js +0 -18
- package/dist/node/lib/UniswapV3Slot0Fields.js.map +1 -1
- package/dist/node/{index.mjs → lib/index.cjs} +62 -77
- package/dist/node/lib/index.cjs.map +1 -0
- package/dist/node/lib/index.js +22 -53
- package/dist/node/lib/index.js.map +1 -1
- package/dist/node/lib/logErrors.cjs +48 -0
- package/dist/node/lib/{logErrors.mjs.map → logErrors.cjs.map} +1 -1
- package/dist/node/lib/logErrors.js +2 -28
- package/dist/node/lib/logErrors.js.map +1 -1
- package/dist/node/lib/pricesFromUniswap3.cjs +54 -0
- package/dist/node/lib/{pricesFromUniswap3.mjs.map → pricesFromUniswap3.cjs.map} +1 -1
- package/dist/node/lib/pricesFromUniswap3.js +4 -29
- package/dist/node/lib/pricesFromUniswap3.js.map +1 -1
- package/package.json +16 -15
- package/src/lib/Ethers/UniSwap3Pair.ts +4 -4
- package/dist/node/Config.mjs +0 -1
- package/dist/node/Config.mjs.map +0 -1
- package/dist/node/Plugin.mjs.map +0 -1
- package/dist/node/Witness.mjs.map +0 -1
- package/dist/node/index.mjs.map +0 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.mjs.map +0 -1
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.mjs +0 -32
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.mjs +0 -1
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.mjs.map +0 -1
- package/dist/node/lib/Ethers/createUniswapPoolContracts.mjs.map +0 -1
- package/dist/node/lib/Ethers/index.mjs.map +0 -1
- package/dist/node/lib/UniswapPoolContracts.mjs +0 -33
- package/dist/node/lib/UniswapV3Slot0Fields.mjs +0 -1
- package/dist/node/lib/UniswapV3Slot0Fields.mjs.map +0 -1
- package/dist/node/lib/index.mjs +0 -197
- package/dist/node/lib/index.mjs.map +0 -1
- package/dist/node/lib/logErrors.mjs +0 -22
- package/dist/node/lib/pricesFromUniswap3.mjs +0 -29
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
|
|
16
|
+
// src/Config.ts
|
|
17
|
+
var Config_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(Config_exports);
|
|
19
|
+
//# sourceMappingURL=Config.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/Config.ts"],"sourcesContent":["import { UniswapCryptoMarketWitnessConfigSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness'\n\nexport type UniswapCryptoMarketWitnessConfig = WitnessConfig<{\n pools?: string[]\n schema: UniswapCryptoMarketWitnessConfigSchema\n}>\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/dist/node/Config.js
CHANGED
|
@@ -1,19 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// src/Config.ts
|
|
17
|
-
var Config_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(Config_exports);
|
|
19
1
|
//# sourceMappingURL=Config.js.map
|
package/dist/node/Config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,15 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
1
30
|
// src/Plugin.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
31
|
+
var Plugin_exports = {};
|
|
32
|
+
__export(Plugin_exports, {
|
|
33
|
+
UniswapCryptoMarketPlugin: () => UniswapCryptoMarketPlugin
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(Plugin_exports);
|
|
36
|
+
var import_payload_model = require("@xyo-network/payload-model");
|
|
37
|
+
var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
|
|
38
|
+
var import_uniswap_crypto_market_payload_plugin2 = require("@xyo-network/uniswap-crypto-market-payload-plugin");
|
|
5
39
|
|
|
6
40
|
// src/Witness.ts
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
UniswapCryptoMarketWitnessConfigSchema
|
|
11
|
-
} from "@xyo-network/uniswap-crypto-market-payload-plugin";
|
|
12
|
-
import { AbstractWitness } from "@xyo-network/witness";
|
|
41
|
+
var import_assert2 = require("@xylabs/assert");
|
|
42
|
+
var import_uniswap_crypto_market_payload_plugin = require("@xyo-network/uniswap-crypto-market-payload-plugin");
|
|
43
|
+
var import_witness = require("@xyo-network/witness");
|
|
13
44
|
|
|
14
45
|
// src/lib/logErrors.ts
|
|
15
46
|
var logErrors = (func) => {
|
|
@@ -30,13 +61,13 @@ var logErrorsAsync = async (func) => {
|
|
|
30
61
|
};
|
|
31
62
|
|
|
32
63
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
64
|
+
var import_sdk = require("@uniswap/sdk");
|
|
65
|
+
var import_sdk_core = require("@uniswap/sdk-core");
|
|
66
|
+
var import_v3_sdk = require("@uniswap/v3-sdk");
|
|
67
|
+
var import_assert = require("@xylabs/assert");
|
|
68
|
+
var import_delay = require("@xylabs/delay");
|
|
69
|
+
var import_typechain = require("@xyo-network/typechain");
|
|
70
|
+
var UniswapTypechain = __toESM(require("@xyo-network/uniswap-typechain"), 1);
|
|
40
71
|
|
|
41
72
|
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
42
73
|
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
@@ -70,7 +101,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
|
|
|
70
101
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
71
102
|
var waitNotNull = async (closure) => {
|
|
72
103
|
while (closure() === null) {
|
|
73
|
-
await delay(10);
|
|
104
|
+
await (0, import_delay.delay)(10);
|
|
74
105
|
}
|
|
75
106
|
};
|
|
76
107
|
var EthersUniSwap3Pair = class {
|
|
@@ -90,7 +121,7 @@ var EthersUniSwap3Pair = class {
|
|
|
90
121
|
await waitNotNull(() => this._pool);
|
|
91
122
|
this._pool = this._pool || null;
|
|
92
123
|
const slot0 = await this.slot0();
|
|
93
|
-
this._pool = this._pool ?? new Pool(
|
|
124
|
+
this._pool = this._pool ?? new import_v3_sdk.Pool(
|
|
94
125
|
await this.token(0),
|
|
95
126
|
await this.token(1),
|
|
96
127
|
slot0.feeProtocol,
|
|
@@ -98,13 +129,13 @@ var EthersUniSwap3Pair = class {
|
|
|
98
129
|
(await this.poolContract().liquidity()).toHexString(),
|
|
99
130
|
slot0.tick
|
|
100
131
|
);
|
|
101
|
-
return assertEx(this._pool);
|
|
132
|
+
return (0, import_assert.assertEx)(this._pool);
|
|
102
133
|
});
|
|
103
134
|
}
|
|
104
135
|
poolContract() {
|
|
105
136
|
return logErrors(() => {
|
|
106
|
-
this._poolContract = this._poolContract ?? IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
107
|
-
return assertEx(this._poolContract);
|
|
137
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
138
|
+
return (0, import_assert.assertEx)(this._poolContract);
|
|
108
139
|
});
|
|
109
140
|
}
|
|
110
141
|
async price() {
|
|
@@ -114,7 +145,7 @@ var EthersUniSwap3Pair = class {
|
|
|
114
145
|
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
115
146
|
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
116
147
|
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
117
|
-
const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
148
|
+
const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
118
149
|
const result = {
|
|
119
150
|
tokens: tokenIndexes.map((value) => {
|
|
120
151
|
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
@@ -128,7 +159,7 @@ var EthersUniSwap3Pair = class {
|
|
|
128
159
|
await waitNotNull(() => this._slot0);
|
|
129
160
|
this._slot0 = this._slot0 || null;
|
|
130
161
|
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
131
|
-
return assertEx(this._slot0);
|
|
162
|
+
return (0, import_assert.assertEx)(this._slot0);
|
|
132
163
|
});
|
|
133
164
|
}
|
|
134
165
|
async token(index) {
|
|
@@ -136,16 +167,16 @@ var EthersUniSwap3Pair = class {
|
|
|
136
167
|
await waitNotNull(() => this._tokens[index]);
|
|
137
168
|
this._tokens[index] = this._tokens[index] || null;
|
|
138
169
|
const tokenContract = await this.tokenContract(index);
|
|
139
|
-
this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
|
|
140
|
-
return assertEx(this._tokens[index]);
|
|
170
|
+
this._tokens[index] = this._tokens[index] ?? new import_sdk_core.Token(import_sdk.ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
|
|
171
|
+
return (0, import_assert.assertEx)(this._tokens[index]);
|
|
141
172
|
});
|
|
142
173
|
}
|
|
143
174
|
async tokenContract(index) {
|
|
144
175
|
return await logErrorsAsync(async () => {
|
|
145
176
|
await waitNotNull(() => this._tokenContracts[index]);
|
|
146
177
|
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
147
|
-
this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
148
|
-
return assertEx(this._tokenContracts[index]);
|
|
178
|
+
this._tokenContracts[index] = this._tokenContracts[index] ?? import_typechain.IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
179
|
+
return (0, import_assert.assertEx)(this._tokenContracts[index]);
|
|
149
180
|
});
|
|
150
181
|
}
|
|
151
182
|
};
|
|
@@ -158,7 +189,7 @@ var createUniswapPoolContracts = (provider, contracts) => {
|
|
|
158
189
|
};
|
|
159
190
|
|
|
160
191
|
// src/lib/pricesFromUniswap3.ts
|
|
161
|
-
|
|
192
|
+
var import_promise = require("@xylabs/promise");
|
|
162
193
|
var pricesFromUniswap3 = async (pools) => {
|
|
163
194
|
return await logErrorsAsync(async () => {
|
|
164
195
|
const promiseResults = await Promise.allSettled(
|
|
@@ -167,7 +198,7 @@ var pricesFromUniswap3 = async (pools) => {
|
|
|
167
198
|
return result;
|
|
168
199
|
})
|
|
169
200
|
);
|
|
170
|
-
return promiseResults.filter(fulfilled).map((result) => result.value);
|
|
201
|
+
return promiseResults.filter(import_promise.fulfilled).map((result) => result.value);
|
|
171
202
|
});
|
|
172
203
|
};
|
|
173
204
|
|
|
@@ -202,19 +233,19 @@ var UniswapPoolContracts = [
|
|
|
202
233
|
];
|
|
203
234
|
|
|
204
235
|
// src/Witness.ts
|
|
205
|
-
var UniswapCryptoMarketWitness = class extends AbstractWitness {
|
|
206
|
-
static configSchemas = [UniswapCryptoMarketWitnessConfigSchema];
|
|
236
|
+
var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
|
|
237
|
+
static configSchemas = [import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema];
|
|
207
238
|
pairs;
|
|
208
239
|
get provider() {
|
|
209
240
|
return this.params.provider;
|
|
210
241
|
}
|
|
211
242
|
async observeHandler() {
|
|
212
243
|
await this.started("throw");
|
|
213
|
-
const pairs = await pricesFromUniswap3(
|
|
244
|
+
const pairs = await pricesFromUniswap3((0, import_assert2.assertEx)(this.pairs));
|
|
214
245
|
const timestamp = Date.now();
|
|
215
246
|
const payload = {
|
|
216
247
|
pairs,
|
|
217
|
-
schema: UniswapCryptoMarketSchema,
|
|
248
|
+
schema: import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema,
|
|
218
249
|
timestamp
|
|
219
250
|
};
|
|
220
251
|
return [payload];
|
|
@@ -222,14 +253,14 @@ var UniswapCryptoMarketWitness = class extends AbstractWitness {
|
|
|
222
253
|
async startHandler() {
|
|
223
254
|
var _a;
|
|
224
255
|
await super.startHandler();
|
|
225
|
-
this.pairs = createUniswapPoolContracts(
|
|
256
|
+
this.pairs = createUniswapPoolContracts((0, import_assert2.assertEx)(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
|
|
226
257
|
return true;
|
|
227
258
|
}
|
|
228
259
|
};
|
|
229
260
|
|
|
230
261
|
// src/Plugin.ts
|
|
231
|
-
var UniswapCryptoMarketPlugin = () => createPayloadSetWitnessPlugin(
|
|
232
|
-
{ required: { [
|
|
262
|
+
var UniswapCryptoMarketPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
|
|
263
|
+
{ required: { [import_uniswap_crypto_market_payload_plugin2.UniswapCryptoMarketSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
|
|
233
264
|
{
|
|
234
265
|
witness: async (params) => {
|
|
235
266
|
const result = await UniswapCryptoMarketWitness.create(params);
|
|
@@ -237,7 +268,8 @@ var UniswapCryptoMarketPlugin = () => createPayloadSetWitnessPlugin(
|
|
|
237
268
|
}
|
|
238
269
|
}
|
|
239
270
|
);
|
|
240
|
-
export
|
|
271
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
272
|
+
0 && (module.exports = {
|
|
241
273
|
UniswapCryptoMarketPlugin
|
|
242
|
-
};
|
|
243
|
-
//# sourceMappingURL=Plugin.
|
|
274
|
+
});
|
|
275
|
+
//# sourceMappingURL=Plugin.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/lib/logErrors.ts","../../src/lib/Ethers/UniSwap3Pair.ts","../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts","../../src/lib/Ethers/createUniswapPoolContracts.ts","../../src/lib/pricesFromUniswap3.ts","../../src/lib/UniswapPoolContracts.ts"],"sourcesContent":["import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { UniswapCryptoMarketWitness } from './Witness'\n\nexport const UniswapCryptoMarketPlugin = () =>\n createPayloadSetWitnessPlugin<UniswapCryptoMarketWitness>(\n { required: { [UniswapCryptoMarketSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UniswapCryptoMarketWitness.create(params)\n return result\n },\n },\n )\n","import { Provider } from '@ethersproject/providers'\nimport { assertEx } from '@xylabs/assert'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n UniswapCryptoMarketPayload,\n UniswapCryptoMarketSchema,\n UniswapCryptoMarketWitnessConfigSchema,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { AbstractWitness, WitnessParams } from '@xyo-network/witness'\n\nimport { UniswapCryptoMarketWitnessConfig } from './Config'\nimport { createUniswapPoolContracts, EthersUniSwap3Pair, pricesFromUniswap3, UniswapPoolContracts } from './lib'\n\nexport type UniswapCryptoMarketWitnessParams = WitnessParams<\n AnyConfigSchema<UniswapCryptoMarketWitnessConfig>,\n {\n provider?: Provider\n }\n>\n\nexport class UniswapCryptoMarketWitness<\n TParams extends UniswapCryptoMarketWitnessParams = UniswapCryptoMarketWitnessParams,\n> extends AbstractWitness<TParams> {\n static override configSchemas = [UniswapCryptoMarketWitnessConfigSchema]\n\n protected pairs?: EthersUniSwap3Pair[]\n protected get provider() {\n return this.params.provider\n }\n\n protected override async observeHandler(): Promise<Payload[]> {\n await this.started('throw')\n const pairs = await pricesFromUniswap3(assertEx(this.pairs))\n const timestamp = Date.now()\n\n const payload: UniswapCryptoMarketPayload = {\n pairs,\n schema: UniswapCryptoMarketSchema,\n timestamp,\n }\n\n return [payload]\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this.pairs = createUniswapPoolContracts(assertEx(this.provider, 'Provider Required'), this.config?.pools ?? UniswapPoolContracts)\n return true\n }\n}\n","export const logErrors = <T>(func: () => T) => {\n try {\n return func()\n } catch (ex) {\n console.error(ex)\n throw ex\n }\n}\n\nexport const logErrorsAsync = async <T>(func: () => Promise<T>) => {\n try {\n return await func()\n } catch (ex) {\n console.error(ex)\n throw ex\n }\n}\n","import { Provider } from '@ethersproject/providers'\nimport { ChainId } from '@uniswap/sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { Pool } from '@uniswap/v3-sdk'\nimport { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { IERC20Metadata, IERC20Metadata__factory } from '@xyo-network/typechain'\nimport * as UniswapTypechain from '@xyo-network/uniswap-typechain'\n\nimport { logErrors, logErrorsAsync } from '../logErrors'\nimport { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper'\n\n//null is used as 'in-progress'\nconst waitNotNull = async (closure: () => unknown) => {\n while (closure() === null) {\n await delay(10)\n }\n}\n\nexport class EthersUniSwap3Pair {\n protected address: string\n protected provider: Provider\n\n private _pool?: Pool | null\n private _poolContract?: UniswapTypechain.IUniswapV3Pool\n private _slot0?: EthersUniswap3PoolSlot0Wrapper | null\n private _tokenContracts: (IERC20Metadata | null | undefined)[] = [undefined, undefined]\n private _tokens: (Token | null | undefined)[] = [undefined, undefined]\n\n constructor(address: string, provider: Provider) {\n this.address = address\n this.provider = provider\n }\n\n async pool(): Promise<Pool> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._pool)\n this._pool = this._pool || null\n const slot0 = await this.slot0()\n this._pool =\n this._pool ??\n new Pool(\n await this.token(0),\n await this.token(1),\n slot0.feeProtocol,\n slot0.sqrtPriceX96.toHexString(),\n (await this.poolContract().liquidity()).toHexString(),\n slot0.tick,\n )\n return assertEx(this._pool)\n })\n }\n\n poolContract(): UniswapTypechain.IUniswapV3Pool {\n return logErrors(() => {\n this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider)\n return assertEx(this._poolContract)\n })\n }\n\n async price() {\n return await logErrorsAsync(async () => {\n const tokenIndexes: (0 | 1)[] = [0, 1]\n const pool = await this.pool()\n const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)))\n const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)))\n const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()))\n const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase())\n const result = {\n tokens: tokenIndexes.map((value) => {\n return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] }\n }),\n }\n return result\n })\n }\n\n async slot0(): Promise<EthersUniswap3PoolSlot0Wrapper> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._slot0)\n this._slot0 = this._slot0 || null\n this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0())\n return assertEx(this._slot0)\n })\n }\n\n async token(index: 0 | 1): Promise<Token> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._tokens[index])\n this._tokens[index] = this._tokens[index] || null\n const tokenContract = await this.tokenContract(index)\n this._tokens[index] =\n this._tokens[index] ??\n new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name())\n return assertEx(this._tokens[index])\n })\n }\n\n async tokenContract(index: 0 | 1): Promise<IERC20Metadata> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._tokenContracts[index])\n this._tokenContracts[index] = this._tokenContracts[index] || null\n this._tokenContracts[index] =\n this._tokenContracts[index] ??\n IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider)\n return assertEx(this._tokenContracts[index])\n })\n }\n}\n","import { EthersUniswapV3Slot0Fields } from './UniswapV3Slot0Fields'\n\nexport class EthersUniswap3PoolSlot0Wrapper {\n protected values: EthersUniswapV3Slot0Fields\n constructor(values: EthersUniswapV3Slot0Fields) {\n this.values = values\n }\n\n get feeProtocol() {\n return this.values[5]\n }\n\n get observationCardinality() {\n return this.values[3]\n }\n\n get observationCardinalityNext() {\n return this.values[4]\n }\n\n get observationIndex() {\n return this.values[2]\n }\n\n get sqrtPriceX96() {\n return this.values[0]\n }\n\n get tick() {\n return this.values[1]\n }\n\n get unlocked() {\n return this.values[6]\n }\n}\n","import { Provider } from '@ethersproject/providers'\n\nimport { logErrors } from '../logErrors'\nimport { EthersUniSwap3Pair } from './UniSwap3Pair'\n\nexport const createUniswapPoolContracts = (provider: Provider, contracts: string[]) => {\n return logErrors(() => {\n return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider))\n })\n}\n","import { fulfilled } from '@xylabs/promise'\nimport { UniswapCryptoPair } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { EthersUniSwap3Pair } from './Ethers'\nimport { logErrorsAsync } from './logErrors'\n\nexport const pricesFromUniswap3 = async (pools: EthersUniSwap3Pair[]): Promise<UniswapCryptoPair[]> => {\n return await logErrorsAsync(async () => {\n const promiseResults = await Promise.allSettled(\n pools.map(async (pool): Promise<UniswapCryptoPair> => {\n const result = await pool.price()\n return result\n }),\n )\n return promiseResults.filter(fulfilled).map((result) => result.value)\n })\n}\n","export const UniswapPoolContracts = [\n /*xyo/weth*/ '0xE331DE28cd81B768C19A366b0e4e4675c45eC2dA',\n /*xyo/usdt*/ '0xd0AF1981f52146a6939385451dAeA0726e13a484',\n /*xyo/dai*/ '0x9D7e5647CE3c7C2d835F2F5e82C8fDb36B0BB0fe',\n /*wbtc/xyo*/ '0x0cF7494c9dE661467403aBeE8454b3BBf0179a84',\n /*link/xyo*/ '0x4693456599a8a4975862A0E720C5de7E1D09A1e4',\n /*wbtc/weth*/ '0xCBCdF9626bC03E24f779434178A73a0B4bad62eD',\n /*dai/usdc*/ '0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168',\n /*usdc/weth*/ '0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8',\n /*usdc/weth*/ '0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640',\n /*dai/usdc*/ '0x6c6Bc977E13Df9b0de53b251522280BB72383700',\n /*frax/usdc*/ '0xc63B0708E2F7e69CB8A1df0e1389A98C35A76D52',\n /*wbtc/usdc*/ '0x99ac8cA7087fA4A2A1FB6357269965A2014ABc35',\n /*usdc/usdt*/ '0x3416cF6C708Da44DB2624D63ea0AAef7113527C6',\n]\n"],"mappings":"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","names":["import_uniswap_crypto_market_payload_plugin","import_assert"]}
|
package/dist/node/Plugin.js
CHANGED
|
@@ -1,36 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
1
|
// src/Plugin.ts
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(Plugin_exports);
|
|
26
|
-
var import_payload_model = require("@xyo-network/payload-model");
|
|
27
|
-
var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
|
|
28
|
-
var import_uniswap_crypto_market_payload_plugin2 = require("@xyo-network/uniswap-crypto-market-payload-plugin");
|
|
2
|
+
import { PayloadSetSchema } from "@xyo-network/payload-model";
|
|
3
|
+
import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
|
|
4
|
+
import { UniswapCryptoMarketSchema as UniswapCryptoMarketSchema2 } from "@xyo-network/uniswap-crypto-market-payload-plugin";
|
|
29
5
|
|
|
30
6
|
// src/Witness.ts
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
7
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
8
|
+
import {
|
|
9
|
+
UniswapCryptoMarketSchema,
|
|
10
|
+
UniswapCryptoMarketWitnessConfigSchema
|
|
11
|
+
} from "@xyo-network/uniswap-crypto-market-payload-plugin";
|
|
12
|
+
import { AbstractWitness } from "@xyo-network/witness";
|
|
34
13
|
|
|
35
14
|
// src/lib/logErrors.ts
|
|
36
15
|
var logErrors = (func) => {
|
|
@@ -51,13 +30,13 @@ var logErrorsAsync = async (func) => {
|
|
|
51
30
|
};
|
|
52
31
|
|
|
53
32
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
33
|
+
import { ChainId } from "@uniswap/sdk";
|
|
34
|
+
import { Token } from "@uniswap/sdk-core";
|
|
35
|
+
import { Pool } from "@uniswap/v3-sdk";
|
|
36
|
+
import { assertEx } from "@xylabs/assert";
|
|
37
|
+
import { delay } from "@xylabs/delay";
|
|
38
|
+
import { IERC20Metadata__factory } from "@xyo-network/typechain";
|
|
39
|
+
import * as UniswapTypechain from "@xyo-network/uniswap-typechain";
|
|
61
40
|
|
|
62
41
|
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
63
42
|
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
@@ -91,7 +70,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
|
|
|
91
70
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
92
71
|
var waitNotNull = async (closure) => {
|
|
93
72
|
while (closure() === null) {
|
|
94
|
-
await
|
|
73
|
+
await delay(10);
|
|
95
74
|
}
|
|
96
75
|
};
|
|
97
76
|
var EthersUniSwap3Pair = class {
|
|
@@ -111,7 +90,7 @@ var EthersUniSwap3Pair = class {
|
|
|
111
90
|
await waitNotNull(() => this._pool);
|
|
112
91
|
this._pool = this._pool || null;
|
|
113
92
|
const slot0 = await this.slot0();
|
|
114
|
-
this._pool = this._pool ?? new
|
|
93
|
+
this._pool = this._pool ?? new Pool(
|
|
115
94
|
await this.token(0),
|
|
116
95
|
await this.token(1),
|
|
117
96
|
slot0.feeProtocol,
|
|
@@ -119,13 +98,13 @@ var EthersUniSwap3Pair = class {
|
|
|
119
98
|
(await this.poolContract().liquidity()).toHexString(),
|
|
120
99
|
slot0.tick
|
|
121
100
|
);
|
|
122
|
-
return
|
|
101
|
+
return assertEx(this._pool);
|
|
123
102
|
});
|
|
124
103
|
}
|
|
125
104
|
poolContract() {
|
|
126
105
|
return logErrors(() => {
|
|
127
|
-
this._poolContract = this._poolContract ??
|
|
128
|
-
return
|
|
106
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
107
|
+
return assertEx(this._poolContract);
|
|
129
108
|
});
|
|
130
109
|
}
|
|
131
110
|
async price() {
|
|
@@ -135,7 +114,7 @@ var EthersUniSwap3Pair = class {
|
|
|
135
114
|
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
136
115
|
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
137
116
|
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
138
|
-
const tokenSymbols = tokens.map((token, index) =>
|
|
117
|
+
const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
139
118
|
const result = {
|
|
140
119
|
tokens: tokenIndexes.map((value) => {
|
|
141
120
|
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
@@ -149,7 +128,7 @@ var EthersUniSwap3Pair = class {
|
|
|
149
128
|
await waitNotNull(() => this._slot0);
|
|
150
129
|
this._slot0 = this._slot0 || null;
|
|
151
130
|
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
152
|
-
return
|
|
131
|
+
return assertEx(this._slot0);
|
|
153
132
|
});
|
|
154
133
|
}
|
|
155
134
|
async token(index) {
|
|
@@ -157,16 +136,16 @@ var EthersUniSwap3Pair = class {
|
|
|
157
136
|
await waitNotNull(() => this._tokens[index]);
|
|
158
137
|
this._tokens[index] = this._tokens[index] || null;
|
|
159
138
|
const tokenContract = await this.tokenContract(index);
|
|
160
|
-
this._tokens[index] = this._tokens[index] ?? new
|
|
161
|
-
return
|
|
139
|
+
this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
|
|
140
|
+
return assertEx(this._tokens[index]);
|
|
162
141
|
});
|
|
163
142
|
}
|
|
164
143
|
async tokenContract(index) {
|
|
165
144
|
return await logErrorsAsync(async () => {
|
|
166
145
|
await waitNotNull(() => this._tokenContracts[index]);
|
|
167
146
|
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
168
|
-
this._tokenContracts[index] = this._tokenContracts[index] ??
|
|
169
|
-
return
|
|
147
|
+
this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
148
|
+
return assertEx(this._tokenContracts[index]);
|
|
170
149
|
});
|
|
171
150
|
}
|
|
172
151
|
};
|
|
@@ -179,7 +158,7 @@ var createUniswapPoolContracts = (provider, contracts) => {
|
|
|
179
158
|
};
|
|
180
159
|
|
|
181
160
|
// src/lib/pricesFromUniswap3.ts
|
|
182
|
-
|
|
161
|
+
import { fulfilled } from "@xylabs/promise";
|
|
183
162
|
var pricesFromUniswap3 = async (pools) => {
|
|
184
163
|
return await logErrorsAsync(async () => {
|
|
185
164
|
const promiseResults = await Promise.allSettled(
|
|
@@ -188,7 +167,7 @@ var pricesFromUniswap3 = async (pools) => {
|
|
|
188
167
|
return result;
|
|
189
168
|
})
|
|
190
169
|
);
|
|
191
|
-
return promiseResults.filter(
|
|
170
|
+
return promiseResults.filter(fulfilled).map((result) => result.value);
|
|
192
171
|
});
|
|
193
172
|
};
|
|
194
173
|
|
|
@@ -223,19 +202,19 @@ var UniswapPoolContracts = [
|
|
|
223
202
|
];
|
|
224
203
|
|
|
225
204
|
// src/Witness.ts
|
|
226
|
-
var UniswapCryptoMarketWitness = class extends
|
|
227
|
-
static configSchemas = [
|
|
205
|
+
var UniswapCryptoMarketWitness = class extends AbstractWitness {
|
|
206
|
+
static configSchemas = [UniswapCryptoMarketWitnessConfigSchema];
|
|
228
207
|
pairs;
|
|
229
208
|
get provider() {
|
|
230
209
|
return this.params.provider;
|
|
231
210
|
}
|
|
232
211
|
async observeHandler() {
|
|
233
212
|
await this.started("throw");
|
|
234
|
-
const pairs = await pricesFromUniswap3((
|
|
213
|
+
const pairs = await pricesFromUniswap3(assertEx2(this.pairs));
|
|
235
214
|
const timestamp = Date.now();
|
|
236
215
|
const payload = {
|
|
237
216
|
pairs,
|
|
238
|
-
schema:
|
|
217
|
+
schema: UniswapCryptoMarketSchema,
|
|
239
218
|
timestamp
|
|
240
219
|
};
|
|
241
220
|
return [payload];
|
|
@@ -243,14 +222,14 @@ var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
|
|
|
243
222
|
async startHandler() {
|
|
244
223
|
var _a;
|
|
245
224
|
await super.startHandler();
|
|
246
|
-
this.pairs = createUniswapPoolContracts((
|
|
225
|
+
this.pairs = createUniswapPoolContracts(assertEx2(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
|
|
247
226
|
return true;
|
|
248
227
|
}
|
|
249
228
|
};
|
|
250
229
|
|
|
251
230
|
// src/Plugin.ts
|
|
252
|
-
var UniswapCryptoMarketPlugin = () =>
|
|
253
|
-
{ required: { [
|
|
231
|
+
var UniswapCryptoMarketPlugin = () => createPayloadSetWitnessPlugin(
|
|
232
|
+
{ required: { [UniswapCryptoMarketSchema2]: 1 }, schema: PayloadSetSchema },
|
|
254
233
|
{
|
|
255
234
|
witness: async (params) => {
|
|
256
235
|
const result = await UniswapCryptoMarketWitness.create(params);
|
|
@@ -258,8 +237,7 @@ var UniswapCryptoMarketPlugin = () => (0, import_payloadset_plugin.createPayload
|
|
|
258
237
|
}
|
|
259
238
|
}
|
|
260
239
|
);
|
|
261
|
-
|
|
262
|
-
0 && (module.exports = {
|
|
240
|
+
export {
|
|
263
241
|
UniswapCryptoMarketPlugin
|
|
264
|
-
}
|
|
242
|
+
};
|
|
265
243
|
//# sourceMappingURL=Plugin.js.map
|
package/dist/node/Plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/lib/logErrors.ts","../../src/lib/Ethers/UniSwap3Pair.ts","../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts","../../src/lib/Ethers/createUniswapPoolContracts.ts","../../src/lib/pricesFromUniswap3.ts","../../src/lib/UniswapPoolContracts.ts"],"sourcesContent":["import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { UniswapCryptoMarketWitness } from './Witness'\n\nexport const UniswapCryptoMarketPlugin = () =>\n createPayloadSetWitnessPlugin<UniswapCryptoMarketWitness>(\n { required: { [UniswapCryptoMarketSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UniswapCryptoMarketWitness.create(params)\n return result\n },\n },\n )\n","import { Provider } from '@ethersproject/providers'\nimport { assertEx } from '@xylabs/assert'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n UniswapCryptoMarketPayload,\n UniswapCryptoMarketSchema,\n UniswapCryptoMarketWitnessConfigSchema,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { AbstractWitness, WitnessParams } from '@xyo-network/witness'\n\nimport { UniswapCryptoMarketWitnessConfig } from './Config'\nimport { createUniswapPoolContracts, EthersUniSwap3Pair, pricesFromUniswap3, UniswapPoolContracts } from './lib'\n\nexport type UniswapCryptoMarketWitnessParams = WitnessParams<\n AnyConfigSchema<UniswapCryptoMarketWitnessConfig>,\n {\n provider?: Provider\n }\n>\n\nexport class UniswapCryptoMarketWitness<\n TParams extends UniswapCryptoMarketWitnessParams = UniswapCryptoMarketWitnessParams,\n> extends AbstractWitness<TParams> {\n static override configSchemas = [UniswapCryptoMarketWitnessConfigSchema]\n\n protected pairs?: EthersUniSwap3Pair[]\n protected get provider() {\n return this.params.provider\n }\n\n protected override async observeHandler(): Promise<Payload[]> {\n await this.started('throw')\n const pairs = await pricesFromUniswap3(assertEx(this.pairs))\n const timestamp = Date.now()\n\n const payload: UniswapCryptoMarketPayload = {\n pairs,\n schema: UniswapCryptoMarketSchema,\n timestamp,\n }\n\n return [payload]\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this.pairs = createUniswapPoolContracts(assertEx(this.provider, 'Provider Required'), this.config?.pools ?? UniswapPoolContracts)\n return true\n }\n}\n","export const logErrors = <T>(func: () => T) => {\n try {\n return func()\n } catch (ex) {\n console.error(ex)\n throw ex\n }\n}\n\nexport const logErrorsAsync = async <T>(func: () => Promise<T>) => {\n try {\n return await func()\n } catch (ex) {\n console.error(ex)\n throw ex\n }\n}\n","import { Provider } from '@ethersproject/providers'\nimport { ChainId } from '@uniswap/sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { Pool } from '@uniswap/v3-sdk'\nimport { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { IERC20Metadata, IERC20Metadata__factory } from '@xyo-network/typechain'\nimport { IUniswapV3Pool, IUniswapV3Pool__factory } from '@xyo-network/uniswap-typechain'\n\nimport { logErrors, logErrorsAsync } from '../logErrors'\nimport { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper'\n\n//null is used as 'in-progress'\nconst waitNotNull = async (closure: () => unknown) => {\n while (closure() === null) {\n await delay(10)\n }\n}\n\nexport class EthersUniSwap3Pair {\n protected address: string\n protected provider: Provider\n\n private _pool?: Pool | null\n private _poolContract?: IUniswapV3Pool\n private _slot0?: EthersUniswap3PoolSlot0Wrapper | null\n private _tokenContracts: (IERC20Metadata | null | undefined)[] = [undefined, undefined]\n private _tokens: (Token | null | undefined)[] = [undefined, undefined]\n\n constructor(address: string, provider: Provider) {\n this.address = address\n this.provider = provider\n }\n\n async pool(): Promise<Pool> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._pool)\n this._pool = this._pool || null\n const slot0 = await this.slot0()\n this._pool =\n this._pool ??\n new Pool(\n await this.token(0),\n await this.token(1),\n slot0.feeProtocol,\n slot0.sqrtPriceX96.toHexString(),\n (await this.poolContract().liquidity()).toHexString(),\n slot0.tick,\n )\n return assertEx(this._pool)\n })\n }\n\n poolContract(): IUniswapV3Pool {\n return logErrors(() => {\n this._poolContract = this._poolContract ?? IUniswapV3Pool__factory.connect(this.address, this.provider)\n return assertEx(this._poolContract)\n })\n }\n\n async price() {\n return await logErrorsAsync(async () => {\n const tokenIndexes: (0 | 1)[] = [0, 1]\n const pool = await this.pool()\n const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)))\n const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)))\n const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()))\n const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase())\n const result = {\n tokens: tokenIndexes.map((value) => {\n return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] }\n }),\n }\n return result\n })\n }\n\n async slot0(): Promise<EthersUniswap3PoolSlot0Wrapper> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._slot0)\n this._slot0 = this._slot0 || null\n this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0())\n return assertEx(this._slot0)\n })\n }\n\n async token(index: 0 | 1): Promise<Token> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._tokens[index])\n this._tokens[index] = this._tokens[index] || null\n const tokenContract = await this.tokenContract(index)\n this._tokens[index] =\n this._tokens[index] ??\n new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name())\n return assertEx(this._tokens[index])\n })\n }\n\n async tokenContract(index: 0 | 1): Promise<IERC20Metadata> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._tokenContracts[index])\n this._tokenContracts[index] = this._tokenContracts[index] || null\n this._tokenContracts[index] =\n this._tokenContracts[index] ??\n IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider)\n return assertEx(this._tokenContracts[index])\n })\n }\n}\n","import { EthersUniswapV3Slot0Fields } from './UniswapV3Slot0Fields'\n\nexport class EthersUniswap3PoolSlot0Wrapper {\n protected values: EthersUniswapV3Slot0Fields\n constructor(values: EthersUniswapV3Slot0Fields) {\n this.values = values\n }\n\n get feeProtocol() {\n return this.values[5]\n }\n\n get observationCardinality() {\n return this.values[3]\n }\n\n get observationCardinalityNext() {\n return this.values[4]\n }\n\n get observationIndex() {\n return this.values[2]\n }\n\n get sqrtPriceX96() {\n return this.values[0]\n }\n\n get tick() {\n return this.values[1]\n }\n\n get unlocked() {\n return this.values[6]\n }\n}\n","import { Provider } from '@ethersproject/providers'\n\nimport { logErrors } from '../logErrors'\nimport { EthersUniSwap3Pair } from './UniSwap3Pair'\n\nexport const createUniswapPoolContracts = (provider: Provider, contracts: string[]) => {\n return logErrors(() => {\n return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider))\n })\n}\n","import { fulfilled } from '@xylabs/promise'\nimport { UniswapCryptoPair } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { EthersUniSwap3Pair } from './Ethers'\nimport { logErrorsAsync } from './logErrors'\n\nexport const pricesFromUniswap3 = async (pools: EthersUniSwap3Pair[]): Promise<UniswapCryptoPair[]> => {\n return await logErrorsAsync(async () => {\n const promiseResults = await Promise.allSettled(\n pools.map(async (pool): Promise<UniswapCryptoPair> => {\n const result = await pool.price()\n return result\n }),\n )\n return promiseResults.filter(fulfilled).map((result) => result.value)\n })\n}\n","export const UniswapPoolContracts = [\n /*xyo/weth*/ '0xE331DE28cd81B768C19A366b0e4e4675c45eC2dA',\n /*xyo/usdt*/ '0xd0AF1981f52146a6939385451dAeA0726e13a484',\n /*xyo/dai*/ '0x9D7e5647CE3c7C2d835F2F5e82C8fDb36B0BB0fe',\n /*wbtc/xyo*/ '0x0cF7494c9dE661467403aBeE8454b3BBf0179a84',\n /*link/xyo*/ '0x4693456599a8a4975862A0E720C5de7E1D09A1e4',\n /*wbtc/weth*/ '0xCBCdF9626bC03E24f779434178A73a0B4bad62eD',\n /*dai/usdc*/ '0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168',\n /*usdc/weth*/ '0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8',\n /*usdc/weth*/ '0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640',\n /*dai/usdc*/ '0x6c6Bc977E13Df9b0de53b251522280BB72383700',\n /*frax/usdc*/ '0xc63B0708E2F7e69CB8A1df0e1389A98C35A76D52',\n /*wbtc/usdc*/ '0x99ac8cA7087fA4A2A1FB6357269965A2014ABc35',\n /*usdc/usdt*/ '0x3416cF6C708Da44DB2624D63ea0AAef7113527C6',\n]\n"],"mappings":"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","names":["import_uniswap_crypto_market_payload_plugin","import_assert"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/lib/logErrors.ts","../../src/lib/Ethers/UniSwap3Pair.ts","../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts","../../src/lib/Ethers/createUniswapPoolContracts.ts","../../src/lib/pricesFromUniswap3.ts","../../src/lib/UniswapPoolContracts.ts"],"sourcesContent":["import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { UniswapCryptoMarketWitness } from './Witness'\n\nexport const UniswapCryptoMarketPlugin = () =>\n createPayloadSetWitnessPlugin<UniswapCryptoMarketWitness>(\n { required: { [UniswapCryptoMarketSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UniswapCryptoMarketWitness.create(params)\n return result\n },\n },\n )\n","import { Provider } from '@ethersproject/providers'\nimport { assertEx } from '@xylabs/assert'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n UniswapCryptoMarketPayload,\n UniswapCryptoMarketSchema,\n UniswapCryptoMarketWitnessConfigSchema,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { AbstractWitness, WitnessParams } from '@xyo-network/witness'\n\nimport { UniswapCryptoMarketWitnessConfig } from './Config'\nimport { createUniswapPoolContracts, EthersUniSwap3Pair, pricesFromUniswap3, UniswapPoolContracts } from './lib'\n\nexport type UniswapCryptoMarketWitnessParams = WitnessParams<\n AnyConfigSchema<UniswapCryptoMarketWitnessConfig>,\n {\n provider?: Provider\n }\n>\n\nexport class UniswapCryptoMarketWitness<\n TParams extends UniswapCryptoMarketWitnessParams = UniswapCryptoMarketWitnessParams,\n> extends AbstractWitness<TParams> {\n static override configSchemas = [UniswapCryptoMarketWitnessConfigSchema]\n\n protected pairs?: EthersUniSwap3Pair[]\n protected get provider() {\n return this.params.provider\n }\n\n protected override async observeHandler(): Promise<Payload[]> {\n await this.started('throw')\n const pairs = await pricesFromUniswap3(assertEx(this.pairs))\n const timestamp = Date.now()\n\n const payload: UniswapCryptoMarketPayload = {\n pairs,\n schema: UniswapCryptoMarketSchema,\n timestamp,\n }\n\n return [payload]\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this.pairs = createUniswapPoolContracts(assertEx(this.provider, 'Provider Required'), this.config?.pools ?? UniswapPoolContracts)\n return true\n }\n}\n","export const logErrors = <T>(func: () => T) => {\n try {\n return func()\n } catch (ex) {\n console.error(ex)\n throw ex\n }\n}\n\nexport const logErrorsAsync = async <T>(func: () => Promise<T>) => {\n try {\n return await func()\n } catch (ex) {\n console.error(ex)\n throw ex\n }\n}\n","import { Provider } from '@ethersproject/providers'\nimport { ChainId } from '@uniswap/sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { Pool } from '@uniswap/v3-sdk'\nimport { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { IERC20Metadata, IERC20Metadata__factory } from '@xyo-network/typechain'\nimport * as UniswapTypechain from '@xyo-network/uniswap-typechain'\n\nimport { logErrors, logErrorsAsync } from '../logErrors'\nimport { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper'\n\n//null is used as 'in-progress'\nconst waitNotNull = async (closure: () => unknown) => {\n while (closure() === null) {\n await delay(10)\n }\n}\n\nexport class EthersUniSwap3Pair {\n protected address: string\n protected provider: Provider\n\n private _pool?: Pool | null\n private _poolContract?: UniswapTypechain.IUniswapV3Pool\n private _slot0?: EthersUniswap3PoolSlot0Wrapper | null\n private _tokenContracts: (IERC20Metadata | null | undefined)[] = [undefined, undefined]\n private _tokens: (Token | null | undefined)[] = [undefined, undefined]\n\n constructor(address: string, provider: Provider) {\n this.address = address\n this.provider = provider\n }\n\n async pool(): Promise<Pool> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._pool)\n this._pool = this._pool || null\n const slot0 = await this.slot0()\n this._pool =\n this._pool ??\n new Pool(\n await this.token(0),\n await this.token(1),\n slot0.feeProtocol,\n slot0.sqrtPriceX96.toHexString(),\n (await this.poolContract().liquidity()).toHexString(),\n slot0.tick,\n )\n return assertEx(this._pool)\n })\n }\n\n poolContract(): UniswapTypechain.IUniswapV3Pool {\n return logErrors(() => {\n this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider)\n return assertEx(this._poolContract)\n })\n }\n\n async price() {\n return await logErrorsAsync(async () => {\n const tokenIndexes: (0 | 1)[] = [0, 1]\n const pool = await this.pool()\n const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)))\n const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)))\n const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()))\n const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase())\n const result = {\n tokens: tokenIndexes.map((value) => {\n return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] }\n }),\n }\n return result\n })\n }\n\n async slot0(): Promise<EthersUniswap3PoolSlot0Wrapper> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._slot0)\n this._slot0 = this._slot0 || null\n this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0())\n return assertEx(this._slot0)\n })\n }\n\n async token(index: 0 | 1): Promise<Token> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._tokens[index])\n this._tokens[index] = this._tokens[index] || null\n const tokenContract = await this.tokenContract(index)\n this._tokens[index] =\n this._tokens[index] ??\n new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name())\n return assertEx(this._tokens[index])\n })\n }\n\n async tokenContract(index: 0 | 1): Promise<IERC20Metadata> {\n return await logErrorsAsync(async () => {\n await waitNotNull(() => this._tokenContracts[index])\n this._tokenContracts[index] = this._tokenContracts[index] || null\n this._tokenContracts[index] =\n this._tokenContracts[index] ??\n IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider)\n return assertEx(this._tokenContracts[index])\n })\n }\n}\n","import { EthersUniswapV3Slot0Fields } from './UniswapV3Slot0Fields'\n\nexport class EthersUniswap3PoolSlot0Wrapper {\n protected values: EthersUniswapV3Slot0Fields\n constructor(values: EthersUniswapV3Slot0Fields) {\n this.values = values\n }\n\n get feeProtocol() {\n return this.values[5]\n }\n\n get observationCardinality() {\n return this.values[3]\n }\n\n get observationCardinalityNext() {\n return this.values[4]\n }\n\n get observationIndex() {\n return this.values[2]\n }\n\n get sqrtPriceX96() {\n return this.values[0]\n }\n\n get tick() {\n return this.values[1]\n }\n\n get unlocked() {\n return this.values[6]\n }\n}\n","import { Provider } from '@ethersproject/providers'\n\nimport { logErrors } from '../logErrors'\nimport { EthersUniSwap3Pair } from './UniSwap3Pair'\n\nexport const createUniswapPoolContracts = (provider: Provider, contracts: string[]) => {\n return logErrors(() => {\n return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider))\n })\n}\n","import { fulfilled } from '@xylabs/promise'\nimport { UniswapCryptoPair } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { EthersUniSwap3Pair } from './Ethers'\nimport { logErrorsAsync } from './logErrors'\n\nexport const pricesFromUniswap3 = async (pools: EthersUniSwap3Pair[]): Promise<UniswapCryptoPair[]> => {\n return await logErrorsAsync(async () => {\n const promiseResults = await Promise.allSettled(\n pools.map(async (pool): Promise<UniswapCryptoPair> => {\n const result = await pool.price()\n return result\n }),\n )\n return promiseResults.filter(fulfilled).map((result) => result.value)\n })\n}\n","export const UniswapPoolContracts = [\n /*xyo/weth*/ '0xE331DE28cd81B768C19A366b0e4e4675c45eC2dA',\n /*xyo/usdt*/ '0xd0AF1981f52146a6939385451dAeA0726e13a484',\n /*xyo/dai*/ '0x9D7e5647CE3c7C2d835F2F5e82C8fDb36B0BB0fe',\n /*wbtc/xyo*/ '0x0cF7494c9dE661467403aBeE8454b3BBf0179a84',\n /*link/xyo*/ '0x4693456599a8a4975862A0E720C5de7E1D09A1e4',\n /*wbtc/weth*/ '0xCBCdF9626bC03E24f779434178A73a0B4bad62eD',\n /*dai/usdc*/ '0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168',\n /*usdc/weth*/ '0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8',\n /*usdc/weth*/ '0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640',\n /*dai/usdc*/ '0x6c6Bc977E13Df9b0de53b251522280BB72383700',\n /*frax/usdc*/ '0xc63B0708E2F7e69CB8A1df0e1389A98C35A76D52',\n /*wbtc/usdc*/ '0x99ac8cA7087fA4A2A1FB6357269965A2014ABc35',\n /*usdc/usdt*/ '0x3416cF6C708Da44DB2624D63ea0AAef7113527C6',\n]\n"],"mappings":"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","names":["UniswapCryptoMarketSchema","assertEx","assertEx","UniswapCryptoMarketSchema"]}
|