@xyo-network/uniswap-crypto-market-plugin 2.75.5 → 2.75.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Plugin.cjs +12 -2
- package/dist/browser/Plugin.cjs.map +1 -1
- package/dist/browser/Plugin.js +2 -2
- package/dist/browser/Plugin.js.map +1 -1
- package/dist/browser/Witness.cjs +12 -2
- package/dist/browser/Witness.cjs.map +1 -1
- package/dist/browser/Witness.js +2 -2
- package/dist/browser/Witness.js.map +1 -1
- package/dist/browser/index.cjs +12 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.cjs +12 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.cjs.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
- package/dist/browser/lib/Ethers/UniSwap3Pair.js +2 -2
- package/dist/browser/lib/Ethers/UniSwap3Pair.js.map +1 -1
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.cjs +12 -2
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.cjs.map +1 -1
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.js +2 -2
- package/dist/browser/lib/Ethers/createUniswapPoolContracts.js.map +1 -1
- package/dist/browser/lib/Ethers/index.cjs +12 -2
- package/dist/browser/lib/Ethers/index.cjs.map +1 -1
- package/dist/browser/lib/Ethers/index.js +2 -2
- package/dist/browser/lib/Ethers/index.js.map +1 -1
- package/dist/browser/lib/index.cjs +12 -2
- package/dist/browser/lib/index.cjs.map +1 -1
- package/dist/browser/lib/index.js +2 -2
- package/dist/browser/lib/index.js.map +1 -1
- package/dist/docs.json +961 -927
- package/dist/node/Config.cjs +19 -0
- package/dist/node/Config.cjs.map +1 -0
- package/dist/node/Config.js +0 -18
- package/dist/node/Config.js.map +1 -1
- package/dist/node/{Plugin.mjs → Plugin.cjs} +71 -39
- package/dist/node/Plugin.cjs.map +1 -0
- package/dist/node/Plugin.js +38 -60
- package/dist/node/Plugin.js.map +1 -1
- package/dist/node/{Witness.mjs → Witness.cjs} +66 -34
- package/dist/node/Witness.cjs.map +1 -0
- package/dist/node/Witness.js +33 -55
- package/dist/node/Witness.js.map +1 -1
- package/dist/node/index.cjs +293 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +39 -69
- package/dist/node/index.js.map +1 -1
- package/dist/node/lib/Ethers/{UniSwap3Pair.mjs → UniSwap3Pair.cjs} +56 -21
- package/dist/node/lib/Ethers/UniSwap3Pair.cjs.map +1 -0
- package/dist/node/lib/Ethers/UniSwap3Pair.d.cts +2 -2
- package/dist/node/lib/Ethers/UniSwap3Pair.d.cts.map +1 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.d.mts +2 -2
- package/dist/node/lib/Ethers/UniSwap3Pair.d.mts.map +1 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.d.ts +2 -2
- package/dist/node/lib/Ethers/UniSwap3Pair.d.ts.map +1 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.js +20 -45
- package/dist/node/lib/Ethers/UniSwap3Pair.js.map +1 -1
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.cjs +57 -0
- package/dist/node/lib/Ethers/{Uniswap3PoolSlot0Wrapper.mjs.map → Uniswap3PoolSlot0Wrapper.cjs.map} +1 -1
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.js +2 -27
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.js.map +1 -1
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.cjs +19 -0
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.cjs.map +1 -0
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.js +0 -18
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.js.map +1 -1
- package/dist/node/lib/Ethers/{createUniswapPoolContracts.mjs → createUniswapPoolContracts.cjs} +58 -21
- package/dist/node/lib/Ethers/createUniswapPoolContracts.cjs.map +1 -0
- package/dist/node/lib/Ethers/createUniswapPoolContracts.js +20 -47
- package/dist/node/lib/Ethers/createUniswapPoolContracts.js.map +1 -1
- package/dist/node/lib/Ethers/{index.mjs → index.cjs} +60 -21
- package/dist/node/lib/Ethers/index.cjs.map +1 -0
- package/dist/node/lib/Ethers/index.js +20 -49
- package/dist/node/lib/Ethers/index.js.map +1 -1
- package/dist/node/lib/UniswapPoolContracts.cjs +58 -0
- package/dist/node/lib/{UniswapPoolContracts.mjs.map → UniswapPoolContracts.cjs.map} +1 -1
- package/dist/node/lib/UniswapPoolContracts.js +2 -27
- package/dist/node/lib/UniswapPoolContracts.js.map +1 -1
- package/dist/node/lib/UniswapV3Slot0Fields.cjs +19 -0
- package/dist/node/lib/UniswapV3Slot0Fields.cjs.map +1 -0
- package/dist/node/lib/UniswapV3Slot0Fields.js +0 -18
- package/dist/node/lib/UniswapV3Slot0Fields.js.map +1 -1
- package/dist/node/{index.mjs → lib/index.cjs} +62 -77
- package/dist/node/lib/index.cjs.map +1 -0
- package/dist/node/lib/index.js +22 -53
- package/dist/node/lib/index.js.map +1 -1
- package/dist/node/lib/logErrors.cjs +48 -0
- package/dist/node/lib/{logErrors.mjs.map → logErrors.cjs.map} +1 -1
- package/dist/node/lib/logErrors.js +2 -28
- package/dist/node/lib/logErrors.js.map +1 -1
- package/dist/node/lib/pricesFromUniswap3.cjs +54 -0
- package/dist/node/lib/{pricesFromUniswap3.mjs.map → pricesFromUniswap3.cjs.map} +1 -1
- package/dist/node/lib/pricesFromUniswap3.js +4 -29
- package/dist/node/lib/pricesFromUniswap3.js.map +1 -1
- package/package.json +16 -15
- package/src/lib/Ethers/UniSwap3Pair.ts +4 -4
- package/dist/node/Config.mjs +0 -1
- package/dist/node/Config.mjs.map +0 -1
- package/dist/node/Plugin.mjs.map +0 -1
- package/dist/node/Witness.mjs.map +0 -1
- package/dist/node/index.mjs.map +0 -1
- package/dist/node/lib/Ethers/UniSwap3Pair.mjs.map +0 -1
- package/dist/node/lib/Ethers/Uniswap3PoolSlot0Wrapper.mjs +0 -32
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.mjs +0 -1
- package/dist/node/lib/Ethers/UniswapV3Slot0Fields.mjs.map +0 -1
- package/dist/node/lib/Ethers/createUniswapPoolContracts.mjs.map +0 -1
- package/dist/node/lib/Ethers/index.mjs.map +0 -1
- package/dist/node/lib/UniswapPoolContracts.mjs +0 -33
- package/dist/node/lib/UniswapV3Slot0Fields.mjs +0 -1
- package/dist/node/lib/UniswapV3Slot0Fields.mjs.map +0 -1
- package/dist/node/lib/index.mjs +0 -197
- package/dist/node/lib/index.mjs.map +0 -1
- package/dist/node/lib/logErrors.mjs +0 -22
- package/dist/node/lib/pricesFromUniswap3.mjs +0 -29
package/dist/node/lib/Ethers/{createUniswapPoolContracts.mjs → createUniswapPoolContracts.cjs}
RENAMED
|
@@ -1,3 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/lib/Ethers/createUniswapPoolContracts.ts
|
|
31
|
+
var createUniswapPoolContracts_exports = {};
|
|
32
|
+
__export(createUniswapPoolContracts_exports, {
|
|
33
|
+
createUniswapPoolContracts: () => createUniswapPoolContracts
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(createUniswapPoolContracts_exports);
|
|
36
|
+
|
|
1
37
|
// src/lib/logErrors.ts
|
|
2
38
|
var logErrors = (func) => {
|
|
3
39
|
try {
|
|
@@ -17,13 +53,13 @@ var logErrorsAsync = async (func) => {
|
|
|
17
53
|
};
|
|
18
54
|
|
|
19
55
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
56
|
+
var import_sdk = require("@uniswap/sdk");
|
|
57
|
+
var import_sdk_core = require("@uniswap/sdk-core");
|
|
58
|
+
var import_v3_sdk = require("@uniswap/v3-sdk");
|
|
59
|
+
var import_assert = require("@xylabs/assert");
|
|
60
|
+
var import_delay = require("@xylabs/delay");
|
|
61
|
+
var import_typechain = require("@xyo-network/typechain");
|
|
62
|
+
var UniswapTypechain = __toESM(require("@xyo-network/uniswap-typechain"), 1);
|
|
27
63
|
|
|
28
64
|
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
29
65
|
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
@@ -57,7 +93,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
|
|
|
57
93
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
58
94
|
var waitNotNull = async (closure) => {
|
|
59
95
|
while (closure() === null) {
|
|
60
|
-
await delay(10);
|
|
96
|
+
await (0, import_delay.delay)(10);
|
|
61
97
|
}
|
|
62
98
|
};
|
|
63
99
|
var EthersUniSwap3Pair = class {
|
|
@@ -77,7 +113,7 @@ var EthersUniSwap3Pair = class {
|
|
|
77
113
|
await waitNotNull(() => this._pool);
|
|
78
114
|
this._pool = this._pool || null;
|
|
79
115
|
const slot0 = await this.slot0();
|
|
80
|
-
this._pool = this._pool ?? new Pool(
|
|
116
|
+
this._pool = this._pool ?? new import_v3_sdk.Pool(
|
|
81
117
|
await this.token(0),
|
|
82
118
|
await this.token(1),
|
|
83
119
|
slot0.feeProtocol,
|
|
@@ -85,13 +121,13 @@ var EthersUniSwap3Pair = class {
|
|
|
85
121
|
(await this.poolContract().liquidity()).toHexString(),
|
|
86
122
|
slot0.tick
|
|
87
123
|
);
|
|
88
|
-
return assertEx(this._pool);
|
|
124
|
+
return (0, import_assert.assertEx)(this._pool);
|
|
89
125
|
});
|
|
90
126
|
}
|
|
91
127
|
poolContract() {
|
|
92
128
|
return logErrors(() => {
|
|
93
|
-
this._poolContract = this._poolContract ?? IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
94
|
-
return assertEx(this._poolContract);
|
|
129
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
130
|
+
return (0, import_assert.assertEx)(this._poolContract);
|
|
95
131
|
});
|
|
96
132
|
}
|
|
97
133
|
async price() {
|
|
@@ -101,7 +137,7 @@ var EthersUniSwap3Pair = class {
|
|
|
101
137
|
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
102
138
|
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
103
139
|
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
104
|
-
const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
140
|
+
const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
105
141
|
const result = {
|
|
106
142
|
tokens: tokenIndexes.map((value) => {
|
|
107
143
|
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
@@ -115,7 +151,7 @@ var EthersUniSwap3Pair = class {
|
|
|
115
151
|
await waitNotNull(() => this._slot0);
|
|
116
152
|
this._slot0 = this._slot0 || null;
|
|
117
153
|
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
118
|
-
return assertEx(this._slot0);
|
|
154
|
+
return (0, import_assert.assertEx)(this._slot0);
|
|
119
155
|
});
|
|
120
156
|
}
|
|
121
157
|
async token(index) {
|
|
@@ -123,16 +159,16 @@ var EthersUniSwap3Pair = class {
|
|
|
123
159
|
await waitNotNull(() => this._tokens[index]);
|
|
124
160
|
this._tokens[index] = this._tokens[index] || null;
|
|
125
161
|
const tokenContract = await this.tokenContract(index);
|
|
126
|
-
this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
|
|
127
|
-
return assertEx(this._tokens[index]);
|
|
162
|
+
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());
|
|
163
|
+
return (0, import_assert.assertEx)(this._tokens[index]);
|
|
128
164
|
});
|
|
129
165
|
}
|
|
130
166
|
async tokenContract(index) {
|
|
131
167
|
return await logErrorsAsync(async () => {
|
|
132
168
|
await waitNotNull(() => this._tokenContracts[index]);
|
|
133
169
|
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
134
|
-
this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
135
|
-
return assertEx(this._tokenContracts[index]);
|
|
170
|
+
this._tokenContracts[index] = this._tokenContracts[index] ?? import_typechain.IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
171
|
+
return (0, import_assert.assertEx)(this._tokenContracts[index]);
|
|
136
172
|
});
|
|
137
173
|
}
|
|
138
174
|
};
|
|
@@ -143,7 +179,8 @@ var createUniswapPoolContracts = (provider, contracts) => {
|
|
|
143
179
|
return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
|
|
144
180
|
});
|
|
145
181
|
};
|
|
146
|
-
export
|
|
182
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
183
|
+
0 && (module.exports = {
|
|
147
184
|
createUniswapPoolContracts
|
|
148
|
-
};
|
|
149
|
-
//# sourceMappingURL=createUniswapPoolContracts.
|
|
185
|
+
});
|
|
186
|
+
//# sourceMappingURL=createUniswapPoolContracts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/Ethers/createUniswapPoolContracts.ts","../../../../src/lib/logErrors.ts","../../../../src/lib/Ethers/UniSwap3Pair.ts","../../../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts"],"sourcesContent":["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","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"],"mappings":"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","names":[]}
|
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/lib/Ethers/createUniswapPoolContracts.ts
|
|
21
|
-
var createUniswapPoolContracts_exports = {};
|
|
22
|
-
__export(createUniswapPoolContracts_exports, {
|
|
23
|
-
createUniswapPoolContracts: () => createUniswapPoolContracts
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(createUniswapPoolContracts_exports);
|
|
26
|
-
|
|
27
1
|
// src/lib/logErrors.ts
|
|
28
2
|
var logErrors = (func) => {
|
|
29
3
|
try {
|
|
@@ -43,13 +17,13 @@ var logErrorsAsync = async (func) => {
|
|
|
43
17
|
};
|
|
44
18
|
|
|
45
19
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
20
|
+
import { ChainId } from "@uniswap/sdk";
|
|
21
|
+
import { Token } from "@uniswap/sdk-core";
|
|
22
|
+
import { Pool } from "@uniswap/v3-sdk";
|
|
23
|
+
import { assertEx } from "@xylabs/assert";
|
|
24
|
+
import { delay } from "@xylabs/delay";
|
|
25
|
+
import { IERC20Metadata__factory } from "@xyo-network/typechain";
|
|
26
|
+
import * as UniswapTypechain from "@xyo-network/uniswap-typechain";
|
|
53
27
|
|
|
54
28
|
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
55
29
|
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
@@ -83,7 +57,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
|
|
|
83
57
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
84
58
|
var waitNotNull = async (closure) => {
|
|
85
59
|
while (closure() === null) {
|
|
86
|
-
await
|
|
60
|
+
await delay(10);
|
|
87
61
|
}
|
|
88
62
|
};
|
|
89
63
|
var EthersUniSwap3Pair = class {
|
|
@@ -103,7 +77,7 @@ var EthersUniSwap3Pair = class {
|
|
|
103
77
|
await waitNotNull(() => this._pool);
|
|
104
78
|
this._pool = this._pool || null;
|
|
105
79
|
const slot0 = await this.slot0();
|
|
106
|
-
this._pool = this._pool ?? new
|
|
80
|
+
this._pool = this._pool ?? new Pool(
|
|
107
81
|
await this.token(0),
|
|
108
82
|
await this.token(1),
|
|
109
83
|
slot0.feeProtocol,
|
|
@@ -111,13 +85,13 @@ var EthersUniSwap3Pair = class {
|
|
|
111
85
|
(await this.poolContract().liquidity()).toHexString(),
|
|
112
86
|
slot0.tick
|
|
113
87
|
);
|
|
114
|
-
return
|
|
88
|
+
return assertEx(this._pool);
|
|
115
89
|
});
|
|
116
90
|
}
|
|
117
91
|
poolContract() {
|
|
118
92
|
return logErrors(() => {
|
|
119
|
-
this._poolContract = this._poolContract ??
|
|
120
|
-
return
|
|
93
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
94
|
+
return assertEx(this._poolContract);
|
|
121
95
|
});
|
|
122
96
|
}
|
|
123
97
|
async price() {
|
|
@@ -127,7 +101,7 @@ var EthersUniSwap3Pair = class {
|
|
|
127
101
|
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
128
102
|
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
129
103
|
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
130
|
-
const tokenSymbols = tokens.map((token, index) =>
|
|
104
|
+
const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
131
105
|
const result = {
|
|
132
106
|
tokens: tokenIndexes.map((value) => {
|
|
133
107
|
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
@@ -141,7 +115,7 @@ var EthersUniSwap3Pair = class {
|
|
|
141
115
|
await waitNotNull(() => this._slot0);
|
|
142
116
|
this._slot0 = this._slot0 || null;
|
|
143
117
|
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
144
|
-
return
|
|
118
|
+
return assertEx(this._slot0);
|
|
145
119
|
});
|
|
146
120
|
}
|
|
147
121
|
async token(index) {
|
|
@@ -149,16 +123,16 @@ var EthersUniSwap3Pair = class {
|
|
|
149
123
|
await waitNotNull(() => this._tokens[index]);
|
|
150
124
|
this._tokens[index] = this._tokens[index] || null;
|
|
151
125
|
const tokenContract = await this.tokenContract(index);
|
|
152
|
-
this._tokens[index] = this._tokens[index] ?? new
|
|
153
|
-
return
|
|
126
|
+
this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
|
|
127
|
+
return assertEx(this._tokens[index]);
|
|
154
128
|
});
|
|
155
129
|
}
|
|
156
130
|
async tokenContract(index) {
|
|
157
131
|
return await logErrorsAsync(async () => {
|
|
158
132
|
await waitNotNull(() => this._tokenContracts[index]);
|
|
159
133
|
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
160
|
-
this._tokenContracts[index] = this._tokenContracts[index] ??
|
|
161
|
-
return
|
|
134
|
+
this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
135
|
+
return assertEx(this._tokenContracts[index]);
|
|
162
136
|
});
|
|
163
137
|
}
|
|
164
138
|
};
|
|
@@ -169,8 +143,7 @@ var createUniswapPoolContracts = (provider, contracts) => {
|
|
|
169
143
|
return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
|
|
170
144
|
});
|
|
171
145
|
};
|
|
172
|
-
|
|
173
|
-
0 && (module.exports = {
|
|
146
|
+
export {
|
|
174
147
|
createUniswapPoolContracts
|
|
175
|
-
}
|
|
148
|
+
};
|
|
176
149
|
//# sourceMappingURL=createUniswapPoolContracts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/logErrors.ts","../../../../src/lib/Ethers/UniSwap3Pair.ts","../../../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts","../../../../src/lib/Ethers/createUniswapPoolContracts.ts"],"sourcesContent":["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"],"mappings":"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","names":[]}
|
|
@@ -1,3 +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
|
+
|
|
30
|
+
// src/lib/Ethers/index.ts
|
|
31
|
+
var Ethers_exports = {};
|
|
32
|
+
__export(Ethers_exports, {
|
|
33
|
+
EthersUniSwap3Pair: () => EthersUniSwap3Pair,
|
|
34
|
+
EthersUniswap3PoolSlot0Wrapper: () => EthersUniswap3PoolSlot0Wrapper,
|
|
35
|
+
createUniswapPoolContracts: () => createUniswapPoolContracts
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(Ethers_exports);
|
|
38
|
+
|
|
1
39
|
// src/lib/logErrors.ts
|
|
2
40
|
var logErrors = (func) => {
|
|
3
41
|
try {
|
|
@@ -17,13 +55,13 @@ var logErrorsAsync = async (func) => {
|
|
|
17
55
|
};
|
|
18
56
|
|
|
19
57
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
58
|
+
var import_sdk = require("@uniswap/sdk");
|
|
59
|
+
var import_sdk_core = require("@uniswap/sdk-core");
|
|
60
|
+
var import_v3_sdk = require("@uniswap/v3-sdk");
|
|
61
|
+
var import_assert = require("@xylabs/assert");
|
|
62
|
+
var import_delay = require("@xylabs/delay");
|
|
63
|
+
var import_typechain = require("@xyo-network/typechain");
|
|
64
|
+
var UniswapTypechain = __toESM(require("@xyo-network/uniswap-typechain"), 1);
|
|
27
65
|
|
|
28
66
|
// src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts
|
|
29
67
|
var EthersUniswap3PoolSlot0Wrapper = class {
|
|
@@ -57,7 +95,7 @@ var EthersUniswap3PoolSlot0Wrapper = class {
|
|
|
57
95
|
// src/lib/Ethers/UniSwap3Pair.ts
|
|
58
96
|
var waitNotNull = async (closure) => {
|
|
59
97
|
while (closure() === null) {
|
|
60
|
-
await delay(10);
|
|
98
|
+
await (0, import_delay.delay)(10);
|
|
61
99
|
}
|
|
62
100
|
};
|
|
63
101
|
var EthersUniSwap3Pair = class {
|
|
@@ -77,7 +115,7 @@ var EthersUniSwap3Pair = class {
|
|
|
77
115
|
await waitNotNull(() => this._pool);
|
|
78
116
|
this._pool = this._pool || null;
|
|
79
117
|
const slot0 = await this.slot0();
|
|
80
|
-
this._pool = this._pool ?? new Pool(
|
|
118
|
+
this._pool = this._pool ?? new import_v3_sdk.Pool(
|
|
81
119
|
await this.token(0),
|
|
82
120
|
await this.token(1),
|
|
83
121
|
slot0.feeProtocol,
|
|
@@ -85,13 +123,13 @@ var EthersUniSwap3Pair = class {
|
|
|
85
123
|
(await this.poolContract().liquidity()).toHexString(),
|
|
86
124
|
slot0.tick
|
|
87
125
|
);
|
|
88
|
-
return assertEx(this._pool);
|
|
126
|
+
return (0, import_assert.assertEx)(this._pool);
|
|
89
127
|
});
|
|
90
128
|
}
|
|
91
129
|
poolContract() {
|
|
92
130
|
return logErrors(() => {
|
|
93
|
-
this._poolContract = this._poolContract ?? IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
94
|
-
return assertEx(this._poolContract);
|
|
131
|
+
this._poolContract = this._poolContract ?? UniswapTypechain.IUniswapV3Pool__factory.connect(this.address, this.provider);
|
|
132
|
+
return (0, import_assert.assertEx)(this._poolContract);
|
|
95
133
|
});
|
|
96
134
|
}
|
|
97
135
|
async price() {
|
|
@@ -101,7 +139,7 @@ var EthersUniSwap3Pair = class {
|
|
|
101
139
|
const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
|
|
102
140
|
const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
|
|
103
141
|
const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
|
|
104
|
-
const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
142
|
+
const tokenSymbols = tokens.map((token, index) => (0, import_assert.assertEx)(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
|
|
105
143
|
const result = {
|
|
106
144
|
tokens: tokenIndexes.map((value) => {
|
|
107
145
|
return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
|
|
@@ -115,7 +153,7 @@ var EthersUniSwap3Pair = class {
|
|
|
115
153
|
await waitNotNull(() => this._slot0);
|
|
116
154
|
this._slot0 = this._slot0 || null;
|
|
117
155
|
this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
|
|
118
|
-
return assertEx(this._slot0);
|
|
156
|
+
return (0, import_assert.assertEx)(this._slot0);
|
|
119
157
|
});
|
|
120
158
|
}
|
|
121
159
|
async token(index) {
|
|
@@ -123,16 +161,16 @@ var EthersUniSwap3Pair = class {
|
|
|
123
161
|
await waitNotNull(() => this._tokens[index]);
|
|
124
162
|
this._tokens[index] = this._tokens[index] || null;
|
|
125
163
|
const tokenContract = await this.tokenContract(index);
|
|
126
|
-
this._tokens[index] = this._tokens[index] ?? new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
|
|
127
|
-
return assertEx(this._tokens[index]);
|
|
164
|
+
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());
|
|
165
|
+
return (0, import_assert.assertEx)(this._tokens[index]);
|
|
128
166
|
});
|
|
129
167
|
}
|
|
130
168
|
async tokenContract(index) {
|
|
131
169
|
return await logErrorsAsync(async () => {
|
|
132
170
|
await waitNotNull(() => this._tokenContracts[index]);
|
|
133
171
|
this._tokenContracts[index] = this._tokenContracts[index] || null;
|
|
134
|
-
this._tokenContracts[index] = this._tokenContracts[index] ?? IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
135
|
-
return assertEx(this._tokenContracts[index]);
|
|
172
|
+
this._tokenContracts[index] = this._tokenContracts[index] ?? import_typechain.IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
|
|
173
|
+
return (0, import_assert.assertEx)(this._tokenContracts[index]);
|
|
136
174
|
});
|
|
137
175
|
}
|
|
138
176
|
};
|
|
@@ -143,9 +181,10 @@ var createUniswapPoolContracts = (provider, contracts) => {
|
|
|
143
181
|
return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
|
|
144
182
|
});
|
|
145
183
|
};
|
|
146
|
-
export
|
|
184
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
185
|
+
0 && (module.exports = {
|
|
147
186
|
EthersUniSwap3Pair,
|
|
148
187
|
EthersUniswap3PoolSlot0Wrapper,
|
|
149
188
|
createUniswapPoolContracts
|
|
150
|
-
};
|
|
151
|
-
//# sourceMappingURL=index.
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/Ethers/index.ts","../../../../src/lib/logErrors.ts","../../../../src/lib/Ethers/UniSwap3Pair.ts","../../../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts","../../../../src/lib/Ethers/createUniswapPoolContracts.ts"],"sourcesContent":["export * from './createUniswapPoolContracts'\nexport * from './UniSwap3Pair'\nexport * from './Uniswap3PoolSlot0Wrapper'\nexport * from './UniswapV3Slot0Fields'\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"],"mappings":"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","names":[]}
|