@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.
Files changed (117) hide show
  1. package/dist/browser/Plugin.cjs +12 -2
  2. package/dist/browser/Plugin.cjs.map +1 -1
  3. package/dist/browser/Plugin.js +2 -2
  4. package/dist/browser/Plugin.js.map +1 -1
  5. package/dist/browser/Witness.cjs +12 -2
  6. package/dist/browser/Witness.cjs.map +1 -1
  7. package/dist/browser/Witness.js +2 -2
  8. package/dist/browser/Witness.js.map +1 -1
  9. package/dist/browser/index.cjs +12 -2
  10. package/dist/browser/index.cjs.map +1 -1
  11. package/dist/browser/index.js +2 -2
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/lib/Ethers/UniSwap3Pair.cjs +12 -2
  14. package/dist/browser/lib/Ethers/UniSwap3Pair.cjs.map +1 -1
  15. package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts +2 -2
  16. package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
  17. package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts +2 -2
  18. package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
  19. package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts +2 -2
  20. package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
  21. package/dist/browser/lib/Ethers/UniSwap3Pair.js +2 -2
  22. package/dist/browser/lib/Ethers/UniSwap3Pair.js.map +1 -1
  23. package/dist/browser/lib/Ethers/createUniswapPoolContracts.cjs +12 -2
  24. package/dist/browser/lib/Ethers/createUniswapPoolContracts.cjs.map +1 -1
  25. package/dist/browser/lib/Ethers/createUniswapPoolContracts.js +2 -2
  26. package/dist/browser/lib/Ethers/createUniswapPoolContracts.js.map +1 -1
  27. package/dist/browser/lib/Ethers/index.cjs +12 -2
  28. package/dist/browser/lib/Ethers/index.cjs.map +1 -1
  29. package/dist/browser/lib/Ethers/index.js +2 -2
  30. package/dist/browser/lib/Ethers/index.js.map +1 -1
  31. package/dist/browser/lib/index.cjs +12 -2
  32. package/dist/browser/lib/index.cjs.map +1 -1
  33. package/dist/browser/lib/index.js +2 -2
  34. package/dist/browser/lib/index.js.map +1 -1
  35. package/dist/docs.json +961 -927
  36. package/dist/node/Config.cjs +19 -0
  37. package/dist/node/Config.cjs.map +1 -0
  38. package/dist/node/Config.js +0 -18
  39. package/dist/node/Config.js.map +1 -1
  40. package/dist/node/{Plugin.mjs → Plugin.cjs} +71 -39
  41. package/dist/node/Plugin.cjs.map +1 -0
  42. package/dist/node/Plugin.js +38 -60
  43. package/dist/node/Plugin.js.map +1 -1
  44. package/dist/node/{Witness.mjs → Witness.cjs} +66 -34
  45. package/dist/node/Witness.cjs.map +1 -0
  46. package/dist/node/Witness.js +33 -55
  47. package/dist/node/Witness.js.map +1 -1
  48. package/dist/node/index.cjs +293 -0
  49. package/dist/node/index.cjs.map +1 -0
  50. package/dist/node/index.js +39 -69
  51. package/dist/node/index.js.map +1 -1
  52. package/dist/node/lib/Ethers/{UniSwap3Pair.mjs → UniSwap3Pair.cjs} +56 -21
  53. package/dist/node/lib/Ethers/UniSwap3Pair.cjs.map +1 -0
  54. package/dist/node/lib/Ethers/UniSwap3Pair.d.cts +2 -2
  55. package/dist/node/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
  56. package/dist/node/lib/Ethers/UniSwap3Pair.d.mts +2 -2
  57. package/dist/node/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
  58. package/dist/node/lib/Ethers/UniSwap3Pair.d.ts +2 -2
  59. package/dist/node/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
  60. package/dist/node/lib/Ethers/UniSwap3Pair.js +20 -45
  61. package/dist/node/lib/Ethers/UniSwap3Pair.js.map +1 -1
  62. package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.cjs +57 -0
  63. package/dist/node/lib/Ethers/{Uniswap3PoolSlot0Wrapper.mjs.map → Uniswap3PoolSlot0Wrapper.cjs.map} +1 -1
  64. package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.js +2 -27
  65. package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.js.map +1 -1
  66. package/dist/node/lib/Ethers/UniswapV3Slot0Fields.cjs +19 -0
  67. package/dist/node/lib/Ethers/UniswapV3Slot0Fields.cjs.map +1 -0
  68. package/dist/node/lib/Ethers/UniswapV3Slot0Fields.js +0 -18
  69. package/dist/node/lib/Ethers/UniswapV3Slot0Fields.js.map +1 -1
  70. package/dist/node/lib/Ethers/{createUniswapPoolContracts.mjs → createUniswapPoolContracts.cjs} +58 -21
  71. package/dist/node/lib/Ethers/createUniswapPoolContracts.cjs.map +1 -0
  72. package/dist/node/lib/Ethers/createUniswapPoolContracts.js +20 -47
  73. package/dist/node/lib/Ethers/createUniswapPoolContracts.js.map +1 -1
  74. package/dist/node/lib/Ethers/{index.mjs → index.cjs} +60 -21
  75. package/dist/node/lib/Ethers/index.cjs.map +1 -0
  76. package/dist/node/lib/Ethers/index.js +20 -49
  77. package/dist/node/lib/Ethers/index.js.map +1 -1
  78. package/dist/node/lib/UniswapPoolContracts.cjs +58 -0
  79. package/dist/node/lib/{UniswapPoolContracts.mjs.map → UniswapPoolContracts.cjs.map} +1 -1
  80. package/dist/node/lib/UniswapPoolContracts.js +2 -27
  81. package/dist/node/lib/UniswapPoolContracts.js.map +1 -1
  82. package/dist/node/lib/UniswapV3Slot0Fields.cjs +19 -0
  83. package/dist/node/lib/UniswapV3Slot0Fields.cjs.map +1 -0
  84. package/dist/node/lib/UniswapV3Slot0Fields.js +0 -18
  85. package/dist/node/lib/UniswapV3Slot0Fields.js.map +1 -1
  86. package/dist/node/{index.mjs → lib/index.cjs} +62 -77
  87. package/dist/node/lib/index.cjs.map +1 -0
  88. package/dist/node/lib/index.js +22 -53
  89. package/dist/node/lib/index.js.map +1 -1
  90. package/dist/node/lib/logErrors.cjs +48 -0
  91. package/dist/node/lib/{logErrors.mjs.map → logErrors.cjs.map} +1 -1
  92. package/dist/node/lib/logErrors.js +2 -28
  93. package/dist/node/lib/logErrors.js.map +1 -1
  94. package/dist/node/lib/pricesFromUniswap3.cjs +54 -0
  95. package/dist/node/lib/{pricesFromUniswap3.mjs.map → pricesFromUniswap3.cjs.map} +1 -1
  96. package/dist/node/lib/pricesFromUniswap3.js +4 -29
  97. package/dist/node/lib/pricesFromUniswap3.js.map +1 -1
  98. package/package.json +16 -15
  99. package/src/lib/Ethers/UniSwap3Pair.ts +4 -4
  100. package/dist/node/Config.mjs +0 -1
  101. package/dist/node/Config.mjs.map +0 -1
  102. package/dist/node/Plugin.mjs.map +0 -1
  103. package/dist/node/Witness.mjs.map +0 -1
  104. package/dist/node/index.mjs.map +0 -1
  105. package/dist/node/lib/Ethers/UniSwap3Pair.mjs.map +0 -1
  106. package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.mjs +0 -32
  107. package/dist/node/lib/Ethers/UniswapV3Slot0Fields.mjs +0 -1
  108. package/dist/node/lib/Ethers/UniswapV3Slot0Fields.mjs.map +0 -1
  109. package/dist/node/lib/Ethers/createUniswapPoolContracts.mjs.map +0 -1
  110. package/dist/node/lib/Ethers/index.mjs.map +0 -1
  111. package/dist/node/lib/UniswapPoolContracts.mjs +0 -33
  112. package/dist/node/lib/UniswapV3Slot0Fields.mjs +0 -1
  113. package/dist/node/lib/UniswapV3Slot0Fields.mjs.map +0 -1
  114. package/dist/node/lib/index.mjs +0 -197
  115. package/dist/node/lib/index.mjs.map +0 -1
  116. package/dist/node/lib/logErrors.mjs +0 -22
  117. package/dist/node/lib/pricesFromUniswap3.mjs +0 -29
@@ -1,10 +1,41 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
1
30
  // src/Witness.ts
2
- import { assertEx as assertEx2 } from "@xylabs/assert";
3
- import {
4
- UniswapCryptoMarketSchema,
5
- UniswapCryptoMarketWitnessConfigSchema
6
- } from "@xyo-network/uniswap-crypto-market-payload-plugin";
7
- import { AbstractWitness } from "@xyo-network/witness";
31
+ var Witness_exports = {};
32
+ __export(Witness_exports, {
33
+ UniswapCryptoMarketWitness: () => UniswapCryptoMarketWitness
34
+ });
35
+ module.exports = __toCommonJS(Witness_exports);
36
+ var import_assert2 = require("@xylabs/assert");
37
+ var import_uniswap_crypto_market_payload_plugin = require("@xyo-network/uniswap-crypto-market-payload-plugin");
38
+ var import_witness = require("@xyo-network/witness");
8
39
 
9
40
  // src/lib/logErrors.ts
10
41
  var logErrors = (func) => {
@@ -25,13 +56,13 @@ var logErrorsAsync = async (func) => {
25
56
  };
26
57
 
27
58
  // src/lib/Ethers/UniSwap3Pair.ts
28
- import { ChainId } from "@uniswap/sdk";
29
- import { Token } from "@uniswap/sdk-core";
30
- import { Pool } from "@uniswap/v3-sdk";
31
- import { assertEx } from "@xylabs/assert";
32
- import { delay } from "@xylabs/delay";
33
- import { IERC20Metadata__factory } from "@xyo-network/typechain";
34
- import { IUniswapV3Pool__factory } from "@xyo-network/uniswap-typechain";
59
+ var import_sdk = require("@uniswap/sdk");
60
+ var import_sdk_core = require("@uniswap/sdk-core");
61
+ var import_v3_sdk = require("@uniswap/v3-sdk");
62
+ var import_assert = require("@xylabs/assert");
63
+ var import_delay = require("@xylabs/delay");
64
+ var import_typechain = require("@xyo-network/typechain");
65
+ var UniswapTypechain = __toESM(require("@xyo-network/uniswap-typechain"), 1);
35
66
 
36
67
  // src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
37
68
  var EthersUniswap3PoolSlot0Wrapper = class {
@@ -65,7 +96,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
65
96
  // src/lib/Ethers/UniSwap3Pair.ts
66
97
  var waitNotNull = async (closure) => {
67
98
  while (closure() === null) {
68
- await delay(10);
99
+ await (0, import_delay.delay)(10);
69
100
  }
70
101
  };
71
102
  var EthersUniSwap3Pair = class {
@@ -85,7 +116,7 @@ var EthersUniSwap3Pair = class {
85
116
  await waitNotNull(() => this._pool);
86
117
  this._pool = this._pool || null;
87
118
  const slot0 = await this.slot0();
88
- this._pool = this._pool ?? new Pool(
119
+ this._pool = this._pool ?? new import_v3_sdk.Pool(
89
120
  await this.token(0),
90
121
  await this.token(1),
91
122
  slot0.feeProtocol,
@@ -93,13 +124,13 @@ var EthersUniSwap3Pair = class {
93
124
  (await this.poolContract().liquidity()).toHexString(),
94
125
  slot0.tick
95
126
  );
96
- return assertEx(this._pool);
127
+ return (0, import_assert.assertEx)(this._pool);
97
128
  });
98
129
  }
99
130
  poolContract() {
100
131
  return logErrors(() => {
101
- this._poolContract = this._poolContract ?? IUniswapV3Pool__factory.connect(this.address, this.provider);
102
- return assertEx(this._poolContract);
132
+ this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
133
+ return (0, import_assert.assertEx)(this._poolContract);
103
134
  });
104
135
  }
105
136
  async price() {
@@ -109,7 +140,7 @@ var EthersUniSwap3Pair = class {
109
140
  const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
110
141
  const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
111
142
  const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
112
- const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
143
+ const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
113
144
  const result = {
114
145
  tokens: tokenIndexes.map((value) => {
115
146
  return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
@@ -123,7 +154,7 @@ var EthersUniSwap3Pair = class {
123
154
  await waitNotNull(() => this._slot0);
124
155
  this._slot0 = this._slot0 || null;
125
156
  this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
126
- return assertEx(this._slot0);
157
+ return (0, import_assert.assertEx)(this._slot0);
127
158
  });
128
159
  }
129
160
  async token(index) {
@@ -131,16 +162,16 @@ var EthersUniSwap3Pair = class {
131
162
  await waitNotNull(() => this._tokens[index]);
132
163
  this._tokens[index] = this._tokens[index] || null;
133
164
  const tokenContract = await this.tokenContract(index);
134
- this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
135
- return assertEx(this._tokens[index]);
165
+ 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());
166
+ return (0, import_assert.assertEx)(this._tokens[index]);
136
167
  });
137
168
  }
138
169
  async tokenContract(index) {
139
170
  return await logErrorsAsync(async () => {
140
171
  await waitNotNull(() => this._tokenContracts[index]);
141
172
  this._tokenContracts[index] = this._tokenContracts[index] || null;
142
- this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
143
- return assertEx(this._tokenContracts[index]);
173
+ this._tokenContracts[index] = this._tokenContracts[index] ?? import_typechain.IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
174
+ return (0, import_assert.assertEx)(this._tokenContracts[index]);
144
175
  });
145
176
  }
146
177
  };
@@ -153,7 +184,7 @@ var createUniswapPoolContracts = (provider, contracts) => {
153
184
  };
154
185
 
155
186
  // src/lib/pricesFromUniswap3.ts
156
- import { fulfilled } from "@xylabs/promise";
187
+ var import_promise = require("@xylabs/promise");
157
188
  var pricesFromUniswap3 = async (pools) => {
158
189
  return await logErrorsAsync(async () => {
159
190
  const promiseResults = await Promise.allSettled(
@@ -162,7 +193,7 @@ var pricesFromUniswap3 = async (pools) => {
162
193
  return result;
163
194
  })
164
195
  );
165
- return promiseResults.filter(fulfilled).map((result) => result.value);
196
+ return promiseResults.filter(import_promise.fulfilled).map((result) => result.value);
166
197
  });
167
198
  };
168
199
 
@@ -197,19 +228,19 @@ var UniswapPoolContracts = [
197
228
  ];
198
229
 
199
230
  // src/Witness.ts
200
- var UniswapCryptoMarketWitness = class extends AbstractWitness {
201
- static configSchemas = [UniswapCryptoMarketWitnessConfigSchema];
231
+ var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
232
+ static configSchemas = [import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema];
202
233
  pairs;
203
234
  get provider() {
204
235
  return this.params.provider;
205
236
  }
206
237
  async observeHandler() {
207
238
  await this.started("throw");
208
- const pairs = await pricesFromUniswap3(assertEx2(this.pairs));
239
+ const pairs = await pricesFromUniswap3((0, import_assert2.assertEx)(this.pairs));
209
240
  const timestamp = Date.now();
210
241
  const payload = {
211
242
  pairs,
212
- schema: UniswapCryptoMarketSchema,
243
+ schema: import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema,
213
244
  timestamp
214
245
  };
215
246
  return [payload];
@@ -217,11 +248,12 @@ var UniswapCryptoMarketWitness = class extends AbstractWitness {
217
248
  async startHandler() {
218
249
  var _a;
219
250
  await super.startHandler();
220
- this.pairs = createUniswapPoolContracts(assertEx2(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
251
+ this.pairs = createUniswapPoolContracts((0, import_assert2.assertEx)(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
221
252
  return true;
222
253
  }
223
254
  };
224
- export {
255
+ // Annotate the CommonJS export names for ESM import in node:
256
+ 0 && (module.exports = {
225
257
  UniswapCryptoMarketWitness
226
- };
227
- //# sourceMappingURL=Witness.mjs.map
258
+ });
259
+ //# sourceMappingURL=Witness.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../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 { 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_assert"]}
@@ -1,31 +1,10 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
1
  // src/Witness.ts
21
- var Witness_exports = {};
22
- __export(Witness_exports, {
23
- UniswapCryptoMarketWitness: () => UniswapCryptoMarketWitness
24
- });
25
- module.exports = __toCommonJS(Witness_exports);
26
- var import_assert2 = require("@xylabs/assert");
27
- var import_uniswap_crypto_market_payload_plugin = require("@xyo-network/uniswap-crypto-market-payload-plugin");
28
- var import_witness = require("@xyo-network/witness");
2
+ import { assertEx as assertEx2 } from "@xylabs/assert";
3
+ import {
4
+ UniswapCryptoMarketSchema,
5
+ UniswapCryptoMarketWitnessConfigSchema
6
+ } from "@xyo-network/uniswap-crypto-market-payload-plugin";
7
+ import { AbstractWitness } from "@xyo-network/witness";
29
8
 
30
9
  // src/lib/logErrors.ts
31
10
  var logErrors = (func) => {
@@ -46,13 +25,13 @@ var logErrorsAsync = async (func) => {
46
25
  };
47
26
 
48
27
  // src/lib/Ethers/UniSwap3Pair.ts
49
- var import_sdk = require("@uniswap/sdk");
50
- var import_sdk_core = require("@uniswap/sdk-core");
51
- var import_v3_sdk = require("@uniswap/v3-sdk");
52
- var import_assert = require("@xylabs/assert");
53
- var import_delay = require("@xylabs/delay");
54
- var import_typechain = require("@xyo-network/typechain");
55
- var import_uniswap_typechain = require("@xyo-network/uniswap-typechain");
28
+ import { ChainId } from "@uniswap/sdk";
29
+ import { Token } from "@uniswap/sdk-core";
30
+ import { Pool } from "@uniswap/v3-sdk";
31
+ import { assertEx } from "@xylabs/assert";
32
+ import { delay } from "@xylabs/delay";
33
+ import { IERC20Metadata__factory } from "@xyo-network/typechain";
34
+ import * as UniswapTypechain from "@xyo-network/uniswap-typechain";
56
35
 
57
36
  // src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
58
37
  var EthersUniswap3PoolSlot0Wrapper = class {
@@ -86,7 +65,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
86
65
  // src/lib/Ethers/UniSwap3Pair.ts
87
66
  var waitNotNull = async (closure) => {
88
67
  while (closure() === null) {
89
- await (0, import_delay.delay)(10);
68
+ await delay(10);
90
69
  }
91
70
  };
92
71
  var EthersUniSwap3Pair = class {
@@ -106,7 +85,7 @@ var EthersUniSwap3Pair = class {
106
85
  await waitNotNull(() => this._pool);
107
86
  this._pool = this._pool || null;
108
87
  const slot0 = await this.slot0();
109
- this._pool = this._pool ?? new import_v3_sdk.Pool(
88
+ this._pool = this._pool ?? new Pool(
110
89
  await this.token(0),
111
90
  await this.token(1),
112
91
  slot0.feeProtocol,
@@ -114,13 +93,13 @@ var EthersUniSwap3Pair = class {
114
93
  (await this.poolContract().liquidity()).toHexString(),
115
94
  slot0.tick
116
95
  );
117
- return (0, import_assert.assertEx)(this._pool);
96
+ return assertEx(this._pool);
118
97
  });
119
98
  }
120
99
  poolContract() {
121
100
  return logErrors(() => {
122
- this._poolContract = this._poolContract ?? import_uniswap_typechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
123
- return (0, import_assert.assertEx)(this._poolContract);
101
+ this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
102
+ return assertEx(this._poolContract);
124
103
  });
125
104
  }
126
105
  async price() {
@@ -130,7 +109,7 @@ var EthersUniSwap3Pair = class {
130
109
  const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
131
110
  const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
132
111
  const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
133
- const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
112
+ const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
134
113
  const result = {
135
114
  tokens: tokenIndexes.map((value) => {
136
115
  return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
@@ -144,7 +123,7 @@ var EthersUniSwap3Pair = class {
144
123
  await waitNotNull(() => this._slot0);
145
124
  this._slot0 = this._slot0 || null;
146
125
  this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
147
- return (0, import_assert.assertEx)(this._slot0);
126
+ return assertEx(this._slot0);
148
127
  });
149
128
  }
150
129
  async token(index) {
@@ -152,16 +131,16 @@ var EthersUniSwap3Pair = class {
152
131
  await waitNotNull(() => this._tokens[index]);
153
132
  this._tokens[index] = this._tokens[index] || null;
154
133
  const tokenContract = await this.tokenContract(index);
155
- 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());
156
- return (0, import_assert.assertEx)(this._tokens[index]);
134
+ this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
135
+ return assertEx(this._tokens[index]);
157
136
  });
158
137
  }
159
138
  async tokenContract(index) {
160
139
  return await logErrorsAsync(async () => {
161
140
  await waitNotNull(() => this._tokenContracts[index]);
162
141
  this._tokenContracts[index] = this._tokenContracts[index] || null;
163
- this._tokenContracts[index] = this._tokenContracts[index] ?? import_typechain.IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
164
- return (0, import_assert.assertEx)(this._tokenContracts[index]);
142
+ this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
143
+ return assertEx(this._tokenContracts[index]);
165
144
  });
166
145
  }
167
146
  };
@@ -174,7 +153,7 @@ var createUniswapPoolContracts = (provider, contracts) => {
174
153
  };
175
154
 
176
155
  // src/lib/pricesFromUniswap3.ts
177
- var import_promise = require("@xylabs/promise");
156
+ import { fulfilled } from "@xylabs/promise";
178
157
  var pricesFromUniswap3 = async (pools) => {
179
158
  return await logErrorsAsync(async () => {
180
159
  const promiseResults = await Promise.allSettled(
@@ -183,7 +162,7 @@ var pricesFromUniswap3 = async (pools) => {
183
162
  return result;
184
163
  })
185
164
  );
186
- return promiseResults.filter(import_promise.fulfilled).map((result) => result.value);
165
+ return promiseResults.filter(fulfilled).map((result) => result.value);
187
166
  });
188
167
  };
189
168
 
@@ -218,19 +197,19 @@ var UniswapPoolContracts = [
218
197
  ];
219
198
 
220
199
  // src/Witness.ts
221
- var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
222
- static configSchemas = [import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketWitnessConfigSchema];
200
+ var UniswapCryptoMarketWitness = class extends AbstractWitness {
201
+ static configSchemas = [UniswapCryptoMarketWitnessConfigSchema];
223
202
  pairs;
224
203
  get provider() {
225
204
  return this.params.provider;
226
205
  }
227
206
  async observeHandler() {
228
207
  await this.started("throw");
229
- const pairs = await pricesFromUniswap3((0, import_assert2.assertEx)(this.pairs));
208
+ const pairs = await pricesFromUniswap3(assertEx2(this.pairs));
230
209
  const timestamp = Date.now();
231
210
  const payload = {
232
211
  pairs,
233
- schema: import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema,
212
+ schema: UniswapCryptoMarketSchema,
234
213
  timestamp
235
214
  };
236
215
  return [payload];
@@ -238,12 +217,11 @@ var UniswapCryptoMarketWitness = class extends import_witness.AbstractWitness {
238
217
  async startHandler() {
239
218
  var _a;
240
219
  await super.startHandler();
241
- this.pairs = createUniswapPoolContracts((0, import_assert2.assertEx)(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
220
+ this.pairs = createUniswapPoolContracts(assertEx2(this.provider, "Provider Required"), ((_a = this.config) == null ? void 0 : _a.pools) ?? UniswapPoolContracts);
242
221
  return true;
243
222
  }
244
223
  };
245
- // Annotate the CommonJS export names for ESM import in node:
246
- 0 && (module.exports = {
224
+ export {
247
225
  UniswapCryptoMarketWitness
248
- });
226
+ };
249
227
  //# sourceMappingURL=Witness.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../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 { 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_assert"]}
1
+ {"version":3,"sources":["../../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 { 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":["assertEx","assertEx"]}