From 10380908ddc54aeb9e3cd7e6f68a00c7c61e0acc Mon Sep 17 00:00:00 2001 From: nigiri <168690269+0xnigir1@users.noreply.github.com> Date: Mon, 15 Jul 2024 16:42:49 -0300 Subject: [PATCH] feat: base evm provider wrapper --- libs/abis/.gitignore | 1 + libs/abis/src/abi/GettersFacet.json | 340 ++++++++++++++++++ libs/abis/src/index.ts | 1 + libs/abis/tsconfig.lib.json | 9 + .../src/ethersEvmProvider.service.ts | 65 ++++ .../src/interfaces/evmProvider.interface.ts | 12 + .../src/interfaces/feeParams.interface.ts | 8 + libs/providers/src/interfaces/index.ts | 2 + libs/providers/src/providers.module.ts | 5 +- libs/providers/src/types/evm.type.ts | 1 + libs/providers/src/types/index.ts | 1 + nest-cli.json | 85 +++-- package.json | 10 +- pnpm-lock.yaml | 281 +++++++++++++++ tsconfig.json | 62 ++-- 15 files changed, 815 insertions(+), 68 deletions(-) create mode 100644 libs/abis/.gitignore create mode 100644 libs/abis/src/abi/GettersFacet.json create mode 100644 libs/abis/src/index.ts create mode 100644 libs/abis/tsconfig.lib.json create mode 100644 libs/providers/src/ethersEvmProvider.service.ts create mode 100644 libs/providers/src/interfaces/evmProvider.interface.ts create mode 100644 libs/providers/src/interfaces/feeParams.interface.ts create mode 100644 libs/providers/src/interfaces/index.ts create mode 100644 libs/providers/src/types/evm.type.ts create mode 100644 libs/providers/src/types/index.ts diff --git a/libs/abis/.gitignore b/libs/abis/.gitignore new file mode 100644 index 0000000..e15405d --- /dev/null +++ b/libs/abis/.gitignore @@ -0,0 +1 @@ +/src/types \ No newline at end of file diff --git a/libs/abis/src/abi/GettersFacet.json b/libs/abis/src/abi/GettersFacet.json new file mode 100644 index 0000000..fb9773d --- /dev/null +++ b/libs/abis/src/abi/GettersFacet.json @@ -0,0 +1,340 @@ +[ + { + "inputs": [], + "name": "baseTokenGasPriceMultiplierDenominator", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseTokenGasPriceMultiplierNominator", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "_selector", "type": "bytes4" }], + "name": "facetAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_facet", "type": "address" }], + "name": "facetFunctionSelectors", + "outputs": [{ "internalType": "bytes4[]", "name": "", "type": "bytes4[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "addr", "type": "address" }, + { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } + ], + "internalType": "struct IGetters.Facet[]", + "name": "result", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAdmin", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBaseToken", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBaseTokenBridge", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBridgehub", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFirstUnprocessedPriorityTx", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getL2BootloaderBytecodeHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getL2DefaultAccountBytecodeHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getL2SystemContractsUpgradeBatchNumber", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getL2SystemContractsUpgradeBlockNumber", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getL2SystemContractsUpgradeTxHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPendingAdmin", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPriorityQueueSize", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPriorityTxMaxGasLimit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getProtocolVersion", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPubdataPricingMode", + "outputs": [{ "internalType": "enum PubdataPricingMode", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSemverProtocolVersion", + "outputs": [ + { "internalType": "uint32", "name": "", "type": "uint32" }, + { "internalType": "uint32", "name": "", "type": "uint32" }, + { "internalType": "uint32", "name": "", "type": "uint32" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStateTransitionManager", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalBatchesCommitted", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalBatchesExecuted", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalBatchesVerified", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalBlocksCommitted", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalBlocksExecuted", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalBlocksVerified", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalPriorityTxs", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVerifier", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVerifierParams", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "recursionNodeLevelVkHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "recursionLeafLevelVkHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "recursionCircuitsSetVksHash", + "type": "bytes32" + } + ], + "internalType": "struct VerifierParams", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isDiamondStorageFrozen", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_l2BatchNumber", "type": "uint256" }, + { "internalType": "uint256", "name": "_l2MessageIndex", "type": "uint256" } + ], + "name": "isEthWithdrawalFinalized", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_facet", "type": "address" }], + "name": "isFacetFreezable", + "outputs": [{ "internalType": "bool", "name": "isFreezable", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "_selector", "type": "bytes4" }], + "name": "isFunctionFreezable", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_address", "type": "address" }], + "name": "isValidator", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_batchNumber", "type": "uint256" }], + "name": "l2LogsRootHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "priorityQueueFrontOperation", + "outputs": [ + { + "components": [ + { "internalType": "bytes32", "name": "canonicalTxHash", "type": "bytes32" }, + { "internalType": "uint64", "name": "expirationTimestamp", "type": "uint64" }, + { "internalType": "uint192", "name": "layer2Tip", "type": "uint192" } + ], + "internalType": "struct PriorityOperation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_batchNumber", "type": "uint256" }], + "name": "storedBatchHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_batchNumber", "type": "uint256" }], + "name": "storedBlockHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/libs/abis/src/index.ts b/libs/abis/src/index.ts new file mode 100644 index 0000000..eea524d --- /dev/null +++ b/libs/abis/src/index.ts @@ -0,0 +1 @@ +export * from "./types"; diff --git a/libs/abis/tsconfig.lib.json b/libs/abis/tsconfig.lib.json new file mode 100644 index 0000000..b52e454 --- /dev/null +++ b/libs/abis/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "../../dist/libs/abis" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/libs/providers/src/ethersEvmProvider.service.ts b/libs/providers/src/ethersEvmProvider.service.ts new file mode 100644 index 0000000..5acd9c9 --- /dev/null +++ b/libs/providers/src/ethersEvmProvider.service.ts @@ -0,0 +1,65 @@ +import { Injectable } from "@nestjs/common"; +import { FeeParams, IEvmProvider } from "@packages/providers/interfaces"; +import { Address } from "@packages/providers/types"; +import { GettersFacet__factory } from "@shared/abis"; +import { AbiCoder, JsonRpcProvider, Provider } from "ethers"; + +@Injectable() +export class EthersEvmProviderService implements IEvmProvider { + private readonly FEE_PARAMS_SLOT = + 0x0000000000000000000000000000000000000000000000000000000000000026n; + + provider: Provider; + abiCoder: AbiCoder; + + constructor(rpcUrl: string) { + this.provider = new JsonRpcProvider(rpcUrl); + this.abiCoder = AbiCoder.defaultAbiCoder(); + } + async getGasPrice(): Promise { + const { gasPrice } = await this.provider.getFeeData(); + + return gasPrice; + } + getTvl(): Promise { + throw new Error("Method not implemented."); + } + + async getChainType(diamondProxyAddress: Address): Promise<"Rollup" | "Validium"> { + const gettersFacet = GettersFacet__factory.connect(diamondProxyAddress, this.provider); + const chainType = await gettersFacet.getPubdataPricingMode(); + + return chainType === 0n ? "Rollup" : "Validium"; + } + async getTotalBatchesCommitted(diamondProxyAddress: Address): Promise { + const gettersFacet = GettersFacet__factory.connect(diamondProxyAddress, this.provider); + return gettersFacet.getTotalBatchesCommitted(); + } + async getTotalBatchesVerified(diamondProxyAddress: Address): Promise { + const gettersFacet = GettersFacet__factory.connect(diamondProxyAddress, this.provider); + return gettersFacet.getTotalBatchesVerified(); + } + async getTotalBatchesExecuted(diamondProxyAddress: Address): Promise { + const gettersFacet = GettersFacet__factory.connect(diamondProxyAddress, this.provider); + return gettersFacet.getTotalBatchesExecuted(); + } + async getFeeParams(diamondProxyAddress: Address): Promise { + const feeParams = await this.provider.getStorage(diamondProxyAddress, this.FEE_PARAMS_SLOT); + + const decodedFeeParams = this.decodeResponseData(feeParams, [ + "uint8", + "uint32", + "uint32", + "uint32", + "uint32", + "uint64", + ]) as FeeParams; + + return decodedFeeParams; + } + + private decodeResponseData(data: string, decodeTypes: string[]): unknown { + const [decoded] = this.abiCoder.decode(decodeTypes, data); + return decoded; + } +} diff --git a/libs/providers/src/interfaces/evmProvider.interface.ts b/libs/providers/src/interfaces/evmProvider.interface.ts new file mode 100644 index 0000000..d91dfaf --- /dev/null +++ b/libs/providers/src/interfaces/evmProvider.interface.ts @@ -0,0 +1,12 @@ +import { FeeParams } from "@packages/providers/interfaces/feeParams.interface"; +import { Address } from "@packages/providers/types/evm.type"; + +export interface IEvmProvider { + getGasPrice(): Promise; + getTvl(): Promise; + getChainType(diamondProxyAddress: Address): Promise<"Rollup" | "Validium">; + getTotalBatchesCommitted(diamondProxyAddress: Address): Promise; + getTotalBatchesVerified(diamondProxyAddress: Address): Promise; + getTotalBatchesExecuted(diamondProxyAddress: Address): Promise; + getFeeParams(diamondProxyAddress: Address): Promise; +} diff --git a/libs/providers/src/interfaces/feeParams.interface.ts b/libs/providers/src/interfaces/feeParams.interface.ts new file mode 100644 index 0000000..090eb26 --- /dev/null +++ b/libs/providers/src/interfaces/feeParams.interface.ts @@ -0,0 +1,8 @@ +export interface FeeParams { + pubdataPricingMode: number; + batchOverheadL1Gas: number; + maxPubdataPerBatch: number; + maxL2GasPerBatch: number; + priorityTxMaxPubdata: number; + minimalL2GasPrice: bigint; +} diff --git a/libs/providers/src/interfaces/index.ts b/libs/providers/src/interfaces/index.ts new file mode 100644 index 0000000..fc25b31 --- /dev/null +++ b/libs/providers/src/interfaces/index.ts @@ -0,0 +1,2 @@ +export * from "./evmProvider.interface"; +export * from "./feeParams.interface"; diff --git a/libs/providers/src/providers.module.ts b/libs/providers/src/providers.module.ts index 686bcbf..c36d2e1 100644 --- a/libs/providers/src/providers.module.ts +++ b/libs/providers/src/providers.module.ts @@ -1,9 +1,10 @@ import { Module } from "@nestjs/common"; +import { EthersEvmProviderService } from "@packages/providers/ethersEvmProvider.service"; import { EvmProviderService } from "./evmProvider.service"; @Module({ - providers: [EvmProviderService], - exports: [EvmProviderService], + providers: [EvmProviderService, EthersEvmProviderService], + exports: [EvmProviderService, EthersEvmProviderService], }) export class ProvidersModule {} diff --git a/libs/providers/src/types/evm.type.ts b/libs/providers/src/types/evm.type.ts new file mode 100644 index 0000000..0679a0c --- /dev/null +++ b/libs/providers/src/types/evm.type.ts @@ -0,0 +1 @@ +export type Address = string; diff --git a/libs/providers/src/types/index.ts b/libs/providers/src/types/index.ts new file mode 100644 index 0000000..40237ab --- /dev/null +++ b/libs/providers/src/types/index.ts @@ -0,0 +1 @@ +export * from "./evm.type"; diff --git a/nest-cli.json b/nest-cli.json index e966f90..b1ea441 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -1,41 +1,50 @@ { - "$schema": "https://json.schemastore.org/nest-cli", - "collection": "@nestjs/schematics", - "sourceRoot": "apps/api/src", - "compilerOptions": { - "deleteOutDir": true, - "webpack": true, - "tsConfigPath": "apps/api/tsconfig.app.json" - }, - "monorepo": true, - "root": "apps/api", - "projects": { - "api": { - "type": "application", - "root": "apps/api", - "entryFile": "main", - "sourceRoot": "apps/api/src", - "compilerOptions": { - "tsConfigPath": "apps/api/tsconfig.app.json", - "plugins": [ - { - "name": "@nestjs/swagger", - "options": { - "classValidatorShim": false, - "introspectComments": true - } - } - ] - } - }, - "providers": { - "type": "library", - "root": "libs/providers", - "entryFile": "index", - "sourceRoot": "libs/providers/src", - "compilerOptions": { - "tsConfigPath": "libs/providers/tsconfig.lib.json" + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "apps/api/src", + "compilerOptions": { + "deleteOutDir": true, + "webpack": true, + "tsConfigPath": "apps/api/tsconfig.app.json" + }, + "monorepo": true, + "root": "apps/api", + "projects": { + "api": { + "type": "application", + "root": "apps/api", + "entryFile": "main", + "sourceRoot": "apps/api/src", + "compilerOptions": { + "tsConfigPath": "apps/api/tsconfig.app.json", + "plugins": [ + { + "name": "@nestjs/swagger", + "options": { + "classValidatorShim": false, + "introspectComments": true } - } + } + ] + } + }, + "providers": { + "type": "library", + "root": "libs/providers", + "entryFile": "index", + "sourceRoot": "libs/providers/src", + "compilerOptions": { + "tsConfigPath": "libs/providers/tsconfig.lib.json" + } + }, + "abis": { + "type": "library", + "root": "libs/abis", + "entryFile": "index", + "sourceRoot": "libs/abis/src", + "compilerOptions": { + "tsConfigPath": "libs/abis/tsconfig.lib.json" + } } -} + } +} \ No newline at end of file diff --git a/package.json b/package.json index a31e480..9375afe 100644 --- a/package.json +++ b/package.json @@ -18,14 +18,17 @@ "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./apps/api/test/jest-e2e.json", + "types:typechain": "typechain --target=ethers-v6 \"libs/**/abi/*.json\" --out-dir \"libs/abis/src/types\"", "prepare": "husky", - "preinstall": "npx only-allow pnpm" + "preinstall": "npx only-allow pnpm", + "postinstall": "typechain --target=ethers-v6 \"libs/**/abi/*.json\" --out-dir \"libs/abis/src/types\"" }, "dependencies": { "@nestjs/common": "10.0.0", "@nestjs/core": "10.0.0", "@nestjs/platform-express": "10.0.0", "@nestjs/swagger": "7.4.0", + "ethers": "6.13.1", "reflect-metadata": "0.1.13", "rxjs": "7.8.1" }, @@ -37,6 +40,7 @@ "@nestjs/schematics": "10.0.0", "@nestjs/testing": "10.0.0", "@total-typescript/tsconfig": "1.0.4", + "@typechain/ethers-v6": "0.5.1", "@types/express": "4.17.17", "@types/jest": "29.5.2", "@types/node": "20.3.1", @@ -57,6 +61,7 @@ "ts-loader": "9.4.3", "ts-node": "10.9.1", "tsconfig-paths": "4.2.0", + "typechain": "8.3.2", "typescript": "5.1.3" }, "jest": { @@ -86,7 +91,8 @@ "/libs/" ], "moduleNameMapper": { - "^@packages/providers(|/.*)$": "/libs/providers/src/$1" + "^@packages/providers(|/.*)$": "/libs/providers/src/$1", + "^@shared/abis(|/.*)$": "/libs/abis/src/$1" } }, "packageManager": "pnpm@9.5.0+sha1.8c155dc114e1689d18937974f6571e0ceee66f1d", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cfe46a8..439e833 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@nestjs/swagger': specifier: 7.4.0 version: 7.4.0(@nestjs/common@10.0.0(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.0.0(@nestjs/common@10.0.0(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1))(reflect-metadata@0.1.13) + ethers: + specifier: 6.13.1 + version: 6.13.1 reflect-metadata: specifier: 0.1.13 version: 0.1.13 @@ -48,6 +51,9 @@ importers: '@total-typescript/tsconfig': specifier: 1.0.4 version: 1.0.4 + '@typechain/ethers-v6': + specifier: ^0.5.1 + version: 0.5.1(ethers@6.13.1)(typechain@8.3.2(typescript@5.1.3))(typescript@5.1.3) '@types/express': specifier: 4.17.17 version: 4.17.17 @@ -108,12 +114,18 @@ importers: tsconfig-paths: specifier: 4.2.0 version: 4.2.0 + typechain: + specifier: ^8.3.2 + version: 8.3.2(typescript@5.1.3) typescript: specifier: 5.1.3 version: 5.1.3 packages: + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -625,6 +637,13 @@ packages: '@nestjs/platform-express': optional: true + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -745,6 +764,13 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@typechain/ethers-v6@0.5.1': + resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: '>=4.7.0' + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -811,12 +837,18 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/node@18.15.13': + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + '@types/node@20.3.1': resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + '@types/qs@6.9.15': resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} @@ -983,6 +1015,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -1054,6 +1089,14 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + + array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -1271,6 +1314,14 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + + command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -1410,6 +1461,10 @@ packages: babel-plugin-macros: optional: true + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1597,6 +1652,10 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + ethers@6.13.1: + resolution: {integrity: sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A==} + engines: {node: '>=14.0.0'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -1673,6 +1732,10 @@ packages: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} + find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -1718,6 +1781,10 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + fs-monkey@1.0.6: resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} @@ -1780,6 +1847,10 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2160,6 +2231,9 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2199,6 +2273,9 @@ packages: jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -2401,6 +2478,11 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -2608,6 +2690,11 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@3.0.0: resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} engines: {node: '>=14'} @@ -2682,6 +2769,10 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} + reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + reflect-metadata@0.1.13: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} @@ -2868,6 +2959,9 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -2949,6 +3043,10 @@ packages: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} + table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -3020,6 +3118,15 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + + ts-essentials@7.0.3: + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + ts-jest@29.1.0: resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3070,6 +3177,9 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + tslib@2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} @@ -3096,6 +3206,12 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + typechain@8.3.2: + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -3104,6 +3220,14 @@ packages: engines: {node: '>=14.17'} hasBin: true + typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + + typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + uid@2.0.2: resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} engines: {node: '>=8'} @@ -3112,6 +3236,10 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3194,6 +3322,10 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -3209,6 +3341,18 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3251,6 +3395,8 @@ packages: snapshots: + '@adraffy/ens-normalize@1.10.1': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -3967,6 +4113,12 @@ snapshots: optionalDependencies: '@nestjs/platform-express': 10.0.0(@nestjs/common@10.0.0(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.0.0) + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/hashes@1.3.2': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4064,6 +4216,14 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@typechain/ethers-v6@0.5.1(ethers@6.13.1)(typechain@8.3.2(typescript@5.1.3))(typescript@5.1.3)': + dependencies: + ethers: 6.13.1 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.1.3) + typechain: 8.3.2(typescript@5.1.3) + typescript: 5.1.3 + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.24.7 @@ -4153,10 +4313,14 @@ snapshots: '@types/mime@1.3.5': {} + '@types/node@18.15.13': {} + '@types/node@20.3.1': {} '@types/parse-json@4.0.2': {} + '@types/prettier@2.7.3': {} + '@types/qs@6.9.15': {} '@types/range-parser@1.2.7': {} @@ -4384,6 +4548,8 @@ snapshots: acorn@8.12.1: {} + aes-js@4.0.0-beta.5: {} + ajv-formats@2.1.1(ajv@8.12.0): optionalDependencies: ajv: 8.12.0 @@ -4445,6 +4611,10 @@ snapshots: argparse@2.0.1: {} + array-back@3.1.0: {} + + array-back@4.0.2: {} + array-flatten@1.1.1: {} array-ify@1.0.0: {} @@ -4712,6 +4882,20 @@ snapshots: dependencies: delayed-stream: 1.0.0 + command-line-args@5.2.1: + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + + command-line-usage@6.1.3: + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + commander@12.1.0: {} commander@2.20.3: {} @@ -4847,6 +5031,8 @@ snapshots: dedent@1.5.3: {} + deep-extend@0.6.0: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -5029,6 +5215,19 @@ snapshots: etag@1.8.1: {} + ethers@6.13.1: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + eventemitter3@5.0.1: {} events@3.3.0: {} @@ -5171,6 +5370,10 @@ snapshots: transitivePeerDependencies: - supports-color + find-replace@3.0.0: + dependencies: + array-back: 3.1.0 + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -5234,6 +5437,12 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fs-monkey@1.0.6: {} fs.realpath@1.0.0: {} @@ -5283,6 +5492,15 @@ snapshots: glob-to-regexp@0.4.1: {} + glob@7.1.7: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5843,6 +6061,8 @@ snapshots: jiti@1.21.6: {} + js-sha3@0.8.0: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -5870,6 +6090,10 @@ snapshots: jsonc-parser@3.2.0: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + jsonfile@6.1.0: dependencies: universalify: 2.0.1 @@ -6047,6 +6271,8 @@ snapshots: dependencies: minimist: 1.2.8 + mkdirp@1.0.4: {} + ms@2.0.0: {} ms@2.1.2: {} @@ -6225,6 +6451,8 @@ snapshots: dependencies: fast-diff: 1.3.0 + prettier@2.8.8: {} + prettier@3.0.0: {} pretty-format@29.7.0: @@ -6310,6 +6538,8 @@ snapshots: dependencies: resolve: 1.22.8 + reduce-flatten@2.0.0: {} + reflect-metadata@0.1.13: {} repeat-string@1.6.1: {} @@ -6489,6 +6719,8 @@ snapshots: string-argv@0.3.2: {} + string-format@2.0.0: {} + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -6576,6 +6808,13 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.6.3 + table-layout@1.0.2: + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + tapable@2.2.1: {} terser-webpack-plugin@5.3.10(@swc/core@1.6.13)(webpack@5.87.0(@swc/core@1.6.13)): @@ -6630,6 +6869,17 @@ snapshots: dependencies: typescript: 5.1.3 + ts-command-line-args@2.5.1: + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + + ts-essentials@7.0.3(typescript@5.1.3): + dependencies: + typescript: 5.1.3 + ts-jest@29.1.0(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.5.0(@types/node@20.3.1)(ts-node@10.9.1(@swc/core@1.6.13)(@types/node@20.3.1)(typescript@5.1.3)))(typescript@5.1.3): dependencies: bs-logger: 0.2.6 @@ -6688,6 +6938,8 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@2.4.0: {} + tslib@2.5.3: {} tslib@2.6.3: {} @@ -6707,16 +6959,38 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + typechain@8.3.2(typescript@5.1.3): + dependencies: + '@types/prettier': 2.7.3 + debug: 4.3.5 + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color + typedarray@0.0.6: {} typescript@5.1.3: {} + typical@4.0.0: {} + + typical@5.2.0: {} + uid@2.0.2: dependencies: '@lukeed/csprng': 1.1.0 unicorn-magic@0.1.0: {} + universalify@0.1.2: {} + universalify@2.0.1: {} unpipe@1.0.0: {} @@ -6810,6 +7084,11 @@ snapshots: word-wrap@1.2.5: {} + wordwrapjs@4.0.1: + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -6829,6 +7108,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@8.17.1: {} + xtend@4.0.2: {} y18n@5.0.8: {} diff --git a/tsconfig.json b/tsconfig.json index 1196eab..2ec8002 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,27 +1,37 @@ { - "extends": "@total-typescript/tsconfig/tsc/no-dom/app", - "compilerOptions": { - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "ES2021", - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true, - "strictNullChecks": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "paths": { - "@packages/providers": ["libs/providers/src"], - "@packages/providers/*": ["libs/providers/src/*"] - }, - "verbatimModuleSyntax": false - } -} + "extends": "@total-typescript/tsconfig/tsc/no-dom/app", + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2021", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "paths": { + "@packages/providers": [ + "libs/providers/src" + ], + "@packages/providers/*": [ + "libs/providers/src/*" + ], + "@shared/abis": [ + "libs/abis/src" + ], + "@shared/abis/*": [ + "libs/abis/src/*" + ] + }, + "verbatimModuleSyntax": false + } +} \ No newline at end of file