diff --git a/.eslintrc.js b/.eslintrc.js index f1d69dc..449e9d4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,34 +1,63 @@ module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.json', - tsconfigRootDir: __dirname, - sourceType: 'module', - }, - plugins: ['@typescript-eslint/eslint-plugin'], - extends: [ - 'plugin:@typescript-eslint/recommended', - 'plugin:prettier/recommended', - ], root: true, env: { + es2021: true, node: true, - jest: true, }, - ignorePatterns: ['.eslintrc.js'], + extends: ['eslint:recommended', 'plugin:import/recommended', 'prettier'], + overrides: [ + { + files: ['**/*.ts?(x)'], + parser: '@typescript-eslint/parser', + extends: ['plugin:@typescript-eslint/recommended', 'plugin:import/typescript'], + }, + ], + plugins: ['simple-import-sort', 'prettier', '@typescript-eslint'], + parserOptions: { + tsconfigRootDir: '.', + ecmaVersion: 'latest', + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + typescript: {}, + node: { + paths: ['src'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, + }, rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - 'prettier/prettier': [ - 'error', + 'prettier/prettier': ['error', {}, { usePrettierrc: true }], + '@typescript-eslint/no-unused-vars': [ + 'error', // or "error" + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + }, + ], + 'arrow-parens': 0, + 'no-debugger': 1, + 'no-return-await': 0, + 'object-curly-spacing': ['error', 'always'], + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + 'no-var': 'error', + 'comma-dangle': [1, 'always-multiline'], + 'no-console': [ + 1, { - // Indent with spaces. - "tabWidth": 4, - // Max line length. - "printWidth": 200, - } + allow: ['warn', 'error'], + }, ], + 'import/namespace': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', }, }; diff --git a/.prettierrc b/.prettierrc index 21dca57..0c5395f 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,11 @@ { - "singleQuote": true, - "trailingComma": "none", - "tabWidth": 4, - "printWidth": 200, - "arrowParens": "avoid" -} \ No newline at end of file + "tabWidth": 4, + "semi": true, + "singleQuote": true, + "bracketSpacing": true, + "bracketSameLine": false, + "arrowParens": "avoid", + "endOfLine": "auto", + "trailingComma": "all", + "printWidth": 120 +} diff --git a/README.md b/README.md index 7c402be..6896a78 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ + # Venn CLI [![NPM Version](https://img.shields.io/npm/v/@vennbuild/cli?style=for-the-badge)](https://www.npmjs.com/~vennbuild) @@ -40,21 +41,22 @@ Follow these steps to secure your contracts with Venn: ``` + ## Table of Contents - [🚀 Quick Start](#-quick-start) - [📦 Installation](#-installation) - [📚 Usage](#-usage) - - [Firewall Integration](#firewall-integration) - - [Venn Integration](#venn-integration) + - [Firewall Integration](#firewall-integration) + - [Venn Integration](#venn-integration) - [⚙️ Configuration File](#️-configuration-file) - - [Firewall Configuration](#firewall-configuration) - - [Venn Configuration](#venn-configuration) + - [Firewall Configuration](#firewall-configuration) + - [Venn Configuration](#venn-configuration) - [⚡ Available Commands](#-available-commands) - - [`venn`](#venn) - - [`venn fw integ`](#venn-fw-integ) - - [`venn enable`](#venn-enable) - - [`venn disable`](#venn-disable) + - [`venn`](#venn) + - [`venn fw integ`](#venn-fw-integ) + - [`venn enable`](#venn-enable) + - [`venn disable`](#venn-disable) - [💬 Support \& Documentation](#-support--documentation) - [📜 License](#-license) @@ -68,20 +70,21 @@ npm install -g @vennbuild/cli ## 📚 Usage -There are 3 steps to the integration. +There are 3 steps to the integration. 1. First, add the Firewall SDK to your smart contracts, and deploy them as your would normally deploy to any network. 2. Next, connect your deployed smart contracts to Venn. 3. Now that your project is secure, only approved transactions will go through. - To approve transactions, make sure to add the [**Venn DApp SDK**](https://www.npmjs.com/package/@vennbuild/venn-dapp-sdk) to your DApp's frontend. + To approve transactions, make sure to add the [**Venn DApp SDK**](https://www.npmjs.com/package/@vennbuild/venn-dapp-sdk) to your DApp's frontend. ### Firewall Integration This integration will add the Firewall SDK to your smart contracts, making sure that they import the relevant modifiers, and apply the modifiers on external functions. + #### Automatic Integration With CLI Auto-import the Firewall SDK into all of your smart contracts in one go by running: @@ -93,13 +96,14 @@ venn fw integ -d contracts This command will scan all your smart contracts under the `contracts` folder, and add an import of the `VennFirewallConsumer` Firewall SDK. + ##### Before ```solidity pragma solidity ^0.8; contract MyContract { - + myMethod() { ... } @@ -107,6 +111,7 @@ contract MyContract { ``` + ##### After ```solidity @@ -129,6 +134,7 @@ See the [**Available Commands**](#-available-commands) section below for additio This integration will connect your Firewall protected smart contracts to the Venn Network onchain. It does this by sending setup transactions onchain to register your smart contracts with Venn. + #### Prerequisites 1. Make sure your smart contracts are deployed and that you have completed the [**Firewall Integration**](#firewall-integration) step above @@ -136,6 +142,7 @@ This integration will connect your Firewall protected smart contracts to the Ven 2. You will need your private key for this step + #### Configuration 1. Create a new file called **`venn.config.json`** @@ -148,7 +155,7 @@ This integration will connect your Firewall protected smart contracts to the Ven "holesky": { "contracts": { "MyContract1": "0x1234abcd1234abcd1234abcd1234abcd1234abcd", - "MyContract2": "0x1234abcd1234abcd1234abcd1234abcd1234abcd", + "MyContract2": "0x1234abcd1234abcd1234abcd1234abcd1234abcd" } } } @@ -164,6 +171,7 @@ This integration will connect your Firewall protected smart contracts to the Ven > **IMPORTANT:** This key must be the same key that deployed the smart contracts + #### Connect To Venn Run the following command to connect your Firewall protected smart contracts to Venn: @@ -183,7 +191,7 @@ The address of the policy will be saved in **`venn.config.json`**: "holesky": { "contracts": { "MyContract1": "0x1234abcd1234abcd1234abcd1234abcd1234abcd", - "MyContract2": "0x1234abcd1234abcd1234abcd1234abcd1234abcd", + "MyContract2": "0x1234abcd1234abcd1234abcd1234abcd1234abcd" }, // YOUR VENN POLICY ADDRESS @@ -203,8 +211,12 @@ Overall, the configuration file has the following structure: ```json { - "fw": { /* ... */ }, - "network": { /* ... */ } + "fw": { + /* ... */ + }, + "network": { + /* ... */ + } } ``` @@ -217,19 +229,21 @@ For the Firewall integration, you can configure which folders to include or excl "fw": { "integ": { "include": ["my/contracts/folder"], - "exclude": ["tests/fixtures/**/*.sol"], + "exclude": ["tests/fixtures/**/*.sol"] } } } ``` + #### Include Acts as a whitelist. If this configuration is not empty, only files inside the configured folders will be integrated with the Firewall SDK. + #### Exclude Acts as a blacklist. @@ -240,6 +254,7 @@ If this configuration is not empty, files inside the configured folders will not For the Venn Integration, you configure which **`networks`** to integrate with, and list the contracts that you have deployed per networks: + #### Smart Contracts ```json @@ -248,7 +263,7 @@ For the Venn Integration, you configure which **`networks`** to integrate with, "holesky": { "contracts": { "MyContract1": "0x1234abcd1234abcd1234abcd1234abcd1234abcd", - "MyContract2": "0x1234abcd1234abcd1234abcd1234abcd1234abcd", + "MyContract2": "0x1234abcd1234abcd1234abcd1234abcd1234abcd" } } } @@ -258,6 +273,7 @@ For the Venn Integration, you configure which **`networks`** to integrate with, Note that the `key` is the name of the contract, and the `value` is the address of the contract. + #### Private Key When Venn CLI registers your smart contracts with Venn onchain, it sends several setup transactions for this registration to happen. @@ -265,24 +281,35 @@ When Venn CLI registers your smart contracts with Venn onchain, it sends several The account that signs these transactions is provided to the CLI by setting the following environment variable: - `VENN_PRIVATE_KEY` - The account that owns the deployed contracts + The account that owns the deployed contracts + +#### Protocol Metadata + +When you enable Venn, the CLI will register your as a protocol in the Venn Protocol Registry. + +The protocol has the following data, that you can configure by setting the following environment variables: + +- `PROTOCOL_METADATA` [optional] + The URL of the protocol metadata ## ⚡ Available Commands ### `venn` -This is the root command. +This is the root command. + #### Available Options + - `--help` - show help information + show help information - `--version` - show version information + show version information ### `venn fw integ` @@ -290,27 +317,32 @@ Subcommand for managing the Firewall SDK integration with your smart contracts. + #### Available Options + - `-f, --file ` - specify a single smart contract file for the integration + specify a single smart contract file for the integration - `-d, --dir ` - specify a directory of smart contracts for the integration + specify a directory of smart contracts for the integration - `-r, --rec` - if specified, will recursively look in `` from `--dir` + if specified, will recursively look in `` from `--dir` - `-v, --verbose` - show verbose logging + show verbose logging + #### Examples + + ##### A single contract ```shell @@ -318,6 +350,7 @@ venn fw integ -f contracts/MyContract.sol ``` + ##### A single folder ```shell @@ -325,6 +358,7 @@ venn fw integ -d contracts/vault ``` + ##### All contracts ```shell @@ -337,18 +371,23 @@ Register your Firewall protected smart contracts with Venn. + #### Available Options + - `--network ` - the network where your smart contracts are deployed to + the network where your smart contracts are deployed to + #### Examples + + ##### Enable Venn ```shell @@ -361,18 +400,23 @@ Unregister your Firewall protected smart contracts from Venn. + #### Available Options + - `--network ` - the network where your smart contracts are deployed to + the network where your smart contracts are deployed to + #### Examples + + ##### Disable Venn ```shell @@ -381,7 +425,7 @@ venn disable --network holskey ## 💬 Support & Documentation -We're here to help. +We're here to help. - Join the discussion on Discord: [Venn Discord](https://discord.gg/97cg6Qhg) diff --git a/abi/Firewall.json b/abi/Firewall.json new file mode 100644 index 0000000..34c8290 --- /dev/null +++ b/abi/Firewall.json @@ -0,0 +1,971 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "ConsumerDryrunStatusUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "DryrunPolicyPostError", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "DryrunPolicyPostSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "DryrunPolicyPreError", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "DryrunPolicyPreSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "GlobalDryrunPolicyPostError", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "GlobalDryrunPolicyPostSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "GlobalDryrunPolicyPreError", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "GlobalDryrunPolicyPreSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "GlobalPolicyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "GlobalPolicyPostSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "GlobalPolicyPreSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "GlobalPolicyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "PolicyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "PolicyPostSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "PolicyPreSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "methodSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "PolicyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "PolicyStatusUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "__Firewall_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "address", + "name": "_policy", + "type": "address" + } + ], + "name": "addGlobalPolicy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_consumers", + "type": "address[]" + }, + { + "internalType": "address", + "name": "_policy", + "type": "address" + } + ], + "name": "addGlobalPolicyForConsumers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "_methodSigs", + "type": "bytes4[]" + }, + { + "internalType": "address[]", + "name": "_policies", + "type": "address[]" + } + ], + "name": "addPolicies", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "_methodSig", + "type": "bytes4" + }, + { + "internalType": "address", + "name": "_policy", + "type": "address" + } + ], + "name": "addPolicy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "approvedPolicies", + "outputs": [ + { + "internalType": "bool", + "name": "isApproved", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + } + ], + "name": "dryrunEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "dryrun", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "postExecution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "preExecution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "address", + "name": "_policy", + "type": "address" + } + ], + "name": "removeGlobalPolicy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_consumers", + "type": "address[]" + }, + { + "internalType": "address", + "name": "_policy", + "type": "address" + } + ], + "name": "removeGlobalPolicyForConsumers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "_methodSigs", + "type": "bytes4[]" + }, + { + "internalType": "address[]", + "name": "_policies", + "type": "address[]" + } + ], + "name": "removePolicies", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "_methodSig", + "type": "bytes4" + }, + { + "internalType": "address", + "name": "_policy", + "type": "address" + } + ], + "name": "removePolicy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_consumer", + "type": "address" + }, + { + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "setConsumerDryrunStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policy", + "type": "address" + }, + { + "internalType": "bool", + "name": "_status", + "type": "bool" + } + ], + "name": "setPolicyStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "subscribedGlobalPolicies", + "outputs": [ + { + "internalType": "address", + "name": "globalPolicies", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "sighash", + "type": "bytes4" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "subscribedPolicies", + "outputs": [ + { + "internalType": "address", + "name": "policies", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } +] diff --git a/abi/PolicyDeployer.json b/abi/PolicyDeployer.json new file mode 100644 index 0000000..f58b33d --- /dev/null +++ b/abi/PolicyDeployer.json @@ -0,0 +1,373 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_firewallModule", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "factory", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "FactoryStatusSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "firewallModule", + "type": "address" + } + ], + "name": "FirewallModuleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "factory", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "policy", + "type": "address" + } + ], + "name": "PolicyCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "factory", + "type": "address" + } + ], + "name": "approvedFactories", + "outputs": [ + { + "internalType": "bool", + "name": "isApproved", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_firewall", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_factories", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "_createData", + "type": "bytes[]" + } + ], + "name": "deployPolicies", + "outputs": [ + { + "internalType": "address[]", + "name": "policies", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "firewallModule", + "outputs": [ + { + "internalType": "contract IFirewallModule", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_factories", + "type": "address[]" + }, + { + "internalType": "bool[]", + "name": "_statuses", + "type": "bool[]" + } + ], + "name": "setFactoryStatuses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_firewallModule", + "type": "address" + } + ], + "name": "setFirewallModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/abi/ProtocolRegistry.json b/abi/ProtocolRegistry.json new file mode 100644 index 0000000..b052fe0 --- /dev/null +++ b/abi/ProtocolRegistry.json @@ -0,0 +1,989 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "attestationCenter", + "type": "address" + } + ], + "name": "AttestationCenterSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "detectionEscrow", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "admins", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "string", + "name": "metadataURI", + "type": "string" + } + ], + "name": "ProtocolDetectionApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "detectionEscrow", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "admins", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "metadataURI", + "type": "string" + } + ], + "name": "ProtocolDetectionRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "policyAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "metadataURI", + "type": "string" + } + ], + "name": "ProtocolRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "policyAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "metadataURI", + "type": "string" + } + ], + "name": "ProtocolUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "policyAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "taskDefinitionId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "requiredOperatorIds", + "type": "uint256[]" + } + ], + "name": "SubnetSubscribed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "policyAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "taskDefinitionId", + "type": "uint16" + } + ], + "name": "SubnetUnsubscribed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "VennDetectionFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vennFeeRecipient", + "type": "address" + } + ], + "name": "VennFeeRecipientSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "VennProtocolFeeSet", + "type": "event" + }, + { + "inputs": [], + "name": "ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_VENN_DETECTION_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_VENN_PROTOCOL_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationCenter", + "type": "address" + }, + { + "internalType": "address", + "name": "_vennFeeRecipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_vennDetectionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_vennProtocolFee", + "type": "uint256" + } + ], + "name": "__ProtocolRegistry_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_detectionEscrow", + "type": "address" + } + ], + "name": "approveProtocolDetectionAsOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "attestationCenter", + "outputs": [ + { + "internalType": "contract IAttestationCenter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_admins", + "type": "address[]" + }, + { + "internalType": "string", + "name": "_metadataURI", + "type": "string" + } + ], + "name": "createAndRegisterProtocolDetection", + "outputs": [ + { + "internalType": "address", + "name": "detectionEscrow", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + } + ], + "name": "getProtocol", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "policyAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "metadataURI", + "type": "string" + } + ], + "internalType": "struct IProtocolRegistry.Protocol", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_detectionEscrow", + "type": "address" + } + ], + "name": "getProtocolDetection", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "protocolAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "admins", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "vennFee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isApproved", + "type": "bool" + }, + { + "internalType": "string", + "name": "metadataURI", + "type": "string" + } + ], + "internalType": "struct IProtocolRegistry.ProtocolDetection", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + } + ], + "name": "getProtocolTaskDefinitionIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_taskDefinitionId", + "type": "uint16" + } + ], + "name": "getRequiredOperatorIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_taskDefinitionId", + "type": "uint16" + } + ], + "name": "isSubnetSubscribed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "_metadataURI", + "type": "string" + } + ], + "name": "registerProtocol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationCenter", + "type": "address" + } + ], + "name": "setAttestationCenter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_vennDetectionFee", + "type": "uint256" + } + ], + "name": "setVennDetectionFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_vennFeeRecipient", + "type": "address" + } + ], + "name": "setVennFeeRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_vennProtocolFee", + "type": "uint256" + } + ], + "name": "setVennProtocolFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_taskDefinitionId", + "type": "uint16" + }, + { + "internalType": "uint256[]", + "name": "_requiredOperatorIds", + "type": "uint256[]" + } + ], + "name": "subscribeSubnet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_taskDefinitionId", + "type": "uint16" + } + ], + "name": "unsubscribeSubnet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_policyAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "_metadataURI", + "type": "string" + } + ], + "name": "updateProtocol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "vennDetectionFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vennFeeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vennProtocolFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } +] diff --git a/abi/VennFirewallConsumerBase.json b/abi/VennFirewallConsumerBase.json new file mode 100644 index 0000000..f9b7a28 --- /dev/null +++ b/abi/VennFirewallConsumerBase.json @@ -0,0 +1,185 @@ +[ + { + "inputs": [], + "name": "AttestationCenterProxyNotSet", + "type": "error" + }, + { + "inputs": [], + "name": "NonZeroUserNativeFee", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughFee", + "type": "error" + }, + { + "inputs": [], + "name": "NotFirewallAdmin", + "type": "error" + }, + { + "inputs": [], + "name": "NotNewFirewallAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "name": "ProxyCallFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newAttestationCenterProxy", + "type": "address" + } + ], + "name": "AttestationCenterProxyUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "FirewallAdminProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "FirewallAdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newFirewall", + "type": "address" + } + ], + "name": "FirewallUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "acceptFirewallAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "firewallAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userNativeFee", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_proxyPayload", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeFunctionCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_allowNonZeroUserNativeFee", + "type": "bool" + } + ], + "name": "setAllowNonZeroUserNativeFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationCenterProxy", + "type": "address" + } + ], + "name": "setAttestationCenterProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_firewall", + "type": "address" + } + ], + "name": "setFirewall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_firewallAdmin", + "type": "address" + } + ], + "name": "setFirewallAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/package-lock.json b/package-lock.json index 5cb953f..3713edf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,29 +1,29 @@ { "name": "@vennbuild/cli", - "version": "1.0.0", + "version": "1.0.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vennbuild/cli", - "version": "1.0.0", + "version": "1.0.12", "license": "MIT", "dependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/config": "^3.1.1", - "@nestjs/core": "^10.0.0", - "@nestjs/platform-express": "^10.0.0", - "@safe-global/api-kit": "^2.3.0", + "@nestjs/common": "^10.4.17", + "@nestjs/config": "^3.3.0", + "@nestjs/core": "^10.4.17", + "@nestjs/platform-express": "^10.4.17", + "@safe-global/api-kit": "^2.5.11", "@solidity-parser/parser": "^0.16.2", "colors": "^1.4.0", - "consola": "^3.2.3", - "ethers": "^6.9.1", - "micromatch": "^4.0.5", - "nest-commander": "^3.12.2", + "consola": "^3.4.2", + "ethers": "^6.14.0", + "micromatch": "^4.0.8", + "nest-commander": "^3.17.0", "ora": "^5.4.1", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.8.1", - "semver": "^7.5.4" + "reflect-metadata": "^0.1.14", + "rxjs": "^7.8.2", + "semver": "^7.7.2" }, "bin": { "venn": "dist/main.js" @@ -31,30 +31,35 @@ "devDependencies": { "@automock/adapters.nestjs": "^2.1.0", "@automock/jest": "^2.1.0", - "@nestjs/cli": "^10.0.0", - "@nestjs/schematics": "^10.0.0", - "@nestjs/testing": "^10.3.3", - "@types/express": "^4.17.17", - "@types/jest": "^29.5.12", - "@types/micromatch": "^4.0.6", - "@types/node": "^20.3.1", - "@types/sinon": "^17.0.3", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "eslint": "^8.42.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.0", + "@nestjs/cli": "^10.4.9", + "@nestjs/schematics": "^10.2.3", + "@nestjs/testing": "^10.4.17", + "@typechain/ethers-v6": "^0.5.1", + "@types/express": "^4.17.21", + "@types/jest": "^29.5.14", + "@types/micromatch": "^4.0.9", + "@types/node": "^22.15.17", + "@types/sinon": "^17.0.4", + "@typescript-eslint/eslint-plugin": "^8.32.1", + "eslint": "^8.57.1", + "eslint-config-prettier": "^10.1.5", + "eslint-import-resolver-typescript": "^4.3.4", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-simple-import-sort": "^12.1.1", "jest": "^29.7.0", - "nest-commander-testing": "^3.3.0", - "nodemon": "^3.1.5", - "prettier": "^3.0.0", + "nest-commander-testing": "^3.4.0", + "nodemon": "^3.1.10", + "prettier": "^3.5.3", "source-map-support": "^0.5.21", - "supertest": "^6.3.3", - "ts-jest": "^29.1.2", - "ts-loader": "^9.4.3", - "ts-node": "^10.9.1", + "supertest": "^6.3.4", + "ts-jest": "^29.3.2", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", "ts-prune": "^0.10.3", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typechain": "^8.3.2", + "typescript": "^5.8.3" } }, "node_modules/@adraffy/ens-normalize": { @@ -76,10 +81,11 @@ } }, "node_modules/@angular-devkit/core": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.8.tgz", - "integrity": "sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==", + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz", + "integrity": "sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -102,13 +108,24 @@ } } }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular-devkit/schematics": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.8.tgz", - "integrity": "sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==", + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz", + "integrity": "sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", + "@angular-devkit/core": "17.3.11", "jsonc-parser": "3.2.1", "magic-string": "0.30.8", "ora": "5.4.1", @@ -121,13 +138,14 @@ } }, "node_modules/@angular-devkit/schematics-cli": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.3.8.tgz", - "integrity": "sha512-TjmiwWJarX7oqvNiRAroQ5/LeKUatxBOCNEuKXO/PV8e7pn/Hr/BqfFm+UcYrQoFdZplmtNAfqmbqgVziKvCpA==", + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.3.11.tgz", + "integrity": "sha512-kcOMqp+PHAKkqRad7Zd7PbpqJ0LqLaNZdY1+k66lLWmkEBozgq8v4ASn/puPWf9Bo0HpCiK+EzLf0VHE8Z/y6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", - "@angular-devkit/schematics": "17.3.8", + "@angular-devkit/core": "17.3.11", + "@angular-devkit/schematics": "17.3.11", "ansi-colors": "4.1.3", "inquirer": "9.2.15", "symbol-observable": "4.0.0", @@ -143,10 +161,11 @@ } }, "node_modules/@angular-devkit/schematics-cli/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -159,6 +178,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -168,6 +188,7 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", "dev": true, + "license": "MIT", "dependencies": { "@ljharb/through": "^2.3.12", "ansi-escapes": "^4.3.2", @@ -194,6 +215,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -203,10 +225,31 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, + "node_modules/@angular-devkit/schematics-cli/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@automock/adapters.nestjs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@automock/adapters.nestjs/-/adapters.nestjs-2.1.0.tgz", @@ -870,26 +913,65 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@emnapi/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -899,6 +981,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -922,6 +1005,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -938,6 +1022,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -947,13 +1032,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -966,20 +1053,22 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@golevelup/nestjs-discovery": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-4.0.1.tgz", - "integrity": "sha512-HFXBJayEkYcU/bbxOztozONdWaZR34ZeJ2zRbZIWY8d5K26oPZQTvJ4L0STW3XVRGWtoE0WBpmx2YPNgYvcmJQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-4.0.3.tgz", + "integrity": "sha512-8w3CsXHN7+7Sn2i419Eal1Iw/kOjAd6Kb55M/ZqKBBwACCMn4WiEuzssC71LpBMI1090CiDxuelfPRwwIrQK+A==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21" }, "peerDependencies": { - "@nestjs/common": "^10.x", - "@nestjs/core": "^10.x" + "@nestjs/common": "^10.x || ^11.0.0", + "@nestjs/core": "^10.x || ^11.0.0" } }, "node_modules/@humanwhocodes/config-array": { @@ -988,6 +1077,7 @@ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -1002,6 +1092,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1012,6 +1103,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1037,13 +1129,15 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1061,6 +1155,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1073,6 +1168,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1084,13 +1180,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1108,6 +1206,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1123,6 +1222,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1623,12 +1723,13 @@ } }, "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "version": "2.3.14", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz", + "integrity": "sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bind": "^1.0.8" }, "engines": { "node": ">= 0.4" @@ -1642,30 +1743,44 @@ "node": ">=8" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz", + "integrity": "sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.0", + "@emnapi/runtime": "^1.4.0", + "@tybys/wasm-util": "^0.9.0" + } + }, "node_modules/@nestjs/cli": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.5.tgz", - "integrity": "sha512-FP7Rh13u8aJbHe+zZ7hM0CC4785g9Pw4lz4r2TTgRtf0zTxSWMkJaPEwyjX8SK9oWK2GsYxl+fKpwVZNbmnj9A==", + "version": "10.4.9", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.9.tgz", + "integrity": "sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", - "@angular-devkit/schematics": "17.3.8", - "@angular-devkit/schematics-cli": "17.3.8", + "@angular-devkit/core": "17.3.11", + "@angular-devkit/schematics": "17.3.11", + "@angular-devkit/schematics-cli": "17.3.11", "@nestjs/schematics": "^10.0.1", "chalk": "4.1.2", "chokidar": "3.6.0", "cli-table3": "0.6.5", "commander": "4.1.1", "fork-ts-checker-webpack-plugin": "9.0.2", - "glob": "10.4.2", + "glob": "10.4.5", "inquirer": "8.2.6", "node-emoji": "1.11.0", "ora": "5.4.1", "tree-kill": "1.2.2", "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.1.0", - "typescript": "5.3.3", - "webpack": "5.94.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.7.2", + "webpack": "5.97.1", "webpack-node-externals": "3.0.0" }, "bin": { @@ -1675,7 +1790,7 @@ "node": ">= 16.14" }, "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0", + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0", "@swc/core": "^1.3.62" }, "peerDependenciesMeta": { @@ -1688,10 +1803,11 @@ } }, "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1701,12 +1817,14 @@ } }, "node_modules/@nestjs/common": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.3.tgz", - "integrity": "sha512-4hbLd3XIJubHSylYd/1WSi4VQvG68KM/ECYpMDqA3k3J1/T17SAg40sDoq3ZoO5OZgU0xuNyjuISdOTjs11qVg==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.17.tgz", + "integrity": "sha512-NKzPA4Tb35XjlxizsT8KZb3CCX8tNKj5EnsXsTl/gZX//uAWccBsqB8BjU69x/u4/kQ0106/Kt6PP+yrHAez0w==", + "license": "MIT", "dependencies": { + "file-type": "20.4.1", "iterare": "1.2.1", - "tslib": "2.7.0", + "tslib": "2.8.1", "uid": "2.0.2" }, "funding": { @@ -1728,10 +1846,17 @@ } } }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/@nestjs/config": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.2.3.tgz", - "integrity": "sha512-p6yv/CvoBewJ72mBq4NXgOAi2rSQNWx3a+IMJLVKS2uiwFCOQQuiIatGwq6MRjXV3Jr+B41iUO8FIf4xBrZ4/w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.3.0.tgz", + "integrity": "sha512-pdGTp8m9d0ZCrjTpjkUbZx6gyf2IKf+7zlkrPNMsJzYZ4bFRRTpXrnj+556/5uiI6AfL5mMrJc2u7dB6bvM+VA==", + "license": "MIT", "dependencies": { "dotenv": "16.4.5", "dotenv-expand": "10.0.0", @@ -1743,16 +1868,17 @@ } }, "node_modules/@nestjs/core": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.3.tgz", - "integrity": "sha512-6OQz+5C8mT8yRtfvE5pPCq+p6w5jDot+oQku1KzQ24ABn+lay1KGuJwcKZhdVNuselx+8xhdMxknZTA8wrGLIg==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.17.tgz", + "integrity": "sha512-Tk4J5aS082NUYrsJEDLvGdU+kRnHAMdOvsA4j62fP5THO6fN6vqv6jWHfydhCiPGUCJWLT6m+mNIhETMhMAs+Q==", "hasInstallScript": true, + "license": "MIT", "dependencies": { "@nuxtjs/opencollective": "0.3.2", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", "path-to-regexp": "3.3.0", - "tslib": "2.7.0", + "tslib": "2.8.1", "uid": "2.0.2" }, "funding": { @@ -1779,16 +1905,23 @@ } } }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/@nestjs/platform-express": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.3.tgz", - "integrity": "sha512-ss7gkofVm3eO+1P9iRhmGq6Xcjg+mIN3dWisKJZYelSV+msb0QpJmqChLvWjLkWtlqDnx915FKUk0IzCa0TVzw==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.17.tgz", + "integrity": "sha512-ovn4Wxney3QGBrqNPv0QLcCuH5QoAi6pb/GNWAz6B/NmBjZbs9/zl4a2beGDA2SaYre9w43YbfmHTm17PneP9w==", + "license": "MIT", "dependencies": { "body-parser": "1.20.3", "cors": "2.8.5", - "express": "4.21.0", + "express": "4.21.2", "multer": "1.4.4-lts.1", - "tslib": "2.7.0" + "tslib": "2.8.1" }, "funding": { "type": "opencollective", @@ -1799,15 +1932,22 @@ "@nestjs/core": "^10.0.0" } }, + "node_modules/@nestjs/platform-express/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/@nestjs/schematics": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.1.4.tgz", - "integrity": "sha512-QpY8ez9cTvXXPr3/KBrtSgXQHMSV6BkOUYy2c2TTe6cBqriEdGnCYqGl8cnfrQl3632q3lveQPaZ/c127dHsEw==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz", + "integrity": "sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", - "@angular-devkit/schematics": "17.3.8", - "comment-json": "4.2.3", + "@angular-devkit/core": "17.3.11", + "@angular-devkit/schematics": "17.3.11", + "comment-json": "4.2.5", "jsonc-parser": "3.3.1", "pluralize": "8.0.0" }, @@ -1822,12 +1962,13 @@ "dev": true }, "node_modules/@nestjs/testing": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.3.tgz", - "integrity": "sha512-SBNWrMU51YAlYmW86wyjlGZ2uLnASNiOPD0lBcNIlxxei0b05/aI3nh7OPuxbXQUdedUJfPq2d2jZj4TRG4S0w==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.17.tgz", + "integrity": "sha512-TV1fqSNqqXgp0W57jCAfhJRfsvpH+krd4RtYSa7Pu+aU9uB+xcMBn5M62G02aMU41DURVZXKNVbHsZb6meZqBQ==", "dev": true, + "license": "MIT", "dependencies": { - "tslib": "2.7.0" + "tslib": "2.8.1" }, "funding": { "type": "opencollective", @@ -1848,6 +1989,13 @@ } } }, + "node_modules/@nestjs/testing/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", @@ -1871,9 +2019,10 @@ } }, "node_modules/@noble/hashes": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", - "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "license": "MIT", "engines": { "node": "^14.21.3 || >=16" }, @@ -1938,74 +2087,189 @@ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.15.tgz", + "integrity": "sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz", + "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/pkgr" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@safe-global/api-kit": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@safe-global/api-kit/-/api-kit-2.4.5.tgz", - "integrity": "sha512-kMV6snDLSuoXLpEHKDbbURBda8iaMMDZp19uDj4d34smIUIPLE6XHpjXR+1S6i+GkaJH/kdIrCe6v4/ip/BjpQ==", + "version": "2.5.11", + "resolved": "https://registry.npmjs.org/@safe-global/api-kit/-/api-kit-2.5.11.tgz", + "integrity": "sha512-gNrbGI/vHbOplPrytTEe5+CmwOowkEjDoTqGxz6q/rQSEJ7d7z8YzVy8Zdia7ICld1nIymQmkBdXkLr2XrDwfQ==", + "license": "MIT", "dependencies": { - "@safe-global/protocol-kit": "^4.1.0", - "@safe-global/safe-core-sdk-types": "^5.1.0", - "ethers": "^6.13.1", - "node-fetch": "^2.7.0" + "@safe-global/protocol-kit": "^5.2.4", + "@safe-global/types-kit": "^1.0.4", + "node-fetch": "^2.7.0", + "viem": "^2.21.8" } }, "node_modules/@safe-global/protocol-kit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@safe-global/protocol-kit/-/protocol-kit-4.1.0.tgz", - "integrity": "sha512-WAGXEn6UvKGlEYNqcWUasLZ4240sVWBg8T2SsfHoTs8Im0x2i48CNNZ5Mw9x+oKqhWs/Q9frNG6JcycN19LDRw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@safe-global/protocol-kit/-/protocol-kit-5.2.6.tgz", + "integrity": "sha512-A60Nws29cyWDVydVBq9mx/q08PeB7Kmln0VvMUl39WvO5VAptMWhibbjcMMstFyTjkapRtFDpG3sprqMQpmGuQ==", + "license": "MIT", "dependencies": { - "@noble/hashes": "^1.3.3", - "@safe-global/safe-core-sdk-types": "^5.1.0", - "@safe-global/safe-deployments": "^1.37.3", - "@safe-global/safe-modules-deployments": "^2.2.1", + "@safe-global/safe-deployments": "^1.37.32", + "@safe-global/safe-modules-deployments": "^2.2.7", + "@safe-global/types-kit": "^1.0.5", "abitype": "^1.0.2", - "ethereumjs-util": "^7.1.5", - "ethers": "^6.13.1", - "semver": "^7.6.2" + "semver": "^7.6.3", + "viem": "^2.21.8" + }, + "optionalDependencies": { + "@noble/curves": "^1.6.0", + "@peculiar/asn1-schema": "^2.3.13" } }, - "node_modules/@safe-global/safe-core-sdk-types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-5.1.0.tgz", - "integrity": "sha512-UzXR4zWmVzux25FcIm4H049QhZZpVpIBL5HE+V0p5gHpArZROL+t24fZmsKUf403CtBxIJM5zZSVQL0nFJi+IQ==", + "node_modules/@safe-global/protocol-kit/node_modules/@noble/curves": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.0.tgz", + "integrity": "sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==", + "license": "MIT", + "optional": true, "dependencies": { - "abitype": "^1.0.2" + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@safe-global/protocol-kit/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@safe-global/safe-deployments": { - "version": "1.37.8", - "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.37.8.tgz", - "integrity": "sha512-BT34eqSJ1K+4xJgJVY3/Yxg8TRTEvFppkt4wcirIPGCgR4/j06HptHPyDdmmqTuvih8wi8OpFHi0ncP+cGlXWA==", + "version": "1.37.32", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.37.32.tgz", + "integrity": "sha512-3XRy6TnVz0uymPxMNo7WkaK88sL12ZpIMKOfrNHkODUZCxCO4GFA0FFfjByAPS1LAXfmV7Mulk9Zx1n9vqR8Cg==", + "license": "MIT", "dependencies": { "semver": "^7.6.2" } }, "node_modules/@safe-global/safe-modules-deployments": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@safe-global/safe-modules-deployments/-/safe-modules-deployments-2.2.1.tgz", - "integrity": "sha512-H0XpusyXVcsTuRsQSq0FoBKqRfhZH87/1DrFEmXXPXmI3fJkvxq3KpTaTTqzcqoIe/J+erwVZQUYNfL68EcvAQ==" + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@safe-global/safe-modules-deployments/-/safe-modules-deployments-2.2.8.tgz", + "integrity": "sha512-XqRhEUzO8PNs5kCXztlPmQJBZO+YTDCRbiumCr5JBuS8RhU0pRSkG5Gs8qjKlZicxZvy3IdXZ14APVwb6+dj/Q==", + "license": "MIT" + }, + "node_modules/@safe-global/types-kit": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@safe-global/types-kit/-/types-kit-1.0.5.tgz", + "integrity": "sha512-LcAsApV1MDEEymw3ealYjFEoD+PoruPG7Ggt6eF+LX++OGFowMQAS+zK2d5sRReqFjxwUJzMGlS48aQKlQpfZg==", + "license": "MIT", + "dependencies": { + "abitype": "^1.0.2" + } + }, + "node_modules/@scure/base": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.5.tgz", + "integrity": "sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.2" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -2039,6 +2303,30 @@ "antlr4ts": "^0.5.0-alpha.4" } }, + "node_modules/@tokenizer/inflate": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", + "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fflate": "^0.8.2", + "token-types": "^6.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, "node_modules/@ts-morph/common": { "version": "0.12.3", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.12.3.tgz", @@ -2109,6 +2397,33 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -2150,14 +2465,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/bn.js": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", - "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -2183,6 +2490,28 @@ "@types/node": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2194,6 +2523,7 @@ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -2263,10 +2593,11 @@ } }, "node_modules/@types/jest": { - "version": "29.5.13", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", - "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -2278,11 +2609,19 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/micromatch": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.9.tgz", "integrity": "sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/braces": "*" } @@ -2294,26 +2633,32 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", - "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", + "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.21.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, - "node_modules/@types/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "dependencies": { - "@types/node": "*" - } + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.16", @@ -2327,20 +2672,6 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, - "node_modules/@types/secp256k1": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", - "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", @@ -2363,10 +2694,11 @@ } }, "node_modules/@types/sinon": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", - "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", + "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } @@ -2408,80 +2740,83 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", + "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/type-utils": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", + "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", + "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -2489,39 +2824,37 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", + "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/utils": "8.32.1", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", + "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", "dev": true, + "license": "MIT", "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -2529,224 +2862,493 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", + "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", + "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", + "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "8.32.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.2.tgz", + "integrity": "sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.2.tgz", + "integrity": "sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.2.tgz", + "integrity": "sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.2.tgz", + "integrity": "sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.2.tgz", + "integrity": "sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.2.tgz", + "integrity": "sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.2.tgz", + "integrity": "sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.2.tgz", + "integrity": "sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.2.tgz", + "integrity": "sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.2.tgz", + "integrity": "sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.2.tgz", + "integrity": "sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.2.tgz", + "integrity": "sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.2.tgz", + "integrity": "sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.2.tgz", + "integrity": "sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.9" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.2.tgz", + "integrity": "sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.2.tgz", + "integrity": "sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.2.tgz", + "integrity": "sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -2754,18 +3356,21 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/abitype": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.6.tgz", - "integrity": "sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/wevm" }, @@ -2786,6 +3391,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2795,10 +3401,11 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2806,20 +3413,12 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2879,6 +3478,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2976,24 +3576,147 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/asap": { @@ -3002,18 +3725,66 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, + "node_modules/asn1js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.6.tgz", + "integrity": "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/asn1js/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -3139,14 +3910,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -3188,20 +3951,11 @@ "readable-stream": "^3.4.0" } }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" - }, - "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/body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -3225,6 +3979,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3232,7 +3987,8 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", @@ -3254,28 +4010,10 @@ "node": ">=8" } }, - "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/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", "dev": true, "funding": [ { @@ -3291,11 +4029,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -3316,24 +4055,6 @@ "node": ">= 6" } }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -3371,11 +4092,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -3391,20 +4107,51 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -3431,9 +4178,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001662", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz", - "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==", + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", "dev": true, "funding": [ { @@ -3448,7 +4195,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", @@ -3527,15 +4275,6 @@ "node": ">=8" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/cjs-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", @@ -3684,6 +4423,136 @@ "node": ">= 0.8" } }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/command-line-usage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -3694,10 +4563,11 @@ } }, "node_modules/comment-json": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", - "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", "dev": true, + "license": "MIT", "dependencies": { "array-timsort": "^1.0.3", "core-util-is": "^1.0.3", @@ -3766,9 +4636,10 @@ } }, "node_modules/consola": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", - "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", "engines": { "node": "^14.18.0 || >=16.10.0" } @@ -3777,6 +4648,7 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -3788,6 +4660,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3799,9 +4672,10 @@ "dev": true }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3809,7 +4683,8 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" }, "node_modules/cookiejar": { "version": "2.1.4", @@ -3859,31 +4734,6 @@ } } }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -3912,10 +4762,11 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3925,13 +4776,67 @@ "node": ">= 8" } }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3956,6 +4861,16 @@ } } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3986,6 +4901,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3998,6 +4914,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4011,6 +4945,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4019,6 +4954,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -4061,23 +4997,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4104,16 +5029,32 @@ "node": ">=12" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", @@ -4131,29 +5072,11 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.25", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz", - "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.7", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", - "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", - "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.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "1.5.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.152.tgz", + "integrity": "sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==", + "dev": true, + "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", @@ -4176,6 +5099,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4201,13 +5125,77 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4226,6 +5214,65 @@ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -4238,7 +5285,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -4256,7 +5304,9 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4308,124 +5358,192 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, "peerDependencies": { "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.4.tgz", + "integrity": "sha512-buzw5z5VtiQMysYLH9iW9BV04YyZebsw+gPi+c4FCjfS9i6COYOrEWw9t3m3wA9PFBfqcBCqWf32qrXLbwafDw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.3" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^16.17.0 || >=18.6.0" }, "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" + "url": "https://opencollective.com/eslint-import-resolver-typescript" }, "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" }, "peerDependenciesMeta": { - "@types/eslint": { + "eslint-plugin-import": { "optional": true }, - "eslint-config-prettier": { + "eslint-plugin-import-x": { "optional": true } } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "debug": "^3.2.7" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=4" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/eslint/node_modules/brace-expansion": { + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" }, "engines": { - "node": ">=10.13.0" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } }, - "node_modules/eslint/node_modules/minimatch": { + "node_modules/eslint-plugin-import/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4433,17 +5551,177 @@ "node": "*" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz", + "integrity": "sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { @@ -4509,51 +5787,15 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/ethers": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", - "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.14.0.tgz", + "integrity": "sha512-KgHwltNSMdbrGWEyKkM0Rt2s+u1nDH/5BVDQakLinzGEJi4bWindBzZSCC4gKsbZjwDTI6ex/8suR9Ihbmz4IQ==", "funding": [ { "type": "individual", @@ -4564,13 +5806,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", + "@types/node": "22.7.5", "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", + "tslib": "2.7.0", "ws": "8.17.1" }, "engines": { @@ -4589,14 +5832,19 @@ } }, "node_modules/ethers/node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } }, - "node_modules/ethers/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", @@ -4607,15 +5855,6 @@ "node": ">=0.8.x" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4671,16 +5910,17 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -4694,7 +5934,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -4709,12 +5949,17 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4722,12 +5967,14 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" }, "node_modules/external-editor": { "version": "3.1.0", @@ -4805,6 +6052,27 @@ "bser": "2.1.1" } }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -4832,6 +6100,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -4839,6 +6108,24 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz", + "integrity": "sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.2.6", + "strtok3": "^10.2.0", + "token-types": "^6.0.0", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -4875,6 +6162,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -4892,6 +6180,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4899,7 +6188,21 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/find-up": { "version": "5.0.0", @@ -4922,6 +6225,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -4932,18 +6236,36 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -5036,6 +6358,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5044,6 +6367,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5096,6 +6420,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5115,15 +6470,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5141,6 +6502,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -5153,13 +6527,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", @@ -5169,9 +6575,6 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -5194,26 +6597,12 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -5224,32 +6613,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5267,6 +6654,19 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5280,6 +6680,7 @@ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5288,6 +6689,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -5296,9 +6698,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -5307,9 +6714,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5317,26 +6725,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=4" - } - }, - "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/hasown": { @@ -5359,16 +6761,6 @@ "node": ">=8" } }, - "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/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -5379,6 +6771,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -5434,6 +6827,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -5528,19 +6922,89 @@ "node": ">=12.0.0" } }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -5553,6 +7017,46 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", @@ -5568,6 +7072,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -5577,6 +7116,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -5594,64 +7149,259 @@ "node": ">=6" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { - "node": ">=0.12.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/isarray": { @@ -5665,6 +7415,21 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -5753,6 +7518,7 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -6475,6 +8241,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "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==", + "dev": true, + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6507,7 +8280,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -6556,25 +8330,12 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -6644,6 +8405,13 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -6728,14 +8496,13 @@ "tmpl": "1.0.5" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, "node_modules/media-typer": { @@ -6762,6 +8529,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -6793,6 +8561,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -6816,6 +8585,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -6850,21 +8620,12 @@ "node": ">=6" } }, - "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/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6888,6 +8649,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -6930,6 +8692,22 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "node_modules/napi-postinstall": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", + "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6940,6 +8718,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6951,31 +8730,33 @@ "dev": true }, "node_modules/nest-commander": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/nest-commander/-/nest-commander-3.15.0.tgz", - "integrity": "sha512-o9VEfFj/w2nm+hQi6fnkxL1GAFZW/KmuGcIE7/B/TX0gwm0QVy8svAF75EQm8wrDjcvWS7Cx/ArnkFn2C+iM2w==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/nest-commander/-/nest-commander-3.17.0.tgz", + "integrity": "sha512-1R9vppZT2j/9njKiG0zYTDLAyQOj14KdGWdNuhluveK8VXoQepXNb0t09dRNWy4KCWrI7wDZ2tQTEwb43JyHOw==", + "license": "MIT", "dependencies": { "@fig/complete-commander": "^3.0.0", - "@golevelup/nestjs-discovery": "4.0.1", + "@golevelup/nestjs-discovery": "4.0.3", "commander": "11.1.0", "cosmiconfig": "8.3.6", "inquirer": "8.2.6" }, "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "@types/inquirer": "^8.1.3" } }, "node_modules/nest-commander-testing": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/nest-commander-testing/-/nest-commander-testing-3.3.0.tgz", - "integrity": "sha512-XZ+5xMo4gnZc2xdkug7hTe7CTS0FhggzQrbeDo783CLfpS185iiLdTaENcbHD8xuyysgwXiSok3vQm5Cht8Mww==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/nest-commander-testing/-/nest-commander-testing-3.4.0.tgz", + "integrity": "sha512-7LER9gDTsVk9D04/bmRbBHR8IycgBAGsRyx+HFTfr0CG3Mi+xAv9Nlx/EcJVHBz1RcRcF2GN55sYrD4a9VmCjQ==", "dev": true, + "license": "MIT", "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/testing": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/testing": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "nest-commander": "^2.5.0 || ^3.0.0" } }, @@ -7004,11 +8785,6 @@ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -7037,16 +8813,6 @@ } } }, - "node_modules/node-gyp-build": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", - "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -7054,16 +8820,18 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/nodemon": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.6.tgz", - "integrity": "sha512-C8ymJbXpTTinxjWuMfMxw0rZhTn/r7ypSGldQyqPEgDEaVwAthqC0aodsMwontnAInN9TuPwRLeBoyhmfv+iSA==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^3.5.2", "debug": "^4", @@ -7160,9 +8928,94 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -7174,6 +9027,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -7251,6 +9105,80 @@ "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ox": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", + "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "^1.10.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.0.tgz", + "integrity": "sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -7291,10 +9219,11 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { "version": "1.0.1", @@ -7328,6 +9257,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7376,6 +9306,7 @@ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -7391,7 +9322,8 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/path-to-regexp": { "version": "3.3.0", @@ -7405,26 +9337,25 @@ "engines": { "node": ">=8" } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, + }, + "node_modules/peek-readable": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-7.0.0.tgz", + "integrity": "sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.1", @@ -7520,6 +9451,16 @@ "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -7530,9 +9471,10 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -7603,6 +9545,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -7642,6 +9585,33 @@ } ] }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvtsutils/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -7680,6 +9650,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -7688,6 +9659,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7696,6 +9668,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -7749,16 +9722,72 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/reflect-metadata": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "license": "Apache-2.0" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -7827,6 +9856,16 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -7869,6 +9908,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -7884,6 +9924,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7895,6 +9936,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7915,6 +9957,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7922,26 +9965,6 @@ "node": "*" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -7974,13 +9997,41 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -8000,6 +10051,48 @@ } ] }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -8054,29 +10147,11 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "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/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -8088,6 +10163,7 @@ "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -8111,6 +10187,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8118,12 +10195,14 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8141,6 +10220,7 @@ "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -8155,6 +10235,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -8167,28 +10248,43 @@ "node": ">= 0.4" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">= 0.4" } }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8211,14 +10307,69 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8232,6 +10383,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -8300,6 +10452,13 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -8325,6 +10484,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8345,6 +10505,13 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "license": "WTFPL OR MIT" + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -8377,13 +10544,73 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { @@ -8403,6 +10630,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8440,6 +10668,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.2.2.tgz", + "integrity": "sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/superagent": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", @@ -8479,6 +10724,7 @@ "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "dev": true, + "license": "MIT", "dependencies": { "methods": "^1.1.2", "superagent": "^8.1.2" @@ -8515,24 +10761,69 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.4.tgz", + "integrity": "sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==", "dev": true, + "license": "MIT", "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.3", + "tslib": "^2.8.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/tapable": { @@ -8692,13 +10983,44 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -8740,10 +11062,28 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } }, + "node_modules/token-types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz", + "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/touch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", @@ -8777,22 +11117,50 @@ } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "license": "MIT", "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=3.7.0" } }, "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "version": "29.3.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz", + "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", "ejs": "^3.1.10", @@ -8801,7 +11169,8 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.6.3", + "semver": "^7.7.1", + "type-fest": "^4.39.1", "yargs-parser": "^21.1.1" }, "bin": { @@ -8836,11 +11205,25 @@ } } }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", + "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -8871,6 +11254,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -8948,94 +11332,310 @@ "yaml": "^1.10.0" }, "engines": { - "node": ">=10" + "node": ">=10" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "node_modules/typechain/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.1.2" + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/typechain/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 4.0.0" } }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typedarray": { @@ -9044,10 +11644,11 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9056,6 +11657,16 @@ "node": ">=14.17" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/uid": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", @@ -9067,6 +11678,37 @@ "node": ">=8" } }, + "node_modules/uint8array-extras": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", + "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -9091,14 +11733,48 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/unrs-resolver": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.2.tgz", + "integrity": "sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/resolver-binding-darwin-arm64": "1.7.2", + "@unrs/resolver-binding-darwin-x64": "1.7.2", + "@unrs/resolver-binding-freebsd-x64": "1.7.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.7.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.7.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.7.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.7.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.7.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.7.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.7.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.7.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.7.2", + "@unrs/resolver-binding-linux-x64-musl": "1.7.2", + "@unrs/resolver-binding-wasm32-wasi": "1.7.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.7.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.7.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.7.2" + } + }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -9114,9 +11790,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -9143,6 +11820,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -9175,6 +11853,72 @@ "node": ">= 0.8" } }, + "node_modules/viem": { + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.29.2.tgz", + "integrity": "sha512-cukRxab90jvQ+TDD84sU3qB3UmejYqgCw4cX8SfWzvh7JPfZXI3kAMUaT5OSR2As1Mgvx1EJawccwPjGqkSSwA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "1.8.2", + "@noble/hashes": "1.7.2", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.9", + "ws": "8.18.1" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.2" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "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 + } + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -9211,18 +11955,19 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -9320,6 +12065,102 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -9329,6 +12170,30 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "license": "MIT", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -9348,6 +12213,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9484,6 +12350,17 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", + "license": "MIT", + "optional": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index c3a0acb..b69b840 100644 --- a/package.json +++ b/package.json @@ -1,86 +1,92 @@ { - "name": "@vennbuild/cli", - "version": "1.0.12", - "description": "Venn Network CLI", - "author": "Venn Network", - "license": "MIT", - "keywords": [ - "web3", - "security", - "ironblocks", - "cli", - "firewall", - "blockchain", - "ethereum", - "solidity", - "venn" - ], - "repository": "https://github.com/ironblocks/cli", - "homepage": "https://github.com/ironblocks/cli#readme", - "bugs": { - "url": "https://github.com/ironblocks/cli/issues" - }, - "bin": { - "venn": "dist/main.js" - }, - "scripts": { - "build": "nest build", - "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main.js", - "lint": "eslint \"{src,tests}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "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 ./tests/jest-e2e.json", - "publish:npm": "npm run build && npm pack && npm publish --access public && rm -rf *.tgz" - }, - "dependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/config": "^3.1.1", - "@nestjs/core": "^10.0.0", - "@nestjs/platform-express": "^10.0.0", - "@safe-global/api-kit": "^2.3.0", - "@solidity-parser/parser": "^0.16.2", - "colors": "^1.4.0", - "consola": "^3.2.3", - "ethers": "^6.9.1", - "micromatch": "^4.0.5", - "nest-commander": "^3.12.2", - "ora": "^5.4.1", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.8.1", - "semver": "^7.5.4" - }, - "devDependencies": { - "@automock/adapters.nestjs": "^2.1.0", - "@automock/jest": "^2.1.0", - "@nestjs/cli": "^10.0.0", - "@nestjs/schematics": "^10.0.0", - "@nestjs/testing": "^10.3.3", - "@types/express": "^4.17.17", - "@types/jest": "^29.5.12", - "@types/micromatch": "^4.0.6", - "@types/node": "^20.3.1", - "@types/sinon": "^17.0.3", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "eslint": "^8.42.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.0", - "jest": "^29.7.0", - "nest-commander-testing": "^3.3.0", - "nodemon": "^3.1.5", - "prettier": "^3.0.0", - "source-map-support": "^0.5.21", - "supertest": "^6.3.3", - "ts-jest": "^29.1.2", - "ts-loader": "^9.4.3", - "ts-node": "^10.9.1", - "ts-prune": "^0.10.3", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" - } -} \ No newline at end of file + "name": "@vennbuild/cli", + "version": "1.0.12", + "description": "Venn Network CLI", + "author": "Venn Network", + "license": "MIT", + "keywords": [ + "web3", + "security", + "ironblocks", + "cli", + "firewall", + "blockchain", + "ethereum", + "solidity", + "venn" + ], + "repository": "https://github.com/ironblocks/cli", + "homepage": "https://github.com/ironblocks/cli#readme", + "bugs": { + "url": "https://github.com/ironblocks/cli/issues" + }, + "bin": { + "venn": "dist/main.js" + }, + "scripts": { + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main.js", + "lint": "eslint \"{src,tests}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "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 ./tests/jest-e2e.json", + "publish:npm": "npm run build && npm pack && npm publish --access public && rm -rf *.tgz", + "generate-abi-types": "typechain --target=ethers-v6 'abi/**/*.json' --out-dir src/types/contracts" + }, + "dependencies": { + "@nestjs/common": "^10.4.17", + "@nestjs/config": "^3.3.0", + "@nestjs/core": "^10.4.17", + "@nestjs/platform-express": "^10.4.17", + "@safe-global/api-kit": "^2.5.11", + "@solidity-parser/parser": "^0.16.2", + "colors": "^1.4.0", + "consola": "^3.4.2", + "ethers": "^6.14.0", + "micromatch": "^4.0.8", + "nest-commander": "^3.17.0", + "ora": "^5.4.1", + "reflect-metadata": "^0.1.14", + "rxjs": "^7.8.2", + "semver": "^7.7.2" + }, + "devDependencies": { + "@automock/adapters.nestjs": "^2.1.0", + "@automock/jest": "^2.1.0", + "@nestjs/cli": "^10.4.9", + "@nestjs/schematics": "^10.2.3", + "@nestjs/testing": "^10.4.17", + "@typechain/ethers-v6": "^0.5.1", + "@types/express": "^4.17.21", + "@types/jest": "^29.5.14", + "@types/micromatch": "^4.0.9", + "@types/node": "^22.15.17", + "@types/sinon": "^17.0.4", + "@typescript-eslint/eslint-plugin": "^8.32.1", + "eslint": "^8.57.1", + "eslint-config-prettier": "^10.1.5", + "eslint-import-resolver-typescript": "^4.3.4", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-simple-import-sort": "^12.1.1", + "jest": "^29.7.0", + "nest-commander-testing": "^3.4.0", + "nodemon": "^3.1.10", + "prettier": "^3.5.3", + "source-map-support": "^0.5.21", + "supertest": "^6.3.4", + "ts-jest": "^29.3.2", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "ts-prune": "^0.10.3", + "tsconfig-paths": "^4.2.0", + "typechain": "^8.3.2", + "typescript": "^5.8.3" + } +} diff --git a/src/app/app.command.descriptor.ts b/src/app/app.command.descriptor.ts index d05b438..cae45b5 100644 --- a/src/app/app.command.descriptor.ts +++ b/src/app/app.command.descriptor.ts @@ -1,5 +1,5 @@ import * as colors from 'colors'; -// eslint-disable-next-line @typescript-eslint/no-var-requires +// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const pkg = require('../../package.json'); export const NAME = 'venn'; diff --git a/src/app/app.command.options.descriptors.ts b/src/app/app.command.options.descriptors.ts index 2bc5173..0793162 100644 --- a/src/app/app.command.options.descriptors.ts +++ b/src/app/app.command.options.descriptors.ts @@ -1,6 +1,6 @@ export const OPTIONS = { VERSION: { FLAGS: '-v, --version', - DESCRIPTION: 'Show version information' - } + DESCRIPTION: 'Show version information', + }, }; diff --git a/src/app/app.command.ts b/src/app/app.command.ts index fdb184f..411f045 100644 --- a/src/app/app.command.ts +++ b/src/app/app.command.ts @@ -1,14 +1,14 @@ import * as colors from 'colors'; import { CommandRunner, Option, RootCommand } from 'nest-commander'; +import { DESCRIPTION, FULL_NAME, NAME } from '@/app/app.command.descriptor'; import { OPTIONS } from '@/app/app.command.options.descriptors'; -import { LoggerService } from '@/lib/logging/logger.service'; import { StandaloneCommand } from '@/commands/standalone-command.decorator'; -import { DESCRIPTION, NAME, FULL_NAME } from '@/app/app.command.descriptor'; +import { LoggerService } from '@/lib/logging/logger.service'; @RootCommand({ name: NAME, - description: DESCRIPTION + description: DESCRIPTION, }) export class AppCommand extends CommandRunner { constructor(private readonly logger: LoggerService) { @@ -16,9 +16,10 @@ export class AppCommand extends CommandRunner { } @StandaloneCommand(FULL_NAME) + // eslint-disable-next-line @typescript-eslint/no-explicit-any async run(passedParams: string[], options?: any): Promise { if (options.version) { - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const pkg = require('../../package.json'); this.logger.log(`Venn CLI ${colors.cyan('v' + pkg.version)}`); } else { @@ -28,7 +29,7 @@ export class AppCommand extends CommandRunner { @Option({ flags: OPTIONS.VERSION.FLAGS, - description: OPTIONS.VERSION.DESCRIPTION + description: OPTIONS.VERSION.DESCRIPTION, }) parseVersion(): void {} } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index c6e2d2c..0a36dd3 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,22 +1,22 @@ import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; -import config from '@/config/configuration'; import { AppCommand } from '@/app/app.command'; -import { VennModule } from '@/venn/venn.module'; -import { LoggerModule } from '@/lib/logging/logger.module'; +import config from '@/config/configuration'; import { FirewallModule } from '@/firewall/firewall.module'; +import { LoggerModule } from '@/lib/logging/logger.module'; +import { VennModule } from '@/venn/venn.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, - load: [config] + load: [config], }), VennModule, LoggerModule, - FirewallModule + FirewallModule, ], - providers: [AppCommand] + providers: [AppCommand], }) export class AppModule {} diff --git a/src/commands/standalone-command.decorator.ts b/src/commands/standalone-command.decorator.ts index ed17232..7be9eaf 100644 --- a/src/commands/standalone-command.decorator.ts +++ b/src/commands/standalone-command.decorator.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import * as colors from 'colors'; export function StandaloneCommand(command: string) { diff --git a/src/config/configuration.ts b/src/config/configuration.ts index abff14f..96c3180 100644 --- a/src/config/configuration.ts +++ b/src/config/configuration.ts @@ -26,6 +26,7 @@ type CLIConfig = { networks?: NetworksConfiguration; privateKey?: string; + protocolMetadata?: string; }; const defaults = { @@ -35,16 +36,16 @@ const defaults = { integ: { include: [], exclude: ['**/node_modules/*'], - overrideDefaults: false - } - } + overrideDefaults: false, + }, + }, }; export default async () => { let localConfig: CLIConfig = {}; try { localConfig = (await import(LOCAL_CONFIG_PATH)) || {}; - } catch (err) { + } catch (_err) { // No valid local config. } @@ -55,9 +56,9 @@ export default async () => { fw: { integ: { ...defaults.fw.integ, - exclude: overrideDefaults ? [] : defaults.fw.integ.exclude - } - } + exclude: overrideDefaults ? [] : defaults.fw.integ.exclude, + }, + }, }; const config: CLIConfig = { @@ -67,12 +68,15 @@ export default async () => { integ: { ...overrides.fw.integ, ...(localConfig?.fw?.integ || {}), - exclude: overrides.fw.integ.exclude.concat(localConfig?.fw?.integ?.exclude || []).map(pattern => join(pattern)) - } + exclude: overrides.fw.integ.exclude + .concat(localConfig?.fw?.integ?.exclude || []) + .map(pattern => join(pattern)), + }, }, networks: localConfig?.networks || undefined, - privateKey: process.env.VENN_PRIVATE_KEY + privateKey: process.env.VENN_PRIVATE_KEY, + protocolMetadata: process.env.PROTOCOL_METADATA, }; return config; diff --git a/src/files/files.module.ts b/src/files/files.module.ts index a005fb6..d58c75d 100644 --- a/src/files/files.module.ts +++ b/src/files/files.module.ts @@ -1,8 +1,9 @@ import { Module } from '@nestjs/common'; + import { FilesService } from '@/files/files.service'; @Module({ providers: [FilesService], - exports: [FilesService] + exports: [FilesService], }) export class FilesModules {} diff --git a/src/files/files.service.ts b/src/files/files.service.ts index 8b9774b..aca0fe4 100644 --- a/src/files/files.service.ts +++ b/src/files/files.service.ts @@ -1,8 +1,7 @@ +import { Injectable } from '@nestjs/common'; import * as fs from 'fs/promises'; import * as path from 'path'; -import { Injectable } from '@nestjs/common'; - @Injectable() export class FilesService { public async doesFileExist(filepath: string): Promise { @@ -12,7 +11,7 @@ export class FilesService { await fs.access(resolvedPath, fs.constants.F_OK); return true; - } catch (e) { + } catch (_e) { return false; } } diff --git a/src/firewall/firewall.command.ts b/src/firewall/firewall.command.ts index 3ebb789..d51a171 100644 --- a/src/firewall/firewall.command.ts +++ b/src/firewall/firewall.command.ts @@ -1,14 +1,14 @@ -import { CommandRunner, Command } from 'nest-commander'; +import { Command, CommandRunner } from 'nest-commander'; -import { LoggerService } from '@/lib/logging/logger.service'; import { StandaloneCommand } from '@/commands/standalone-command.decorator'; -import { IntegrationCommand } from '@/firewall/integration/integration.command'; import { DESCRIPTION, FULL_NAME, NAME } from '@/firewall/firewall.command.descriptor'; +import { IntegrationCommand } from '@/firewall/integration/integration.command'; +import { LoggerService } from '@/lib/logging/logger.service'; @Command({ name: NAME, description: DESCRIPTION, - subCommands: [IntegrationCommand] + subCommands: [IntegrationCommand], }) export class FirewallCommand extends CommandRunner { constructor(private readonly logger: LoggerService) { @@ -16,7 +16,7 @@ export class FirewallCommand extends CommandRunner { } @StandaloneCommand(FULL_NAME) - async run(passedParams: string[]): Promise { + async run(_passedParams: string[]): Promise { this.command.help(); } } diff --git a/src/firewall/firewall.module.ts b/src/firewall/firewall.module.ts index a56086d..53680e9 100644 --- a/src/firewall/firewall.module.ts +++ b/src/firewall/firewall.module.ts @@ -1,11 +1,11 @@ import { Module } from '@nestjs/common'; -import { LoggerModule } from '@/lib/logging/logger.module'; import { FirewallCommand } from '@/firewall/firewall.command'; import { IntegrationModule } from '@/firewall/integration/integration.module'; +import { LoggerModule } from '@/lib/logging/logger.module'; @Module({ imports: [IntegrationModule, LoggerModule], - providers: [FirewallCommand] + providers: [FirewallCommand], }) export class FirewallModule {} diff --git a/src/firewall/integration/integration.command.ts b/src/firewall/integration/integration.command.ts index d638866..2674e15 100644 --- a/src/firewall/integration/integration.command.ts +++ b/src/firewall/integration/integration.command.ts @@ -1,7 +1,6 @@ import * as colors from 'colors'; -import { resolve } from 'path'; - import { CommandRunner, Option, SubCommand } from 'nest-commander'; +import { resolve } from 'path'; import { StandaloneCommand } from '@/commands/standalone-command.decorator'; import { DESCRIPTION, FULL_NAME, NAME } from '@/firewall/integration/integration.command.descriptor'; @@ -23,13 +22,13 @@ interface CommandOptions { @SubCommand({ name: NAME, - description: DESCRIPTION + description: DESCRIPTION, }) export class IntegrationCommand extends CommandRunner { constructor( private readonly logger: LoggerService, private readonly integrationService: IntegrationService, - private readonly frameworkService: FrameworkService + private readonly frameworkService: FrameworkService, ) { super(); } @@ -56,7 +55,7 @@ export class IntegrationCommand extends CommandRunner { verbose: options?.verbose, external: true, internal: options?.internal, - modifiers: options?.modifiers + modifiers: options?.modifiers, }; if (options?.file) { @@ -86,7 +85,7 @@ export class IntegrationCommand extends CommandRunner { @Option({ flags: '-f, --file ', - description: 'path to contract file to customize' + description: 'path to contract file to customize', }) parseFilePath(val: string): string { this.setOptionConflicts('file', ['dir']); @@ -95,7 +94,7 @@ export class IntegrationCommand extends CommandRunner { @Option({ flags: '-d, --dir ', - description: 'path to contracts directory to customize' + description: 'path to contracts directory to customize', }) parseDirPath(val: string): string { this.setOptionConflicts('dir', ['file']); @@ -105,7 +104,7 @@ export class IntegrationCommand extends CommandRunner { @Option({ flags: '-r, --rec', description: 'recurse on all the contract files in the directory', - defaultValue: false + defaultValue: false, }) parseRecursive(): boolean { return true; @@ -114,7 +113,7 @@ export class IntegrationCommand extends CommandRunner { @Option({ flags: '-v, --verbose', description: 'provider additional details along the command execution', - defaultValue: false + defaultValue: false, }) parseVerbose(): boolean { return true; @@ -123,7 +122,7 @@ export class IntegrationCommand extends CommandRunner { @Option({ flags: '-i, --internal', description: 'whether to add firewall protection for "internal" functions', - defaultValue: false + defaultValue: false, }) parseInternal(): boolean { return true; @@ -131,7 +130,7 @@ export class IntegrationCommand extends CommandRunner { @Option({ flags: '-m, --modifiers ', - description: 'set advanced modifiers' + description: 'set advanced modifiers', }) parseModifiers(val: string): FirewallModifier[] { const ACCEPTED_MODIFIERS = ['invariantProtected']; diff --git a/src/firewall/integration/integration.module.ts b/src/firewall/integration/integration.module.ts index f40e8a5..0f33238 100644 --- a/src/firewall/integration/integration.module.ts +++ b/src/firewall/integration/integration.module.ts @@ -1,15 +1,15 @@ import { Module } from '@nestjs/common'; -import { LoggerService } from '@/lib/logging/logger.service'; import { FilesModules } from '@/files/files.module'; -import { LoggerModule } from '@/lib/logging/logger.module'; -import { FrameworkModule } from '@/framework/framework.module'; +import { IntegrationCommand } from '@/firewall/integration/integration.command'; import { IntegrationService } from '@/firewall/integration/integration.service'; import { IntegrationUtils } from '@/firewall/integration/integration.utils'; -import { IntegrationCommand } from '@/firewall/integration/integration.command'; +import { FrameworkModule } from '@/framework/framework.module'; +import { LoggerModule } from '@/lib/logging/logger.module'; +import { LoggerService } from '@/lib/logging/logger.service'; @Module({ imports: [LoggerModule, FilesModules, FrameworkModule], - providers: [LoggerService, IntegrationCommand, IntegrationService, IntegrationUtils] + providers: [LoggerService, IntegrationCommand, IntegrationService, IntegrationUtils], }) export class IntegrationModule {} diff --git a/src/firewall/integration/integration.service.ts b/src/firewall/integration/integration.service.ts index c6ffb7a..5e1388e 100644 --- a/src/firewall/integration/integration.service.ts +++ b/src/firewall/integration/integration.service.ts @@ -1,19 +1,19 @@ -import * as colors from 'colors'; import { Injectable } from '@nestjs/common'; +import * as colors from 'colors'; -import { LoggerService } from '@/lib/logging/logger.service'; import { FilesService } from '@/files/files.service'; -import { IntegrationError } from '@/firewall/integration/integration.errors'; import { UnsupportedFileFormatError } from '@/firewall/integration/errors/unsupported.file.format.error'; import { UnsupportedSolidityVersionError } from '@/firewall/integration/errors/unsupported.solidity.version.error'; -import { IntegrationUtils, type IntegrateOptions } from '@/firewall/integration/integration.utils'; +import { IntegrationError } from '@/firewall/integration/integration.errors'; +import { type IntegrateOptions, IntegrationUtils } from '@/firewall/integration/integration.utils'; +import { LoggerService } from '@/lib/logging/logger.service'; @Injectable() export class IntegrationService { constructor( private readonly fwIntegUtils: IntegrationUtils, private readonly filesServices: FilesService, - private readonly logger: LoggerService + private readonly logger: LoggerService, ) {} public async integContractFile(filepath: string, options?: IntegrateOptions): Promise { @@ -32,7 +32,7 @@ export class IntegrationService { } catch (err) { if (err instanceof UnsupportedSolidityVersionError) { throw new Error( - `Unsupported Solidity version: ${colors.red(err.version)} in ${colors.red(relativeFilePath)}` + `Unsupported Solidity version: ${colors.red(err.version)} in ${colors.red(relativeFilePath)}`, ); } if (err instanceof UnsupportedFileFormatError) { @@ -76,7 +76,7 @@ export class IntegrationService { } }, dirpath, - recursive + recursive, ); if (failedToCustomizeFiles.length) { diff --git a/src/firewall/integration/integration.utils.ts b/src/firewall/integration/integration.utils.ts index 03dda82..669c9e9 100644 --- a/src/firewall/integration/integration.utils.ts +++ b/src/firewall/integration/integration.utils.ts @@ -1,18 +1,17 @@ -import { join, parse } from 'path'; -import { stat, readdir, readFile, writeFile } from 'fs/promises'; - -import { ethers } from 'ethers'; -import { intersects } from 'semver'; import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { InquirerService } from 'nest-commander'; -import { any as pathMatch } from 'micromatch'; import { parse as parseSolidity } from '@solidity-parser/parser'; +import { ethers } from 'ethers'; +import { readdir, readFile, stat, writeFile } from 'fs/promises'; +import { any as pathMatch } from 'micromatch'; +import { InquirerService } from 'nest-commander'; +import { join, parse } from 'path'; +import { intersects } from 'semver'; -import { LoggerService } from '@/lib/logging/logger.service'; -import { UnsupportedParamTypeError } from '@/firewall/integration/errors/unsupported.param.type.error'; import { UnsupportedFileFormatError } from '@/firewall/integration/errors/unsupported.file.format.error'; +import { UnsupportedParamTypeError } from '@/firewall/integration/errors/unsupported.param.type.error'; import { UnsupportedSolidityVersionError } from '@/firewall/integration/errors/unsupported.solidity.version.error'; +import { LoggerService } from '@/lib/logging/logger.service'; const MSG_SENDER = 'msg.sender'; @@ -29,7 +28,7 @@ const FIREWALL_MODIFIERS = [ FW_PROTECTED_MODIFIER, FW_PROTECTED_CUSTOM_MODIFIER, FW_PROTECTED_SIG_MODIFIER, - FW_INVARIANT_PROTECTED_MODIFIER + FW_INVARIANT_PROTECTED_MODIFIER, ] as const; const FW_STORAGE_SLOT = 'bytes32(uint256(keccak256("eip1967.firewall")) - 1)'; @@ -68,7 +67,7 @@ const RE_INDENTATION = new RegExp(`(?[\\r\\s\\n]+)`, 'g'); const RE_NAME = new RegExp(`\\w+`, 'g'); const RE_CONTRACT_DECLARATION = new RegExp( `(?(?:abstract${RE_BLANK_SPACE.source}+)?contract${RE_BLANK_SPACE.source}+(?${RE_NAME.source}))`, - 'g' + 'g', ); const RE_FW_CONTRACT = new RegExp(`(?(?:${FW_CONTRACT}(?:Base${RE_BLANK_SPACE.source}*\\(.*\\))?))`, 'gs'); @@ -76,7 +75,7 @@ const RE_FW_CONTRACT = new RegExp(`(?(?:${FW_CONTRACT}(?:Base${RE_BL const RE_BASE_CONTRACTS = new RegExp(`(?(?:${RE_BLANK_SPACE.source}*[\\w,()]+)+)`, 'g'); const RE_INHERITANCE = new RegExp( `(?${RE_BLANK_SPACE.source}+is${RE_BLANK_SPACE.source}+${RE_BASE_CONTRACTS.source})`, - 'g' + 'g', ); const RE_CONTRACT_DEFINITION = new RegExp(`^${RE_CONTRACT_DECLARATION.source}${RE_INHERITANCE.source}?`, 'g'); @@ -90,7 +89,7 @@ const RE_PARAMS = new RegExp(`(?${RE_BLANK_SPACE.source}*[\\w,\\.\\[\\]] const RE_ARGS = new RegExp(`(?:${RE_BLANK_SPACE.source}*[\\w,\\.\\(\\)\\[\\]]+(?:${RE_BLANK_SPACE.source}*))*`, 'g'); const RE_SIGNATURE = new RegExp( `(?${RE_BLANK_SPACE.source}+(?${RE_NAME.source})${RE_BLANK_SPACE.source}*\\(${RE_PARAMS.source}\\))`, - 'g' + 'g', ); const RE_VISIBILITY = new RegExp(`(?${RE_BLANK_SPACE.source}*(?:public|external|internal|private))`, 'g'); const RE_MODIFIERS = new RegExp(`(?(?:${RE_BLANK_SPACE.source}*(?!returns)[\\w,\\.\\(\\)\\[\\]]+)*)`, 'g'); @@ -98,7 +97,7 @@ const RE_IMMUTABLE_STATE = new RegExp(`\\pure|view\\b`, 'i'); const RE_RETURNS = new RegExp(`(?${RE_BLANK_SPACE.source}*returns[^{]+)`, 'g'); const RE_METHOD_DEFINITION = new RegExp( `^${RE_FUNCTION.source}?${RE_SIGNATURE.source}${RE_VISIBILITY.source}?${RE_MODIFIERS.source}?${RE_RETURNS.source}?`, - 'g' + 'g', ); /** @@ -109,11 +108,11 @@ const RE_METHOD_DEFINITION = new RegExp( const RE_FW_MODIFIER_NO_ARGS = new RegExp(`(?:${FIREWALL_MODIFIERS.map(mod => `\\b${mod}\\b`).join('|')})`, 'g'); const RE_FW_MODIFIER_WITH_ARGS = new RegExp( `${RE_FW_MODIFIER_NO_ARGS.source}(?:${RE_BLANK_SPACE.source}*\\(${RE_ARGS.source}\\))?`, - 'g' + 'g', ); const RE_FW_MODIFIER = new RegExp( `${RE_BLANK_SPACE.source}*${RE_FW_MODIFIER_WITH_ARGS.source}(?:${RE_BLANK_SPACE.source}*)?`, - 'g' + 'g', ); type ParsedSolidityConstructs = { @@ -156,7 +155,7 @@ export class IntegrationUtils { constructor( private readonly inquirer: InquirerService, private readonly config: ConfigService, - private readonly logger: LoggerService + private readonly logger: LoggerService, ) { this.serializerByModifier = { [FW_PROTECTED_MODIFIER]: () => FW_PROTECTED_MODIFIER, @@ -164,7 +163,7 @@ export class IntegrationUtils { const sigHash = this.calcSighash(contract, method); return `${FW_PROTECTED_SIG_MODIFIER}(bytes4(${sigHash}))`; }, - [FW_INVARIANT_PROTECTED_MODIFIER]: () => FW_INVARIANT_PROTECTED_MODIFIER + [FW_INVARIANT_PROTECTED_MODIFIER]: () => FW_INVARIANT_PROTECTED_MODIFIER, }; } @@ -174,7 +173,7 @@ export class IntegrationUtils { if (!stats.isFile()) { throw new Error(); } - } catch (err) { + } catch (_err) { throw new Error(`file does not exist '${path}'`); } } @@ -185,7 +184,7 @@ export class IntegrationUtils { if (!stats.isDirectory()) { throw new Error(); } - } catch (err) { + } catch (_err) { throw new Error(`directory does not exist '${path}'`); } } @@ -203,7 +202,7 @@ export class IntegrationUtils { async forEachSolidityFilesInDir( cb: (filepath: string) => unknown | Promise, dirpath: string, - recursive: boolean + recursive: boolean, ): Promise { const directoriesQueue: string[] = [dirpath]; while (directoriesQueue.length) { @@ -272,7 +271,7 @@ export class IntegrationUtils { // Overriding original file. await writeFile(path, customizedCode); return true; - } catch (err) { + } catch (_err) { throw new UnsupportedFileFormatError(); } } @@ -281,10 +280,10 @@ export class IntegrationUtils { try { const parsed = parseSolidity(code, { tolerant: true, - range: true + range: true, }) as ParsedSolidityConstructs; return parsed; - } catch (err) { + } catch (_err) { throw new UnsupportedFileFormatError(); } } @@ -307,13 +306,13 @@ export class IntegrationUtils { * @param code * @param contract * @param contractNamesToCustomize - * @returns + * @returns the customized code */ private customizeContractInPlace( code: string, contract: SolidityConstruct, contractNamesToCustomize: Set, - options?: IntegrateOptions + options?: IntegrateOptions, ): string | null { const { type, kind, name, range } = contract; const isContractDefinition = type === 'ContractDefinition'; @@ -342,7 +341,7 @@ export class IntegrationUtils { private customizeContractCode( contract: SolidityConstruct, contractCode: string, - options?: IntegrateOptions + options?: IntegrateOptions, ): string { const alreadyCustomizedHeader = this.alreadyCustomizedContractHeader(contract); const methods = contract.subNodes.filter(({ type }) => type === 'FunctionDefinition'); @@ -352,7 +351,7 @@ export class IntegrationUtils { contractCode, contract, methods, - options + options, ); if ( @@ -374,7 +373,7 @@ export class IntegrationUtils { declaration: string, name: string, inheritance: string = '', - baseContracts: string = '' + baseContracts: string = '', ) => { if (baseContracts) { const is = inheritance.substring(0, inheritance.length - baseContracts.length); @@ -398,7 +397,7 @@ export class IntegrationUtils { } return `${declaration} is ${fwInheritedContract}`; - } + }, ); return customizedContractCode; } @@ -407,7 +406,7 @@ export class IntegrationUtils { contractCode: string, contract: SolidityConstruct, methods: SolidityConstruct[], - options?: IntegrateOptions + options?: IntegrateOptions, ): string { const [contractStartIndex] = contract.range; // Customizing methods from the bottom up not to affect other methods' start and end indexes. @@ -415,7 +414,7 @@ export class IntegrationUtils { const [methodStartIndex, methodEndIndex] = method.range; const [relativeStartIndex, relativeEndIndex] = [ methodStartIndex - contractStartIndex, - methodEndIndex - contractStartIndex + methodEndIndex - contractStartIndex, ]; const methodCode = contractCode.substring(relativeStartIndex, relativeEndIndex + 1); const customizedMethodCode = this.customizeMethodCode(contract, method, methodCode, options); @@ -430,11 +429,11 @@ export class IntegrationUtils { contract: SolidityConstruct, method: SolidityConstruct, methodCode: string, - options?: IntegrateOptions + options?: IntegrateOptions, ): string { const isAbstract = !method.body; const firewallModifiers = (method.modifiers || []).filter(modifier => - FIREWALL_MODIFIERS.includes(modifier?.name as FirewallModifier) + FIREWALL_MODIFIERS.includes(modifier?.name as FirewallModifier), ); const requiredModifiers = this.getModifiersToAdd(method, options); const hasMismatchingModifiers = firewallModifiers.length !== requiredModifiers.length; @@ -455,7 +454,7 @@ export class IntegrationUtils { params: string = '', visibility: string = '', modifiers: string = '', - returns: string = '' + returns: string = '', ) => { const isImmutableState = !!modifiers.match(RE_IMMUTABLE_STATE); if (isImmutableState) { @@ -474,7 +473,7 @@ export class IntegrationUtils { } return `${func}${signature}${visibility} ${modifiersToAdd}${returns}`; - } + }, ); if (this.proxyModifiersAreDetected(method?.modifiers)) { @@ -555,7 +554,7 @@ export class IntegrationUtils { (modifier.name === FW_PROXY_INITIALIZER_MODIFIER && !modifier.arguments) || (modifier.name === FW_PROXY_REINITIALIZER_MODIFIER && modifier.arguments?.length == 1 && - modifier.arguments[0].type == 'NumberLiteral') + modifier.arguments[0].type == 'NumberLiteral'), ); } @@ -579,7 +578,7 @@ export class IntegrationUtils { const paramTypes = (method.arguments || []).map(param => { try { return this.getParamTypeName(param.typeName); - } catch (err) { + } catch (_err) { throw new UnsupportedParamTypeError(`unsupported type of param "${param.name}"`); } }); @@ -592,6 +591,7 @@ export class IntegrationUtils { const rawTypeName = paramtType?.name || paramtType?.namePath; switch (paramtType?.type) { case 'ArrayTypeName': + // eslint-disable-next-line no-case-declarations const baseTypeName = this.getParamTypeName(paramtType?.baseTypeName); return `${baseTypeName}[${paramtType?.length?.number || ''}]`; case 'UserDefinedTypeName': diff --git a/src/framework/dependencies-strategies.enum.ts b/src/framework/dependencies-strategies.enum.ts index 6ed0419..9e57908 100644 --- a/src/framework/dependencies-strategies.enum.ts +++ b/src/framework/dependencies-strategies.enum.ts @@ -2,5 +2,5 @@ export enum DependenciesStrategy { NPM = 'npm', Yarn = 'yarn', Forge = 'forge', - Other = 'other' + Other = 'other', } diff --git a/src/framework/dependencies.services.ts b/src/framework/dependencies.services.ts index 110603f..a3582c2 100644 --- a/src/framework/dependencies.services.ts +++ b/src/framework/dependencies.services.ts @@ -1,20 +1,20 @@ -import * as colors from 'colors'; import { Injectable } from '@nestjs/common'; +import * as colors from 'colors'; import { InquirerService } from 'nest-commander'; -import { IStrategy } from '@/framework/strategy.interface'; -import { Dependency } from '@/framework/dependency.type'; -import { NPMStrategy } from '@/framework/npm.strategy'; -import { YarnStrategy } from '@/framework/yarn.strategy'; import { FilesService } from '@/files/files.service'; -import { LoggerService } from '@/lib/logging/logger.service'; -import { ForgeStrategy } from '@/framework/forge.strategy'; import { DependenciesError } from '@/framework/dependencies.errors'; import { DependenciesStrategy } from '@/framework/dependencies-strategies.enum'; +import { Dependency } from '@/framework/dependency.type'; +import { ForgeStrategy } from '@/framework/forge.strategy'; import { InstallDependenciesAnswers } from '@/framework/install-dependencies.questions'; +import { INSTALL_DEPENDENCIES_QUESTION_SET_NAME } from '@/framework/install-dependencies.questions.descriptor'; +import { NPMStrategy } from '@/framework/npm.strategy'; import { SelectDependenciesStrategyAnswers } from '@/framework/select-dependencies-strategy.questions'; import { SELECT_STRATEGY_QUESTION_SET_NAME } from '@/framework/select-dependencies-strategy.questions.descriptor'; -import { INSTALL_DEPENDENCIES_QUESTION_SET_NAME } from '@/framework/install-dependencies.questions.descriptor'; +import { IStrategy } from '@/framework/strategy.interface'; +import { YarnStrategy } from '@/framework/yarn.strategy'; +import { LoggerService } from '@/lib/logging/logger.service'; @Injectable() export class DependenciesService { @@ -27,7 +27,7 @@ export class DependenciesService { private readonly npmStrategy: NPMStrategy, private readonly yarnStrategy: YarnStrategy, private readonly filesService: FilesService, - private readonly forgeStrategy: ForgeStrategy + private readonly forgeStrategy: ForgeStrategy, ) {} public async assertDependencies(): Promise { @@ -109,7 +109,10 @@ export class DependenciesService { } public async promptToInstallDependencies(): Promise { - const { installDependencies } = await this.inquirer.ask(INSTALL_DEPENDENCIES_QUESTION_SET_NAME, {}); + const { installDependencies } = await this.inquirer.ask( + INSTALL_DEPENDENCIES_QUESTION_SET_NAME, + {}, + ); return installDependencies; } diff --git a/src/framework/forge-dependencies.constants.ts b/src/framework/forge-dependencies.constants.ts index 418edf4..566b894 100644 --- a/src/framework/forge-dependencies.constants.ts +++ b/src/framework/forge-dependencies.constants.ts @@ -3,7 +3,7 @@ export const FORGE_DEPENDENCIES = [ { name: 'ironblocks/onchain-firewall', installName: 'ironblocks/onchain-firewall=ironblocks/onchain-firewall', - remappings: ['@ironblocks/firewall-consumer/=lib/ironblocks/onchain-firewall/packages/firewall-consumer/'] + remappings: ['@ironblocks/firewall-consumer/=lib/ironblocks/onchain-firewall/packages/firewall-consumer/'], }, { @@ -15,7 +15,7 @@ export const FORGE_DEPENDENCIES = [ 'erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/', 'forge-std/=lib/forge-std/src/', 'openzeppelin-contracts/=lib/openzeppelin-contracts/', - 'openzeppelin/=lib/openzeppelin-contracts/contracts/' - ] - } + 'openzeppelin/=lib/openzeppelin-contracts/contracts/', + ], + }, ]; diff --git a/src/framework/forge.strategy.ts b/src/framework/forge.strategy.ts index 40bb57c..b61ddfa 100644 --- a/src/framework/forge.strategy.ts +++ b/src/framework/forge.strategy.ts @@ -1,15 +1,14 @@ -import * as colors from 'colors'; +import { Injectable } from '@nestjs/common'; import { exec } from 'child_process'; +import * as colors from 'colors'; import { promisify } from 'util'; -import { Injectable } from '@nestjs/common'; - -import { IStrategy } from '@/framework/strategy.interface'; -import { Dependency } from '@/framework/dependency.type'; import { FilesService } from '@/files/files.service'; -import { LoggerService } from '@/lib/logging/logger.service'; import { DependenciesError } from '@/framework/dependencies.errors'; +import { Dependency } from '@/framework/dependency.type'; import { FORGE_DEPENDENCIES } from '@/framework/forge-dependencies.constants'; +import { IStrategy } from '@/framework/strategy.interface'; +import { LoggerService } from '@/lib/logging/logger.service'; const execAsync = promisify(exec); @@ -21,7 +20,7 @@ export class ForgeStrategy implements IStrategy { constructor( private readonly logger: LoggerService, - private readonly filesService: FilesService + private readonly filesService: FilesService, ) {} public async isDependencyInstalled(dependency: Dependency): Promise { @@ -50,7 +49,9 @@ export class ForgeStrategy implements IStrategy { case 1: return false; default: - throw new DependenciesError(`Could not search for dependency "${dependency.name}" in .gitmodules file`); + throw new DependenciesError( + `Could not search for dependency "${dependency.name}" in .gitmodules file`, + ); } } } @@ -75,7 +76,9 @@ export class ForgeStrategy implements IStrategy { try { await execAsync(`forge install "${dependency.installName}"`, { encoding: 'utf-8' }); await this.filesService.appendToFile(REMAPPINGS_FILE, dependency.remappings.join('\n')); - await execAsync('git add remappings.txt && git commit -m "chore(venn): add remappings"', { encoding: 'utf-8' }); + await execAsync('git add remappings.txt && git commit -m "chore(venn): add remappings"', { + encoding: 'utf-8', + }); spinner.succeed(`Installed "${colors.cyan(dependency.name)}"`); } catch (e) { diff --git a/src/framework/framework.module.ts b/src/framework/framework.module.ts index 92bc56e..28d2d85 100644 --- a/src/framework/framework.module.ts +++ b/src/framework/framework.module.ts @@ -1,15 +1,16 @@ import { Module } from '@nestjs/common'; -import { NPMStrategy } from '@/framework/npm.strategy'; -import { YarnStrategy } from '@/framework/yarn.strategy'; import { FilesModules } from '@/files/files.module'; -import { LoggerModule } from '@/lib/logging/logger.module'; +import { DependenciesService } from '@/framework/dependencies.services'; import { ForgeStrategy } from '@/framework/forge.strategy'; import { FoundryService } from '@/framework/foundry.service'; -import { HardhatService } from '@/framework/hardhat.service'; import { FrameworkService } from '@/framework/framework.service'; -import { DependenciesService } from '@/framework/dependencies.services'; +import { HardhatService } from '@/framework/hardhat.service'; import { InstallDependenciesQuestions } from '@/framework/install-dependencies.questions'; +import { NPMStrategy } from '@/framework/npm.strategy'; +import { YarnStrategy } from '@/framework/yarn.strategy'; +import { LoggerModule } from '@/lib/logging/logger.module'; + import { SelectDependenciesStrategyQuestions } from './select-dependencies-strategy.questions'; @Module({ @@ -24,9 +25,9 @@ import { SelectDependenciesStrategyQuestions } from './select-dependencies-strat DependenciesService, ForgeStrategy, YarnStrategy, - NPMStrategy + NPMStrategy, ], - exports: [FrameworkService] + exports: [FrameworkService], }) export class FrameworkModule {} diff --git a/src/framework/framework.service.ts b/src/framework/framework.service.ts index b71de46..1ff3679 100644 --- a/src/framework/framework.service.ts +++ b/src/framework/framework.service.ts @@ -1,11 +1,11 @@ -import * as colors from 'colors'; import { Injectable } from '@nestjs/common'; +import * as colors from 'colors'; -import { LoggerService } from '@/lib/logging/logger.service'; +import { DependenciesService } from '@/framework/dependencies.services'; import { FoundryService } from '@/framework/foundry.service'; import { HardhatService } from '@/framework/hardhat.service'; import { FrameworkTypes } from '@/framework/supported-frameworks.enum'; -import { DependenciesService } from '@/framework/dependencies.services'; +import { LoggerService } from '@/lib/logging/logger.service'; @Injectable() export class FrameworkService { @@ -13,7 +13,7 @@ export class FrameworkService { private readonly logger: LoggerService, private readonly foundryService: FoundryService, private readonly hardhatService: HardhatService, - private readonly dependenciesService: DependenciesService + private readonly dependenciesService: DependenciesService, ) {} public async assertDependencies(): Promise { diff --git a/src/framework/hardhat.service.ts b/src/framework/hardhat.service.ts index b897ff7..d120eaa 100644 --- a/src/framework/hardhat.service.ts +++ b/src/framework/hardhat.service.ts @@ -9,7 +9,7 @@ export class HardhatService { constructor( private readonly logger: LoggerService, private readonly inquirer: InquirerService, - private readonly filesService: FilesService + private readonly filesService: FilesService, ) {} public async isHardhatProject(): Promise { diff --git a/src/framework/install-dependencies.questions.ts b/src/framework/install-dependencies.questions.ts index 4345130..6362eef 100644 --- a/src/framework/install-dependencies.questions.ts +++ b/src/framework/install-dependencies.questions.ts @@ -4,7 +4,7 @@ import { INSTALL_DEPENDENCIES_QUESTION_MESSAGE, INSTALL_DEPENDENCIES_QUESTION_NAME, INSTALL_DEPENDENCIES_QUESTION_SET_NAME, - INSTALL_DEPENDENCIES_QUESTION_TYPE + INSTALL_DEPENDENCIES_QUESTION_TYPE, } from '@/framework/install-dependencies.questions.descriptor'; export type InstallDependenciesAnswers = { @@ -16,7 +16,7 @@ export class InstallDependenciesQuestions { @Question({ type: INSTALL_DEPENDENCIES_QUESTION_TYPE, name: INSTALL_DEPENDENCIES_QUESTION_NAME, - message: INSTALL_DEPENDENCIES_QUESTION_MESSAGE + message: INSTALL_DEPENDENCIES_QUESTION_MESSAGE, }) parseInstallDependencies() {} } diff --git a/src/framework/npm-dependencies.constatns.ts b/src/framework/npm-dependencies.constatns.ts index 4630f7e..5430469 100644 --- a/src/framework/npm-dependencies.constatns.ts +++ b/src/framework/npm-dependencies.constatns.ts @@ -3,5 +3,5 @@ export const NPM_DEPENDENCIES = [ { name: '@ironblocks/firewall-consumer', installName: '@ironblocks/firewall-consumer', - } + }, ]; diff --git a/src/framework/npm.strategy.ts b/src/framework/npm.strategy.ts index bf83ea2..948b64a 100644 --- a/src/framework/npm.strategy.ts +++ b/src/framework/npm.strategy.ts @@ -1,14 +1,13 @@ -import * as colors from 'colors'; +import { Injectable } from '@nestjs/common'; import { exec } from 'child_process'; +import * as colors from 'colors'; import { promisify } from 'util'; -import { Injectable } from '@nestjs/common'; - -import { IStrategy } from '@/framework/strategy.interface'; +import { DependenciesError } from '@/framework/dependencies.errors'; import { Dependency } from '@/framework/dependency.type'; -import { LoggerService } from '@/lib/logging/logger.service'; import { NPM_DEPENDENCIES } from '@/framework/npm-dependencies.constatns'; -import { DependenciesError } from '@/framework/dependencies.errors'; +import { IStrategy } from '@/framework/strategy.interface'; +import { LoggerService } from '@/lib/logging/logger.service'; const execAsync = promisify(exec); diff --git a/src/framework/select-dependencies-strategy.questions.descriptor.ts b/src/framework/select-dependencies-strategy.questions.descriptor.ts index 28d5525..236e540 100644 --- a/src/framework/select-dependencies-strategy.questions.descriptor.ts +++ b/src/framework/select-dependencies-strategy.questions.descriptor.ts @@ -8,5 +8,5 @@ export const SELECT_STRATEGY_QUESTION_CHOICES = [ DependenciesStrategy.NPM, DependenciesStrategy.Yarn, DependenciesStrategy.Forge, - DependenciesStrategy.Other + DependenciesStrategy.Other, ]; diff --git a/src/framework/select-dependencies-strategy.questions.ts b/src/framework/select-dependencies-strategy.questions.ts index ee656ca..2a7ecd3 100644 --- a/src/framework/select-dependencies-strategy.questions.ts +++ b/src/framework/select-dependencies-strategy.questions.ts @@ -6,7 +6,7 @@ import { SELECT_STRATEGY_QUESTION_MESSAGE, SELECT_STRATEGY_QUESTION_NAME, SELECT_STRATEGY_QUESTION_SET_NAME, - SELECT_STRATEGY_QUESTION_TYPE + SELECT_STRATEGY_QUESTION_TYPE, } from '@/framework/select-dependencies-strategy.questions.descriptor'; export type SelectDependenciesStrategyAnswers = { @@ -19,7 +19,7 @@ export class SelectDependenciesStrategyQuestions { type: SELECT_STRATEGY_QUESTION_TYPE, name: SELECT_STRATEGY_QUESTION_NAME, message: SELECT_STRATEGY_QUESTION_MESSAGE, - choices: SELECT_STRATEGY_QUESTION_CHOICES + choices: SELECT_STRATEGY_QUESTION_CHOICES, }) parseInstallDependencies(answer: DependenciesStrategy): DependenciesStrategy { return answer; diff --git a/src/framework/supported-frameworks.enum.ts b/src/framework/supported-frameworks.enum.ts index e0548e1..527d362 100644 --- a/src/framework/supported-frameworks.enum.ts +++ b/src/framework/supported-frameworks.enum.ts @@ -1,5 +1,5 @@ export enum FrameworkTypes { Foundry = 'foundry', Hardhat = 'hardhat', - Unknown = 'unknown' + Unknown = 'unknown', } diff --git a/src/framework/yarn-dependencies.constatns.ts b/src/framework/yarn-dependencies.constatns.ts index 5bc7d89..3bd164b 100644 --- a/src/framework/yarn-dependencies.constatns.ts +++ b/src/framework/yarn-dependencies.constatns.ts @@ -3,5 +3,5 @@ export const YARN_DEPENDENCIES = [ { name: '@ironblocks/firewall-consumer', installName: '@ironblocks/firewall-consumer', - } + }, ]; diff --git a/src/framework/yarn.strategy.ts b/src/framework/yarn.strategy.ts index 8d5ce57..ed3625a 100644 --- a/src/framework/yarn.strategy.ts +++ b/src/framework/yarn.strategy.ts @@ -1,14 +1,13 @@ -import * as colors from 'colors'; +import { Injectable } from '@nestjs/common'; import { exec } from 'child_process'; +import * as colors from 'colors'; import { promisify } from 'util'; -import { Injectable } from '@nestjs/common'; - -import { IStrategy } from '@/framework/strategy.interface'; +import { DependenciesError } from '@/framework/dependencies.errors'; import { Dependency } from '@/framework/dependency.type'; -import { LoggerService } from '@/lib/logging/logger.service'; import { NPM_DEPENDENCIES } from '@/framework/npm-dependencies.constatns'; -import { DependenciesError } from '@/framework/dependencies.errors'; +import { IStrategy } from '@/framework/strategy.interface'; +import { LoggerService } from '@/lib/logging/logger.service'; const execAsync = promisify(exec); @@ -24,7 +23,7 @@ export class YarnStrategy implements IStrategy { // -i means case insensitive // -F means the string is a fixed string, not a regex await execAsync(`yarn why "${dependency.installName}" | grep -i -F "${dependency.installName}@"`, { - encoding: 'utf-8' + encoding: 'utf-8', }); return true; } catch (e) { diff --git a/src/lib/decorators.ts b/src/lib/decorators.ts index 1aa6446..bdc7347 100644 --- a/src/lib/decorators.ts +++ b/src/lib/decorators.ts @@ -4,10 +4,10 @@ type Hook = (...args: unknown[]) => void | Promise; * Adding hooks to be executed prior to the original method. * * @param hooks - * @returns + * @returns the original method with the hooks applied */ export function withHooks(hooks: Hook[]) { - return (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => { + return (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor) => { const originalMethod = descriptor.value!; descriptor.value = function wrapper(...args: unknown[]) { const promise = hooks.reduce((promise: Promise | null, hook: Hook) => { diff --git a/src/lib/errors/prompt.error.ts b/src/lib/errors/prompt.error.ts index b70246d..e7f3c5a 100644 --- a/src/lib/errors/prompt.error.ts +++ b/src/lib/errors/prompt.error.ts @@ -1,8 +1,8 @@ export class PromptError extends Error { /** - * Overiding "toString" to prevent NestJS printing the error with "Error: " prefix. + * Overriding "toString" to prevent NestJS printing the error with "Error: " prefix. * - * @returns + * @returns the error message */ toString(): string { return this.message; diff --git a/src/lib/logging/logger.module.ts b/src/lib/logging/logger.module.ts index 967bf5f..d0039a7 100644 --- a/src/lib/logging/logger.module.ts +++ b/src/lib/logging/logger.module.ts @@ -4,6 +4,6 @@ import { LoggerService } from '@/lib/logging/logger.service'; @Module({ providers: [LoggerService], - exports: [LoggerService] + exports: [LoggerService], }) export class LoggerModule {} diff --git a/src/lib/logging/logger.service.ts b/src/lib/logging/logger.service.ts index f948147..55a0b54 100644 --- a/src/lib/logging/logger.service.ts +++ b/src/lib/logging/logger.service.ts @@ -1,9 +1,9 @@ -import * as ora from 'ora'; -import * as colors from 'colors'; - +/* eslint-disable no-console */ import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; +import * as colors from 'colors'; import { ConsolaInstance, createConsola } from 'consola'; +import * as ora from 'ora'; @Injectable() export class LoggerService { @@ -11,7 +11,7 @@ export class LoggerService { constructor(private readonly config: ConfigService) { this.logger = createConsola({ - level: this.config.get('logLevel') + level: this.config.get('logLevel'), }); } diff --git a/src/types/contracts/Firewall.ts b/src/types/contracts/Firewall.ts new file mode 100644 index 0000000..99c921a --- /dev/null +++ b/src/types/contracts/Firewall.ts @@ -0,0 +1,1443 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface FirewallInterface extends Interface { + getFunction( + nameOrSignature: + | "__Firewall_init" + | "acceptOwnership" + | "addGlobalPolicy" + | "addGlobalPolicyForConsumers" + | "addPolicies" + | "addPolicy" + | "approvedPolicies" + | "dryrunEnabled" + | "owner" + | "pendingOwner" + | "postExecution" + | "preExecution" + | "proxiableUUID" + | "removeGlobalPolicy" + | "removeGlobalPolicyForConsumers" + | "removePolicies" + | "removePolicy" + | "renounceOwnership" + | "setConsumerDryrunStatus" + | "setPolicyStatus" + | "subscribedGlobalPolicies" + | "subscribedPolicies" + | "transferOwnership" + | "upgradeTo" + | "upgradeToAndCall" + | "version" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "AdminChanged" + | "BeaconUpgraded" + | "ConsumerDryrunStatusUpdate" + | "DryrunPolicyPostError" + | "DryrunPolicyPostSuccess" + | "DryrunPolicyPreError" + | "DryrunPolicyPreSuccess" + | "GlobalDryrunPolicyPostError" + | "GlobalDryrunPolicyPostSuccess" + | "GlobalDryrunPolicyPreError" + | "GlobalDryrunPolicyPreSuccess" + | "GlobalPolicyAdded" + | "GlobalPolicyPostSuccess" + | "GlobalPolicyPreSuccess" + | "GlobalPolicyRemoved" + | "Initialized" + | "OwnershipTransferStarted" + | "OwnershipTransferred" + | "PolicyAdded" + | "PolicyPostSuccess" + | "PolicyPreSuccess" + | "PolicyRemoved" + | "PolicyStatusUpdate" + | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "__Firewall_init", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "acceptOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "addGlobalPolicy", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "addGlobalPolicyForConsumers", + values: [AddressLike[], AddressLike] + ): string; + encodeFunctionData( + functionFragment: "addPolicies", + values: [AddressLike, BytesLike[], AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "addPolicy", + values: [AddressLike, BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approvedPolicies", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "dryrunEnabled", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "pendingOwner", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "postExecution", + values: [AddressLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "preExecution", + values: [AddressLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "removeGlobalPolicy", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "removeGlobalPolicyForConsumers", + values: [AddressLike[], AddressLike] + ): string; + encodeFunctionData( + functionFragment: "removePolicies", + values: [AddressLike, BytesLike[], AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "removePolicy", + values: [AddressLike, BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setConsumerDryrunStatus", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "setPolicyStatus", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "subscribedGlobalPolicies", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "subscribedPolicies", + values: [AddressLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeTo", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "version", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "__Firewall_init", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "acceptOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "addGlobalPolicy", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "addGlobalPolicyForConsumers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "addPolicies", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "addPolicy", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approvedPolicies", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "dryrunEnabled", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pendingOwner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "postExecution", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "preExecution", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeGlobalPolicy", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeGlobalPolicyForConsumers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removePolicies", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removePolicy", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConsumerDryrunStatus", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setPolicyStatus", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "subscribedGlobalPolicies", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "subscribedPolicies", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "version", data: BytesLike): Result; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ConsumerDryrunStatusUpdateEvent { + export type InputTuple = [consumer: AddressLike, status: boolean]; + export type OutputTuple = [consumer: string, status: boolean]; + export interface OutputObject { + consumer: string; + status: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DryrunPolicyPostErrorEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike, + error: BytesLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string, + error: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + error: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DryrunPolicyPostSuccessEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DryrunPolicyPreErrorEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike, + error: BytesLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string, + error: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + error: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DryrunPolicyPreSuccessEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalDryrunPolicyPostErrorEvent { + export type InputTuple = [ + consumer: AddressLike, + policy: AddressLike, + error: BytesLike + ]; + export type OutputTuple = [consumer: string, policy: string, error: string]; + export interface OutputObject { + consumer: string; + policy: string; + error: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalDryrunPolicyPostSuccessEvent { + export type InputTuple = [consumer: AddressLike, policy: AddressLike]; + export type OutputTuple = [consumer: string, policy: string]; + export interface OutputObject { + consumer: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalDryrunPolicyPreErrorEvent { + export type InputTuple = [ + consumer: AddressLike, + policy: AddressLike, + error: BytesLike + ]; + export type OutputTuple = [consumer: string, policy: string, error: string]; + export interface OutputObject { + consumer: string; + policy: string; + error: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalDryrunPolicyPreSuccessEvent { + export type InputTuple = [consumer: AddressLike, policy: AddressLike]; + export type OutputTuple = [consumer: string, policy: string]; + export interface OutputObject { + consumer: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalPolicyAddedEvent { + export type InputTuple = [consumer: AddressLike, policy: AddressLike]; + export type OutputTuple = [consumer: string, policy: string]; + export interface OutputObject { + consumer: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalPolicyPostSuccessEvent { + export type InputTuple = [consumer: AddressLike, policy: AddressLike]; + export type OutputTuple = [consumer: string, policy: string]; + export interface OutputObject { + consumer: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalPolicyPreSuccessEvent { + export type InputTuple = [consumer: AddressLike, policy: AddressLike]; + export type OutputTuple = [consumer: string, policy: string]; + export interface OutputObject { + consumer: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace GlobalPolicyRemovedEvent { + export type InputTuple = [consumer: AddressLike, policy: AddressLike]; + export type OutputTuple = [consumer: string, policy: string]; + export interface OutputObject { + consumer: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferStartedEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PolicyAddedEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PolicyPostSuccessEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PolicyPreSuccessEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PolicyRemovedEvent { + export type InputTuple = [ + consumer: AddressLike, + methodSig: BytesLike, + policy: AddressLike + ]; + export type OutputTuple = [ + consumer: string, + methodSig: string, + policy: string + ]; + export interface OutputObject { + consumer: string; + methodSig: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PolicyStatusUpdateEvent { + export type InputTuple = [policy: AddressLike, status: boolean]; + export type OutputTuple = [policy: string, status: boolean]; + export interface OutputObject { + policy: string; + status: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface Firewall extends BaseContract { + connect(runner?: ContractRunner | null): Firewall; + waitForDeployment(): Promise; + + interface: FirewallInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + __Firewall_init: TypedContractMethod<[], [void], "nonpayable">; + + acceptOwnership: TypedContractMethod<[], [void], "nonpayable">; + + addGlobalPolicy: TypedContractMethod< + [_consumer: AddressLike, _policy: AddressLike], + [void], + "nonpayable" + >; + + addGlobalPolicyForConsumers: TypedContractMethod< + [_consumers: AddressLike[], _policy: AddressLike], + [void], + "nonpayable" + >; + + addPolicies: TypedContractMethod< + [ + _consumer: AddressLike, + _methodSigs: BytesLike[], + _policies: AddressLike[] + ], + [void], + "nonpayable" + >; + + addPolicy: TypedContractMethod< + [_consumer: AddressLike, _methodSig: BytesLike, _policy: AddressLike], + [void], + "nonpayable" + >; + + approvedPolicies: TypedContractMethod< + [policy: AddressLike], + [boolean], + "view" + >; + + dryrunEnabled: TypedContractMethod< + [consumer: AddressLike], + [boolean], + "view" + >; + + owner: TypedContractMethod<[], [string], "view">; + + pendingOwner: TypedContractMethod<[], [string], "view">; + + postExecution: TypedContractMethod< + [_sender: AddressLike, _data: BytesLike, _value: BigNumberish], + [void], + "nonpayable" + >; + + preExecution: TypedContractMethod< + [_sender: AddressLike, _data: BytesLike, _value: BigNumberish], + [void], + "nonpayable" + >; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + removeGlobalPolicy: TypedContractMethod< + [_consumer: AddressLike, _policy: AddressLike], + [void], + "nonpayable" + >; + + removeGlobalPolicyForConsumers: TypedContractMethod< + [_consumers: AddressLike[], _policy: AddressLike], + [void], + "nonpayable" + >; + + removePolicies: TypedContractMethod< + [ + _consumer: AddressLike, + _methodSigs: BytesLike[], + _policies: AddressLike[] + ], + [void], + "nonpayable" + >; + + removePolicy: TypedContractMethod< + [_consumer: AddressLike, _methodSig: BytesLike, _policy: AddressLike], + [void], + "nonpayable" + >; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + setConsumerDryrunStatus: TypedContractMethod< + [_consumer: AddressLike, _status: boolean], + [void], + "nonpayable" + >; + + setPolicyStatus: TypedContractMethod< + [_policy: AddressLike, _status: boolean], + [void], + "nonpayable" + >; + + subscribedGlobalPolicies: TypedContractMethod< + [consumer: AddressLike, arg1: BigNumberish], + [string], + "view" + >; + + subscribedPolicies: TypedContractMethod< + [consumer: AddressLike, sighash: BytesLike, arg2: BigNumberish], + [string], + "view" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + upgradeTo: TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + version: TypedContractMethod<[], [bigint], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "__Firewall_init" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "acceptOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "addGlobalPolicy" + ): TypedContractMethod< + [_consumer: AddressLike, _policy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "addGlobalPolicyForConsumers" + ): TypedContractMethod< + [_consumers: AddressLike[], _policy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "addPolicies" + ): TypedContractMethod< + [ + _consumer: AddressLike, + _methodSigs: BytesLike[], + _policies: AddressLike[] + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "addPolicy" + ): TypedContractMethod< + [_consumer: AddressLike, _methodSig: BytesLike, _policy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "approvedPolicies" + ): TypedContractMethod<[policy: AddressLike], [boolean], "view">; + getFunction( + nameOrSignature: "dryrunEnabled" + ): TypedContractMethod<[consumer: AddressLike], [boolean], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "pendingOwner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "postExecution" + ): TypedContractMethod< + [_sender: AddressLike, _data: BytesLike, _value: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "preExecution" + ): TypedContractMethod< + [_sender: AddressLike, _data: BytesLike, _value: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "removeGlobalPolicy" + ): TypedContractMethod< + [_consumer: AddressLike, _policy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "removeGlobalPolicyForConsumers" + ): TypedContractMethod< + [_consumers: AddressLike[], _policy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "removePolicies" + ): TypedContractMethod< + [ + _consumer: AddressLike, + _methodSigs: BytesLike[], + _policies: AddressLike[] + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "removePolicy" + ): TypedContractMethod< + [_consumer: AddressLike, _methodSig: BytesLike, _policy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "setConsumerDryrunStatus" + ): TypedContractMethod< + [_consumer: AddressLike, _status: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setPolicyStatus" + ): TypedContractMethod< + [_policy: AddressLike, _status: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "subscribedGlobalPolicies" + ): TypedContractMethod< + [consumer: AddressLike, arg1: BigNumberish], + [string], + "view" + >; + getFunction( + nameOrSignature: "subscribedPolicies" + ): TypedContractMethod< + [consumer: AddressLike, sighash: BytesLike, arg2: BigNumberish], + [string], + "view" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgradeTo" + ): TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "version" + ): TypedContractMethod<[], [bigint], "view">; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "ConsumerDryrunStatusUpdate" + ): TypedContractEvent< + ConsumerDryrunStatusUpdateEvent.InputTuple, + ConsumerDryrunStatusUpdateEvent.OutputTuple, + ConsumerDryrunStatusUpdateEvent.OutputObject + >; + getEvent( + key: "DryrunPolicyPostError" + ): TypedContractEvent< + DryrunPolicyPostErrorEvent.InputTuple, + DryrunPolicyPostErrorEvent.OutputTuple, + DryrunPolicyPostErrorEvent.OutputObject + >; + getEvent( + key: "DryrunPolicyPostSuccess" + ): TypedContractEvent< + DryrunPolicyPostSuccessEvent.InputTuple, + DryrunPolicyPostSuccessEvent.OutputTuple, + DryrunPolicyPostSuccessEvent.OutputObject + >; + getEvent( + key: "DryrunPolicyPreError" + ): TypedContractEvent< + DryrunPolicyPreErrorEvent.InputTuple, + DryrunPolicyPreErrorEvent.OutputTuple, + DryrunPolicyPreErrorEvent.OutputObject + >; + getEvent( + key: "DryrunPolicyPreSuccess" + ): TypedContractEvent< + DryrunPolicyPreSuccessEvent.InputTuple, + DryrunPolicyPreSuccessEvent.OutputTuple, + DryrunPolicyPreSuccessEvent.OutputObject + >; + getEvent( + key: "GlobalDryrunPolicyPostError" + ): TypedContractEvent< + GlobalDryrunPolicyPostErrorEvent.InputTuple, + GlobalDryrunPolicyPostErrorEvent.OutputTuple, + GlobalDryrunPolicyPostErrorEvent.OutputObject + >; + getEvent( + key: "GlobalDryrunPolicyPostSuccess" + ): TypedContractEvent< + GlobalDryrunPolicyPostSuccessEvent.InputTuple, + GlobalDryrunPolicyPostSuccessEvent.OutputTuple, + GlobalDryrunPolicyPostSuccessEvent.OutputObject + >; + getEvent( + key: "GlobalDryrunPolicyPreError" + ): TypedContractEvent< + GlobalDryrunPolicyPreErrorEvent.InputTuple, + GlobalDryrunPolicyPreErrorEvent.OutputTuple, + GlobalDryrunPolicyPreErrorEvent.OutputObject + >; + getEvent( + key: "GlobalDryrunPolicyPreSuccess" + ): TypedContractEvent< + GlobalDryrunPolicyPreSuccessEvent.InputTuple, + GlobalDryrunPolicyPreSuccessEvent.OutputTuple, + GlobalDryrunPolicyPreSuccessEvent.OutputObject + >; + getEvent( + key: "GlobalPolicyAdded" + ): TypedContractEvent< + GlobalPolicyAddedEvent.InputTuple, + GlobalPolicyAddedEvent.OutputTuple, + GlobalPolicyAddedEvent.OutputObject + >; + getEvent( + key: "GlobalPolicyPostSuccess" + ): TypedContractEvent< + GlobalPolicyPostSuccessEvent.InputTuple, + GlobalPolicyPostSuccessEvent.OutputTuple, + GlobalPolicyPostSuccessEvent.OutputObject + >; + getEvent( + key: "GlobalPolicyPreSuccess" + ): TypedContractEvent< + GlobalPolicyPreSuccessEvent.InputTuple, + GlobalPolicyPreSuccessEvent.OutputTuple, + GlobalPolicyPreSuccessEvent.OutputObject + >; + getEvent( + key: "GlobalPolicyRemoved" + ): TypedContractEvent< + GlobalPolicyRemovedEvent.InputTuple, + GlobalPolicyRemovedEvent.OutputTuple, + GlobalPolicyRemovedEvent.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferStarted" + ): TypedContractEvent< + OwnershipTransferStartedEvent.InputTuple, + OwnershipTransferStartedEvent.OutputTuple, + OwnershipTransferStartedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "PolicyAdded" + ): TypedContractEvent< + PolicyAddedEvent.InputTuple, + PolicyAddedEvent.OutputTuple, + PolicyAddedEvent.OutputObject + >; + getEvent( + key: "PolicyPostSuccess" + ): TypedContractEvent< + PolicyPostSuccessEvent.InputTuple, + PolicyPostSuccessEvent.OutputTuple, + PolicyPostSuccessEvent.OutputObject + >; + getEvent( + key: "PolicyPreSuccess" + ): TypedContractEvent< + PolicyPreSuccessEvent.InputTuple, + PolicyPreSuccessEvent.OutputTuple, + PolicyPreSuccessEvent.OutputObject + >; + getEvent( + key: "PolicyRemoved" + ): TypedContractEvent< + PolicyRemovedEvent.InputTuple, + PolicyRemovedEvent.OutputTuple, + PolicyRemovedEvent.OutputObject + >; + getEvent( + key: "PolicyStatusUpdate" + ): TypedContractEvent< + PolicyStatusUpdateEvent.InputTuple, + PolicyStatusUpdateEvent.OutputTuple, + PolicyStatusUpdateEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "ConsumerDryrunStatusUpdate(address,bool)": TypedContractEvent< + ConsumerDryrunStatusUpdateEvent.InputTuple, + ConsumerDryrunStatusUpdateEvent.OutputTuple, + ConsumerDryrunStatusUpdateEvent.OutputObject + >; + ConsumerDryrunStatusUpdate: TypedContractEvent< + ConsumerDryrunStatusUpdateEvent.InputTuple, + ConsumerDryrunStatusUpdateEvent.OutputTuple, + ConsumerDryrunStatusUpdateEvent.OutputObject + >; + + "DryrunPolicyPostError(address,bytes4,address,bytes)": TypedContractEvent< + DryrunPolicyPostErrorEvent.InputTuple, + DryrunPolicyPostErrorEvent.OutputTuple, + DryrunPolicyPostErrorEvent.OutputObject + >; + DryrunPolicyPostError: TypedContractEvent< + DryrunPolicyPostErrorEvent.InputTuple, + DryrunPolicyPostErrorEvent.OutputTuple, + DryrunPolicyPostErrorEvent.OutputObject + >; + + "DryrunPolicyPostSuccess(address,bytes4,address)": TypedContractEvent< + DryrunPolicyPostSuccessEvent.InputTuple, + DryrunPolicyPostSuccessEvent.OutputTuple, + DryrunPolicyPostSuccessEvent.OutputObject + >; + DryrunPolicyPostSuccess: TypedContractEvent< + DryrunPolicyPostSuccessEvent.InputTuple, + DryrunPolicyPostSuccessEvent.OutputTuple, + DryrunPolicyPostSuccessEvent.OutputObject + >; + + "DryrunPolicyPreError(address,bytes4,address,bytes)": TypedContractEvent< + DryrunPolicyPreErrorEvent.InputTuple, + DryrunPolicyPreErrorEvent.OutputTuple, + DryrunPolicyPreErrorEvent.OutputObject + >; + DryrunPolicyPreError: TypedContractEvent< + DryrunPolicyPreErrorEvent.InputTuple, + DryrunPolicyPreErrorEvent.OutputTuple, + DryrunPolicyPreErrorEvent.OutputObject + >; + + "DryrunPolicyPreSuccess(address,bytes4,address)": TypedContractEvent< + DryrunPolicyPreSuccessEvent.InputTuple, + DryrunPolicyPreSuccessEvent.OutputTuple, + DryrunPolicyPreSuccessEvent.OutputObject + >; + DryrunPolicyPreSuccess: TypedContractEvent< + DryrunPolicyPreSuccessEvent.InputTuple, + DryrunPolicyPreSuccessEvent.OutputTuple, + DryrunPolicyPreSuccessEvent.OutputObject + >; + + "GlobalDryrunPolicyPostError(address,address,bytes)": TypedContractEvent< + GlobalDryrunPolicyPostErrorEvent.InputTuple, + GlobalDryrunPolicyPostErrorEvent.OutputTuple, + GlobalDryrunPolicyPostErrorEvent.OutputObject + >; + GlobalDryrunPolicyPostError: TypedContractEvent< + GlobalDryrunPolicyPostErrorEvent.InputTuple, + GlobalDryrunPolicyPostErrorEvent.OutputTuple, + GlobalDryrunPolicyPostErrorEvent.OutputObject + >; + + "GlobalDryrunPolicyPostSuccess(address,address)": TypedContractEvent< + GlobalDryrunPolicyPostSuccessEvent.InputTuple, + GlobalDryrunPolicyPostSuccessEvent.OutputTuple, + GlobalDryrunPolicyPostSuccessEvent.OutputObject + >; + GlobalDryrunPolicyPostSuccess: TypedContractEvent< + GlobalDryrunPolicyPostSuccessEvent.InputTuple, + GlobalDryrunPolicyPostSuccessEvent.OutputTuple, + GlobalDryrunPolicyPostSuccessEvent.OutputObject + >; + + "GlobalDryrunPolicyPreError(address,address,bytes)": TypedContractEvent< + GlobalDryrunPolicyPreErrorEvent.InputTuple, + GlobalDryrunPolicyPreErrorEvent.OutputTuple, + GlobalDryrunPolicyPreErrorEvent.OutputObject + >; + GlobalDryrunPolicyPreError: TypedContractEvent< + GlobalDryrunPolicyPreErrorEvent.InputTuple, + GlobalDryrunPolicyPreErrorEvent.OutputTuple, + GlobalDryrunPolicyPreErrorEvent.OutputObject + >; + + "GlobalDryrunPolicyPreSuccess(address,address)": TypedContractEvent< + GlobalDryrunPolicyPreSuccessEvent.InputTuple, + GlobalDryrunPolicyPreSuccessEvent.OutputTuple, + GlobalDryrunPolicyPreSuccessEvent.OutputObject + >; + GlobalDryrunPolicyPreSuccess: TypedContractEvent< + GlobalDryrunPolicyPreSuccessEvent.InputTuple, + GlobalDryrunPolicyPreSuccessEvent.OutputTuple, + GlobalDryrunPolicyPreSuccessEvent.OutputObject + >; + + "GlobalPolicyAdded(address,address)": TypedContractEvent< + GlobalPolicyAddedEvent.InputTuple, + GlobalPolicyAddedEvent.OutputTuple, + GlobalPolicyAddedEvent.OutputObject + >; + GlobalPolicyAdded: TypedContractEvent< + GlobalPolicyAddedEvent.InputTuple, + GlobalPolicyAddedEvent.OutputTuple, + GlobalPolicyAddedEvent.OutputObject + >; + + "GlobalPolicyPostSuccess(address,address)": TypedContractEvent< + GlobalPolicyPostSuccessEvent.InputTuple, + GlobalPolicyPostSuccessEvent.OutputTuple, + GlobalPolicyPostSuccessEvent.OutputObject + >; + GlobalPolicyPostSuccess: TypedContractEvent< + GlobalPolicyPostSuccessEvent.InputTuple, + GlobalPolicyPostSuccessEvent.OutputTuple, + GlobalPolicyPostSuccessEvent.OutputObject + >; + + "GlobalPolicyPreSuccess(address,address)": TypedContractEvent< + GlobalPolicyPreSuccessEvent.InputTuple, + GlobalPolicyPreSuccessEvent.OutputTuple, + GlobalPolicyPreSuccessEvent.OutputObject + >; + GlobalPolicyPreSuccess: TypedContractEvent< + GlobalPolicyPreSuccessEvent.InputTuple, + GlobalPolicyPreSuccessEvent.OutputTuple, + GlobalPolicyPreSuccessEvent.OutputObject + >; + + "GlobalPolicyRemoved(address,address)": TypedContractEvent< + GlobalPolicyRemovedEvent.InputTuple, + GlobalPolicyRemovedEvent.OutputTuple, + GlobalPolicyRemovedEvent.OutputObject + >; + GlobalPolicyRemoved: TypedContractEvent< + GlobalPolicyRemovedEvent.InputTuple, + GlobalPolicyRemovedEvent.OutputTuple, + GlobalPolicyRemovedEvent.OutputObject + >; + + "Initialized(uint8)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "OwnershipTransferStarted(address,address)": TypedContractEvent< + OwnershipTransferStartedEvent.InputTuple, + OwnershipTransferStartedEvent.OutputTuple, + OwnershipTransferStartedEvent.OutputObject + >; + OwnershipTransferStarted: TypedContractEvent< + OwnershipTransferStartedEvent.InputTuple, + OwnershipTransferStartedEvent.OutputTuple, + OwnershipTransferStartedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "PolicyAdded(address,bytes4,address)": TypedContractEvent< + PolicyAddedEvent.InputTuple, + PolicyAddedEvent.OutputTuple, + PolicyAddedEvent.OutputObject + >; + PolicyAdded: TypedContractEvent< + PolicyAddedEvent.InputTuple, + PolicyAddedEvent.OutputTuple, + PolicyAddedEvent.OutputObject + >; + + "PolicyPostSuccess(address,bytes4,address)": TypedContractEvent< + PolicyPostSuccessEvent.InputTuple, + PolicyPostSuccessEvent.OutputTuple, + PolicyPostSuccessEvent.OutputObject + >; + PolicyPostSuccess: TypedContractEvent< + PolicyPostSuccessEvent.InputTuple, + PolicyPostSuccessEvent.OutputTuple, + PolicyPostSuccessEvent.OutputObject + >; + + "PolicyPreSuccess(address,bytes4,address)": TypedContractEvent< + PolicyPreSuccessEvent.InputTuple, + PolicyPreSuccessEvent.OutputTuple, + PolicyPreSuccessEvent.OutputObject + >; + PolicyPreSuccess: TypedContractEvent< + PolicyPreSuccessEvent.InputTuple, + PolicyPreSuccessEvent.OutputTuple, + PolicyPreSuccessEvent.OutputObject + >; + + "PolicyRemoved(address,bytes4,address)": TypedContractEvent< + PolicyRemovedEvent.InputTuple, + PolicyRemovedEvent.OutputTuple, + PolicyRemovedEvent.OutputObject + >; + PolicyRemoved: TypedContractEvent< + PolicyRemovedEvent.InputTuple, + PolicyRemovedEvent.OutputTuple, + PolicyRemovedEvent.OutputObject + >; + + "PolicyStatusUpdate(address,bool)": TypedContractEvent< + PolicyStatusUpdateEvent.InputTuple, + PolicyStatusUpdateEvent.OutputTuple, + PolicyStatusUpdateEvent.OutputObject + >; + PolicyStatusUpdate: TypedContractEvent< + PolicyStatusUpdateEvent.InputTuple, + PolicyStatusUpdateEvent.OutputTuple, + PolicyStatusUpdateEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/src/types/contracts/PolicyDeployer.ts b/src/types/contracts/PolicyDeployer.ts new file mode 100644 index 0000000..1aa3122 --- /dev/null +++ b/src/types/contracts/PolicyDeployer.ts @@ -0,0 +1,535 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface PolicyDeployerInterface extends Interface { + getFunction( + nameOrSignature: + | "ADMIN_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "approvedFactories" + | "deployPolicies" + | "firewallModule" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + | "setFactoryStatuses" + | "setFirewallModule" + | "supportsInterface" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "FactoryStatusSet" + | "FirewallModuleSet" + | "PolicyCreated" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "approvedFactories", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "deployPolicies", + values: [AddressLike, AddressLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "firewallModule", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setFactoryStatuses", + values: [AddressLike[], boolean[]] + ): string; + encodeFunctionData( + functionFragment: "setFirewallModule", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "approvedFactories", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployPolicies", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "firewallModule", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setFactoryStatuses", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFirewallModule", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace FactoryStatusSetEvent { + export type InputTuple = [factory: AddressLike, status: boolean]; + export type OutputTuple = [factory: string, status: boolean]; + export interface OutputObject { + factory: string; + status: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace FirewallModuleSetEvent { + export type InputTuple = [firewallModule: AddressLike]; + export type OutputTuple = [firewallModule: string]; + export interface OutputObject { + firewallModule: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PolicyCreatedEvent { + export type InputTuple = [factory: AddressLike, policy: AddressLike]; + export type OutputTuple = [factory: string, policy: string]; + export interface OutputObject { + factory: string; + policy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface PolicyDeployer extends BaseContract { + connect(runner?: ContractRunner | null): PolicyDeployer; + waitForDeployment(): Promise; + + interface: PolicyDeployerInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + approvedFactories: TypedContractMethod< + [factory: AddressLike], + [boolean], + "view" + >; + + deployPolicies: TypedContractMethod< + [ + _firewall: AddressLike, + _factories: AddressLike[], + _createData: BytesLike[] + ], + [string[]], + "nonpayable" + >; + + firewallModule: TypedContractMethod<[], [string], "view">; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + setFactoryStatuses: TypedContractMethod< + [_factories: AddressLike[], _statuses: boolean[]], + [void], + "nonpayable" + >; + + setFirewallModule: TypedContractMethod< + [_firewallModule: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "approvedFactories" + ): TypedContractMethod<[factory: AddressLike], [boolean], "view">; + getFunction( + nameOrSignature: "deployPolicies" + ): TypedContractMethod< + [ + _firewall: AddressLike, + _factories: AddressLike[], + _createData: BytesLike[] + ], + [string[]], + "nonpayable" + >; + getFunction( + nameOrSignature: "firewallModule" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setFactoryStatuses" + ): TypedContractMethod< + [_factories: AddressLike[], _statuses: boolean[]], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setFirewallModule" + ): TypedContractMethod<[_firewallModule: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "FactoryStatusSet" + ): TypedContractEvent< + FactoryStatusSetEvent.InputTuple, + FactoryStatusSetEvent.OutputTuple, + FactoryStatusSetEvent.OutputObject + >; + getEvent( + key: "FirewallModuleSet" + ): TypedContractEvent< + FirewallModuleSetEvent.InputTuple, + FirewallModuleSetEvent.OutputTuple, + FirewallModuleSetEvent.OutputObject + >; + getEvent( + key: "PolicyCreated" + ): TypedContractEvent< + PolicyCreatedEvent.InputTuple, + PolicyCreatedEvent.OutputTuple, + PolicyCreatedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "FactoryStatusSet(address,bool)": TypedContractEvent< + FactoryStatusSetEvent.InputTuple, + FactoryStatusSetEvent.OutputTuple, + FactoryStatusSetEvent.OutputObject + >; + FactoryStatusSet: TypedContractEvent< + FactoryStatusSetEvent.InputTuple, + FactoryStatusSetEvent.OutputTuple, + FactoryStatusSetEvent.OutputObject + >; + + "FirewallModuleSet(address)": TypedContractEvent< + FirewallModuleSetEvent.InputTuple, + FirewallModuleSetEvent.OutputTuple, + FirewallModuleSetEvent.OutputObject + >; + FirewallModuleSet: TypedContractEvent< + FirewallModuleSetEvent.InputTuple, + FirewallModuleSetEvent.OutputTuple, + FirewallModuleSetEvent.OutputObject + >; + + "PolicyCreated(address,address)": TypedContractEvent< + PolicyCreatedEvent.InputTuple, + PolicyCreatedEvent.OutputTuple, + PolicyCreatedEvent.OutputObject + >; + PolicyCreated: TypedContractEvent< + PolicyCreatedEvent.InputTuple, + PolicyCreatedEvent.OutputTuple, + PolicyCreatedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/src/types/contracts/ProtocolRegistry.ts b/src/types/contracts/ProtocolRegistry.ts new file mode 100644 index 0000000..792fbab --- /dev/null +++ b/src/types/contracts/ProtocolRegistry.ts @@ -0,0 +1,1384 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace IProtocolRegistry { + export type ProtocolStruct = { + policyAddress: AddressLike; + metadataURI: string; + }; + + export type ProtocolStructOutput = [ + policyAddress: string, + metadataURI: string + ] & { policyAddress: string; metadataURI: string }; + + export type ProtocolDetectionStruct = { + protocolAdmin: AddressLike; + operator: AddressLike; + assets: AddressLike[]; + admins: AddressLike[]; + vennFee: BigNumberish; + isApproved: boolean; + metadataURI: string; + }; + + export type ProtocolDetectionStructOutput = [ + protocolAdmin: string, + operator: string, + assets: string[], + admins: string[], + vennFee: bigint, + isApproved: boolean, + metadataURI: string + ] & { + protocolAdmin: string; + operator: string; + assets: string[]; + admins: string[]; + vennFee: bigint; + isApproved: boolean; + metadataURI: string; + }; +} + +export interface ProtocolRegistryInterface extends Interface { + getFunction( + nameOrSignature: + | "ADMIN_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "MAX_VENN_DETECTION_FEE" + | "MAX_VENN_PROTOCOL_FEE" + | "__ProtocolRegistry_init" + | "approveProtocolDetectionAsOperator" + | "attestationCenter" + | "createAndRegisterProtocolDetection" + | "getProtocol" + | "getProtocolDetection" + | "getProtocolTaskDefinitionIds" + | "getRequiredOperatorIds" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "isSubnetSubscribed" + | "proxiableUUID" + | "registerProtocol" + | "renounceRole" + | "revokeRole" + | "setAttestationCenter" + | "setVennDetectionFee" + | "setVennFeeRecipient" + | "setVennProtocolFee" + | "subscribeSubnet" + | "supportsInterface" + | "unsubscribeSubnet" + | "updateProtocol" + | "upgradeTo" + | "upgradeToAndCall" + | "vennDetectionFee" + | "vennFeeRecipient" + | "vennProtocolFee" + | "version" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "AdminChanged" + | "AttestationCenterSet" + | "BeaconUpgraded" + | "Initialized" + | "ProtocolDetectionApproved" + | "ProtocolDetectionRegistered" + | "ProtocolRegistered" + | "ProtocolUpdated" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "SubnetSubscribed" + | "SubnetUnsubscribed" + | "Upgraded" + | "VennDetectionFeeSet" + | "VennFeeRecipientSet" + | "VennProtocolFeeSet" + ): EventFragment; + + encodeFunctionData( + functionFragment: "ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "MAX_VENN_DETECTION_FEE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "MAX_VENN_PROTOCOL_FEE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "__ProtocolRegistry_init", + values: [AddressLike, AddressLike, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "approveProtocolDetectionAsOperator", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "attestationCenter", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "createAndRegisterProtocolDetection", + values: [AddressLike, AddressLike[], AddressLike[], string] + ): string; + encodeFunctionData( + functionFragment: "getProtocol", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getProtocolDetection", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getProtocolTaskDefinitionIds", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getRequiredOperatorIds", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "isSubnetSubscribed", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "registerProtocol", + values: [AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setAttestationCenter", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setVennDetectionFee", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setVennFeeRecipient", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setVennProtocolFee", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "subscribeSubnet", + values: [AddressLike, BigNumberish, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "unsubscribeSubnet", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateProtocol", + values: [AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "upgradeTo", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "vennDetectionFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "vennFeeRecipient", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "vennProtocolFee", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "version", values?: undefined): string; + + decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "MAX_VENN_DETECTION_FEE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "MAX_VENN_PROTOCOL_FEE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "__ProtocolRegistry_init", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "approveProtocolDetectionAsOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "attestationCenter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createAndRegisterProtocolDetection", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProtocol", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProtocolDetection", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProtocolTaskDefinitionIds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRequiredOperatorIds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isSubnetSubscribed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerProtocol", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setAttestationCenter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVennDetectionFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVennFeeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVennProtocolFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "subscribeSubnet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unsubscribeSubnet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateProtocol", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "vennDetectionFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "vennFeeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "vennProtocolFee", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "version", data: BytesLike): Result; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace AttestationCenterSetEvent { + export type InputTuple = [attestationCenter: AddressLike]; + export type OutputTuple = [attestationCenter: string]; + export interface OutputObject { + attestationCenter: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ProtocolDetectionApprovedEvent { + export type InputTuple = [ + detectionEscrow: AddressLike, + operator: AddressLike, + assets: AddressLike[], + admins: AddressLike[], + metadataURI: string + ]; + export type OutputTuple = [ + detectionEscrow: string, + operator: string, + assets: string[], + admins: string[], + metadataURI: string + ]; + export interface OutputObject { + detectionEscrow: string; + operator: string; + assets: string[]; + admins: string[]; + metadataURI: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ProtocolDetectionRegisteredEvent { + export type InputTuple = [ + detectionEscrow: AddressLike, + operator: AddressLike, + assets: AddressLike[], + admins: AddressLike[], + fee: BigNumberish, + metadataURI: string + ]; + export type OutputTuple = [ + detectionEscrow: string, + operator: string, + assets: string[], + admins: string[], + fee: bigint, + metadataURI: string + ]; + export interface OutputObject { + detectionEscrow: string; + operator: string; + assets: string[]; + admins: string[]; + fee: bigint; + metadataURI: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ProtocolRegisteredEvent { + export type InputTuple = [policyAddress: AddressLike, metadataURI: string]; + export type OutputTuple = [policyAddress: string, metadataURI: string]; + export interface OutputObject { + policyAddress: string; + metadataURI: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ProtocolUpdatedEvent { + export type InputTuple = [policyAddress: AddressLike, metadataURI: string]; + export type OutputTuple = [policyAddress: string, metadataURI: string]; + export interface OutputObject { + policyAddress: string; + metadataURI: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SubnetSubscribedEvent { + export type InputTuple = [ + policyAddress: AddressLike, + taskDefinitionId: BigNumberish, + requiredOperatorIds: BigNumberish[] + ]; + export type OutputTuple = [ + policyAddress: string, + taskDefinitionId: bigint, + requiredOperatorIds: bigint[] + ]; + export interface OutputObject { + policyAddress: string; + taskDefinitionId: bigint; + requiredOperatorIds: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SubnetUnsubscribedEvent { + export type InputTuple = [ + policyAddress: AddressLike, + taskDefinitionId: BigNumberish + ]; + export type OutputTuple = [policyAddress: string, taskDefinitionId: bigint]; + export interface OutputObject { + policyAddress: string; + taskDefinitionId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace VennDetectionFeeSetEvent { + export type InputTuple = [fee: BigNumberish]; + export type OutputTuple = [fee: bigint]; + export interface OutputObject { + fee: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace VennFeeRecipientSetEvent { + export type InputTuple = [vennFeeRecipient: AddressLike]; + export type OutputTuple = [vennFeeRecipient: string]; + export interface OutputObject { + vennFeeRecipient: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace VennProtocolFeeSetEvent { + export type InputTuple = [fee: BigNumberish]; + export type OutputTuple = [fee: bigint]; + export interface OutputObject { + fee: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ProtocolRegistry extends BaseContract { + connect(runner?: ContractRunner | null): ProtocolRegistry; + waitForDeployment(): Promise; + + interface: ProtocolRegistryInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + MAX_VENN_DETECTION_FEE: TypedContractMethod<[], [bigint], "view">; + + MAX_VENN_PROTOCOL_FEE: TypedContractMethod<[], [bigint], "view">; + + __ProtocolRegistry_init: TypedContractMethod< + [ + _attestationCenter: AddressLike, + _vennFeeRecipient: AddressLike, + _vennDetectionFee: BigNumberish, + _vennProtocolFee: BigNumberish + ], + [void], + "nonpayable" + >; + + approveProtocolDetectionAsOperator: TypedContractMethod< + [_detectionEscrow: AddressLike], + [void], + "nonpayable" + >; + + attestationCenter: TypedContractMethod<[], [string], "view">; + + createAndRegisterProtocolDetection: TypedContractMethod< + [ + _operator: AddressLike, + _assets: AddressLike[], + _admins: AddressLike[], + _metadataURI: string + ], + [string], + "nonpayable" + >; + + getProtocol: TypedContractMethod< + [_policyAddress: AddressLike], + [IProtocolRegistry.ProtocolStructOutput], + "view" + >; + + getProtocolDetection: TypedContractMethod< + [_detectionEscrow: AddressLike], + [IProtocolRegistry.ProtocolDetectionStructOutput], + "view" + >; + + getProtocolTaskDefinitionIds: TypedContractMethod< + [_policyAddress: AddressLike], + [bigint[]], + "view" + >; + + getRequiredOperatorIds: TypedContractMethod< + [_policyAddress: AddressLike, _taskDefinitionId: BigNumberish], + [bigint[]], + "view" + >; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + isSubnetSubscribed: TypedContractMethod< + [_policyAddress: AddressLike, _taskDefinitionId: BigNumberish], + [boolean], + "view" + >; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + registerProtocol: TypedContractMethod< + [_policyAddress: AddressLike, _metadataURI: string], + [void], + "nonpayable" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + setAttestationCenter: TypedContractMethod< + [_attestationCenter: AddressLike], + [void], + "nonpayable" + >; + + setVennDetectionFee: TypedContractMethod< + [_vennDetectionFee: BigNumberish], + [void], + "nonpayable" + >; + + setVennFeeRecipient: TypedContractMethod< + [_vennFeeRecipient: AddressLike], + [void], + "nonpayable" + >; + + setVennProtocolFee: TypedContractMethod< + [_vennProtocolFee: BigNumberish], + [void], + "nonpayable" + >; + + subscribeSubnet: TypedContractMethod< + [ + _policyAddress: AddressLike, + _taskDefinitionId: BigNumberish, + _requiredOperatorIds: BigNumberish[] + ], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + unsubscribeSubnet: TypedContractMethod< + [_policyAddress: AddressLike, _taskDefinitionId: BigNumberish], + [void], + "nonpayable" + >; + + updateProtocol: TypedContractMethod< + [_policyAddress: AddressLike, _metadataURI: string], + [void], + "nonpayable" + >; + + upgradeTo: TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + vennDetectionFee: TypedContractMethod<[], [bigint], "view">; + + vennFeeRecipient: TypedContractMethod<[], [string], "view">; + + vennProtocolFee: TypedContractMethod<[], [bigint], "view">; + + version: TypedContractMethod<[], [bigint], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "MAX_VENN_DETECTION_FEE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "MAX_VENN_PROTOCOL_FEE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "__ProtocolRegistry_init" + ): TypedContractMethod< + [ + _attestationCenter: AddressLike, + _vennFeeRecipient: AddressLike, + _vennDetectionFee: BigNumberish, + _vennProtocolFee: BigNumberish + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "approveProtocolDetectionAsOperator" + ): TypedContractMethod<[_detectionEscrow: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "attestationCenter" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "createAndRegisterProtocolDetection" + ): TypedContractMethod< + [ + _operator: AddressLike, + _assets: AddressLike[], + _admins: AddressLike[], + _metadataURI: string + ], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "getProtocol" + ): TypedContractMethod< + [_policyAddress: AddressLike], + [IProtocolRegistry.ProtocolStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getProtocolDetection" + ): TypedContractMethod< + [_detectionEscrow: AddressLike], + [IProtocolRegistry.ProtocolDetectionStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getProtocolTaskDefinitionIds" + ): TypedContractMethod<[_policyAddress: AddressLike], [bigint[]], "view">; + getFunction( + nameOrSignature: "getRequiredOperatorIds" + ): TypedContractMethod< + [_policyAddress: AddressLike, _taskDefinitionId: BigNumberish], + [bigint[]], + "view" + >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "isSubnetSubscribed" + ): TypedContractMethod< + [_policyAddress: AddressLike, _taskDefinitionId: BigNumberish], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "registerProtocol" + ): TypedContractMethod< + [_policyAddress: AddressLike, _metadataURI: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setAttestationCenter" + ): TypedContractMethod< + [_attestationCenter: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setVennDetectionFee" + ): TypedContractMethod< + [_vennDetectionFee: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setVennFeeRecipient" + ): TypedContractMethod< + [_vennFeeRecipient: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setVennProtocolFee" + ): TypedContractMethod< + [_vennProtocolFee: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "subscribeSubnet" + ): TypedContractMethod< + [ + _policyAddress: AddressLike, + _taskDefinitionId: BigNumberish, + _requiredOperatorIds: BigNumberish[] + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "unsubscribeSubnet" + ): TypedContractMethod< + [_policyAddress: AddressLike, _taskDefinitionId: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "updateProtocol" + ): TypedContractMethod< + [_policyAddress: AddressLike, _metadataURI: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "upgradeTo" + ): TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "vennDetectionFee" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "vennFeeRecipient" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "vennProtocolFee" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "version" + ): TypedContractMethod<[], [bigint], "view">; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "AttestationCenterSet" + ): TypedContractEvent< + AttestationCenterSetEvent.InputTuple, + AttestationCenterSetEvent.OutputTuple, + AttestationCenterSetEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "ProtocolDetectionApproved" + ): TypedContractEvent< + ProtocolDetectionApprovedEvent.InputTuple, + ProtocolDetectionApprovedEvent.OutputTuple, + ProtocolDetectionApprovedEvent.OutputObject + >; + getEvent( + key: "ProtocolDetectionRegistered" + ): TypedContractEvent< + ProtocolDetectionRegisteredEvent.InputTuple, + ProtocolDetectionRegisteredEvent.OutputTuple, + ProtocolDetectionRegisteredEvent.OutputObject + >; + getEvent( + key: "ProtocolRegistered" + ): TypedContractEvent< + ProtocolRegisteredEvent.InputTuple, + ProtocolRegisteredEvent.OutputTuple, + ProtocolRegisteredEvent.OutputObject + >; + getEvent( + key: "ProtocolUpdated" + ): TypedContractEvent< + ProtocolUpdatedEvent.InputTuple, + ProtocolUpdatedEvent.OutputTuple, + ProtocolUpdatedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "SubnetSubscribed" + ): TypedContractEvent< + SubnetSubscribedEvent.InputTuple, + SubnetSubscribedEvent.OutputTuple, + SubnetSubscribedEvent.OutputObject + >; + getEvent( + key: "SubnetUnsubscribed" + ): TypedContractEvent< + SubnetUnsubscribedEvent.InputTuple, + SubnetUnsubscribedEvent.OutputTuple, + SubnetUnsubscribedEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + getEvent( + key: "VennDetectionFeeSet" + ): TypedContractEvent< + VennDetectionFeeSetEvent.InputTuple, + VennDetectionFeeSetEvent.OutputTuple, + VennDetectionFeeSetEvent.OutputObject + >; + getEvent( + key: "VennFeeRecipientSet" + ): TypedContractEvent< + VennFeeRecipientSetEvent.InputTuple, + VennFeeRecipientSetEvent.OutputTuple, + VennFeeRecipientSetEvent.OutputObject + >; + getEvent( + key: "VennProtocolFeeSet" + ): TypedContractEvent< + VennProtocolFeeSetEvent.InputTuple, + VennProtocolFeeSetEvent.OutputTuple, + VennProtocolFeeSetEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "AttestationCenterSet(address)": TypedContractEvent< + AttestationCenterSetEvent.InputTuple, + AttestationCenterSetEvent.OutputTuple, + AttestationCenterSetEvent.OutputObject + >; + AttestationCenterSet: TypedContractEvent< + AttestationCenterSetEvent.InputTuple, + AttestationCenterSetEvent.OutputTuple, + AttestationCenterSetEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "Initialized(uint8)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "ProtocolDetectionApproved(address,address,address[],address[],string)": TypedContractEvent< + ProtocolDetectionApprovedEvent.InputTuple, + ProtocolDetectionApprovedEvent.OutputTuple, + ProtocolDetectionApprovedEvent.OutputObject + >; + ProtocolDetectionApproved: TypedContractEvent< + ProtocolDetectionApprovedEvent.InputTuple, + ProtocolDetectionApprovedEvent.OutputTuple, + ProtocolDetectionApprovedEvent.OutputObject + >; + + "ProtocolDetectionRegistered(address,address,address[],address[],uint256,string)": TypedContractEvent< + ProtocolDetectionRegisteredEvent.InputTuple, + ProtocolDetectionRegisteredEvent.OutputTuple, + ProtocolDetectionRegisteredEvent.OutputObject + >; + ProtocolDetectionRegistered: TypedContractEvent< + ProtocolDetectionRegisteredEvent.InputTuple, + ProtocolDetectionRegisteredEvent.OutputTuple, + ProtocolDetectionRegisteredEvent.OutputObject + >; + + "ProtocolRegistered(address,string)": TypedContractEvent< + ProtocolRegisteredEvent.InputTuple, + ProtocolRegisteredEvent.OutputTuple, + ProtocolRegisteredEvent.OutputObject + >; + ProtocolRegistered: TypedContractEvent< + ProtocolRegisteredEvent.InputTuple, + ProtocolRegisteredEvent.OutputTuple, + ProtocolRegisteredEvent.OutputObject + >; + + "ProtocolUpdated(address,string)": TypedContractEvent< + ProtocolUpdatedEvent.InputTuple, + ProtocolUpdatedEvent.OutputTuple, + ProtocolUpdatedEvent.OutputObject + >; + ProtocolUpdated: TypedContractEvent< + ProtocolUpdatedEvent.InputTuple, + ProtocolUpdatedEvent.OutputTuple, + ProtocolUpdatedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "SubnetSubscribed(address,uint16,uint256[])": TypedContractEvent< + SubnetSubscribedEvent.InputTuple, + SubnetSubscribedEvent.OutputTuple, + SubnetSubscribedEvent.OutputObject + >; + SubnetSubscribed: TypedContractEvent< + SubnetSubscribedEvent.InputTuple, + SubnetSubscribedEvent.OutputTuple, + SubnetSubscribedEvent.OutputObject + >; + + "SubnetUnsubscribed(address,uint16)": TypedContractEvent< + SubnetUnsubscribedEvent.InputTuple, + SubnetUnsubscribedEvent.OutputTuple, + SubnetUnsubscribedEvent.OutputObject + >; + SubnetUnsubscribed: TypedContractEvent< + SubnetUnsubscribedEvent.InputTuple, + SubnetUnsubscribedEvent.OutputTuple, + SubnetUnsubscribedEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + "VennDetectionFeeSet(uint256)": TypedContractEvent< + VennDetectionFeeSetEvent.InputTuple, + VennDetectionFeeSetEvent.OutputTuple, + VennDetectionFeeSetEvent.OutputObject + >; + VennDetectionFeeSet: TypedContractEvent< + VennDetectionFeeSetEvent.InputTuple, + VennDetectionFeeSetEvent.OutputTuple, + VennDetectionFeeSetEvent.OutputObject + >; + + "VennFeeRecipientSet(address)": TypedContractEvent< + VennFeeRecipientSetEvent.InputTuple, + VennFeeRecipientSetEvent.OutputTuple, + VennFeeRecipientSetEvent.OutputObject + >; + VennFeeRecipientSet: TypedContractEvent< + VennFeeRecipientSetEvent.InputTuple, + VennFeeRecipientSetEvent.OutputTuple, + VennFeeRecipientSetEvent.OutputObject + >; + + "VennProtocolFeeSet(uint256)": TypedContractEvent< + VennProtocolFeeSetEvent.InputTuple, + VennProtocolFeeSetEvent.OutputTuple, + VennProtocolFeeSetEvent.OutputObject + >; + VennProtocolFeeSet: TypedContractEvent< + VennProtocolFeeSetEvent.InputTuple, + VennProtocolFeeSetEvent.OutputTuple, + VennProtocolFeeSetEvent.OutputObject + >; + }; +} diff --git a/src/types/contracts/VennFirewallConsumerBase.ts b/src/types/contracts/VennFirewallConsumerBase.ts new file mode 100644 index 0000000..b2eb062 --- /dev/null +++ b/src/types/contracts/VennFirewallConsumerBase.ts @@ -0,0 +1,342 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface VennFirewallConsumerBaseInterface extends Interface { + getFunction( + nameOrSignature: + | "acceptFirewallAdmin" + | "firewallAdmin" + | "safeFunctionCall" + | "setAllowNonZeroUserNativeFee" + | "setAttestationCenterProxy" + | "setFirewall" + | "setFirewallAdmin" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "AttestationCenterProxyUpdated" + | "FirewallAdminProposed" + | "FirewallAdminUpdated" + | "FirewallUpdated" + ): EventFragment; + + encodeFunctionData( + functionFragment: "acceptFirewallAdmin", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "firewallAdmin", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "safeFunctionCall", + values: [BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setAllowNonZeroUserNativeFee", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "setAttestationCenterProxy", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setFirewall", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setFirewallAdmin", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "acceptFirewallAdmin", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "firewallAdmin", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeFunctionCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setAllowNonZeroUserNativeFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setAttestationCenterProxy", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFirewall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFirewallAdmin", + data: BytesLike + ): Result; +} + +export namespace AttestationCenterProxyUpdatedEvent { + export type InputTuple = [newAttestationCenterProxy: AddressLike]; + export type OutputTuple = [newAttestationCenterProxy: string]; + export interface OutputObject { + newAttestationCenterProxy: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace FirewallAdminProposedEvent { + export type InputTuple = [newAdmin: AddressLike]; + export type OutputTuple = [newAdmin: string]; + export interface OutputObject { + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace FirewallAdminUpdatedEvent { + export type InputTuple = [newAdmin: AddressLike]; + export type OutputTuple = [newAdmin: string]; + export interface OutputObject { + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace FirewallUpdatedEvent { + export type InputTuple = [newFirewall: AddressLike]; + export type OutputTuple = [newFirewall: string]; + export interface OutputObject { + newFirewall: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface VennFirewallConsumerBase extends BaseContract { + connect(runner?: ContractRunner | null): VennFirewallConsumerBase; + waitForDeployment(): Promise; + + interface: VennFirewallConsumerBaseInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + acceptFirewallAdmin: TypedContractMethod<[], [void], "nonpayable">; + + firewallAdmin: TypedContractMethod<[], [string], "view">; + + safeFunctionCall: TypedContractMethod< + [_userNativeFee: BigNumberish, _proxyPayload: BytesLike, _data: BytesLike], + [void], + "payable" + >; + + setAllowNonZeroUserNativeFee: TypedContractMethod< + [_allowNonZeroUserNativeFee: boolean], + [void], + "nonpayable" + >; + + setAttestationCenterProxy: TypedContractMethod< + [_attestationCenterProxy: AddressLike], + [void], + "nonpayable" + >; + + setFirewall: TypedContractMethod< + [_firewall: AddressLike], + [void], + "nonpayable" + >; + + setFirewallAdmin: TypedContractMethod< + [_firewallAdmin: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "acceptFirewallAdmin" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "firewallAdmin" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "safeFunctionCall" + ): TypedContractMethod< + [_userNativeFee: BigNumberish, _proxyPayload: BytesLike, _data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "setAllowNonZeroUserNativeFee" + ): TypedContractMethod< + [_allowNonZeroUserNativeFee: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setAttestationCenterProxy" + ): TypedContractMethod< + [_attestationCenterProxy: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setFirewall" + ): TypedContractMethod<[_firewall: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "setFirewallAdmin" + ): TypedContractMethod<[_firewallAdmin: AddressLike], [void], "nonpayable">; + + getEvent( + key: "AttestationCenterProxyUpdated" + ): TypedContractEvent< + AttestationCenterProxyUpdatedEvent.InputTuple, + AttestationCenterProxyUpdatedEvent.OutputTuple, + AttestationCenterProxyUpdatedEvent.OutputObject + >; + getEvent( + key: "FirewallAdminProposed" + ): TypedContractEvent< + FirewallAdminProposedEvent.InputTuple, + FirewallAdminProposedEvent.OutputTuple, + FirewallAdminProposedEvent.OutputObject + >; + getEvent( + key: "FirewallAdminUpdated" + ): TypedContractEvent< + FirewallAdminUpdatedEvent.InputTuple, + FirewallAdminUpdatedEvent.OutputTuple, + FirewallAdminUpdatedEvent.OutputObject + >; + getEvent( + key: "FirewallUpdated" + ): TypedContractEvent< + FirewallUpdatedEvent.InputTuple, + FirewallUpdatedEvent.OutputTuple, + FirewallUpdatedEvent.OutputObject + >; + + filters: { + "AttestationCenterProxyUpdated(address)": TypedContractEvent< + AttestationCenterProxyUpdatedEvent.InputTuple, + AttestationCenterProxyUpdatedEvent.OutputTuple, + AttestationCenterProxyUpdatedEvent.OutputObject + >; + AttestationCenterProxyUpdated: TypedContractEvent< + AttestationCenterProxyUpdatedEvent.InputTuple, + AttestationCenterProxyUpdatedEvent.OutputTuple, + AttestationCenterProxyUpdatedEvent.OutputObject + >; + + "FirewallAdminProposed(address)": TypedContractEvent< + FirewallAdminProposedEvent.InputTuple, + FirewallAdminProposedEvent.OutputTuple, + FirewallAdminProposedEvent.OutputObject + >; + FirewallAdminProposed: TypedContractEvent< + FirewallAdminProposedEvent.InputTuple, + FirewallAdminProposedEvent.OutputTuple, + FirewallAdminProposedEvent.OutputObject + >; + + "FirewallAdminUpdated(address)": TypedContractEvent< + FirewallAdminUpdatedEvent.InputTuple, + FirewallAdminUpdatedEvent.OutputTuple, + FirewallAdminUpdatedEvent.OutputObject + >; + FirewallAdminUpdated: TypedContractEvent< + FirewallAdminUpdatedEvent.InputTuple, + FirewallAdminUpdatedEvent.OutputTuple, + FirewallAdminUpdatedEvent.OutputObject + >; + + "FirewallUpdated(address)": TypedContractEvent< + FirewallUpdatedEvent.InputTuple, + FirewallUpdatedEvent.OutputTuple, + FirewallUpdatedEvent.OutputObject + >; + FirewallUpdated: TypedContractEvent< + FirewallUpdatedEvent.InputTuple, + FirewallUpdatedEvent.OutputTuple, + FirewallUpdatedEvent.OutputObject + >; + }; +} diff --git a/src/types/contracts/common.ts b/src/types/contracts/common.ts new file mode 100644 index 0000000..56b5f21 --- /dev/null +++ b/src/types/contracts/common.ts @@ -0,0 +1,131 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + FunctionFragment, + Typed, + EventFragment, + ContractTransaction, + ContractTransactionResponse, + DeferredTopicFilter, + EventLog, + TransactionRequest, + LogDescription, +} from "ethers"; + +export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> + extends DeferredTopicFilter {} + +export interface TypedContractEvent< + InputTuple extends Array = any, + OutputTuple extends Array = any, + OutputObject = any +> { + (...args: Partial): TypedDeferredTopicFilter< + TypedContractEvent + >; + name: string; + fragment: EventFragment; + getFragment(...args: Partial): EventFragment; +} + +type __TypechainAOutputTuple = T extends TypedContractEvent< + infer _U, + infer W +> + ? W + : never; +type __TypechainOutputObject = T extends TypedContractEvent< + infer _U, + infer _W, + infer V +> + ? V + : never; + +export interface TypedEventLog + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export interface TypedLogDescription + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export type TypedListener = ( + ...listenerArg: [ + ...__TypechainAOutputTuple, + TypedEventLog, + ...undefined[] + ] +) => void; + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type StateMutability = "nonpayable" | "payable" | "view"; + +export type BaseOverrides = Omit; +export type NonPayableOverrides = Omit< + BaseOverrides, + "value" | "blockTag" | "enableCcipRead" +>; +export type PayableOverrides = Omit< + BaseOverrides, + "blockTag" | "enableCcipRead" +>; +export type ViewOverrides = Omit; +export type Overrides = S extends "nonpayable" + ? NonPayableOverrides + : S extends "payable" + ? PayableOverrides + : ViewOverrides; + +export type PostfixOverrides, S extends StateMutability> = + | A + | [...A, Overrides]; +export type ContractMethodArgs< + A extends Array, + S extends StateMutability +> = PostfixOverrides<{ [I in keyof A]-?: A[I] | Typed }, S>; + +export type DefaultReturnType = R extends Array ? R[0] : R; + +// export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = R | ContractTransactionResponse> { +export interface TypedContractMethod< + A extends Array = Array, + R = any, + S extends StateMutability = "payable" +> { + (...args: ContractMethodArgs): S extends "view" + ? Promise> + : Promise; + + name: string; + + fragment: FunctionFragment; + + getFragment(...args: ContractMethodArgs): FunctionFragment; + + populateTransaction( + ...args: ContractMethodArgs + ): Promise; + staticCall( + ...args: ContractMethodArgs + ): Promise>; + send(...args: ContractMethodArgs): Promise; + estimateGas(...args: ContractMethodArgs): Promise; + staticCallResult(...args: ContractMethodArgs): Promise; +} diff --git a/src/types/contracts/factories/Firewall__factory.ts b/src/types/contracts/factories/Firewall__factory.ts new file mode 100644 index 0000000..cf8369a --- /dev/null +++ b/src/types/contracts/factories/Firewall__factory.ts @@ -0,0 +1,988 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Firewall, FirewallInterface } from "../Firewall"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "previousAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "AdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "beacon", + type: "address", + }, + ], + name: "BeaconUpgraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "status", + type: "bool", + }, + ], + name: "ConsumerDryrunStatusUpdate", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "error", + type: "bytes", + }, + ], + name: "DryrunPolicyPostError", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "DryrunPolicyPostSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "error", + type: "bytes", + }, + ], + name: "DryrunPolicyPreError", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "DryrunPolicyPreSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "error", + type: "bytes", + }, + ], + name: "GlobalDryrunPolicyPostError", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "GlobalDryrunPolicyPostSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "error", + type: "bytes", + }, + ], + name: "GlobalDryrunPolicyPreError", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "GlobalDryrunPolicyPreSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "GlobalPolicyAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "GlobalPolicyPostSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "GlobalPolicyPreSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "GlobalPolicyRemoved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferStarted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "PolicyAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "PolicyPostSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "PolicyPreSuccess", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "consumer", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "methodSig", + type: "bytes4", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "PolicyRemoved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "status", + type: "bool", + }, + ], + name: "PolicyStatusUpdate", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Upgraded", + type: "event", + }, + { + inputs: [], + name: "__Firewall_init", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "acceptOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "address", + name: "_policy", + type: "address", + }, + ], + name: "addGlobalPolicy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_consumers", + type: "address[]", + }, + { + internalType: "address", + name: "_policy", + type: "address", + }, + ], + name: "addGlobalPolicyForConsumers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "bytes4[]", + name: "_methodSigs", + type: "bytes4[]", + }, + { + internalType: "address[]", + name: "_policies", + type: "address[]", + }, + ], + name: "addPolicies", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "bytes4", + name: "_methodSig", + type: "bytes4", + }, + { + internalType: "address", + name: "_policy", + type: "address", + }, + ], + name: "addPolicy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "approvedPolicies", + outputs: [ + { + internalType: "bool", + name: "isApproved", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "consumer", + type: "address", + }, + ], + name: "dryrunEnabled", + outputs: [ + { + internalType: "bool", + name: "dryrun", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pendingOwner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_sender", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "postExecution", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_sender", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "preExecution", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "proxiableUUID", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "address", + name: "_policy", + type: "address", + }, + ], + name: "removeGlobalPolicy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_consumers", + type: "address[]", + }, + { + internalType: "address", + name: "_policy", + type: "address", + }, + ], + name: "removeGlobalPolicyForConsumers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "bytes4[]", + name: "_methodSigs", + type: "bytes4[]", + }, + { + internalType: "address[]", + name: "_policies", + type: "address[]", + }, + ], + name: "removePolicies", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "bytes4", + name: "_methodSig", + type: "bytes4", + }, + { + internalType: "address", + name: "_policy", + type: "address", + }, + ], + name: "removePolicy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_consumer", + type: "address", + }, + { + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "setConsumerDryrunStatus", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policy", + type: "address", + }, + { + internalType: "bool", + name: "_status", + type: "bool", + }, + ], + name: "setPolicyStatus", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "consumer", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subscribedGlobalPolicies", + outputs: [ + { + internalType: "address", + name: "globalPolicies", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "consumer", + type: "address", + }, + { + internalType: "bytes4", + name: "sighash", + type: "bytes4", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subscribedPolicies", + outputs: [ + { + internalType: "address", + name: "policies", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + ], + name: "upgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "version", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +export class Firewall__factory { + static readonly abi = _abi; + static createInterface(): FirewallInterface { + return new Interface(_abi) as FirewallInterface; + } + static connect(address: string, runner?: ContractRunner | null): Firewall { + return new Contract(address, _abi, runner) as unknown as Firewall; + } +} diff --git a/src/types/contracts/factories/PolicyDeployer__factory.ts b/src/types/contracts/factories/PolicyDeployer__factory.ts new file mode 100644 index 0000000..d03036b --- /dev/null +++ b/src/types/contracts/factories/PolicyDeployer__factory.ts @@ -0,0 +1,396 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + PolicyDeployer, + PolicyDeployerInterface, +} from "../PolicyDeployer"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_firewallModule", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "factory", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "status", + type: "bool", + }, + ], + name: "FactoryStatusSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "firewallModule", + type: "address", + }, + ], + name: "FirewallModuleSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "factory", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "policy", + type: "address", + }, + ], + name: "PolicyCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, + { + inputs: [], + name: "ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "factory", + type: "address", + }, + ], + name: "approvedFactories", + outputs: [ + { + internalType: "bool", + name: "isApproved", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_firewall", + type: "address", + }, + { + internalType: "address[]", + name: "_factories", + type: "address[]", + }, + { + internalType: "bytes[]", + name: "_createData", + type: "bytes[]", + }, + ], + name: "deployPolicies", + outputs: [ + { + internalType: "address[]", + name: "policies", + type: "address[]", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "firewallModule", + outputs: [ + { + internalType: "contract IFirewallModule", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_factories", + type: "address[]", + }, + { + internalType: "bool[]", + name: "_statuses", + type: "bool[]", + }, + ], + name: "setFactoryStatuses", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_firewallModule", + type: "address", + }, + ], + name: "setFirewallModule", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class PolicyDeployer__factory { + static readonly abi = _abi; + static createInterface(): PolicyDeployerInterface { + return new Interface(_abi) as PolicyDeployerInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): PolicyDeployer { + return new Contract(address, _abi, runner) as unknown as PolicyDeployer; + } +} diff --git a/src/types/contracts/factories/ProtocolRegistry__factory.ts b/src/types/contracts/factories/ProtocolRegistry__factory.ts new file mode 100644 index 0000000..81a479e --- /dev/null +++ b/src/types/contracts/factories/ProtocolRegistry__factory.ts @@ -0,0 +1,1012 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ProtocolRegistry, + ProtocolRegistryInterface, +} from "../ProtocolRegistry"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "previousAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "AdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "attestationCenter", + type: "address", + }, + ], + name: "AttestationCenterSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "beacon", + type: "address", + }, + ], + name: "BeaconUpgraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "detectionEscrow", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "address[]", + name: "assets", + type: "address[]", + }, + { + indexed: false, + internalType: "address[]", + name: "admins", + type: "address[]", + }, + { + indexed: false, + internalType: "string", + name: "metadataURI", + type: "string", + }, + ], + name: "ProtocolDetectionApproved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "detectionEscrow", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "address[]", + name: "assets", + type: "address[]", + }, + { + indexed: false, + internalType: "address[]", + name: "admins", + type: "address[]", + }, + { + indexed: false, + internalType: "uint256", + name: "fee", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "metadataURI", + type: "string", + }, + ], + name: "ProtocolDetectionRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "policyAddress", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "metadataURI", + type: "string", + }, + ], + name: "ProtocolRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "policyAddress", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "metadataURI", + type: "string", + }, + ], + name: "ProtocolUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "policyAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint16", + name: "taskDefinitionId", + type: "uint16", + }, + { + indexed: false, + internalType: "uint256[]", + name: "requiredOperatorIds", + type: "uint256[]", + }, + ], + name: "SubnetSubscribed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "policyAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint16", + name: "taskDefinitionId", + type: "uint16", + }, + ], + name: "SubnetUnsubscribed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Upgraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "fee", + type: "uint256", + }, + ], + name: "VennDetectionFeeSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "vennFeeRecipient", + type: "address", + }, + ], + name: "VennFeeRecipientSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "fee", + type: "uint256", + }, + ], + name: "VennProtocolFeeSet", + type: "event", + }, + { + inputs: [], + name: "ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "MAX_VENN_DETECTION_FEE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "MAX_VENN_PROTOCOL_FEE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_attestationCenter", + type: "address", + }, + { + internalType: "address", + name: "_vennFeeRecipient", + type: "address", + }, + { + internalType: "uint256", + name: "_vennDetectionFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "_vennProtocolFee", + type: "uint256", + }, + ], + name: "__ProtocolRegistry_init", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_detectionEscrow", + type: "address", + }, + ], + name: "approveProtocolDetectionAsOperator", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "attestationCenter", + outputs: [ + { + internalType: "contract IAttestationCenter", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_operator", + type: "address", + }, + { + internalType: "address[]", + name: "_assets", + type: "address[]", + }, + { + internalType: "address[]", + name: "_admins", + type: "address[]", + }, + { + internalType: "string", + name: "_metadataURI", + type: "string", + }, + ], + name: "createAndRegisterProtocolDetection", + outputs: [ + { + internalType: "address", + name: "detectionEscrow", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + ], + name: "getProtocol", + outputs: [ + { + components: [ + { + internalType: "address", + name: "policyAddress", + type: "address", + }, + { + internalType: "string", + name: "metadataURI", + type: "string", + }, + ], + internalType: "struct IProtocolRegistry.Protocol", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_detectionEscrow", + type: "address", + }, + ], + name: "getProtocolDetection", + outputs: [ + { + components: [ + { + internalType: "address", + name: "protocolAdmin", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address[]", + name: "assets", + type: "address[]", + }, + { + internalType: "address[]", + name: "admins", + type: "address[]", + }, + { + internalType: "uint256", + name: "vennFee", + type: "uint256", + }, + { + internalType: "bool", + name: "isApproved", + type: "bool", + }, + { + internalType: "string", + name: "metadataURI", + type: "string", + }, + ], + internalType: "struct IProtocolRegistry.ProtocolDetection", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + ], + name: "getProtocolTaskDefinitionIds", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + { + internalType: "uint16", + name: "_taskDefinitionId", + type: "uint16", + }, + ], + name: "getRequiredOperatorIds", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + { + internalType: "uint16", + name: "_taskDefinitionId", + type: "uint16", + }, + ], + name: "isSubnetSubscribed", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "proxiableUUID", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + { + internalType: "string", + name: "_metadataURI", + type: "string", + }, + ], + name: "registerProtocol", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_attestationCenter", + type: "address", + }, + ], + name: "setAttestationCenter", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_vennDetectionFee", + type: "uint256", + }, + ], + name: "setVennDetectionFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_vennFeeRecipient", + type: "address", + }, + ], + name: "setVennFeeRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_vennProtocolFee", + type: "uint256", + }, + ], + name: "setVennProtocolFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + { + internalType: "uint16", + name: "_taskDefinitionId", + type: "uint16", + }, + { + internalType: "uint256[]", + name: "_requiredOperatorIds", + type: "uint256[]", + }, + ], + name: "subscribeSubnet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + { + internalType: "uint16", + name: "_taskDefinitionId", + type: "uint16", + }, + ], + name: "unsubscribeSubnet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_policyAddress", + type: "address", + }, + { + internalType: "string", + name: "_metadataURI", + type: "string", + }, + ], + name: "updateProtocol", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + ], + name: "upgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "vennDetectionFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vennFeeRecipient", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vennProtocolFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "version", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +export class ProtocolRegistry__factory { + static readonly abi = _abi; + static createInterface(): ProtocolRegistryInterface { + return new Interface(_abi) as ProtocolRegistryInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ProtocolRegistry { + return new Contract(address, _abi, runner) as unknown as ProtocolRegistry; + } +} diff --git a/src/types/contracts/factories/VennFirewallConsumerBase__factory.ts b/src/types/contracts/factories/VennFirewallConsumerBase__factory.ts new file mode 100644 index 0000000..d0c3ed6 --- /dev/null +++ b/src/types/contracts/factories/VennFirewallConsumerBase__factory.ts @@ -0,0 +1,212 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + VennFirewallConsumerBase, + VennFirewallConsumerBaseInterface, +} from "../VennFirewallConsumerBase"; + +const _abi = [ + { + inputs: [], + name: "AttestationCenterProxyNotSet", + type: "error", + }, + { + inputs: [], + name: "NonZeroUserNativeFee", + type: "error", + }, + { + inputs: [], + name: "NotEnoughFee", + type: "error", + }, + { + inputs: [], + name: "NotFirewallAdmin", + type: "error", + }, + { + inputs: [], + name: "NotNewFirewallAdmin", + type: "error", + }, + { + inputs: [ + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + name: "ProxyCallFailed", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "newAttestationCenterProxy", + type: "address", + }, + ], + name: "AttestationCenterProxyUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "FirewallAdminProposed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "FirewallAdminUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "newFirewall", + type: "address", + }, + ], + name: "FirewallUpdated", + type: "event", + }, + { + inputs: [], + name: "acceptFirewallAdmin", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "firewallAdmin", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_userNativeFee", + type: "uint256", + }, + { + internalType: "bytes", + name: "_proxyPayload", + type: "bytes", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "safeFunctionCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "_allowNonZeroUserNativeFee", + type: "bool", + }, + ], + name: "setAllowNonZeroUserNativeFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_attestationCenterProxy", + type: "address", + }, + ], + name: "setAttestationCenterProxy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_firewall", + type: "address", + }, + ], + name: "setFirewall", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_firewallAdmin", + type: "address", + }, + ], + name: "setFirewallAdmin", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class VennFirewallConsumerBase__factory { + static readonly abi = _abi; + static createInterface(): VennFirewallConsumerBaseInterface { + return new Interface(_abi) as VennFirewallConsumerBaseInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): VennFirewallConsumerBase { + return new Contract( + address, + _abi, + runner + ) as unknown as VennFirewallConsumerBase; + } +} diff --git a/src/types/contracts/factories/index.ts b/src/types/contracts/factories/index.ts new file mode 100644 index 0000000..3f812ee --- /dev/null +++ b/src/types/contracts/factories/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Firewall__factory } from "./Firewall__factory"; +export { PolicyDeployer__factory } from "./PolicyDeployer__factory"; +export { ProtocolRegistry__factory } from "./ProtocolRegistry__factory"; +export { VennFirewallConsumerBase__factory } from "./VennFirewallConsumerBase__factory"; diff --git a/src/types/contracts/index.ts b/src/types/contracts/index.ts new file mode 100644 index 0000000..1608b69 --- /dev/null +++ b/src/types/contracts/index.ts @@ -0,0 +1,12 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Firewall } from "./Firewall"; +export type { PolicyDeployer } from "./PolicyDeployer"; +export type { ProtocolRegistry } from "./ProtocolRegistry"; +export type { VennFirewallConsumerBase } from "./VennFirewallConsumerBase"; +export * as factories from "./factories"; +export { Firewall__factory } from "./factories/Firewall__factory"; +export { PolicyDeployer__factory } from "./factories/PolicyDeployer__factory"; +export { ProtocolRegistry__factory } from "./factories/ProtocolRegistry__factory"; +export { VennFirewallConsumerBase__factory } from "./factories/VennFirewallConsumerBase__factory"; diff --git a/src/venn/default-providers.constants.ts b/src/venn/default-providers.constants.ts index f110240..d0a9fbd 100644 --- a/src/venn/default-providers.constants.ts +++ b/src/venn/default-providers.constants.ts @@ -1,3 +1,3 @@ export const DEFAULT_PROVIDERS = { - HOLESKY: 'https://ethereum-holesky-rpc.publicnode.com' + HOLESKY: 'https://ethereum-holesky-rpc.publicnode.com', }; diff --git a/src/venn/disable/disable.command.ts b/src/venn/disable/disable.command.ts index 36a0db2..bc26139 100644 --- a/src/venn/disable/disable.command.ts +++ b/src/venn/disable/disable.command.ts @@ -1,19 +1,19 @@ import * as colors from 'colors'; -import { CommandRunner, Option, Command } from 'nest-commander'; +import { Command, CommandRunner, Option } from 'nest-commander'; -import { LoggerService } from '@/lib/logging/logger.service'; import { StandaloneCommand } from '@/commands/standalone-command.decorator'; +import { LoggerService } from '@/lib/logging/logger.service'; import { DESCRIPTION, FULL_NAME, NAME } from '@/venn/disable/disable.command.descriptor'; import { DisableVennOptions, DisableVennService } from '@/venn/disable/disable.service'; @Command({ name: NAME, - description: DESCRIPTION + description: DESCRIPTION, }) export class DisableVennCommand extends CommandRunner { constructor( private readonly logger: LoggerService, - private readonly disableService: DisableVennService + private readonly disableService: DisableVennService, ) { super(); } @@ -38,7 +38,7 @@ export class DisableVennCommand extends CommandRunner { @Option({ flags: '-n, --network ', description: 'the network where the contracts are deployed (default: holesky)', - defaultValue: 'holesky' + defaultValue: 'holesky', }) parseNetwork(network: string): string { return network; diff --git a/src/venn/disable/disable.module.ts b/src/venn/disable/disable.module.ts index 82b48f2..4b78ecd 100644 --- a/src/venn/disable/disable.module.ts +++ b/src/venn/disable/disable.module.ts @@ -1,10 +1,10 @@ -import { ethers } from 'ethers'; import { Module } from '@nestjs/common'; +import { ethers } from 'ethers'; import { FilesModules } from '@/files/files.module'; import { LoggerModule } from '@/lib/logging/logger.module'; -import { DisableVennService } from '@/venn/disable/disable.service'; import { DisableVennCommand } from '@/venn/disable/disable.command'; +import { DisableVennService } from '@/venn/disable/disable.service'; @Module({ imports: [LoggerModule, FilesModules], @@ -14,8 +14,8 @@ import { DisableVennCommand } from '@/venn/disable/disable.command'; { provide: 'ETHERS', - useValue: ethers - } - ] + useValue: ethers, + }, + ], }) export class DisableVennModule {} diff --git a/src/venn/disable/disable.service.ts b/src/venn/disable/disable.service.ts index d04ec12..ecdbce2 100644 --- a/src/venn/disable/disable.service.ts +++ b/src/venn/disable/disable.service.ts @@ -1,15 +1,16 @@ -import * as colors from 'colors'; -import { ConfigService } from '@nestjs/config'; import { Inject, Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import * as colors from 'colors'; +import { Wallet } from 'ethers'; import { LoggerService } from '@/lib/logging/logger.service'; -import { VENN_ADDRESSES } from '@/venn/venn-addresses.constants'; +import { VennFirewallConsumerBase__factory } from '@/types/contracts'; import { DEFAULT_PROVIDERS } from '@/venn/default-providers.constants'; import { SupportedVennNetworks } from '@/venn/supported-networks.enum'; - +import { VENN_ADDRESSES } from '@/venn/venn-addresses.constants'; const MEMORY_SLOT_NAMES = { FIREWALL_ADDRESS: 'eip1967.firewall', - ATTESTATION_CENTER_PROXY_ADDRESS: 'eip1967.attestation.center.proxy' + ATTESTATION_CENTER_PROXY_ADDRESS: 'eip1967.attestation.center.proxy', }; export type DisableVennOptions = { @@ -28,7 +29,7 @@ export class DisableVennService { constructor( private readonly logger: LoggerService, private readonly config: ConfigService, - @Inject('ETHERS') private readonly ethers: typeof import('ethers') + @Inject('ETHERS') private readonly ethers: typeof import('ethers'), ) {} async disable(options: DisableVennOptions) { @@ -41,7 +42,11 @@ export class DisableVennService { await this.removeFirewallFromConsumers(contracts, wallet, options.network); } - async removeFirewallFromConsumers(contracts: ContractInformation[], wallet: import('ethers').Wallet, network: SupportedVennNetworks) { + async removeFirewallFromConsumers( + contracts: ContractInformation[], + wallet: Wallet, + network: SupportedVennNetworks, + ) { this.logger.step('Removing firewall from all contracts'); // First, we prepare all the addresses we need @@ -57,20 +62,18 @@ export class DisableVennService { const provider = this.ethers.getDefaultProvider(networkConfig.provider); const signer = wallet.connect(provider); - // We only use this one function, so the ABI is hardcoded for now - // - const firewallConsumerMinimalABI = ['function setFirewall(address)']; - // We don't want to mess with the nonces, so we do this one by one // for (const contract of contracts) { if (!contract.hasFirewall) { - this.logger.log(` -> No Firewall set for contract ${colors.cyan(contract.name)} ${colors.grey('(skipping)')} \n`); + this.logger.log( + ` -> No Firewall set for contract ${colors.cyan(contract.name)} ${colors.grey('(skipping)')} \n`, + ); continue; } else { this.logger.log(` -> Removing Firewall from contract ${colors.cyan(contract.name)}`); - const firewallConsumer = new this.ethers.Contract(contract.address, firewallConsumerMinimalABI, signer); + const firewallConsumer = VennFirewallConsumerBase__factory.connect(contract.address, signer); const tx = await firewallConsumer.setFirewall(ZERO_ADDRESS); this.logger.log(` -> Transaction hash: ${tx.hash}`); @@ -117,31 +120,62 @@ export class DisableVennService { networkConfig.firewall = networkConfig.firewall || VENN_ADDRESSES[network.toUpperCase()].FIREWALL; const firewallAddressIsInvalid = !this.ethers.isAddress(networkConfig.firewall); if (firewallAddressIsInvalid) { - throw new Error(`Invalid address for contract ${colors.red('Firewall Address')}: ${colors.red(networkConfig.firewall)}`); + throw new Error( + `Invalid address for contract ${colors.red('Firewall Address')}: ${colors.red(networkConfig.firewall)}`, + ); } - networkConfig.approvedCallsSigner = networkConfig.approvedCallsSigner || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_SIGNER; + networkConfig.approvedCallsSigner = + networkConfig.approvedCallsSigner || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_SIGNER; const approvedCallsSignerIsAddressInvalid = !this.ethers.isAddress(networkConfig.approvedCallsSigner); if (approvedCallsSignerIsAddressInvalid) { - throw new Error(`Invalid address for ${colors.red('Approved Calls Signer')}: ${colors.red(networkConfig.approvedCallsSigner)}`); + throw new Error( + `Invalid address for ${colors.red('Approved Calls Signer')}: ${colors.red(networkConfig.approvedCallsSigner)}`, + ); } - networkConfig.policyDeployer = networkConfig.policyDeployer || VENN_ADDRESSES[network.toUpperCase()]?.POLICY_DEPLOYER; + networkConfig.policyDeployer = + networkConfig.policyDeployer || VENN_ADDRESSES[network.toUpperCase()]?.POLICY_DEPLOYER; const policyDeployerAddressIsInvalid = !this.ethers.isAddress(networkConfig.policyDeployer); if (policyDeployerAddressIsInvalid) { - throw new Error(`Invalid address for contract ${colors.red('Policy Deployer')}: ${colors.red(networkConfig.policyDeployer)}`); + throw new Error( + `Invalid address for contract ${colors.red('Policy Deployer')}: ${colors.red(networkConfig.policyDeployer)}`, + ); } - networkConfig.approvedCallsFactory = networkConfig.approvedCallsFactory || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_FACTORY; + networkConfig.approvedCallsFactory = + networkConfig.approvedCallsFactory || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_FACTORY; const approvedCallsFactoryIsInvalid = !this.ethers.isAddress(networkConfig.approvedCallsFactory); if (approvedCallsFactoryIsInvalid) { - throw new Error(`Invalid address for contract ${colors.red('Approved Calls Factory')}: ${colors.red(networkConfig.approvedCallsFactory)}`); + throw new Error( + `Invalid address for contract ${colors.red('Approved Calls Factory')}: ${colors.red(networkConfig.approvedCallsFactory)}`, + ); } - networkConfig.safeCallTarget = networkConfig.safeCallTarget || VENN_ADDRESSES[network.toUpperCase()]?.SAFE_CALL_TARGET; - const safeCallTargetAddressIsInvalid = networkConfig.safeCallTarget && !this.ethers.isAddress(networkConfig.safeCallTarget); + networkConfig.safeCallTarget = + networkConfig.safeCallTarget || VENN_ADDRESSES[network.toUpperCase()]?.SAFE_CALL_TARGET; + const safeCallTargetAddressIsInvalid = + networkConfig.safeCallTarget && !this.ethers.isAddress(networkConfig.safeCallTarget); if (safeCallTargetAddressIsInvalid) { - throw new Error(`Invalid address for ${colors.red('Safe Call Target')}: ${colors.red(networkConfig.safeCallTarget)}`); + throw new Error( + `Invalid address for ${colors.red('Safe Call Target')}: ${colors.red(networkConfig.safeCallTarget)}`, + ); + } + + networkConfig.protocolRegistry = + networkConfig.protocolRegistry || VENN_ADDRESSES[network.toUpperCase()]?.PROTOCOL_REGISTRY; + const protocolRegistryAddressIsInvalid = + networkConfig.protocolRegistry && !this.ethers.isAddress(networkConfig.protocolRegistry); + if (protocolRegistryAddressIsInvalid) { + throw new Error( + `Invalid address for ${colors.red('Protocol Registry')}: ${colors.red(networkConfig.protocolRegistry)}`, + ); + } + + networkConfig.rootSubnet = networkConfig.rootSubnet || VENN_ADDRESSES[network.toUpperCase()]?.ROOT_SUBNET; + const rootSubnetAddressIsInvalid = networkConfig.rootSubnet && typeof networkConfig.rootSubnet !== 'number'; + if (rootSubnetAddressIsInvalid) { + throw new Error(`Invalid id for ${colors.red('Root Subnet')}: ${colors.red(networkConfig.rootSubnet)}`); } // Validate that we have an RPC provider for the selected network @@ -150,8 +184,10 @@ export class DisableVennService { // If we can get the latest block, we can assume good connection to the network const provider = new this.ethers.JsonRpcProvider(networkConfig.provider); await provider.getBlockNumber(); - } catch (error) { - throw new Error(`Could not connect to network ${colors.cyan(network)} using provider ${colors.cyan(networkConfig.provider)}`); + } catch (_error) { + throw new Error( + `Could not connect to network ${colors.cyan(network)} using provider ${colors.cyan(networkConfig.provider)}`, + ); } this.logger.debug(` -> Network configuration are ok`); @@ -166,7 +202,7 @@ export class DisableVennService { try { const wallet = new this.ethers.Wallet(privateKey); this.logger.log(` -> Account: ${colors.cyan(wallet.address)}`); - } catch (error) { + } catch (_error) { throw new Error(`Invalid private key`); } } @@ -186,8 +222,8 @@ export class DisableVennService { name, address, hasFirewall: await this.isFirewallSetOnConsumer(network, address), - hasAttestationCenterProxy: await this.isSafeCallTargetSetOnConsumer(network, address) - })) + hasAttestationCenterProxy: await this.isSafeCallTargetSetOnConsumer(network, address), + })), ); this.logger.debug(` -> Contracts information: ${JSON.stringify(contractsInfo, null, 2)}`); diff --git a/src/venn/enable/enable.command.ts b/src/venn/enable/enable.command.ts index 3032b48..b4d7f9e 100644 --- a/src/venn/enable/enable.command.ts +++ b/src/venn/enable/enable.command.ts @@ -1,19 +1,19 @@ import * as colors from 'colors'; -import { CommandRunner, Option, Command } from 'nest-commander'; +import { Command, CommandRunner, Option } from 'nest-commander'; -import { LoggerService } from '@/lib/logging/logger.service'; import { StandaloneCommand } from '@/commands/standalone-command.decorator'; +import { LoggerService } from '@/lib/logging/logger.service'; import { DESCRIPTION, FULL_NAME, NAME } from '@/venn/enable/enable.command.descriptor'; import { EnableVennOptions, EnableVennService } from '@/venn/enable/enable.service'; @Command({ name: NAME, - description: DESCRIPTION + description: DESCRIPTION, }) export class EnableVennCommand extends CommandRunner { constructor( private readonly logger: LoggerService, - private readonly enableService: EnableVennService + private readonly enableService: EnableVennService, ) { super(); } @@ -38,7 +38,7 @@ export class EnableVennCommand extends CommandRunner { @Option({ flags: '-n, --network ', description: 'the network where the contracts are deployed (default: holesky)', - defaultValue: 'holesky' + defaultValue: 'holesky', }) parseNetwork(network: string): string { return network; diff --git a/src/venn/enable/enable.module.ts b/src/venn/enable/enable.module.ts index 165a559..eba1c27 100644 --- a/src/venn/enable/enable.module.ts +++ b/src/venn/enable/enable.module.ts @@ -1,10 +1,10 @@ -import { ethers } from 'ethers'; import { Module } from '@nestjs/common'; +import { ethers } from 'ethers'; import { FilesModules } from '@/files/files.module'; import { LoggerModule } from '@/lib/logging/logger.module'; -import { EnableVennService } from '@/venn/enable/enable.service'; import { EnableVennCommand } from '@/venn/enable/enable.command'; +import { EnableVennService } from '@/venn/enable/enable.service'; @Module({ imports: [LoggerModule, FilesModules], @@ -14,8 +14,8 @@ import { EnableVennCommand } from '@/venn/enable/enable.command'; { provide: 'ETHERS', - useValue: ethers - } - ] + useValue: ethers, + }, + ], }) export class EnableVennModule {} diff --git a/src/venn/enable/enable.service.ts b/src/venn/enable/enable.service.ts index bb9de64..64dcbab 100644 --- a/src/venn/enable/enable.service.ts +++ b/src/venn/enable/enable.service.ts @@ -1,15 +1,22 @@ -import * as colors from 'colors'; -import { ConfigService } from '@nestjs/config'; import { Inject, Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import * as colors from 'colors'; +import { EventLog, Wallet } from 'ethers'; import { LoggerService } from '@/lib/logging/logger.service'; -import { VENN_ADDRESSES } from '@/venn/venn-addresses.constants'; +import { + Firewall__factory, + PolicyDeployer__factory, + ProtocolRegistry__factory, + VennFirewallConsumerBase__factory, +} from '@/types/contracts'; import { DEFAULT_PROVIDERS } from '@/venn/default-providers.constants'; import { SupportedVennNetworks } from '@/venn/supported-networks.enum'; +import { VENN_ADDRESSES } from '@/venn/venn-addresses.constants'; const MEMORY_SLOT_NAMES = { FIREWALL_ADDRESS: 'eip1967.firewall', - ATTESTATION_CENTER_PROXY_ADDRESS: 'eip1967.attestation.center.proxy' + ATTESTATION_CENTER_PROXY_ADDRESS: 'eip1967.attestation.center.proxy', }; export type EnableVennOptions = { @@ -28,7 +35,7 @@ export class EnableVennService { constructor( private readonly logger: LoggerService, private readonly config: ConfigService, - @Inject('ETHERS') private readonly ethers: typeof import('ethers') + @Inject('ETHERS') private readonly ethers: typeof import('ethers'), ) {} async enable(options: EnableVennOptions) { @@ -42,9 +49,15 @@ export class EnableVennService { await this.setFirewallOnConsumers(contracts, wallet, options.network); await this.setAttestationCenterProxyOnConsumers(contracts, wallet, options.network); await this.subscribeConsumersToNewPolicy(contracts, newPolicyAddress, wallet, options.network); + await this.registerContractsInProtocolRegistry(newPolicyAddress, wallet, options.network); + await this.subscribeToRootSubnet(newPolicyAddress, wallet, options.network); } - async deployNewVennPolicy(contracts: ContractInformation[], wallet: import('ethers').Wallet, network: SupportedVennNetworks): Promise { + async deployNewVennPolicy( + contracts: ContractInformation[], + wallet: Wallet, + network: SupportedVennNetworks, + ): Promise { this.logger.step('Deploying new Venn policy'); // First, we prepare all the addresses we need @@ -67,11 +80,7 @@ export class EnableVennService { const provider = this.ethers.getDefaultProvider(networkConfigs.provider); const signer = wallet.connect(provider); - // Get an instance of the policy deployer contract - // We only use this one function, so the ABI is hardcoded for now - // - const policyDeployerMinimalABI = ['function deployPolicies(address, address[], bytes[]) external returns (address[])']; - const policyDeployer = new this.ethers.Contract(POLICY_DEPLOYER_ADDRESS, policyDeployerMinimalABI, signer); + const policyDeployer = PolicyDeployer__factory.connect(POLICY_DEPLOYER_ADDRESS, signer); // Prepare the call data for the policy deployer // @@ -84,16 +93,10 @@ export class EnableVennService { wallet.address, // policyAdmin [APPROVED_CALLS_SIGNER_ADDRESS], // signers contracts.map(c => c.address), // consumers - contracts.map(() => true) // consumerStatuses - ] + contracts.map(() => true), // consumerStatuses + ], ); - // The easiest way to get the resulting policy address (which we need for later steps) - // is to make a static call which returns an array of addresses from the deployer - // - const [policyAddress] = await policyDeployer.deployPolicies.staticCall(FIREWALL_ADDRESS, [APPROVED_CALLS_FACTORY_ADDRESS], [callData]); - this.logger.log(` -> Policy address: ${colors.cyan(policyAddress)}`); - // Finally, we can actually deploy the policy // const tx = await policyDeployer.deployPolicies(FIREWALL_ADDRESS, [APPROVED_CALLS_FACTORY_ADDRESS], [callData]); @@ -105,6 +108,15 @@ export class EnableVennService { spinner.stop(); this.logger.log(` -> Mined at block: ${receipt.blockNumber} \n`); + // Get the policy address from the event log + // + const policyAddress: string = ( + receipt?.logs.find( + log => log.topics[0] === policyDeployer.getEvent('PolicyCreated').getFragment().topicHash, + ) as EventLog + )?.args?.[1]; + this.logger.log(` -> Policy address: ${colors.cyan(policyAddress)}`); + // Store the policy address on the networks configs // networkConfigs.policyAddress = policyAddress; @@ -115,7 +127,7 @@ export class EnableVennService { return policyAddress; } - async setFirewallOnConsumers(contracts: ContractInformation[], wallet: import('ethers').Wallet, network: SupportedVennNetworks) { + async setFirewallOnConsumers(contracts: ContractInformation[], wallet: Wallet, network: SupportedVennNetworks) { this.logger.step('Setting Firewall for all contracts'); // First, we prepare all the addresses we need @@ -129,20 +141,18 @@ export class EnableVennService { const provider = this.ethers.getDefaultProvider(networkConfigs.provider); const signer = wallet.connect(provider); - // We only use this one function, so the ABI is hardcoded for now - // - const firewallConsumerMinimalABI = ['function setFirewall(address)']; - // We don't want to mess with the nonces, so we do this one by one // for (const contract of contracts) { if (contract.hasFirewall) { - this.logger.log(` -> Firewall already set for contract ${colors.cyan(contract.name)} ${colors.grey('(skipping)')} \n`); + this.logger.log( + ` -> Firewall already set for contract ${colors.cyan(contract.name)} ${colors.grey('(skipping)')} \n`, + ); continue; } else { this.logger.log(` -> Setting Firewall for contract ${colors.cyan(contract.name)}`); - const firewallConsumer = new this.ethers.Contract(contract.address, firewallConsumerMinimalABI, signer); + const firewallConsumer = VennFirewallConsumerBase__factory.connect(contract.address, signer); const tx = await firewallConsumer.setFirewall(FIREWALL_ADDRESS); this.logger.log(` -> Transaction hash: ${tx.hash}`); @@ -159,7 +169,11 @@ export class EnableVennService { this.logger.success(` -> Firewall successfully set for all contracts!`); } - async setAttestationCenterProxyOnConsumers(contracts: ContractInformation[], wallet: import('ethers').Wallet, network: SupportedVennNetworks) { + async setAttestationCenterProxyOnConsumers( + contracts: ContractInformation[], + wallet: Wallet, + network: SupportedVennNetworks, + ) { this.logger.step('Configuring firewall for all contracts'); // First, we prepare all the addresses we need @@ -173,21 +187,18 @@ export class EnableVennService { const provider = this.ethers.getDefaultProvider(networkConfigs.provider); const signer = wallet.connect(provider); - // We only use this one function, so the ABI is hardcoded for now - // ACP: Attestation Center Proxy - // - const ACPConsumerMinimalABI = ['function setAttestationCenterProxy(address)']; - // We don't want to mess with the nonces, so we do this one by one // for (const contract of contracts) { if (contract.hasAttestationCenterProxy) { - this.logger.log(` -> Firewall already configured for contract ${colors.cyan(contract.name)} ${colors.grey('(skipping)')} \n`); + this.logger.log( + ` -> Firewall already configured for contract ${colors.cyan(contract.name)} ${colors.grey('(skipping)')} \n`, + ); continue; } else { this.logger.log(` -> Setting firewall for contract ${colors.cyan(contract.name)}`); - const firewallConsumer = new this.ethers.Contract(contract.address, ACPConsumerMinimalABI, signer); + const firewallConsumer = VennFirewallConsumerBase__factory.connect(contract.address, signer); const tx = await firewallConsumer.setAttestationCenterProxy(SAFE_CALL_TARGET_ADDRESS); this.logger.log(` -> Transaction hash: ${tx.hash}`); @@ -204,7 +215,12 @@ export class EnableVennService { this.logger.success(` -> Firewall successfully configured for all contracts!`); } - async subscribeConsumersToNewPolicy(contracts: ContractInformation[], policyAddress: string, wallet: import('ethers').Wallet, network: SupportedVennNetworks) { + async subscribeConsumersToNewPolicy( + contracts: ContractInformation[], + policyAddress: string, + wallet: Wallet, + network: SupportedVennNetworks, + ) { this.logger.step('Registering new policy'); // First, we prepare all the addresses we need @@ -218,11 +234,8 @@ export class EnableVennService { const provider = this.ethers.getDefaultProvider(networkConfigs.provider); const signer = wallet.connect(provider); - // We only use this one function, so the ABI is hardcoded for now - // - const firewallMinimalABI = ['function addGlobalPolicyForConsumers(address[], address)']; const consumerAddresses = contracts.map(c => c.address); - const firewall = new this.ethers.Contract(FIREWALL_ADDRESS, firewallMinimalABI, signer); + const firewall = Firewall__factory.connect(FIREWALL_ADDRESS, signer); // Send the transaction // @@ -241,6 +254,77 @@ export class EnableVennService { this.logger.success(` -> Firewall successfully configured for all contracts!`); } + async registerContractsInProtocolRegistry(policyAddress: string, wallet: Wallet, network: SupportedVennNetworks) { + this.logger.step('Registering protocol in the registry'); + + // First, we prepare all the addresses we need + // + const networkConfigs = this.config.get('networks')[network]; + const PROTOCOL_REGISTRY_ADDRESS = networkConfigs.protocolRegistry; + const PROTOCOL_METADATA = + this.config.get('protocolMetadata') || `https://venn-protocol.com/protocols/${policyAddress}`; + this.logger.debug(` -> Protocol registry address: ${PROTOCOL_REGISTRY_ADDRESS}`); + this.logger.debug(` -> Protocol metadata: "${PROTOCOL_METADATA}"`); + + // We need a provider and a signer + // + const provider = this.ethers.getDefaultProvider(networkConfigs.provider); + const signer = wallet.connect(provider); + + const protocolRegistry = ProtocolRegistry__factory.connect(PROTOCOL_REGISTRY_ADDRESS, signer); + + // Send the transaction + // + const tx = await protocolRegistry.registerProtocol(policyAddress, PROTOCOL_METADATA); + this.logger.log(` -> Transaction hash: ${tx.hash}`); + + // Wait for the transaction to be mined + // + const spinner = this.logger.spinner(' -> Waiting for transaction to be mined'); + const receipt = await tx.wait(); + spinner.stop(); + this.logger.log(` -> Mined at block: ${receipt.blockNumber} \n`); + + // Extra logging because, why not? + // + this.logger.success(` -> Protocol successfully registered in protocol registry!`); + } + + async subscribeToRootSubnet(policyAddress: string, wallet: Wallet, network: SupportedVennNetworks) { + this.logger.step('Subscribing to root subnet'); + + // First, we prepare all the addresses we need + // + const networkConfigs = this.config.get('networks')[network]; + const PROTOCOL_REGISTRY_ADDRESS = networkConfigs.protocolRegistry; + const ROOT_SUBNET = networkConfigs.rootSubnet; + this.logger.debug(` -> Protocol registry address: ${PROTOCOL_REGISTRY_ADDRESS}`); + this.logger.debug(` -> Root subnet: ${ROOT_SUBNET}`); + + // We need a provider and a signer + // + const provider = this.ethers.getDefaultProvider(networkConfigs.provider); + const signer = wallet.connect(provider); + + const protocolRegistry = ProtocolRegistry__factory.connect(PROTOCOL_REGISTRY_ADDRESS, signer); + + // Send the transaction + // + const tx = await protocolRegistry.subscribeSubnet(policyAddress, ROOT_SUBNET, []); + this.logger.log(` -> Transaction hash: ${tx.hash}`); + + // Wait for the transaction to be mined + // + const spinner = this.logger.spinner(' -> Waiting for transaction to be mined'); + const receipt = await tx.wait(); + spinner.stop(); + this.logger.log(` -> Mined at block: ${receipt.blockNumber} \n`); + + // Extra logging because, why not? + // + this.logger.success(` -> Subscribed to root subnet!`); + } + async validateNetworkConfigs(network: string) { this.logger.log(` -> Network: ${colors.cyan(network)}`); @@ -271,31 +355,62 @@ export class EnableVennService { networkConfig.firewall = networkConfig.firewall || VENN_ADDRESSES[network.toUpperCase()].FIREWALL; const firewallAddressIsInvalid = !this.ethers.isAddress(networkConfig.firewall); if (firewallAddressIsInvalid) { - throw new Error(`Invalid address for contract ${colors.red('Firewall Address')}: ${colors.red(networkConfig.firewall)}`); + throw new Error( + `Invalid address for contract ${colors.red('Firewall Address')}: ${colors.red(networkConfig.firewall)}`, + ); } - networkConfig.approvedCallsSigner = networkConfig.approvedCallsSigner || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_SIGNER; + networkConfig.approvedCallsSigner = + networkConfig.approvedCallsSigner || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_SIGNER; const approvedCallsSignerIsAddressInvalid = !this.ethers.isAddress(networkConfig.approvedCallsSigner); if (approvedCallsSignerIsAddressInvalid) { - throw new Error(`Invalid address for ${colors.red('Approved Calls Signer')}: ${colors.red(networkConfig.approvedCallsSigner)}`); + throw new Error( + `Invalid address for ${colors.red('Approved Calls Signer')}: ${colors.red(networkConfig.approvedCallsSigner)}`, + ); } - networkConfig.policyDeployer = networkConfig.policyDeployer || VENN_ADDRESSES[network.toUpperCase()]?.POLICY_DEPLOYER; + networkConfig.policyDeployer = + networkConfig.policyDeployer || VENN_ADDRESSES[network.toUpperCase()]?.POLICY_DEPLOYER; const policyDeployerAddressIsInvalid = !this.ethers.isAddress(networkConfig.policyDeployer); if (policyDeployerAddressIsInvalid) { - throw new Error(`Invalid address for contract ${colors.red('Policy Deployer')}: ${colors.red(networkConfig.policyDeployer)}`); + throw new Error( + `Invalid address for contract ${colors.red('Policy Deployer')}: ${colors.red(networkConfig.policyDeployer)}`, + ); } - networkConfig.approvedCallsFactory = networkConfig.approvedCallsFactory || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_FACTORY; + networkConfig.approvedCallsFactory = + networkConfig.approvedCallsFactory || VENN_ADDRESSES[network.toUpperCase()]?.APPROVED_CALLS_FACTORY; const approvedCallsFactoryIsInvalid = !this.ethers.isAddress(networkConfig.approvedCallsFactory); if (approvedCallsFactoryIsInvalid) { - throw new Error(`Invalid address for contract ${colors.red('Approved Calls Factory')}: ${colors.red(networkConfig.approvedCallsFactory)}`); + throw new Error( + `Invalid address for contract ${colors.red('Approved Calls Factory')}: ${colors.red(networkConfig.approvedCallsFactory)}`, + ); } - networkConfig.safeCallTarget = networkConfig.safeCallTarget || VENN_ADDRESSES[network.toUpperCase()]?.SAFE_CALL_TARGET; - const safeCallTargetAddressIsInvalid = networkConfig.safeCallTarget && !this.ethers.isAddress(networkConfig.safeCallTarget); + networkConfig.safeCallTarget = + networkConfig.safeCallTarget || VENN_ADDRESSES[network.toUpperCase()]?.SAFE_CALL_TARGET; + const safeCallTargetAddressIsInvalid = + networkConfig.safeCallTarget && !this.ethers.isAddress(networkConfig.safeCallTarget); if (safeCallTargetAddressIsInvalid) { - throw new Error(`Invalid address for ${colors.red('Safe Call Target')}: ${colors.red(networkConfig.safeCallTarget)}`); + throw new Error( + `Invalid address for ${colors.red('Safe Call Target')}: ${colors.red(networkConfig.safeCallTarget)}`, + ); + } + + networkConfig.protocolRegistry = + networkConfig.protocolRegistry || VENN_ADDRESSES[network.toUpperCase()]?.PROTOCOL_REGISTRY; + const protocolRegistryAddressIsInvalid = + networkConfig.protocolRegistry && !this.ethers.isAddress(networkConfig.protocolRegistry); + if (protocolRegistryAddressIsInvalid) { + throw new Error( + `Invalid address for ${colors.red('Protocol Registry')}: ${colors.red(networkConfig.protocolRegistry)}`, + ); + } + + networkConfig.rootSubnet = networkConfig.rootSubnet || VENN_ADDRESSES[network.toUpperCase()]?.ROOT_SUBNET; + const rootSubnetAddressIsInvalid = networkConfig.rootSubnet && typeof networkConfig.rootSubnet !== 'number'; + if (rootSubnetAddressIsInvalid) { + throw new Error(`Invalid id for ${colors.red('Root Subnet')}: ${colors.red(networkConfig.rootSubnet)}`); } // Validate that we have an RPC provider for the selected network @@ -304,8 +419,10 @@ export class EnableVennService { // If we can get the latest block, we can assume good connection to the network const provider = new this.ethers.JsonRpcProvider(networkConfig.provider); await provider.getBlockNumber(); - } catch (error) { - throw new Error(`Could not connect to network ${colors.cyan(network)} using provider ${colors.cyan(networkConfig.provider)}`); + } catch (_error) { + throw new Error( + `Could not connect to network ${colors.cyan(network)} using provider ${colors.cyan(networkConfig.provider)}`, + ); } this.logger.debug(` -> Network configuration are ok`); @@ -320,7 +437,7 @@ export class EnableVennService { try { const wallet = new this.ethers.Wallet(privateKey); this.logger.log(` -> Account: ${colors.cyan(wallet.address)}`); - } catch (error) { + } catch (_error) { throw new Error(`Invalid private key`); } } @@ -340,8 +457,8 @@ export class EnableVennService { name, address, hasFirewall: await this.isFirewallSetOnConsumer(network, address), - hasAttestationCenterProxy: await this.isSafeCallTargetSetOnConsumer(network, address) - })) + hasAttestationCenterProxy: await this.isSafeCallTargetSetOnConsumer(network, address), + })), ); this.logger.debug(` -> Contracts information: ${JSON.stringify(contractsInfo, null, 2)}`); diff --git a/src/venn/supported-networks.enum.ts b/src/venn/supported-networks.enum.ts index 8f480c7..412e2a7 100644 --- a/src/venn/supported-networks.enum.ts +++ b/src/venn/supported-networks.enum.ts @@ -1,3 +1,3 @@ export enum SupportedVennNetworks { - HOLESKY = 'holesky' + HOLESKY = 'holesky', } diff --git a/src/venn/venn-addresses.constants.ts b/src/venn/venn-addresses.constants.ts index 2068fcb..f241f50 100644 --- a/src/venn/venn-addresses.constants.ts +++ b/src/venn/venn-addresses.constants.ts @@ -1,9 +1,11 @@ export const VENN_ADDRESSES = { HOLESKY: { - FIREWALL: '0x75e99446852811A2CB731e9fF8cCdeF12F3BD40F', - APPROVED_CALLS_SIGNER: '0xEA700330ACFF031C04ef019F6E0f5ad01365B732', // Venn AVS Logic - POLICY_DEPLOYER: '0x074CF1A32dD77acCfAFF925f96b73Cef8f766437', - APPROVED_CALLS_FACTORY: '0x561D63Ba7D58bFc9675086AFD8863A28a65850A8', - SAFE_CALL_TARGET: '0x8E90827A3C3860dA63CE6bFaf2ed9c44CCa76dEC' // Attestation Center Proxy - } + FIREWALL: '0x17286A6228047255F60014a08c8c1D4be1F26395', + APPROVED_CALLS_SIGNER: '0x204942Ce4E8412e4Ed4DffE4A8Bfe58401BB1060', // Venn AVS Logic + POLICY_DEPLOYER: '0x220429Ab1878Bfeec2035984705468335A4F206c', + APPROVED_CALLS_FACTORY: '0x5AE0819182e58658DF0F9B015Cc51fD927095F52', + SAFE_CALL_TARGET: '0xAd0068cc32410Bc170c3Be5C5265Bc88C670A2bd', // Attestation Center Proxy + PROTOCOL_REGISTRY: '0xCB1a216DDE378c02310D426DE2cD2aC681bB85cb', + ROOT_SUBNET: 1, + }, }; diff --git a/src/venn/venn.module.ts b/src/venn/venn.module.ts index e860e9b..b727a61 100644 --- a/src/venn/venn.module.ts +++ b/src/venn/venn.module.ts @@ -1,10 +1,10 @@ import { Module } from '@nestjs/common'; import { LoggerModule } from '@/lib/logging/logger.module'; -import { EnableVennModule } from '@/venn/enable/enable.module'; import { DisableVennModule } from '@/venn/disable/disable.module'; +import { EnableVennModule } from '@/venn/enable/enable.module'; @Module({ - imports: [EnableVennModule, DisableVennModule, LoggerModule] + imports: [EnableVennModule, DisableVennModule, LoggerModule], }) export class VennModule {} diff --git a/tests/app/app.command.descriptor.spec.ts b/tests/app/app.command.descriptor.spec.ts index 4d338ea..eb6424d 100644 --- a/tests/app/app.command.descriptor.spec.ts +++ b/tests/app/app.command.descriptor.spec.ts @@ -1,4 +1,6 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ import * as colors from 'colors'; + import { DESCRIPTION, FULL_NAME, NAME } from '@/app/app.command.descriptor'; describe('Command Descriptor: venn', () => { @@ -7,7 +9,6 @@ describe('Command Descriptor: venn', () => { }); it('is desribed with our company name and logo', () => { - // eslint-disable-next-line @typescript-eslint/no-var-requires const pkg = require('../../package.json'); expect(DESCRIPTION).toBe(`Venn CLI ${colors.cyan('v' + pkg.version)}`); }); diff --git a/tests/app/app.command.spec.ts b/tests/app/app.command.spec.ts index 88ff209..8509ef7 100644 --- a/tests/app/app.command.spec.ts +++ b/tests/app/app.command.spec.ts @@ -1,8 +1,8 @@ import { TestingModule } from '@nestjs/testing'; import { CommandTestFactory } from 'nest-commander-testing'; -import { AppModule } from '@/app/app.module'; import { DESCRIPTION, NAME } from '@/app/app.command.descriptor'; +import { AppModule } from '@/app/app.module'; describe('Command: venn', () => { let commandInstance: TestingModule; @@ -12,7 +12,7 @@ describe('Command: venn', () => { beforeEach(async () => { commandInstance = await CommandTestFactory.createTestingCommand({ - imports: [AppModule] + imports: [AppModule], }).compile(); exitSpy = jest.spyOn(process, 'exit').mockImplementation(); diff --git a/tests/app/app.command.version.option.spec.ts b/tests/app/app.command.version.option.spec.ts index ea1790a..ca5ed1d 100644 --- a/tests/app/app.command.version.option.spec.ts +++ b/tests/app/app.command.version.option.spec.ts @@ -1,5 +1,6 @@ -import * as colors from 'colors'; +/* eslint-disable @typescript-eslint/no-require-imports */ import { TestingModule } from '@nestjs/testing'; +import * as colors from 'colors'; import { CommandTestFactory } from 'nest-commander-testing'; import { AppModule } from '@/app/app.module'; @@ -14,7 +15,7 @@ describe('App Command Option: venn --version', () => { beforeEach(async () => { commandInstance = await CommandTestFactory.createTestingCommand({ - imports: [AppModule] + imports: [AppModule], }).compile(); exitSpy = jest.spyOn(process, 'exit').mockImplementation(); diff --git a/tests/commands/standalone-command.decorator.spec.ts b/tests/commands/standalone-command.decorator.spec.ts index 669b85e..cc44f14 100644 --- a/tests/commands/standalone-command.decorator.spec.ts +++ b/tests/commands/standalone-command.decorator.spec.ts @@ -1,7 +1,7 @@ import * as colors from 'colors'; -import type { LoggerService } from '@/lib/logging/logger.service'; import { StandaloneCommand } from '@/commands/standalone-command.decorator'; +import type { LoggerService } from '@/lib/logging/logger.service'; describe('StandaloneCommand Decorator', () => { // @@ -11,11 +11,11 @@ describe('StandaloneCommand Decorator', () => { constructor( private readonly logger: LoggerService, - private readonly command + private readonly command, ) {} @StandaloneCommand('test') - async run(passedParams: string[]) { + async run(_passedParams: string[]) { this.wasRun = true; } } @@ -28,11 +28,11 @@ describe('StandaloneCommand Decorator', () => { beforeEach(() => { mockLogger = { - error: jest.fn() + error: jest.fn(), } as unknown as LoggerService; mockCommand = { - error: jest.fn() + error: jest.fn(), }; command = new TestCommand(mockLogger, mockCommand); diff --git a/tests/files/files.service.spec.ts b/tests/files/files.service.spec.ts index 9f17f4a..3be63fe 100644 --- a/tests/files/files.service.spec.ts +++ b/tests/files/files.service.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ import { FilesService } from '@/files/files.service'; // @@ -7,13 +8,13 @@ import { FilesService } from '@/files/files.service'; jest.mock('fs/promises', () => ({ access: jest.fn(), constants: { - F_OK: 0 - } + F_OK: 0, + }, })); jest.mock('path', () => ({ normalize: jest.fn(), - resolve: jest.fn() + resolve: jest.fn(), })); describe('Files Service', () => { diff --git a/tests/firewall/firewall.command.descriptor.spec.ts b/tests/firewall/firewall.command.descriptor.spec.ts index a212b5d..626324d 100644 --- a/tests/firewall/firewall.command.descriptor.spec.ts +++ b/tests/firewall/firewall.command.descriptor.spec.ts @@ -5,7 +5,7 @@ describe('Command Descriptor: fw', () => { expect(NAME).toBe('fw'); }); - it('is desribed with our company name and logo', () => { + it('is described with our company name and logo', () => { expect(DESCRIPTION).toBe('Firewall utilities for developers'); }); diff --git a/tests/firewall/firewall.command.spec.ts b/tests/firewall/firewall.command.spec.ts index 8c5759e..c783295 100644 --- a/tests/firewall/firewall.command.spec.ts +++ b/tests/firewall/firewall.command.spec.ts @@ -13,7 +13,7 @@ describe('Sub-Command: fw', () => { beforeEach(async () => { commandInstance = await CommandTestFactory.createTestingCommand({ - imports: [AppModule] + imports: [AppModule], }).compile(); exitSpy = jest.spyOn(process, 'exit').mockImplementation(); diff --git a/tests/firewall/integration/integration.command.file.option.spec.ts b/tests/firewall/integration/integration.command.file.option.spec.ts index c723edf..f686fa9 100644 --- a/tests/firewall/integration/integration.command.file.option.spec.ts +++ b/tests/firewall/integration/integration.command.file.option.spec.ts @@ -13,11 +13,11 @@ describe('Sub-Command Option: integ --file', () => { beforeEach(async () => { FrameworkDependenciesService = { - assertDependencies: jest.fn() + assertDependencies: jest.fn(), }; commandInstance = await CommandTestFactory.createTestingCommand({ - imports: [AppModule] + imports: [AppModule], }) .overrideProvider(FrameworkService) .useValue(FrameworkDependenciesService) diff --git a/tests/firewall/integration/integration.command.spec.ts b/tests/firewall/integration/integration.command.spec.ts index 5187d4e..6fe427e 100644 --- a/tests/firewall/integration/integration.command.spec.ts +++ b/tests/firewall/integration/integration.command.spec.ts @@ -12,7 +12,7 @@ describe('Sub-Command: integ', () => { beforeEach(async () => { commandInstance = await CommandTestFactory.createTestingCommand({ - imports: [AppModule] + imports: [AppModule], }).compile(); exitSpy = jest.spyOn(process, 'exit').mockImplementation(); diff --git a/tests/framework/dependencies-strategies.enum.spec.ts b/tests/framework/dependencies-strategies.enum.spec.ts index 53301ed..acb89f6 100644 --- a/tests/framework/dependencies-strategies.enum.spec.ts +++ b/tests/framework/dependencies-strategies.enum.spec.ts @@ -5,7 +5,7 @@ describe('Dependencies Strategy Enum', () => { NPM: 'npm', Yarn: 'yarn', Forge: 'forge', - Other: 'other' + Other: 'other', }; it('has a type for Forge', () => { diff --git a/tests/framework/dependencies.service.spec.ts b/tests/framework/dependencies.service.spec.ts index b20a5b1..85ff25d 100644 --- a/tests/framework/dependencies.service.spec.ts +++ b/tests/framework/dependencies.service.spec.ts @@ -1,19 +1,21 @@ +/* eslint-disable no-empty */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { TestBed } from '@automock/jest'; import * as colors from 'colors'; +import { InquirerService } from 'nest-commander'; import { Ora } from 'ora'; -import { TestBed } from '@automock/jest'; -import { IStrategy } from '@/framework/strategy.interface'; -import { Dependency } from '@/framework/dependency.type'; -import { NPMStrategy } from '@/framework/npm.strategy'; -import { LoggerService } from '@/lib/logging/logger.service'; -import { YarnStrategy } from '@/framework/yarn.strategy'; import { FilesService } from '@/files/files.service'; -import { ForgeStrategy } from '@/framework/forge.strategy'; -import { InquirerService } from 'nest-commander'; import { DependenciesService } from '@/framework/dependencies.services'; import { DependenciesStrategy } from '@/framework/dependencies-strategies.enum'; -import { SELECT_STRATEGY_QUESTION_SET_NAME } from '@/framework/select-dependencies-strategy.questions.descriptor'; +import { Dependency } from '@/framework/dependency.type'; +import { ForgeStrategy } from '@/framework/forge.strategy'; import { INSTALL_DEPENDENCIES_QUESTION_SET_NAME } from '@/framework/install-dependencies.questions.descriptor'; +import { NPMStrategy } from '@/framework/npm.strategy'; +import { SELECT_STRATEGY_QUESTION_SET_NAME } from '@/framework/select-dependencies-strategy.questions.descriptor'; +import { IStrategy } from '@/framework/strategy.interface'; +import { YarnStrategy } from '@/framework/yarn.strategy'; +import { LoggerService } from '@/lib/logging/logger.service'; describe('Dependencies Service', () => { let dependeciesService: DependenciesService; @@ -43,18 +45,18 @@ describe('Dependencies Service', () => { mockDependency = { name: 'mock-dependency', - installName: '@mock-company/mock-dependency' + installName: '@mock-company/mock-dependency', }; mockStrategy = { dependencies: [mockDependency], isDependencyInstalled: jest.fn(), - installDependency: jest.fn() + installDependency: jest.fn(), }; mockSpinner = { warn: jest.fn(), - succeed: jest.fn() + succeed: jest.fn(), }; dependeciesService.strategy = mockStrategy; @@ -109,7 +111,7 @@ describe('Dependencies Service', () => { dependeciesService.promptToInstallDependencies = jest.fn().mockResolvedValue(false); await expect(dependeciesService.assertDependencies()).rejects.toThrow( - 'Cannot continue without dependencies' + 'Cannot continue without dependencies', ); }); }); @@ -127,7 +129,7 @@ describe('Dependencies Service', () => { dependeciesService.detectDependenciesStrategy = jest.fn().mockResolvedValue(DependenciesStrategy.Other); await expect(dependeciesService.autoSetDependenciesStrategy()).rejects.toThrow( - 'Cannot install dependencies, unknown dependencies tool (quitting)' + 'Cannot install dependencies, unknown dependencies tool (quitting)', ); }); @@ -137,7 +139,7 @@ describe('Dependencies Service', () => { await dependeciesService.autoSetDependenciesStrategy(); expect(loggerMock.log).toHaveBeenCalledWith( - `Using ${colors.cyan(DependenciesStrategy.NPM)} for dependencies management` + `Using ${colors.cyan(DependenciesStrategy.NPM)} for dependencies management`, ); }); @@ -230,7 +232,7 @@ describe('Dependencies Service', () => { await dependeciesService.promptForStrategy(); expect(loggerMock.log).toHaveBeenCalledWith( - 'Could not auto-detect dependencies management tool, please select one:' + 'Could not auto-detect dependencies management tool, please select one:', ); }); @@ -268,7 +270,7 @@ describe('Dependencies Service', () => { await dependeciesService.getMissingDependencies(); expect(loggerMock.spinner).toHaveBeenCalledWith( - `Checking if "${colors.cyan(mockDependency.name)}" is installed` + `Checking if "${colors.cyan(mockDependency.name)}" is installed`, ); }); diff --git a/tests/framework/forge-dependencies.constants.spec.ts b/tests/framework/forge-dependencies.constants.spec.ts index e231e15..023bc4e 100644 --- a/tests/framework/forge-dependencies.constants.spec.ts +++ b/tests/framework/forge-dependencies.constants.spec.ts @@ -18,7 +18,9 @@ describe('Forge Dependencies', () => { }); describe('OpenZeppelin/openzeppelin-contracts', () => { - const openZeppelinContracts = FORGE_DEPENDENCIES.find(dep => dep.name === 'OpenZeppelin/openzeppelin-contracts'); + const openZeppelinContracts = FORGE_DEPENDENCIES.find( + dep => dep.name === 'OpenZeppelin/openzeppelin-contracts', + ); it('is defined as a dependency', () => { expect(openZeppelinContracts).toBeDefined(); diff --git a/tests/framework/forge.strategy.spec.ts b/tests/framework/forge.strategy.spec.ts index aabc5b4..472849b 100644 --- a/tests/framework/forge.strategy.spec.ts +++ b/tests/framework/forge.strategy.spec.ts @@ -1,21 +1,22 @@ -import * as colors from 'colors'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-empty */ +import { TestBed } from '@automock/jest'; import { exec } from 'child_process'; - +import * as colors from 'colors'; import { Ora } from 'ora'; -import { TestBed } from '@automock/jest'; -import { Dependency } from '@/framework/dependency.type'; import { FilesService } from '@/files/files.service'; +import { DependenciesError } from '@/framework/dependencies.errors'; +import { Dependency } from '@/framework/dependency.type'; import { ForgeStrategy } from '@/framework/forge.strategy'; import { LoggerService } from '@/lib/logging/logger.service'; -import { DependenciesError } from '@/framework/dependencies.errors'; // // Due to how ES6 modules work, we need to mock the child_process module using jest.mock // before any of our tests run. This is because the module is imported at the top of the // file, and the mock needs to be in place before the module is imported. jest.mock('child_process', () => ({ - exec: jest.fn() + exec: jest.fn(), })); describe('Forge Strategy', () => { @@ -40,13 +41,13 @@ describe('Forge Strategy', () => { mockDependency = { name: 'mock-dependency', installName: '@mock-company/mock-dependency', - remappings: ['mock-remappings'] + remappings: ['mock-remappings'], }; mockSpinner = { warn: jest.fn(), fail: jest.fn(), - succeed: jest.fn() + succeed: jest.fn(), }; loggerMock.spinner = jest.fn().mockReturnValue(mockSpinner); @@ -66,7 +67,6 @@ describe('Forge Strategy', () => { it('returns true if the dependency is found in .gitmodules', async () => { filesServiceMock.doesFileNotExist.mockResolvedValue(false); filesServiceMock.getFile.mockResolvedValueOnce(mockDependency.remappings[0]); - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback(null, { stdout: 'some output indicating success', stderr: '' }); }); @@ -78,7 +78,6 @@ describe('Forge Strategy', () => { it('returns false if the dependency is not found in .gitmodules', async () => { filesServiceMock.doesFileNotExist.mockResolvedValue(false); filesServiceMock.getFile.mockResolvedValueOnce(mockDependency.remappings[0]); - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 1, stdout: '', stderr: '' }, null); }); @@ -90,7 +89,6 @@ describe('Forge Strategy', () => { it('is case insensitive', async () => { filesServiceMock.doesFileNotExist.mockResolvedValue(false); filesServiceMock.getFile.mockResolvedValueOnce(mockDependency.remappings[0]); - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 1, stdout: '', stderr: '' }, null); }); @@ -105,7 +103,6 @@ describe('Forge Strategy', () => { filesServiceMock.doesFileNotExist.mockResolvedValue(false); filesServiceMock.getFile.mockResolvedValueOnce(mockDependency.remappings[0]); - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 2, stdout: '', stderr: '' }, null); }); @@ -117,7 +114,9 @@ describe('Forge Strategy', () => { } expect(thrownError).toBeInstanceOf(DependenciesError); - expect(thrownError.message).toBe(`Could not search for dependency "${mockDependency.name}" in .gitmodules file`); + expect(thrownError.message).toBe( + `Could not search for dependency "${mockDependency.name}" in .gitmodules file`, + ); }); }); @@ -178,7 +177,6 @@ describe('Forge Strategy', () => { it('throws an error if the installation fails', async () => { let thrownError: DependenciesError; - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 1, message: 'some error message' }, null); }); @@ -190,7 +188,9 @@ describe('Forge Strategy', () => { } expect(thrownError).toBeInstanceOf(DependenciesError); - expect(thrownError.message).toBe(`Could not install dependency: ${mockDependency.name}.\nsome error message`); + expect(thrownError.message).toBe( + `Could not install dependency: ${mockDependency.name}.\nsome error message`, + ); }); }); }); diff --git a/tests/framework/framework.service.spec.ts b/tests/framework/framework.service.spec.ts index ddad7da..d4e3c1e 100644 --- a/tests/framework/framework.service.spec.ts +++ b/tests/framework/framework.service.spec.ts @@ -1,13 +1,13 @@ +import { TestBed } from '@automock/jest'; import * as colors from 'colors'; import { Ora } from 'ora'; -import { TestBed } from '@automock/jest'; -import { LoggerService } from '@/lib/logging/logger.service'; +import { DependenciesService } from '@/framework/dependencies.services'; import { FoundryService } from '@/framework/foundry.service'; +import { FrameworkService } from '@/framework/framework.service'; import { HardhatService } from '@/framework/hardhat.service'; import { FrameworkTypes } from '@/framework/supported-frameworks.enum'; -import { FrameworkService } from '@/framework/framework.service'; -import { DependenciesService } from '@/framework/dependencies.services'; +import { LoggerService } from '@/lib/logging/logger.service'; describe('Framework Service', () => { let frameworkService: FrameworkService; @@ -32,7 +32,7 @@ describe('Framework Service', () => { mockSpinner = { warn: jest.fn(), info: jest.fn(), - succeed: jest.fn() + succeed: jest.fn(), }; loggerMock.spinner = jest.fn().mockReturnValue(mockSpinner); @@ -61,7 +61,7 @@ describe('Framework Service', () => { await frameworkService.assertDependencies(); expect(mockSpinner.info).toHaveBeenCalledWith( - `Detected ${colors.cyan('some framework')} development framework` + `Detected ${colors.cyan('some framework')} development framework`, ); }); @@ -71,7 +71,7 @@ describe('Framework Service', () => { await frameworkService.assertDependencies(); expect(mockSpinner.warn).toHaveBeenCalledWith( - 'Unknown development framework (expected Foundry or Hardhat)' + 'Unknown development framework (expected Foundry or Hardhat)', ); }); }); diff --git a/tests/framework/install-dependencies.questions.descriptor.spec.ts b/tests/framework/install-dependencies.questions.descriptor.spec.ts index c3abe46..ffd5c65 100644 --- a/tests/framework/install-dependencies.questions.descriptor.spec.ts +++ b/tests/framework/install-dependencies.questions.descriptor.spec.ts @@ -2,7 +2,7 @@ import { INSTALL_DEPENDENCIES_QUESTION_MESSAGE, INSTALL_DEPENDENCIES_QUESTION_NAME, INSTALL_DEPENDENCIES_QUESTION_SET_NAME, - INSTALL_DEPENDENCIES_QUESTION_TYPE + INSTALL_DEPENDENCIES_QUESTION_TYPE, } from '@/framework/install-dependencies.questions.descriptor'; describe('Install Dependencies Questions Descriptor', () => { diff --git a/tests/framework/npm.strategy.spec.ts b/tests/framework/npm.strategy.spec.ts index eb9c082..4c4467e 100644 --- a/tests/framework/npm.strategy.spec.ts +++ b/tests/framework/npm.strategy.spec.ts @@ -1,20 +1,21 @@ -import * as colors from 'colors'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-empty */ +import { TestBed } from '@automock/jest'; import { exec } from 'child_process'; - +import * as colors from 'colors'; import { Ora } from 'ora'; -import { TestBed } from '@automock/jest'; +import { DependenciesError } from '@/framework/dependencies.errors'; import { Dependency } from '@/framework/dependency.type'; import { NPMStrategy } from '@/framework/npm.strategy'; import { LoggerService } from '@/lib/logging/logger.service'; -import { DependenciesError } from '@/framework/dependencies.errors'; // // Due to how ES6 modules work, we need to mock the child_process module using jest.mock // before any of our tests run. This is because the module is imported at the top of the // file, and the mock needs to be in place before the module is imported. jest.mock('child_process', () => ({ - exec: jest.fn() + exec: jest.fn(), })); describe('NPM Strategy', () => { @@ -35,13 +36,13 @@ describe('NPM Strategy', () => { mockDependency = { name: 'mock-dependency', - installName: '@mock-company/mock-dependency' + installName: '@mock-company/mock-dependency', }; mockSpinner = { warn: jest.fn(), fail: jest.fn(), - succeed: jest.fn() + succeed: jest.fn(), }; loggerMock.spinner = jest.fn().mockReturnValue(mockSpinner); @@ -81,7 +82,6 @@ describe('NPM Strategy', () => { it('throws an error if an unexpected error occurs', async () => { let thrownError: DependenciesError; - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 2, stdout: '', stderr: '' }, null); }); @@ -154,7 +154,6 @@ describe('NPM Strategy', () => { it('throws an error if the installation fails', async () => { let thrownError: DependenciesError; - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 1, message: 'some error message' }, null); }); @@ -167,7 +166,7 @@ describe('NPM Strategy', () => { expect(thrownError).toBeInstanceOf(DependenciesError); expect(thrownError.message).toBe( - `Could not install dependency: ${mockDependency.name}.\nsome error message` + `Could not install dependency: ${mockDependency.name}.\nsome error message`, ); }); }); diff --git a/tests/framework/select-dependencies-strategy.questions.descriptor.spec.ts b/tests/framework/select-dependencies-strategy.questions.descriptor.spec.ts index fa6eced..96d08a9 100644 --- a/tests/framework/select-dependencies-strategy.questions.descriptor.spec.ts +++ b/tests/framework/select-dependencies-strategy.questions.descriptor.spec.ts @@ -1,11 +1,10 @@ import { DependenciesStrategy } from '@/framework/dependencies-strategies.enum'; - import { SELECT_STRATEGY_QUESTION_CHOICES, SELECT_STRATEGY_QUESTION_MESSAGE, SELECT_STRATEGY_QUESTION_NAME, SELECT_STRATEGY_QUESTION_SET_NAME, - SELECT_STRATEGY_QUESTION_TYPE + SELECT_STRATEGY_QUESTION_TYPE, } from '@/framework/select-dependencies-strategy.questions.descriptor'; describe('Install Dependencies Questions Descriptor', () => { diff --git a/tests/framework/yarn.strategy.spec.ts b/tests/framework/yarn.strategy.spec.ts index 2278c5e..b0de1a8 100644 --- a/tests/framework/yarn.strategy.spec.ts +++ b/tests/framework/yarn.strategy.spec.ts @@ -1,20 +1,21 @@ -import * as colors from 'colors'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-empty */ +import { TestBed } from '@automock/jest'; import { exec } from 'child_process'; - +import * as colors from 'colors'; import { Ora } from 'ora'; -import { TestBed } from '@automock/jest'; +import { DependenciesError } from '@/framework/dependencies.errors'; import { Dependency } from '@/framework/dependency.type'; import { YarnStrategy } from '@/framework/yarn.strategy'; import { LoggerService } from '@/lib/logging/logger.service'; -import { DependenciesError } from '@/framework/dependencies.errors'; // // Due to how ES6 modules work, we need to mock the child_process module using jest.mock // before any of our tests run. This is because the module is imported at the top of the // file, and the mock needs to be in place before the module is imported. jest.mock('child_process', () => ({ - exec: jest.fn() + exec: jest.fn(), })); describe('Yarn Strategy', () => { @@ -35,13 +36,13 @@ describe('Yarn Strategy', () => { mockDependency = { name: 'mock-dependency', - installName: '@mock-company/mock-dependency' + installName: '@mock-company/mock-dependency', }; mockSpinner = { warn: jest.fn(), fail: jest.fn(), - succeed: jest.fn() + succeed: jest.fn(), }; loggerMock.spinner = jest.fn().mockReturnValue(mockSpinner); @@ -81,7 +82,6 @@ describe('Yarn Strategy', () => { it('throws an error if an unexpected error occurs', async () => { let thrownError: DependenciesError; - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 2, stdout: '', stderr: '' }, null); }); @@ -154,7 +154,6 @@ describe('Yarn Strategy', () => { it('throws an error if the installation fails', async () => { let thrownError: DependenciesError; - (exec as unknown as jest.Mock).mockImplementation((cmd, options, callback) => { callback({ code: 1, message: 'some error message' }, null); }); @@ -167,7 +166,7 @@ describe('Yarn Strategy', () => { expect(thrownError).toBeInstanceOf(DependenciesError); expect(thrownError.message).toBe( - `Could not install dependency: ${mockDependency.name}.\nsome error message` + `Could not install dependency: ${mockDependency.name}.\nsome error message`, ); }); }); diff --git a/tsconfig.build.json b/tsconfig.build.json index 37afa2c..f1578f8 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,4 +1,7 @@ { "extends": "./tsconfig.json", - "exclude": ["node_modules", "tests", "dist", "**/*spec.ts"] + "exclude": ["node_modules", "tests", "dist", "**/*spec.ts"], + "paths": { + "@/*": ["./src/*"] + } }