@xyo-network/uniswap-crypto-market-plugin 2.99.5 → 2.99.6

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.
Files changed (40) hide show
  1. package/dist/browser/Plugin.d.cts +3 -3
  2. package/dist/browser/Plugin.d.mts +3 -3
  3. package/dist/browser/Plugin.d.ts +3 -3
  4. package/dist/browser/index.cjs +57 -67
  5. package/dist/browser/index.cjs.map +1 -1
  6. package/dist/browser/index.mjs +61 -70
  7. package/dist/browser/index.mjs.map +1 -1
  8. package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts +3 -2
  9. package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
  10. package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts +3 -2
  11. package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
  12. package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts +3 -2
  13. package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
  14. package/dist/neutral/Plugin.d.cts +3 -3
  15. package/dist/neutral/Plugin.d.mts +3 -3
  16. package/dist/neutral/Plugin.d.ts +3 -3
  17. package/dist/neutral/index.cjs +57 -67
  18. package/dist/neutral/index.cjs.map +1 -1
  19. package/dist/neutral/index.mjs +61 -70
  20. package/dist/neutral/index.mjs.map +1 -1
  21. package/dist/neutral/lib/Ethers/UniSwap3Pair.d.cts +3 -2
  22. package/dist/neutral/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
  23. package/dist/neutral/lib/Ethers/UniSwap3Pair.d.mts +3 -2
  24. package/dist/neutral/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
  25. package/dist/neutral/lib/Ethers/UniSwap3Pair.d.ts +3 -2
  26. package/dist/neutral/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
  27. package/dist/node/Plugin.d.cts +3 -3
  28. package/dist/node/Plugin.d.mts +3 -3
  29. package/dist/node/Plugin.d.ts +3 -3
  30. package/dist/node/index.cjs +61 -73
  31. package/dist/node/index.cjs.map +1 -1
  32. package/dist/node/index.mjs +65 -76
  33. package/dist/node/index.mjs.map +1 -1
  34. package/dist/node/lib/Ethers/UniSwap3Pair.d.cts +3 -2
  35. package/dist/node/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
  36. package/dist/node/lib/Ethers/UniSwap3Pair.d.mts +3 -2
  37. package/dist/node/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
  38. package/dist/node/lib/Ethers/UniSwap3Pair.d.ts +3 -2
  39. package/dist/node/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
  40. package/package.json +17 -17
@@ -1,8 +1,8 @@
1
1
  import { UniswapCryptoMarketWitness } from './Witness.ts';
2
- export declare const UniswapCryptoMarketPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UniswapCryptoMarketWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UniswapCryptoMarketPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UniswapCryptoMarketWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.crypto.market.uniswap.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UniswapCryptoMarketWitness } from './Witness.ts';
2
- export declare const UniswapCryptoMarketPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UniswapCryptoMarketWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UniswapCryptoMarketPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UniswapCryptoMarketWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.crypto.market.uniswap.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UniswapCryptoMarketWitness } from './Witness.ts';
2
- export declare const UniswapCryptoMarketPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UniswapCryptoMarketWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UniswapCryptoMarketPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UniswapCryptoMarketWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.crypto.market.uniswap.witness.config";
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
6
  var __export = (target, all) => {
8
7
  for (var name in all)
9
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -34,22 +33,22 @@ __export(src_exports, {
34
33
  module.exports = __toCommonJS(src_exports);
35
34
 
36
35
  // src/lib/logErrors.ts
37
- var logErrors = /* @__PURE__ */ __name((func) => {
36
+ var logErrors = (func) => {
38
37
  try {
39
38
  return func();
40
39
  } catch (ex) {
41
40
  console.error(ex);
42
41
  throw ex;
43
42
  }
44
- }, "logErrors");
45
- var logErrorsAsync = /* @__PURE__ */ __name(async (func) => {
43
+ };
44
+ var logErrorsAsync = async (func) => {
46
45
  try {
47
46
  return await func();
48
47
  } catch (ex) {
49
48
  console.error(ex);
50
49
  throw ex;
51
50
  }
52
- }, "logErrorsAsync");
51
+ };
53
52
 
54
53
  // src/lib/Ethers/UniSwap3Pair.ts
55
54
  var import_assert = require("@xylabs/assert");
@@ -61,9 +60,6 @@ var import_uniswap_v3_sdk = require("@xyo-network/uniswap-v3-sdk");
61
60
 
62
61
  // src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
63
62
  var EthersUniswap3PoolSlot0Wrapper = class {
64
- static {
65
- __name(this, "EthersUniswap3PoolSlot0Wrapper");
66
- }
67
63
  values;
68
64
  constructor(values) {
69
65
  this.values = values;
@@ -92,34 +88,25 @@ var EthersUniswap3PoolSlot0Wrapper = class {
92
88
  };
93
89
 
94
90
  // src/lib/Ethers/UniSwap3Pair.ts
95
- var ChainId;
96
- (function(ChainId2) {
91
+ var ChainId = /* @__PURE__ */ ((ChainId2) => {
97
92
  ChainId2[ChainId2["MAINNET"] = 1] = "MAINNET";
98
93
  ChainId2[ChainId2["ROPSTEN"] = 3] = "ROPSTEN";
99
94
  ChainId2[ChainId2["RINKEBY"] = 4] = "RINKEBY";
100
95
  ChainId2[ChainId2["G\xD6RLI"] = 5] = "G\xD6RLI";
101
96
  ChainId2[ChainId2["KOVAN"] = 42] = "KOVAN";
102
- })(ChainId || (ChainId = {}));
103
- var waitNotNull = /* @__PURE__ */ __name(async (closure) => {
97
+ return ChainId2;
98
+ })(ChainId || {});
99
+ var waitNotNull = async (closure) => {
104
100
  while (closure() === null) await (0, import_delay.delay)(10);
105
- }, "waitNotNull");
101
+ };
106
102
  var EthersUniSwap3Pair = class {
107
- static {
108
- __name(this, "EthersUniSwap3Pair");
109
- }
110
103
  address;
111
104
  provider;
112
105
  _pool;
113
106
  _poolContract;
114
107
  _slot0;
115
- _tokenContracts = [
116
- void 0,
117
- void 0
118
- ];
119
- _tokens = [
120
- void 0,
121
- void 0
122
- ];
108
+ _tokenContracts = [void 0, void 0];
109
+ _tokens = [void 0, void 0];
123
110
  constructor(address, provider) {
124
111
  this.address = address;
125
112
  this.provider = provider;
@@ -129,7 +116,14 @@ var EthersUniSwap3Pair = class {
129
116
  await waitNotNull(() => this._pool);
130
117
  this._pool = this._pool || null;
131
118
  const slot0 = await this.slot0();
132
- this._pool = this._pool === null ? new import_uniswap_v3_sdk.Pool(await this.token(0), await this.token(1), Number(slot0.feeProtocol), `0x${slot0.sqrtPriceX96.toString(16)}`, `0x${(await this.poolContract().liquidity()).toString(16)}`, Number(slot0.tick)) : this._pool;
119
+ this._pool = this._pool === null ? new import_uniswap_v3_sdk.Pool(
120
+ await this.token(0),
121
+ await this.token(1),
122
+ Number(slot0.feeProtocol),
123
+ `0x${slot0.sqrtPriceX96.toString(16)}`,
124
+ `0x${(await this.poolContract().liquidity()).toString(16)}`,
125
+ Number(slot0.tick)
126
+ ) : this._pool;
133
127
  return (0, import_assert.assertEx)(this._pool);
134
128
  });
135
129
  }
@@ -141,23 +135,18 @@ var EthersUniSwap3Pair = class {
141
135
  }
142
136
  async price() {
143
137
  return await logErrorsAsync(async () => {
144
- const tokenIndexes = [
145
- 0,
146
- 1
147
- ];
138
+ const tokenIndexes = [0, 1];
148
139
  const pool = await this.pool();
149
140
  const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
150
141
  const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
151
142
  const tokenPrices = tokens.map((token) => Number.parseFloat(pool.priceOf(token).toSignificant()));
152
143
  const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, () => `Token[${index}] Missing Symbols`).toLowerCase());
153
144
  const result = {
154
- tokens: await Promise.all(tokenIndexes.map(async (value) => {
155
- return {
156
- address: await tokenContracts[value].getAddress(),
157
- symbol: tokenSymbols[value],
158
- value: tokenPrices[value]
159
- };
160
- }))
145
+ tokens: await Promise.all(
146
+ tokenIndexes.map(async (value) => {
147
+ return { address: await tokenContracts[value].getAddress(), symbol: tokenSymbols[value], value: tokenPrices[value] };
148
+ })
149
+ )
161
150
  };
162
151
  return result;
163
152
  });
@@ -179,7 +168,13 @@ var EthersUniSwap3Pair = class {
179
168
  await waitNotNull(() => this._tokens[index]);
180
169
  this._tokens[index] = this._tokens[index] || null;
181
170
  const tokenContract = await this.tokenContract(index);
182
- this._tokens[index] = this._tokens[index] ?? new import_uniswap_sdk_core.Token(1, await tokenContract.getAddress(), Number(await tokenContract.decimals()), await tokenContract.symbol(), await tokenContract.name());
171
+ this._tokens[index] = this._tokens[index] ?? new import_uniswap_sdk_core.Token(
172
+ 1 /* MAINNET */,
173
+ await tokenContract.getAddress(),
174
+ Number(await tokenContract.decimals()),
175
+ await tokenContract.symbol(),
176
+ await tokenContract.name()
177
+ );
183
178
  return (0, import_assert.assertEx)(this._tokens[index]);
184
179
  });
185
180
  }
@@ -194,23 +189,25 @@ var EthersUniSwap3Pair = class {
194
189
  };
195
190
 
196
191
  // src/lib/Ethers/createUniswapPoolContracts.ts
197
- var createUniswapPoolContracts = /* @__PURE__ */ __name((provider, contracts) => {
192
+ var createUniswapPoolContracts = (provider, contracts) => {
198
193
  return logErrors(() => {
199
194
  return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
200
195
  });
201
- }, "createUniswapPoolContracts");
196
+ };
202
197
 
203
198
  // src/lib/pricesFromUniswap3.ts
204
199
  var import_promise = require("@xylabs/promise");
205
- var pricesFromUniswap3 = /* @__PURE__ */ __name(async (pools) => {
200
+ var pricesFromUniswap3 = async (pools) => {
206
201
  return await logErrorsAsync(async () => {
207
- const promiseResults = await Promise.allSettled(pools.map(async (pool) => {
208
- const result = await pool.price();
209
- return result;
210
- }));
202
+ const promiseResults = await Promise.allSettled(
203
+ pools.map(async (pool) => {
204
+ const result = await pool.price();
205
+ return result;
206
+ })
207
+ );
211
208
  return promiseResults.filter(import_promise.fulfilled).map((result) => result.value);
212
209
  });
213
- }, "pricesFromUniswap3");
210
+ };
214
211
 
215
212
  // src/lib/UniswapPoolContracts.ts
216
213
  var UniswapPoolContracts = [
@@ -252,13 +249,7 @@ var import_assert2 = require("@xylabs/assert");
252
249
  var import_abstract_witness = require("@xyo-network/abstract-witness");
253
250
  var import_uniswap_crypto_market_payload_plugin = require("@xyo-network/uniswap-crypto-market-payload-plugin");
254
251
  var UniswapCryptoMarketWitness = class extends import_abstract_witness.AbstractWitness {
255
- static {
256
- __name(this, "UniswapCryptoMarketWitness");
257
- }
258
- static configSchemas = [
259
- ...super.configSchemas,
260
- import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema
261
- ];
252
+ static configSchemas = [...super.configSchemas, import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema];
262
253
  static defaultConfigSchema = import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema;
263
254
  pairs;
264
255
  get provider() {
@@ -273,27 +264,26 @@ var UniswapCryptoMarketWitness = class extends import_abstract_witness.AbstractW
273
264
  schema: import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema,
274
265
  timestamp
275
266
  };
276
- return [
277
- payload
278
- ];
267
+ return [payload];
279
268
  }
280
269
  async startHandler() {
281
270
  await super.startHandler();
282
- this.pairs = createUniswapPoolContracts((0, import_assert2.assertEx)(this.provider, () => "Provider Required"), this.config?.pools ?? UniswapPoolContracts);
271
+ this.pairs = createUniswapPoolContracts(
272
+ (0, import_assert2.assertEx)(this.provider, () => "Provider Required"),
273
+ this.config?.pools ?? UniswapPoolContracts
274
+ );
283
275
  return true;
284
276
  }
285
277
  };
286
278
 
287
279
  // src/Plugin.ts
288
- var UniswapCryptoMarketPlugin = /* @__PURE__ */ __name(() => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)({
289
- required: {
290
- [import_uniswap_crypto_market_payload_plugin2.UniswapCryptoMarketSchema]: 1
291
- },
292
- schema: import_payload_model.PayloadSetSchema
293
- }, {
294
- witness: /* @__PURE__ */ __name(async (params) => {
295
- const result = await UniswapCryptoMarketWitness.create(params);
296
- return result;
297
- }, "witness")
298
- }), "UniswapCryptoMarketPlugin");
280
+ var UniswapCryptoMarketPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
281
+ { required: { [import_uniswap_crypto_market_payload_plugin2.UniswapCryptoMarketSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
282
+ {
283
+ witness: async (params) => {
284
+ const result = await UniswapCryptoMarketWitness.create(params);
285
+ return result;
286
+ }
287
+ }
288
+ );
299
289
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.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/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Config.ts'\nexport * from './lib/index.ts'\n// eslint-disable-next-line import/no-default-export\nexport { UniswapCryptoMarketPlugin as default, UniswapCryptoMarketPlugin } from './Plugin.ts'\nexport * from './Witness.ts'\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 { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { IERC20Metadata, IERC20Metadata__factory } from '@xyo-network/typechain'\nimport { Token } from '@xyo-network/uniswap-sdk-core'\nimport { IUniswapV3Pool, IUniswapV3Pool__factory } from '@xyo-network/uniswap-typechain'\nimport { Pool } from '@xyo-network/uniswap-v3-sdk'\nimport { Provider } from 'ethers'\n\nimport { logErrors, logErrorsAsync } from '../logErrors.ts'\nimport { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper.ts'\n\nexport enum ChainId {\n MAINNET = 1,\n ROPSTEN = 3,\n RINKEBY = 4,\n GÖRLI = 5,\n KOVAN = 42,\n}\n\n// null is used as 'in-progress'\nconst waitNotNull = async (closure: () => unknown) => {\n while (closure() === null) await delay(10)\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 === null\n ? new Pool(\n await this.token(0),\n await this.token(1),\n Number(slot0.feeProtocol),\n `0x${slot0.sqrtPriceX96.toString(16)}`,\n `0x${(await this.poolContract().liquidity()).toString(16)}`,\n Number(slot0.tick),\n )\n : this._pool\n return assertEx(this._pool)\n })\n }\n\n poolContract() {\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 => Number.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: await Promise.all(\n tokenIndexes.map(async (value) => {\n return { address: await tokenContracts[value].getAddress(), symbol: tokenSymbols[value], value: tokenPrices[value] }\n }),\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 if (this._slot0 === null) {\n const poolContract = this.poolContract()\n const slot = await poolContract.slot0()\n this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(slot)\n }\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(\n ChainId.MAINNET,\n await tokenContract.getAddress(),\n Number(await tokenContract.decimals()),\n await tokenContract.symbol(),\n await tokenContract.name(),\n )\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.ts'\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 'ethers'\n\nimport { logErrors } from '../logErrors.ts'\nimport { EthersUniSwap3Pair } from './UniSwap3Pair.ts'\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/index.ts'\nimport { logErrorsAsync } from './logErrors.ts'\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 { 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.ts'\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 { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n UniswapCryptoMarketPayload,\n UniswapCryptoMarketSchema,\n UniswapCryptoMarketWitnessConfigSchema,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Provider } from 'ethers'\n\nimport { UniswapCryptoMarketWitnessConfig } from './Config.ts'\nimport { createUniswapPoolContracts, EthersUniSwap3Pair, pricesFromUniswap3, UniswapPoolContracts } from './lib/index.ts'\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 readonly configSchemas: Schema[] = [...super.configSchemas, UniswapCryptoMarketWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = 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(\n assertEx(this.provider, () => 'Provider Required'),\n this.config?.pools ?? UniswapPoolContracts,\n )\n return true\n }\n}\n"],"mappings":"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","names":["logErrors","func","ex","console","error","logErrorsAsync","EthersUniswap3PoolSlot0Wrapper","values","constructor","feeProtocol","observationCardinality","observationCardinalityNext","observationIndex","sqrtPriceX96","tick","unlocked","ChainId","waitNotNull","closure","delay","EthersUniSwap3Pair","address","provider","_pool","_poolContract","_slot0","_tokenContracts","undefined","_tokens","constructor","pool","logErrorsAsync","slot0","Pool","token","Number","feeProtocol","sqrtPriceX96","toString","poolContract","liquidity","tick","assertEx","logErrors","IUniswapV3Pool__factory","connect","price","tokenIndexes","tokens","Promise","all","map","value","tokenContracts","tokenContract","tokenPrices","parseFloat","priceOf","toSignificant","tokenSymbols","index","symbol","toLowerCase","result","getAddress","slot","EthersUniswap3PoolSlot0Wrapper","Token","decimals","name","IERC20Metadata__factory","token0","token1","createUniswapPoolContracts","provider","contracts","logErrors","map","contract","EthersUniSwap3Pair","pricesFromUniswap3","pools","logErrorsAsync","promiseResults","Promise","allSettled","map","pool","result","price","filter","fulfilled","value","UniswapPoolContracts","import_uniswap_crypto_market_payload_plugin","import_assert","UniswapCryptoMarketWitness","AbstractWitness","configSchemas","UniswapCryptoMarketWitnessConfigSchema","defaultConfigSchema","pairs","provider","params","observeHandler","started","pricesFromUniswap3","assertEx","timestamp","Date","now","payload","schema","UniswapCryptoMarketSchema","startHandler","createUniswapPoolContracts","config","pools","UniswapPoolContracts","UniswapCryptoMarketPlugin","createPayloadSetWitnessPlugin","required","UniswapCryptoMarketSchema","schema","PayloadSetSchema","witness","params","result","UniswapCryptoMarketWitness","create"]}
1
+ {"version":3,"sources":["../../src/index.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/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Config.ts'\nexport * from './lib/index.ts'\n// eslint-disable-next-line import/no-default-export\nexport { UniswapCryptoMarketPlugin as default, UniswapCryptoMarketPlugin } from './Plugin.ts'\nexport * from './Witness.ts'\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 { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { IERC20Metadata, IERC20Metadata__factory } from '@xyo-network/typechain'\nimport { Token } from '@xyo-network/uniswap-sdk-core'\nimport { IUniswapV3Pool, IUniswapV3Pool__factory } from '@xyo-network/uniswap-typechain'\nimport { Pool } from '@xyo-network/uniswap-v3-sdk'\nimport { Provider } from 'ethers'\n\nimport { logErrors, logErrorsAsync } from '../logErrors.ts'\nimport { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper.ts'\n\nexport enum ChainId {\n MAINNET = 1,\n ROPSTEN = 3,\n RINKEBY = 4,\n GÖRLI = 5,\n KOVAN = 42,\n}\n\n// null is used as 'in-progress'\nconst waitNotNull = async (closure: () => unknown) => {\n while (closure() === null) await delay(10)\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 === null\n ? new Pool(\n await this.token(0),\n await this.token(1),\n Number(slot0.feeProtocol),\n `0x${slot0.sqrtPriceX96.toString(16)}`,\n `0x${(await this.poolContract().liquidity()).toString(16)}`,\n Number(slot0.tick),\n )\n : this._pool\n return assertEx(this._pool)\n })\n }\n\n poolContract() {\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 => Number.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: await Promise.all(\n tokenIndexes.map(async (value) => {\n return { address: await tokenContracts[value].getAddress(), symbol: tokenSymbols[value], value: tokenPrices[value] }\n }),\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 if (this._slot0 === null) {\n const poolContract = this.poolContract()\n const slot = await poolContract.slot0()\n this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(slot)\n }\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(\n ChainId.MAINNET,\n await tokenContract.getAddress(),\n Number(await tokenContract.decimals()),\n await tokenContract.symbol(),\n await tokenContract.name(),\n )\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.ts'\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 'ethers'\n\nimport { logErrors } from '../logErrors.ts'\nimport { EthersUniSwap3Pair } from './UniSwap3Pair.ts'\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/index.ts'\nimport { logErrorsAsync } from './logErrors.ts'\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 { 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.ts'\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 { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n UniswapCryptoMarketPayload,\n UniswapCryptoMarketSchema,\n UniswapCryptoMarketWitnessConfigSchema,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Provider } from 'ethers'\n\nimport { UniswapCryptoMarketWitnessConfig } from './Config.ts'\nimport { createUniswapPoolContracts, EthersUniSwap3Pair, pricesFromUniswap3, UniswapPoolContracts } from './lib/index.ts'\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 readonly configSchemas: Schema[] = [...super.configSchemas, UniswapCryptoMarketWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = 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(\n assertEx(this.provider, () => 'Provider Required'),\n this.config?.pools ?? UniswapPoolContracts,\n )\n return true\n }\n}\n"],"mappings":"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","names":["ChainId","import_uniswap_crypto_market_payload_plugin","import_assert"]}
@@ -1,23 +1,20 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/lib/logErrors.ts
5
- var logErrors = /* @__PURE__ */ __name((func) => {
2
+ var logErrors = (func) => {
6
3
  try {
7
4
  return func();
8
5
  } catch (ex) {
9
6
  console.error(ex);
10
7
  throw ex;
11
8
  }
12
- }, "logErrors");
13
- var logErrorsAsync = /* @__PURE__ */ __name(async (func) => {
9
+ };
10
+ var logErrorsAsync = async (func) => {
14
11
  try {
15
12
  return await func();
16
13
  } catch (ex) {
17
14
  console.error(ex);
18
15
  throw ex;
19
16
  }
20
- }, "logErrorsAsync");
17
+ };
21
18
 
22
19
  // src/lib/Ethers/UniSwap3Pair.ts
23
20
  import { assertEx } from "@xylabs/assert";
@@ -29,9 +26,6 @@ import { Pool } from "@xyo-network/uniswap-v3-sdk";
29
26
 
30
27
  // src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
31
28
  var EthersUniswap3PoolSlot0Wrapper = class {
32
- static {
33
- __name(this, "EthersUniswap3PoolSlot0Wrapper");
34
- }
35
29
  values;
36
30
  constructor(values) {
37
31
  this.values = values;
@@ -60,34 +54,25 @@ var EthersUniswap3PoolSlot0Wrapper = class {
60
54
  };
61
55
 
62
56
  // src/lib/Ethers/UniSwap3Pair.ts
63
- var ChainId;
64
- (function(ChainId2) {
57
+ var ChainId = /* @__PURE__ */ ((ChainId2) => {
65
58
  ChainId2[ChainId2["MAINNET"] = 1] = "MAINNET";
66
59
  ChainId2[ChainId2["ROPSTEN"] = 3] = "ROPSTEN";
67
60
  ChainId2[ChainId2["RINKEBY"] = 4] = "RINKEBY";
68
61
  ChainId2[ChainId2["G\xD6RLI"] = 5] = "G\xD6RLI";
69
62
  ChainId2[ChainId2["KOVAN"] = 42] = "KOVAN";
70
- })(ChainId || (ChainId = {}));
71
- var waitNotNull = /* @__PURE__ */ __name(async (closure) => {
63
+ return ChainId2;
64
+ })(ChainId || {});
65
+ var waitNotNull = async (closure) => {
72
66
  while (closure() === null) await delay(10);
73
- }, "waitNotNull");
67
+ };
74
68
  var EthersUniSwap3Pair = class {
75
- static {
76
- __name(this, "EthersUniSwap3Pair");
77
- }
78
69
  address;
79
70
  provider;
80
71
  _pool;
81
72
  _poolContract;
82
73
  _slot0;
83
- _tokenContracts = [
84
- void 0,
85
- void 0
86
- ];
87
- _tokens = [
88
- void 0,
89
- void 0
90
- ];
74
+ _tokenContracts = [void 0, void 0];
75
+ _tokens = [void 0, void 0];
91
76
  constructor(address, provider) {
92
77
  this.address = address;
93
78
  this.provider = provider;
@@ -97,7 +82,14 @@ var EthersUniSwap3Pair = class {
97
82
  await waitNotNull(() => this._pool);
98
83
  this._pool = this._pool || null;
99
84
  const slot0 = await this.slot0();
100
- this._pool = this._pool === null ? new Pool(await this.token(0), await this.token(1), Number(slot0.feeProtocol), `0x${slot0.sqrtPriceX96.toString(16)}`, `0x${(await this.poolContract().liquidity()).toString(16)}`, Number(slot0.tick)) : this._pool;
85
+ this._pool = this._pool === null ? new Pool(
86
+ await this.token(0),
87
+ await this.token(1),
88
+ Number(slot0.feeProtocol),
89
+ `0x${slot0.sqrtPriceX96.toString(16)}`,
90
+ `0x${(await this.poolContract().liquidity()).toString(16)}`,
91
+ Number(slot0.tick)
92
+ ) : this._pool;
101
93
  return assertEx(this._pool);
102
94
  });
103
95
  }
@@ -109,23 +101,18 @@ var EthersUniSwap3Pair = class {
109
101
  }
110
102
  async price() {
111
103
  return await logErrorsAsync(async () => {
112
- const tokenIndexes = [
113
- 0,
114
- 1
115
- ];
104
+ const tokenIndexes = [0, 1];
116
105
  const pool = await this.pool();
117
106
  const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
118
107
  const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
119
108
  const tokenPrices = tokens.map((token) => Number.parseFloat(pool.priceOf(token).toSignificant()));
120
109
  const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, () => `Token[${index}] Missing Symbols`).toLowerCase());
121
110
  const result = {
122
- tokens: await Promise.all(tokenIndexes.map(async (value) => {
123
- return {
124
- address: await tokenContracts[value].getAddress(),
125
- symbol: tokenSymbols[value],
126
- value: tokenPrices[value]
127
- };
128
- }))
111
+ tokens: await Promise.all(
112
+ tokenIndexes.map(async (value) => {
113
+ return { address: await tokenContracts[value].getAddress(), symbol: tokenSymbols[value], value: tokenPrices[value] };
114
+ })
115
+ )
129
116
  };
130
117
  return result;
131
118
  });
@@ -147,7 +134,13 @@ var EthersUniSwap3Pair = class {
147
134
  await waitNotNull(() => this._tokens[index]);
148
135
  this._tokens[index] = this._tokens[index] || null;
149
136
  const tokenContract = await this.tokenContract(index);
150
- this._tokens[index] = this._tokens[index] ?? new Token(1, await tokenContract.getAddress(), Number(await tokenContract.decimals()), await tokenContract.symbol(), await tokenContract.name());
137
+ this._tokens[index] = this._tokens[index] ?? new Token(
138
+ 1 /* MAINNET */,
139
+ await tokenContract.getAddress(),
140
+ Number(await tokenContract.decimals()),
141
+ await tokenContract.symbol(),
142
+ await tokenContract.name()
143
+ );
151
144
  return assertEx(this._tokens[index]);
152
145
  });
153
146
  }
@@ -162,23 +155,25 @@ var EthersUniSwap3Pair = class {
162
155
  };
163
156
 
164
157
  // src/lib/Ethers/createUniswapPoolContracts.ts
165
- var createUniswapPoolContracts = /* @__PURE__ */ __name((provider, contracts) => {
158
+ var createUniswapPoolContracts = (provider, contracts) => {
166
159
  return logErrors(() => {
167
160
  return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
168
161
  });
169
- }, "createUniswapPoolContracts");
162
+ };
170
163
 
171
164
  // src/lib/pricesFromUniswap3.ts
172
165
  import { fulfilled } from "@xylabs/promise";
173
- var pricesFromUniswap3 = /* @__PURE__ */ __name(async (pools) => {
166
+ var pricesFromUniswap3 = async (pools) => {
174
167
  return await logErrorsAsync(async () => {
175
- const promiseResults = await Promise.allSettled(pools.map(async (pool) => {
176
- const result = await pool.price();
177
- return result;
178
- }));
168
+ const promiseResults = await Promise.allSettled(
169
+ pools.map(async (pool) => {
170
+ const result = await pool.price();
171
+ return result;
172
+ })
173
+ );
179
174
  return promiseResults.filter(fulfilled).map((result) => result.value);
180
175
  });
181
- }, "pricesFromUniswap3");
176
+ };
182
177
 
183
178
  // src/lib/UniswapPoolContracts.ts
184
179
  var UniswapPoolContracts = [
@@ -218,15 +213,12 @@ import { UniswapCryptoMarketSchema as UniswapCryptoMarketSchema2 } from "@xyo-ne
218
213
  // src/Witness.ts
219
214
  import { assertEx as assertEx2 } from "@xylabs/assert";
220
215
  import { AbstractWitness } from "@xyo-network/abstract-witness";
221
- import { UniswapCryptoMarketSchema, UniswapCryptoMarketWitnessConfigSchema } from "@xyo-network/uniswap-crypto-market-payload-plugin";
216
+ import {
217
+ UniswapCryptoMarketSchema,
218
+ UniswapCryptoMarketWitnessConfigSchema
219
+ } from "@xyo-network/uniswap-crypto-market-payload-plugin";
222
220
  var UniswapCryptoMarketWitness = class extends AbstractWitness {
223
- static {
224
- __name(this, "UniswapCryptoMarketWitness");
225
- }
226
- static configSchemas = [
227
- ...super.configSchemas,
228
- UniswapCryptoMarketWitnessConfigSchema
229
- ];
221
+ static configSchemas = [...super.configSchemas, UniswapCryptoMarketWitnessConfigSchema];
230
222
  static defaultConfigSchema = UniswapCryptoMarketWitnessConfigSchema;
231
223
  pairs;
232
224
  get provider() {
@@ -241,29 +233,28 @@ var UniswapCryptoMarketWitness = class extends AbstractWitness {
241
233
  schema: UniswapCryptoMarketSchema,
242
234
  timestamp
243
235
  };
244
- return [
245
- payload
246
- ];
236
+ return [payload];
247
237
  }
248
238
  async startHandler() {
249
239
  await super.startHandler();
250
- this.pairs = createUniswapPoolContracts(assertEx2(this.provider, () => "Provider Required"), this.config?.pools ?? UniswapPoolContracts);
240
+ this.pairs = createUniswapPoolContracts(
241
+ assertEx2(this.provider, () => "Provider Required"),
242
+ this.config?.pools ?? UniswapPoolContracts
243
+ );
251
244
  return true;
252
245
  }
253
246
  };
254
247
 
255
248
  // src/Plugin.ts
256
- var UniswapCryptoMarketPlugin = /* @__PURE__ */ __name(() => createPayloadSetWitnessPlugin({
257
- required: {
258
- [UniswapCryptoMarketSchema2]: 1
259
- },
260
- schema: PayloadSetSchema
261
- }, {
262
- witness: /* @__PURE__ */ __name(async (params) => {
263
- const result = await UniswapCryptoMarketWitness.create(params);
264
- return result;
265
- }, "witness")
266
- }), "UniswapCryptoMarketPlugin");
249
+ var UniswapCryptoMarketPlugin = () => createPayloadSetWitnessPlugin(
250
+ { required: { [UniswapCryptoMarketSchema2]: 1 }, schema: PayloadSetSchema },
251
+ {
252
+ witness: async (params) => {
253
+ const result = await UniswapCryptoMarketWitness.create(params);
254
+ return result;
255
+ }
256
+ }
257
+ );
267
258
  export {
268
259
  ChainId,
269
260
  EthersUniSwap3Pair,