@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,293 @@
|
|
|
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
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var src_exports = {};
|
|
32
|
+
__export(src_exports, {
|
|
33
|
+
EthersUniSwap3Pair: () => EthersUniSwap3Pair,
|
|
34
|
+
EthersUniswap3PoolSlot0Wrapper: () => EthersUniswap3PoolSlot0Wrapper,
|
|
35
|
+
UniswapCryptoMarketPlugin: () => UniswapCryptoMarketPlugin,
|
|
36
|
+
UniswapCryptoMarketWitness: () => UniswapCryptoMarketWitness,
|
|
37
|
+
UniswapPoolContracts: () => UniswapPoolContracts,
|
|
38
|
+
createUniswapPoolContracts: () => createUniswapPoolContracts,
|
|
39
|
+
default: () => src_default,
|
|
40
|
+
pricesFromUniswap3: () => pricesFromUniswap3
|
|
41
|
+
});
|
|
42
|
+
module.exports = __toCommonJS(src_exports);
|
|
43
|
+
|
|
44
|
+
// src/Plugin.ts
|
|
45
|
+
var import_payload_model = require("@xyo-network/payload-model");
|
|
46
|
+
var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
|
|
47
|
+
var import_uniswap_crypto_market_payload_plugin2 = require("@xyo-network/uniswap-crypto-market-payload-plugin");
|
|
48
|
+
|
|
49
|
+
// src/Witness.ts
|
|
50
|
+
var import_assert2 = require("@xylabs/assert");
|
|
51
|
+
var import_uniswap_crypto_market_payload_plugin = require("@xyo-network/uniswap-crypto-market-payload-plugin");
|
|
52
|
+
var import_witness = require("@xyo-network/witness");
|
|
53
|
+
|
|
54
|
+
// src/lib/logErrors.ts
|
|
55
|
+
var logErrors = (func) => {
|
|
56
|
+
try {
|
|
57
|
+
return func();
|
|
58
|
+
} catch (ex) {
|
|
59
|
+
console.error(ex);
|
|
60
|
+
throw ex;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var logErrorsAsync = async (func) => {
|
|
64
|
+
try {
|
|
65
|
+
return await func();
|
|
66
|
+
} catch (ex) {
|
|
67
|
+
console.error(ex);
|
|
68
|
+
throw ex;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/lib/Ethers/UniSwap3Pair.ts
|
|
73
|
+
var import_sdk = require("@uniswap/sdk");
|
|
74
|
+
var import_sdk_core = require("@uniswap/sdk-core");
|
|
75
|
+
var import_v3_sdk = require("@uniswap/v3-sdk");
|
|
76
|
+
var import_assert = require("@xylabs/assert");
|
|
77
|
+
var import_delay = require("@xylabs/delay");
|
|
78
|
+
var import_typechain = require("@xyo-network/typechain");
|
|
79
|
+
var UniswapTypechain = __toESM(require("@xyo-network/uniswap-typechain"), 1);
|
|
80
|
+
|
|
81
|
+
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
82
|
+
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
83
|
+
values;
|
|
84
|
+
constructor(values) {
|
|
85
|
+
this.values = values;
|
|
86
|
+
}
|
|
87
|
+
get feeProtocol() {
|
|
88
|
+
return this.values[5];
|
|
89
|
+
}
|
|
90
|
+
get observationCardinality() {
|
|
91
|
+
return this.values[3];
|
|
92
|
+
}
|
|
93
|
+
get observationCardinalityNext() {
|
|
94
|
+
return this.values[4];
|
|
95
|
+
}
|
|
96
|
+
get observationIndex() {
|
|
97
|
+
return this.values[2];
|
|
98
|
+
}
|
|
99
|
+
get sqrtPriceX96() {
|
|
100
|
+
return this.values[0];
|
|
101
|
+
}
|
|
102
|
+
get tick() {
|
|
103
|
+
return this.values[1];
|
|
104
|
+
}
|
|
105
|
+
get unlocked() {
|
|
106
|
+
return this.values[6];
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
// src/lib/Ethers/UniSwap3Pair.ts
|
|
111
|
+
var waitNotNull = async (closure) => {
|
|
112
|
+
while (closure() === null) {
|
|
113
|
+
await (0, import_delay.delay)(10);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
var EthersUniSwap3Pair = class {
|
|
117
|
+
address;
|
|
118
|
+
provider;
|
|
119
|
+
_pool;
|
|
120
|
+
_poolContract;
|
|
121
|
+
_slot0;
|
|
122
|
+
_tokenContracts = [void 0, void 0];
|
|
123
|
+
_tokens = [void 0, void 0];
|
|
124
|
+
constructor(address, provider) {
|
|
125
|
+
this.address = address;
|
|
126
|
+
this.provider = provider;
|
|
127
|
+
}
|
|
128
|
+
async pool() {
|
|
129
|
+
return await logErrorsAsync(async () => {
|
|
130
|
+
await waitNotNull(() => this._pool);
|
|
131
|
+
this._pool = this._pool || null;
|
|
132
|
+
const slot0 = await this.slot0();
|
|
133
|
+
this._pool = this._pool ?? new import_v3_sdk.Pool(
|
|
134
|
+
await this.token(0),
|
|
135
|
+
await this.token(1),
|
|
136
|
+
slot0.feeProtocol,
|
|
137
|
+
slot0.sqrtPriceX96.toHexString(),
|
|
138
|
+
(await this.poolContract().liquidity()).toHexString(),
|
|
139
|
+
slot0.tick
|
|
140
|
+
);
|
|
141
|
+
return (0, import_assert.assertEx)(this._pool);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
poolContract() {
|
|
145
|
+
return logErrors(() => {
|
|
146
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
147
|
+
return (0, import_assert.assertEx)(this._poolContract);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async price() {
|
|
151
|
+
return await logErrorsAsync(async () => {
|
|
152
|
+
const tokenIndexes = [0, 1];
|
|
153
|
+
const pool = await this.pool();
|
|
154
|
+
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
155
|
+
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
156
|
+
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
157
|
+
const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
158
|
+
const result = {
|
|
159
|
+
tokens: tokenIndexes.map((value) => {
|
|
160
|
+
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
161
|
+
})
|
|
162
|
+
};
|
|
163
|
+
return result;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
async slot0() {
|
|
167
|
+
return await logErrorsAsync(async () => {
|
|
168
|
+
await waitNotNull(() => this._slot0);
|
|
169
|
+
this._slot0 = this._slot0 || null;
|
|
170
|
+
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
171
|
+
return (0, import_assert.assertEx)(this._slot0);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async token(index) {
|
|
175
|
+
return await logErrorsAsync(async () => {
|
|
176
|
+
await waitNotNull(() => this._tokens[index]);
|
|
177
|
+
this._tokens[index] = this._tokens[index] || null;
|
|
178
|
+
const tokenContract = await this.tokenContract(index);
|
|
179
|
+
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());
|
|
180
|
+
return (0, import_assert.assertEx)(this._tokens[index]);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
async tokenContract(index) {
|
|
184
|
+
return await logErrorsAsync(async () => {
|
|
185
|
+
await waitNotNull(() => this._tokenContracts[index]);
|
|
186
|
+
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
187
|
+
this._tokenContracts[index] = this._tokenContracts[index] ?? import_typechain.IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
188
|
+
return (0, import_assert.assertEx)(this._tokenContracts[index]);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// src/lib/Ethers/createUniswapPoolContracts.ts
|
|
194
|
+
var createUniswapPoolContracts = (provider, contracts) => {
|
|
195
|
+
return logErrors(() => {
|
|
196
|
+
return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// src/lib/pricesFromUniswap3.ts
|
|
201
|
+
var import_promise = require("@xylabs/promise");
|
|
202
|
+
var pricesFromUniswap3 = async (pools) => {
|
|
203
|
+
return await logErrorsAsync(async () => {
|
|
204
|
+
const promiseResults = await Promise.allSettled(
|
|
205
|
+
pools.map(async (pool) => {
|
|
206
|
+
const result = await pool.price();
|
|
207
|
+
return result;
|
|
208
|
+
})
|
|
209
|
+
);
|
|
210
|
+
return promiseResults.filter(import_promise.fulfilled).map((result) => result.value);
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
// src/lib/UniswapPoolContracts.ts
|
|
215
|
+
var UniswapPoolContracts = [
|
|
216
|
+
/*xyo/weth*/
|
|
217
|
+
"0xE331DE28cd81B768C19A366b0e4e4675c45eC2dA",
|
|
218
|
+
/*xyo/usdt*/
|
|
219
|
+
"0xd0AF1981f52146a6939385451dAeA0726e13a484",
|
|
220
|
+
/*xyo/dai*/
|
|
221
|
+
"0x9D7e5647CE3c7C2d835F2F5e82C8fDb36B0BB0fe",
|
|
222
|
+
/*wbtc/xyo*/
|
|
223
|
+
"0x0cF7494c9dE661467403aBeE8454b3BBf0179a84",
|
|
224
|
+
/*link/xyo*/
|
|
225
|
+
"0x4693456599a8a4975862A0E720C5de7E1D09A1e4",
|
|
226
|
+
/*wbtc/weth*/
|
|
227
|
+
"0xCBCdF9626bC03E24f779434178A73a0B4bad62eD",
|
|
228
|
+
/*dai/usdc*/
|
|
229
|
+
"0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168",
|
|
230
|
+
/*usdc/weth*/
|
|
231
|
+
"0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8",
|
|
232
|
+
/*usdc/weth*/
|
|
233
|
+
"0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
|
|
234
|
+
/*dai/usdc*/
|
|
235
|
+
"0x6c6Bc977E13Df9b0de53b251522280BB72383700",
|
|
236
|
+
/*frax/usdc*/
|
|
237
|
+
"0xc63B0708E2F7e69CB8A1df0e1389A98C35A76D52",
|
|
238
|
+
/*wbtc/usdc*/
|
|
239
|
+
"0x99ac8cA7087fA4A2A1FB6357269965A2014ABc35",
|
|
240
|
+
/*usdc/usdt*/
|
|
241
|
+
"0x3416cF6C708Da44DB2624D63ea0AAef7113527C6"
|
|
242
|
+
];
|
|
243
|
+
|
|
244
|
+
// src/Witness.ts
|
|
245
|
+
var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
|
|
246
|
+
static configSchemas = [import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema];
|
|
247
|
+
pairs;
|
|
248
|
+
get provider() {
|
|
249
|
+
return this.params.provider;
|
|
250
|
+
}
|
|
251
|
+
async observeHandler() {
|
|
252
|
+
await this.started("throw");
|
|
253
|
+
const pairs = await pricesFromUniswap3((0, import_assert2.assertEx)(this.pairs));
|
|
254
|
+
const timestamp = Date.now();
|
|
255
|
+
const payload = {
|
|
256
|
+
pairs,
|
|
257
|
+
schema: import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema,
|
|
258
|
+
timestamp
|
|
259
|
+
};
|
|
260
|
+
return [payload];
|
|
261
|
+
}
|
|
262
|
+
async startHandler() {
|
|
263
|
+
var _a;
|
|
264
|
+
await super.startHandler();
|
|
265
|
+
this.pairs = createUniswapPoolContracts((0, import_assert2.assertEx)(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
// src/Plugin.ts
|
|
271
|
+
var UniswapCryptoMarketPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
|
|
272
|
+
{ required: { [import_uniswap_crypto_market_payload_plugin2.UniswapCryptoMarketSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
|
|
273
|
+
{
|
|
274
|
+
witness: async (params) => {
|
|
275
|
+
const result = await UniswapCryptoMarketWitness.create(params);
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
// src/index.ts
|
|
282
|
+
var src_default = UniswapCryptoMarketPlugin;
|
|
283
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
284
|
+
0 && (module.exports = {
|
|
285
|
+
EthersUniSwap3Pair,
|
|
286
|
+
EthersUniswap3PoolSlot0Wrapper,
|
|
287
|
+
UniswapCryptoMarketPlugin,
|
|
288
|
+
UniswapCryptoMarketWitness,
|
|
289
|
+
UniswapPoolContracts,
|
|
290
|
+
createUniswapPoolContracts,
|
|
291
|
+
pricesFromUniswap3
|
|
292
|
+
});
|
|
293
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../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 { UniswapCryptoMarketPlugin } from './Plugin'\n\nexport * from './Config'\nexport * from './lib'\nexport * from './Witness'\n\nexport { UniswapCryptoMarketPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default UniswapCryptoMarketPlugin\n","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/index.js
CHANGED
|
@@ -1,45 +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
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
EthersUniSwap3Pair: () => EthersUniSwap3Pair,
|
|
24
|
-
EthersUniswap3PoolSlot0Wrapper: () => EthersUniswap3PoolSlot0Wrapper,
|
|
25
|
-
UniswapCryptoMarketPlugin: () => UniswapCryptoMarketPlugin,
|
|
26
|
-
UniswapCryptoMarketWitness: () => UniswapCryptoMarketWitness,
|
|
27
|
-
UniswapPoolContracts: () => UniswapPoolContracts,
|
|
28
|
-
createUniswapPoolContracts: () => createUniswapPoolContracts,
|
|
29
|
-
default: () => src_default,
|
|
30
|
-
pricesFromUniswap3: () => pricesFromUniswap3
|
|
31
|
-
});
|
|
32
|
-
module.exports = __toCommonJS(src_exports);
|
|
33
|
-
|
|
34
1
|
// src/Plugin.ts
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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";
|
|
38
5
|
|
|
39
6
|
// src/Witness.ts
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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";
|
|
43
13
|
|
|
44
14
|
// src/lib/logErrors.ts
|
|
45
15
|
var logErrors = (func) => {
|
|
@@ -60,13 +30,13 @@ var logErrorsAsync = async (func) => {
|
|
|
60
30
|
};
|
|
61
31
|
|
|
62
32
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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";
|
|
70
40
|
|
|
71
41
|
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
72
42
|
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
@@ -100,7 +70,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
|
|
|
100
70
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
101
71
|
var waitNotNull = async (closure) => {
|
|
102
72
|
while (closure() === null) {
|
|
103
|
-
await
|
|
73
|
+
await delay(10);
|
|
104
74
|
}
|
|
105
75
|
};
|
|
106
76
|
var EthersUniSwap3Pair = class {
|
|
@@ -120,7 +90,7 @@ var EthersUniSwap3Pair = class {
|
|
|
120
90
|
await waitNotNull(() => this._pool);
|
|
121
91
|
this._pool = this._pool || null;
|
|
122
92
|
const slot0 = await this.slot0();
|
|
123
|
-
this._pool = this._pool ?? new
|
|
93
|
+
this._pool = this._pool ?? new Pool(
|
|
124
94
|
await this.token(0),
|
|
125
95
|
await this.token(1),
|
|
126
96
|
slot0.feeProtocol,
|
|
@@ -128,13 +98,13 @@ var EthersUniSwap3Pair = class {
|
|
|
128
98
|
(await this.poolContract().liquidity()).toHexString(),
|
|
129
99
|
slot0.tick
|
|
130
100
|
);
|
|
131
|
-
return
|
|
101
|
+
return assertEx(this._pool);
|
|
132
102
|
});
|
|
133
103
|
}
|
|
134
104
|
poolContract() {
|
|
135
105
|
return logErrors(() => {
|
|
136
|
-
this._poolContract = this._poolContract ??
|
|
137
|
-
return
|
|
106
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
107
|
+
return assertEx(this._poolContract);
|
|
138
108
|
});
|
|
139
109
|
}
|
|
140
110
|
async price() {
|
|
@@ -144,7 +114,7 @@ var EthersUniSwap3Pair = class {
|
|
|
144
114
|
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
145
115
|
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
146
116
|
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
147
|
-
const tokenSymbols = tokens.map((token, index) =>
|
|
117
|
+
const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
148
118
|
const result = {
|
|
149
119
|
tokens: tokenIndexes.map((value) => {
|
|
150
120
|
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
@@ -158,7 +128,7 @@ var EthersUniSwap3Pair = class {
|
|
|
158
128
|
await waitNotNull(() => this._slot0);
|
|
159
129
|
this._slot0 = this._slot0 || null;
|
|
160
130
|
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
161
|
-
return
|
|
131
|
+
return assertEx(this._slot0);
|
|
162
132
|
});
|
|
163
133
|
}
|
|
164
134
|
async token(index) {
|
|
@@ -166,16 +136,16 @@ var EthersUniSwap3Pair = class {
|
|
|
166
136
|
await waitNotNull(() => this._tokens[index]);
|
|
167
137
|
this._tokens[index] = this._tokens[index] || null;
|
|
168
138
|
const tokenContract = await this.tokenContract(index);
|
|
169
|
-
this._tokens[index] = this._tokens[index] ?? new
|
|
170
|
-
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]);
|
|
171
141
|
});
|
|
172
142
|
}
|
|
173
143
|
async tokenContract(index) {
|
|
174
144
|
return await logErrorsAsync(async () => {
|
|
175
145
|
await waitNotNull(() => this._tokenContracts[index]);
|
|
176
146
|
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
177
|
-
this._tokenContracts[index] = this._tokenContracts[index] ??
|
|
178
|
-
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]);
|
|
179
149
|
});
|
|
180
150
|
}
|
|
181
151
|
};
|
|
@@ -188,7 +158,7 @@ var createUniswapPoolContracts = (provider, contracts) => {
|
|
|
188
158
|
};
|
|
189
159
|
|
|
190
160
|
// src/lib/pricesFromUniswap3.ts
|
|
191
|
-
|
|
161
|
+
import { fulfilled } from "@xylabs/promise";
|
|
192
162
|
var pricesFromUniswap3 = async (pools) => {
|
|
193
163
|
return await logErrorsAsync(async () => {
|
|
194
164
|
const promiseResults = await Promise.allSettled(
|
|
@@ -197,7 +167,7 @@ var pricesFromUniswap3 = async (pools) => {
|
|
|
197
167
|
return result;
|
|
198
168
|
})
|
|
199
169
|
);
|
|
200
|
-
return promiseResults.filter(
|
|
170
|
+
return promiseResults.filter(fulfilled).map((result) => result.value);
|
|
201
171
|
});
|
|
202
172
|
};
|
|
203
173
|
|
|
@@ -232,19 +202,19 @@ var UniswapPoolContracts = [
|
|
|
232
202
|
];
|
|
233
203
|
|
|
234
204
|
// src/Witness.ts
|
|
235
|
-
var UniswapCryptoMarketWitness = class extends
|
|
236
|
-
static configSchemas = [
|
|
205
|
+
var UniswapCryptoMarketWitness = class extends AbstractWitness {
|
|
206
|
+
static configSchemas = [UniswapCryptoMarketWitnessConfigSchema];
|
|
237
207
|
pairs;
|
|
238
208
|
get provider() {
|
|
239
209
|
return this.params.provider;
|
|
240
210
|
}
|
|
241
211
|
async observeHandler() {
|
|
242
212
|
await this.started("throw");
|
|
243
|
-
const pairs = await pricesFromUniswap3((
|
|
213
|
+
const pairs = await pricesFromUniswap3(assertEx2(this.pairs));
|
|
244
214
|
const timestamp = Date.now();
|
|
245
215
|
const payload = {
|
|
246
216
|
pairs,
|
|
247
|
-
schema:
|
|
217
|
+
schema: UniswapCryptoMarketSchema,
|
|
248
218
|
timestamp
|
|
249
219
|
};
|
|
250
220
|
return [payload];
|
|
@@ -252,14 +222,14 @@ var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
|
|
|
252
222
|
async startHandler() {
|
|
253
223
|
var _a;
|
|
254
224
|
await super.startHandler();
|
|
255
|
-
this.pairs = createUniswapPoolContracts((
|
|
225
|
+
this.pairs = createUniswapPoolContracts(assertEx2(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
|
|
256
226
|
return true;
|
|
257
227
|
}
|
|
258
228
|
};
|
|
259
229
|
|
|
260
230
|
// src/Plugin.ts
|
|
261
|
-
var UniswapCryptoMarketPlugin = () =>
|
|
262
|
-
{ required: { [
|
|
231
|
+
var UniswapCryptoMarketPlugin = () => createPayloadSetWitnessPlugin(
|
|
232
|
+
{ required: { [UniswapCryptoMarketSchema2]: 1 }, schema: PayloadSetSchema },
|
|
263
233
|
{
|
|
264
234
|
witness: async (params) => {
|
|
265
235
|
const result = await UniswapCryptoMarketWitness.create(params);
|
|
@@ -270,14 +240,14 @@ var UniswapCryptoMarketPlugin = () => (0, import_payloadset_plugin.createPayload
|
|
|
270
240
|
|
|
271
241
|
// src/index.ts
|
|
272
242
|
var src_default = UniswapCryptoMarketPlugin;
|
|
273
|
-
|
|
274
|
-
0 && (module.exports = {
|
|
243
|
+
export {
|
|
275
244
|
EthersUniSwap3Pair,
|
|
276
245
|
EthersUniswap3PoolSlot0Wrapper,
|
|
277
246
|
UniswapCryptoMarketPlugin,
|
|
278
247
|
UniswapCryptoMarketWitness,
|
|
279
248
|
UniswapPoolContracts,
|
|
280
249
|
createUniswapPoolContracts,
|
|
250
|
+
src_default as default,
|
|
281
251
|
pricesFromUniswap3
|
|
282
|
-
}
|
|
252
|
+
};
|
|
283
253
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../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 { UniswapCryptoMarketPlugin } from './Plugin'\n\nexport * from './Config'\nexport * from './lib'\nexport * from './Witness'\n\nexport { UniswapCryptoMarketPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default UniswapCryptoMarketPlugin\n","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","../../src/index.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","import { UniswapCryptoMarketPlugin } from './Plugin'\n\nexport * from './Config'\nexport * from './lib'\nexport * from './Witness'\n\nexport { UniswapCryptoMarketPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default UniswapCryptoMarketPlugin\n"],"mappings":"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","names":["UniswapCryptoMarketSchema","assertEx","assertEx","UniswapCryptoMarketSchema"]}
|