From ccb7a99a7151a2c4c97ccdeee541adc01c0191bb Mon Sep 17 00:00:00 2001 From: Vu Tien Date: Mon, 16 Dec 2024 09:16:18 +0700 Subject: [PATCH] add ts script to double check rate for aqua pool --- .../syncswapv2/aqua/ts-helper/aqua.ts | 439 +++++++++ .../aqua/ts-helper/package-lock.json | 837 ++++++++++++++++++ .../syncswapv2/aqua/ts-helper/package.json | 14 + 3 files changed, 1290 insertions(+) create mode 100644 pkg/liquidity-source/syncswapv2/aqua/ts-helper/aqua.ts create mode 100644 pkg/liquidity-source/syncswapv2/aqua/ts-helper/package-lock.json create mode 100644 pkg/liquidity-source/syncswapv2/aqua/ts-helper/package.json diff --git a/pkg/liquidity-source/syncswapv2/aqua/ts-helper/aqua.ts b/pkg/liquidity-source/syncswapv2/aqua/ts-helper/aqua.ts new file mode 100644 index 000000000..81492e99a --- /dev/null +++ b/pkg/liquidity-source/syncswapv2/aqua/ts-helper/aqua.ts @@ -0,0 +1,439 @@ +import { BigNumber } from "ethers"; + +export const ZERO: BigNumber = BigNumber.from(0); +export const ONE = BigNumber.from(1); +export const TWO = BigNumber.from(2); +export const THREE = BigNumber.from(3); +export const FOUR = BigNumber.from(4); +export const TEN = BigNumber.from(10); + +// Maximum value of uint256 type +export const UINT256_MAX = BigNumber.from(2).pow(256).sub(1); +export const UINT128_MAX = BigNumber.from(2).pow(128).sub(1); + +export const ETHER = TEN.pow(18); +export const DECIMALS_2 = TEN.pow(2); +export const DECIMALS_3 = TEN.pow(3); +export const DECIMALS_4 = TEN.pow(4); +export const DECIMALS_5 = TEN.pow(5); +export const DECIMALS_6 = TEN.pow(6); +export const DECIMALS_8 = TEN.pow(8); +export const DECIMALS_9 = TEN.pow(9); +export const DECIMALS_10 = TEN.pow(10); +export const DECIMALS_12 = TEN.pow(12); +export const DECIMALS_14 = TEN.pow(14); +export const DECIMALS_15 = TEN.pow(15); +export const DECIMALS_16 = TEN.pow(16); +export const DECIMALS_17 = TEN.pow(17); +export const DECIMALS_18 = TEN.pow(18); +export const DECIMALS_20 = TEN.pow(20); +export const DECIMALS_24 = TEN.pow(24); +export const DECIMALS_26 = TEN.pow(26); +export const DECIMALS_33 = TEN.pow(33); +export const DECIMALS_36 = TEN.pow(36); + + +const MAX_LOOP_LIMIT = 256; +const MAX_FEE = BigNumber.from(100000); // 1e5 +const TWO_MAX_FEE = MAX_FEE.mul(2); // 1e5 +const DEFAULT_STABLE_POOL_A = BigNumber.from(1000); +const MINIMUM_LIQUIDITY = BigNumber.from(1000); +const MAX_XP = UINT128_MAX;//BigNumber.from('3802571709128108338056982581425910818'); + +function computeDFromAdjustedBalances( + A: BigNumber, + xp0: BigNumber, + xp1: BigNumber, + checkOverflow: boolean, +): BigNumber { + const s = xp0.add(xp1); + + if (s.isZero()) { + return ZERO; + } else { + let prevD; + let d = s; + const nA = A.mul(TWO); + + for (let i = 0; i < MAX_LOOP_LIMIT; i++) { + const dSq = d.mul(d); + + if (checkOverflow && dSq.gt(UINT256_MAX)) { + throw Error('overflow'); + } + + const d2 = dSq.div(xp0).mul(d); + if (checkOverflow && d2.gt(UINT256_MAX)) { + throw Error('overflow'); + } + + const dP = d2.div(xp1).div(FOUR); + prevD = d; + + const d0 = nA.mul(s).add(dP.mul(TWO)).mul(d); + if (checkOverflow && d0.gt(UINT256_MAX)) { + throw Error('overflow'); + } + + d = d0.div( + nA.sub(ONE).mul(d).add(dP.mul(THREE)) + ); + + if (d.sub(prevD).abs().lte(ONE)) { + return d; + } + } + + return d; + } +} + +export interface FeeData { + gamma: BigNumber; + minFee: number; + maxFee: number; +} + + +export interface GetAmountParams { + + amount: BigNumber, + reserveIn: BigNumber; + reserveOut: BigNumber; + swapFee: FeeData; + tokenInPrecisionMultiplier?: BigNumber; + tokenOutPrecisionMultiplier?: BigNumber; + + // Aqua pool parameters + swap0For1?:boolean; + a?: BigNumber; + gamma?: BigNumber; + invariantLast?:Bignumber; + futureParamsTime?: Bignumber; + priceScale?:Bignumber; + totalSupply?:Bignumber; + virtualPrice?:Bignumber; +} + +function getAmountOutStable(params: GetAmountParams, checkOverflow: boolean): BigNumber { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const adjustedReserveIn = params.reserveIn.mul(params.tokenInPrecisionMultiplier!); + if (checkOverflow && adjustedReserveIn.gt(MAX_XP)) { + throw Error('overflow'); + } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const adjustedReserveOut = params.reserveOut.mul(params.tokenOutPrecisionMultiplier!); + if (checkOverflow && adjustedReserveOut.gt(MAX_XP)) { + throw Error('overflow'); + } + + const amountIn = params.amount; + const swapFee = params.swapFee.maxFee; + const feeDeductedAmountIn = amountIn.sub(amountIn.mul(swapFee).div(MAX_FEE)); + const a = params.a ?? DEFAULT_STABLE_POOL_A; + const d = computeDFromAdjustedBalances(a, adjustedReserveIn, adjustedReserveOut, checkOverflow); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const x = adjustedReserveIn.add(feeDeductedAmountIn.mul(params.tokenInPrecisionMultiplier!)); + const y = getY(a, x, d); + const dy = adjustedReserveOut.sub(y).sub(1); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const amountOut = dy.div(params.tokenOutPrecisionMultiplier!); + console.log("amountOut",amountOut.toString()); + return amountOut; +} + +function getY(A: BigNumber, x: BigNumber, d: BigNumber): BigNumber { + const nA = A.mul(TWO); + + const c = d.mul(d).div(x.mul(TWO)).mul(d).div(nA.mul(TWO)); + + const b = d.div(nA).add(x); + + let yPrev; + let y = d; + + for (let i = 0; i < MAX_LOOP_LIMIT; i++) { + yPrev = y; + y = y.mul(y).add(c).div(y.mul(TWO).add(b).sub(d)); + + if (y.sub(yPrev).abs().lte(ONE)) { + break; + } + } + + return y; +} + +function getAmountOutAqua(params: GetAmountParams, checkOverflow: boolean, shouldEstimateTweakPrice: boolean): BigNumber { + if (params.reserveIn.isZero() || params.amount.isZero()) { + return ZERO; + } + if (!params.a || !params.gamma || !params.invariantLast || !params.priceScale || !params.futureParamsTime || !params.totalSupply || !params.virtualPrice) { + console.warn('getAmountOutAqua: incomplete params', params); + return ZERO; + } + if (params.a?.isZero() || params.gamma?.isZero() || params.invariantLast?.isZero()) { + console.warn('getAmountOutAqua: invalid params', params); + return ZERO + } + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const tokenInPrecisionMultiplier = params.tokenInPrecisionMultiplier!; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const tokenOutPrecisionMultiplier = params.tokenOutPrecisionMultiplier!; + + // Get XPs. + const amountIn = params.amount; + const balanceIn = params.reserveIn.add(amountIn); + const balanceOut = params.reserveOut; + const priceScale = params.priceScale; + + let xpIn; + let xpOut; + if (params.swap0For1) { + xpIn = balanceIn.mul(tokenInPrecisionMultiplier); + xpOut = balanceOut.mul(priceScale).mul(tokenOutPrecisionMultiplier).div(ETHER); + } else { + xpIn = balanceIn.mul(priceScale).mul(tokenInPrecisionMultiplier).div(ETHER); + xpOut = balanceOut.mul(tokenOutPrecisionMultiplier); + } + + let invariant; + const timestamp = blockTimestamp(); + if (params.futureParamsTime.gt(timestamp)) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + let oldXpIn; + if (params.swap0For1) { + oldXpIn = params.reserveIn.mul(tokenInPrecisionMultiplier); + invariant = cryptoMathComputeD(params.a, params.gamma, oldXpIn, xpOut); + } else { + oldXpIn = params.reserveIn.mul(priceScale).mul(tokenInPrecisionMultiplier).div(ETHER); + invariant = cryptoMathComputeD(params.a, params.gamma, xpOut, oldXpIn); + } + } else { + invariant = params.invariantLast; + } + + if (checkOverflow && balanceIn.gt(UINT128_MAX)) { + throw Error('overflow'); + } + + let amountOutAfterFee; + let newXpOut; // used for estimateTweakPriceAqua + + if (params.swap0For1) { + const y = cryptoMathGetY(params.a, params.gamma, xpIn, xpOut, invariant, 1); + const yOut = xpOut.sub(y); + if (yOut.lte(ONE)) { + return ZERO; + } + + // modify xp out + newXpOut = xpOut.sub(yOut); + + const amountOut = yOut.sub(ONE).mul(ETHER).div(priceScale.mul(tokenOutPrecisionMultiplier)); + const swapFee = getCryptoFee(params.swapFee, xpIn, newXpOut); + const amountFee = amountOut.mul(swapFee).div(DECIMALS_5); + amountOutAfterFee = amountOut.sub(amountFee); + + if (shouldEstimateTweakPrice) { + // update xp out + newXpOut = params.reserveOut.sub(amountOutAfterFee).mul(priceScale.mul(tokenOutPrecisionMultiplier)).div(ETHER); + } + } else { + const y = cryptoMathGetY(params.a, params.gamma, xpOut, xpIn, invariant, 0); + const yOut = xpOut.sub(y); + if (yOut.lte(ONE)) { + return ZERO; + } + + // modify xp out + newXpOut = xpOut.sub(yOut); + + const amountOut = yOut.sub(ONE).div(tokenOutPrecisionMultiplier); + const swapFee = getCryptoFee(params.swapFee, newXpOut, xpIn); + const amountFee = amountOut.mul(swapFee).div(DECIMALS_5); + amountOutAfterFee = amountOut.sub(amountFee); + + if (shouldEstimateTweakPrice) { + // update xp out + newXpOut = params.reserveOut.sub(amountOutAfterFee).mul(tokenOutPrecisionMultiplier); + } + } + + // Calculate price + // Do not use, the last price algorithm has been updated. + /* + let price; + if (amountIn.gt(DECIMALS_5) && amountOutAfterFee.gt(DECIMALS_5)) { + const _amountIn = amountIn.mul(tokenInPrecisionMultiplier); + const _amountOut = amountOutAfterFee.mul(tokenOutPrecisionMultiplier); + if (params.swap0For1) { + price = ETHER.mul(_amountIn).div(_amountOut); + } else { + price = ETHER.mul(_amountOut).div(_amountIn); + } + } + */ + + if (shouldEstimateTweakPrice) { + if (params.swap0For1) { + estimateTweakPriceAqua( + params.a, params.gamma, xpIn, newXpOut, ZERO, params.virtualPrice, priceScale, params.totalSupply, params.futureParamsTime + ); + } else { + estimateTweakPriceAqua( + params.a, params.gamma, newXpOut, xpIn, ZERO, params.virtualPrice, priceScale, params.totalSupply, params.futureParamsTime + ); + } + } + + if (amountOutAfterFee.lte(ZERO)) { + return ZERO; + } else { + return amountOutAfterFee; + } +} + +function getCryptoFee(feeData: FeeData, xp0: BigNumber, xp1: BigNumber): BigNumber { + const gamma: BigNumber = feeData.gamma; + const minFee: BigNumber = BigNumber.from(feeData.minFee); + const maxFee: BigNumber = BigNumber.from(feeData.maxFee); + + //console.log('getCryptoFee', gamma.toString(), minFee.toString(), maxFee.toString()); + //console.log('getCryptoFee xp0', xp0.toString(), 'xp1', xp1.toString()); + let f = xp0.add(xp1); + f = gamma.mul(ETHER).div( + gamma.add(ETHER).sub(ETHER.mul(4).mul(xp0).div(f).mul(xp1).div(f)) + ); + + const fee = minFee.mul(f).add(maxFee.mul(ETHER.sub(f))).div(ETHER); + //console.log('getCryptoFee fee', fee.toString()); + return fee; +} + +function blockTimestamp(): BigNumber { + return BigNumber.from(Math.floor(Date.now() / 1000)); +} + +const A_MULTIPLIER = BigNumber.from(10000); +const N_COINS = BigNumber.from(2); +function cryptoMathGetY(ANN: BigNumber, gamma: BigNumber, x0: BigNumber, x1: BigNumber, D: BigNumber, i: number): BigNumber { + //invariant(D.gte(DECIMALS_17) && D.lte(DECIMALS_33), "unsafe values D"); + if (!(D.gte(DECIMALS_17) && D.lte(DECIMALS_33))) { + //console.warn("cryptoMathGetY: unsafe values D", D.toString()); + return ZERO; + } + + let x_j = x0; + if (i === 0) { + x_j = x1; + } + + let y = D.pow(TWO).div(x_j.mul(N_COINS.pow(TWO))); + const K0_i = ETHER.mul(N_COINS).mul(x_j).div(D); + + //invariant(K0_i.gte(DECIMALS_16.mul(N_COINS)) && K0_i.lte(DECIMALS_20.mul(N_COINS)), "cryptoMathGetY: unsafe values x[i]"); + if (!(K0_i.gte(DECIMALS_16.mul(N_COINS)) && K0_i.lte(DECIMALS_20.mul(N_COINS)))) { + //console.warn("cryptoMathGetY: unsafe values x[i]", K0_i.toString()); + return ZERO; + } + + const convergence_limit = max(max(x_j.div(DECIMALS_14), D.div(DECIMALS_14)), DECIMALS_2); + const __g1k0 = gamma.add(ETHER); + + for (let j = 0; j < 255; j++) { + const y_prev = y; + + const K0 = K0_i.mul(y).mul(N_COINS).div(D); + const S = x_j.add(y); + + let _g1k0 = __g1k0; + if (_g1k0.gt(K0)) { + _g1k0 = _g1k0.sub(K0).add(1); + } else { + _g1k0 = K0.sub(_g1k0).add(1); + } + + const mul1 = (DECIMALS_18.mul(D).div(gamma).mul(_g1k0).div(gamma).mul(_g1k0).mul(A_MULTIPLIER)).div(ANN); + const mul2 = DECIMALS_18.add((TWO.mul(DECIMALS_18)).mul(K0)).div(_g1k0); + + let yfprime = DECIMALS_18.mul(y).add(S.mul(mul2)).add(mul1); + const _dyfprime = D.mul(mul2); + + if (yfprime.lt(_dyfprime)) { + y = y_prev.div(TWO); + continue; + } else { + yfprime = yfprime.sub(_dyfprime); + } + + const fprime = yfprime.div(y); + + const y_minus_temp = mul1.div(fprime); + const y_plus = (yfprime.add(ETHER.mul(D))).div(fprime).add(y_minus_temp.mul(ETHER).div(K0)); + const y_minus = y_minus_temp.add(DECIMALS_18.mul(S).div(fprime)); + + if (y_plus.lt(y_minus)) { + y = y_prev.div(2); + } else { + y = y_plus.sub(y_minus); + } + + let diff; + if (y.gt(y_prev)) { + diff = y.sub(y_prev); + } else { + diff = y_prev.sub(y); + } + + if (diff.lt(max(convergence_limit, y.div(DECIMALS_14)))) { + const frac = y.mul(DECIMALS_18).div(D); + //invariant(frac.gte(DECIMALS_16) && frac.lte(DECIMALS_20), "cryptoMathGetY: unsafe value for y"); + if (!(frac.gte(DECIMALS_16) && frac.lte(DECIMALS_20))) { + //console.warn("cryptoMathGetY: unsafe values for y", frac.toString()); + return ZERO; + } + + return y; + } + } + + //throw new Error("Did not converge"); + console.warn("Did not converge"); + return ZERO; +} + +function max(x: BigNumber, y: BigNumber): BigNumber { + return x.gt(y) ? x : y; +} + +console.log( + getAmountOutAqua( + { + reserveOut: BigNumber.from("193408158540"), + reserveIn: BigNumber.from("8466391136317679557"), + amount: BigNumber.from("1000000000000000000"), + swapFee: { + maxFee: 1000, + gamma: BigNumber.from("230000000000000"), + minFee: 800, + }, + tokenInPrecisionMultiplier: BigNumber.from(1), + tokenOutPrecisionMultiplier: BigNumber.from(1000000000), + + swap0For1: true, + a:BigNumber.from(4000000), + gamma: BigNumber.from("1450000000000000"), + invariantLast: BigNumber.from("18973521177677971086"), + priceScale: BigNumber.from("54451990779514461"), + futureParamsTime: BigNumber.from("1709616182"), + totalSupply: BigNumber.from("37758794556622160853"), + virtualPrice: BigNumber.from("1076695600534779561"), + }, + true, false, + ).toString() +) diff --git a/pkg/liquidity-source/syncswapv2/aqua/ts-helper/package-lock.json b/pkg/liquidity-source/syncswapv2/aqua/ts-helper/package-lock.json new file mode 100644 index 000000000..eb8a87512 --- /dev/null +++ b/pkg/liquidity-source/syncswapv2/aqua/ts-helper/package-lock.json @@ -0,0 +1,837 @@ +{ + "name": "ts-helper", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ts-helper", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "ethers": "^5" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==" + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/pkg/liquidity-source/syncswapv2/aqua/ts-helper/package.json b/pkg/liquidity-source/syncswapv2/aqua/ts-helper/package.json new file mode 100644 index 000000000..7df872fa7 --- /dev/null +++ b/pkg/liquidity-source/syncswapv2/aqua/ts-helper/package.json @@ -0,0 +1,14 @@ +{ + "name": "ts-helper", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "ethers": "^5" + } +}