diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000..e5b6d8d6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..91b6a951 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 82a080a6..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,31 +0,0 @@ -# https://turbo.build/repo/docs/ci/github-actions - -name: Build - -on: [pull_request] - -jobs: - build: - name: Build - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "yarn" - - - name: Install yarn - run: npm install -g yarn - - - name: Install dependencies - run: yarn - - - name: Build - run: yarn build diff --git a/.github/workflows/format-check.yml b/.github/workflows/format-check.yml deleted file mode 100644 index 7c83b05a..00000000 --- a/.github/workflows/format-check.yml +++ /dev/null @@ -1,31 +0,0 @@ -# https://turbo.build/repo/docs/ci/github-actions - -name: Format Check - -on: [pull_request] - -jobs: - format-check: - name: Format Check - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "yarn" - - - name: Install yarn - run: npm install -g yarn - - - name: Install dependencies - run: yarn - - - name: Check file formatting - run: yarn format:check diff --git a/.github/workflows/gh-pages-council.yml b/.github/workflows/gh-pages-council.yml index b8e23555..ee0aba89 100644 --- a/.github/workflows/gh-pages-council.yml +++ b/.github/workflows/gh-pages-council.yml @@ -8,6 +8,9 @@ on: # Runs on pushes targeting the default branch push: branches: ["main"] + paths: + - "apps/council-ui/**" + - ".github/workflows/gh-pages-council.yml" # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -23,23 +26,26 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Setup Node - uses: actions/setup-node@v3 + - name: Check out code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + uses: actions/setup-node@v4 with: - node-version: "16" + node-version: 20 cache: "yarn" + - name: Setup Pages - uses: actions/configure-pages@v2 + uses: actions/configure-pages@v4 with: # Automatically inject basePath in your Next.js configuration file and disable # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized). # # You may remove this line if you want to manage the configuration yourself. static_site_generator: next + - name: Restore cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | apps/council-ui/.next/cache @@ -48,16 +54,20 @@ jobs: # If source files changed but packages didn't, rebuild from a prior cache. restore-keys: | ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}- + - name: Install dependencies run: yarn + - name: Build with Next.js env: - NEXT_PUBLIC_MAINNET_ALCHEMY_KEY: ${{ secrets.MAINNET_ALCHEMY_KEY }} - NEXT_PUBLIC_GOERLI_ALCHEMY_KEY: ${{ secrets.GOERLI_ALCHEMY_KEY }} + NEXT_PUBLIC_MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }} + NEXT_PUBLIC_GOERLI_RPC_URL: ${{ secrets.GOERLI_RPC_URL }} NEXT_PUBLIC_COUNCIL_UI_BASE_PATH: ${{ secrets.COUNCIL_UI_BASE_PATH }} run: npx turbo run build --filter=council-ui + - name: Static HTML export of Next.js run: yarn workspace council-ui run export + - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: @@ -73,4 +83,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 1405f1a3..00000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,31 +0,0 @@ -# https://turbo.build/repo/docs/ci/github-actions - -name: Lint - -on: [pull_request] - -jobs: - lint: - name: Lint - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "yarn" - - - name: Install yarn - run: npm install -g yarn - - - name: Install dependencies - run: yarn - - - name: Lint files - run: yarn lint diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 00000000..4221fabb --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,34 @@ +# https://turbo.build/repo/docs/ci/github-actions + +name: Pull Request + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + verify: + runs-on: ubuntu-latest + strategy: + matrix: + tasks: [lint, build, typecheck, test] + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "yarn" + + - name: Install dependencies + run: yarn --frozen-lockfile + + - name: Run ${{ matrix.tasks }} + run: yarn ${{ matrix.tasks }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..868b3af3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,36 @@ +name: Release + +on: + push: + branches: + - main + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'yarn' + + - name: Install dependencies + run: yarn --frozen-lockfile + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + commit: 'chore: version packages' + title: 'chore: version packages' + publish: yarn release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index a5b73284..8c87bb8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules +dist .turbo .next -.DS_Store -.parcel-cache \ No newline at end of file +.DS_Store \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..2edeafb0 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..138d0a5c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,15 @@ +node_modules +dist +.DS_Store +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock +vite.config.*.timestamp-* diff --git a/packages/prettier-config/index.js b/.prettierrc.cjs similarity index 73% rename from packages/prettier-config/index.js rename to .prettierrc.cjs index cb15c569..a82b039f 100644 --- a/packages/prettier-config/index.js +++ b/.prettierrc.cjs @@ -1,4 +1,5 @@ module.exports = { + plugins: ["prettier-plugin-organize-imports"], tabWidth: 2, useTabs: false, trailingComma: "all", diff --git a/.vscode/settings.json b/.vscode/settings.json index 814942fc..0ae5d428 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,5 +11,17 @@ "url": "./packages/council-deploy/src/deployments/deployments.schema.json" } ], - "markdown.extension.toc.levels": "2..6" + "markdown.extension.toc.levels": "2..6", + "cSpell.words": [ + "abitype", + "calldatas", + "Delegators", + "delvtech", + "merkle", + "Timelock", + "tsup", + "typecheck", + "unvested", + "Viem" + ] } \ No newline at end of file diff --git a/README.md b/README.md index 6a4afa70..90743a0f 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ This monorepo uses [Yarn](https://classic.yarnpkg.com/) as a package manager. It | Name | Description | | ----------------------------------------------------------------------------------------------- | ------------------------------------ | -| [eslint-config](https://github.com/delvtech/council-kit/tree/main/packages/eslint-config) | Package for static type checking. | +| [@council/eslint-config](https://github.com/delvtech/council-kit/tree/main/packages/@council/eslint-config) | Package for static type checking. | | [prettier-config](https://github.com/delvtech/council-kit/tree/main/packages/prettier-config) | Package for code formatting. | -| [tsconfig](https://github.com/delvtech/council-kit/tree/main/packages/tsconfig) | Package for TypeScript configuation. | +| [@council/tsconfig](https://github.com/delvtech/council-kit/tree/main/packages/tsconfig) | Package for TypeScript configuation. | Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). diff --git a/apps/council-sdk-starter/.env.example b/apps/council-sdk-starter/.env.example index d7212656..884bbeb7 100644 --- a/apps/council-sdk-starter/.env.example +++ b/apps/council-sdk-starter/.env.example @@ -1,2 +1,2 @@ -PROVIDER_URI= -WALLET_PRIVATE_KEY= \ No newline at end of file +RPC_URL= +WALLET_PRIVATE_KEY= diff --git a/apps/council-sdk-starter/.prettierignore b/apps/council-sdk-starter/.prettierignore deleted file mode 100644 index 53c37a16..00000000 --- a/apps/council-sdk-starter/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -dist \ No newline at end of file diff --git a/apps/council-sdk-starter/.prettierrc.js b/apps/council-sdk-starter/.prettierrc.js deleted file mode 100644 index 63336b33..00000000 --- a/apps/council-sdk-starter/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), - plugins: [require("prettier-plugin-organize-imports")], -}; diff --git a/apps/council-sdk-starter/CHANGELOG.md b/apps/council-sdk-starter/CHANGELOG.md new file mode 100644 index 00000000..77ca626d --- /dev/null +++ b/apps/council-sdk-starter/CHANGELOG.md @@ -0,0 +1,20 @@ +# council-sdk-starter + +## 0.0.3 + +### Patch Changes + +- @delvtech/council-viem@0.0.3 + +## 0.0.2 + +### Patch Changes + +- @delvtech/council-viem@0.0.2 + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [abebf3c] + - @delvtech/council-viem@0.0.1 diff --git a/apps/council-sdk-starter/package.json b/apps/council-sdk-starter/package.json index d255e048..85cc223b 100644 --- a/apps/council-sdk-starter/package.json +++ b/apps/council-sdk-starter/package.json @@ -1,42 +1,28 @@ { "name": "council-sdk-starter", - "version": "0.0.1", + "version": "0.0.3", "description": "Boilerplate to get started using the council-sdk fast!", "license": "MIT", "private": true, - "main": "dist/index.js", - "types": "dist/types.d.ts", - "source": "src/index.ts", - "alias": { - "src": "./src" - }, - "files": [ - "dist" - ], + "type": "module", "scripts": { - "watch": "parcel watch", - "build": "parcel build", - "createProposal": "ts-node -r dotenv/config -r tsconfig-paths/register src/scripts/createProposal.ts", - "executeProposal": "ts-node -r dotenv/config -r tsconfig-paths/register src/scripts/executeProposal.ts", - "setLockDuration": "ts-node -r dotenv/config -r tsconfig-paths/register src/scripts/setLockDuration.ts", - "changeVaultStatus": "ts-node -r dotenv/config -r tsconfig-paths/register src/scripts/changeVaultStatus.ts", - "getGSCMembers": "ts-node -r dotenv/config -r tsconfig-paths/register src/scripts/getGSCMembers.ts", - "getProposalResults": "ts-node -r dotenv/config -r tsconfig-paths/register src/scripts/getProposalResults.ts" + "createProposal": "tesm-node -r dotenv/config src/scripts/createProposal.ts", + "executeProposal": "tesm-node -r dotenv/config src/scripts/executeProposal.ts", + "setLockDuration": "tesm-node -r dotenv/config src/scripts/setLockDuration.ts", + "changeVaultStatus": "tesm-node -r dotenv/config src/scripts/changeVaultStatus.ts", + "getGSCMembers": "tesm-node -r dotenv/config ./src/scripts/getGSCMembers.ts", + "getProposalResults": "tesm-node -r dotenv/config src/scripts/getProposalResults.ts" }, "dependencies": { - "@council/deploy": "*", - "@council/sdk": "*", - "@council/typechain": "*", - "ethers": "^5.7.2" + "@delvtech/council-viem": "^0.0.3", + "viem": "^2.7.12" }, "devDependencies": { - "@council/prettier-config": "*", "@council/tsconfig": "*", - "dotenv": "^16.0.3", - "parcel": "^2.8.0", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-node": "^10.9.1", - "tsconfig-paths": "^4.1.0", - "typescript": "^4.7.4" + "@types/node": "^20.11.19", + "dotenv": "^16.4.5", + "tesm-node": "^1.3.1", + "ts-node": "^10.9.2", + "typescript": "^5.3.3" } } diff --git a/apps/council-sdk-starter/src/addresses/ElementMainnetAddressList.ts b/apps/council-sdk-starter/src/addresses/ElementMainnetAddressList.ts new file mode 100644 index 00000000..242624c6 --- /dev/null +++ b/apps/council-sdk-starter/src/addresses/ElementMainnetAddressList.ts @@ -0,0 +1,12 @@ +export const elementAddresses = { + airdrop: "0xd04a459FFD3A5E3C93d5cD8BB13d26a9845716c2", + coreVoting: "0xEaCD577C3F6c44C3ffA398baaD97aE12CDCFed4a", + elementToken: "0x5c6D51ecBA4D8E4F20373e3ce96a62342B125D6d", + gscCoreVoting: "0x40309f197e7f94B555904DF0f788a3F48cF326aB", + gscVault: "0xcA870E8aa4FCEa85b5f0c6F4209C8CBA9265B940", + lockingVault: "0x02Bd4A3b1b95b01F2Aa61655415A5d3EAAcaafdD", + spender: "0xDa2Baf34B5717b257e52039f78d02B9C58751781", + timeLock: "0x81758f3361A769016eae4844072FA6d7f828a651", + treasury: "0x82eF450FB7f06E3294F2f19ed1713b255Af0f541", + vestingVault: "0x6De73946eab234F1EE61256F10067D713aF0e37A", +} as const; diff --git a/apps/council-sdk-starter/src/addresses/elementAddresses.ts b/apps/council-sdk-starter/src/addresses/elementAddresses.ts deleted file mode 100644 index b824035b..00000000 --- a/apps/council-sdk-starter/src/addresses/elementAddresses.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { goerliDeployments } from "@council/deploy"; -import mainnetAddressList from "src/addresses/ElementMainnetAddressList.json"; -import { provider } from "src/provider"; - -const { contracts: goerliContracts } = - goerliDeployments[goerliDeployments.length - 1]; - -// Find the deployed contract addresses. These are safe to cast as strings -// because we know the deployment contains these contracts in the -// @council/deploy project. -const goerliAddresses = { - timeLock: goerliContracts.find(({ name }) => name === "Timelock") - ?.address as string, - coreVoting: goerliContracts.find(({ name }) => name === "CoreVoting") - ?.address as string, - lockingVault: goerliContracts.find(({ name }) => name === "LockingVaultProxy") - ?.address as string, - vestingVault: goerliContracts.find(({ name }) => name === "VestingVaultProxy") - ?.address as string, - gscCoreVoting: goerliContracts.find(({ name }) => name === "GSCCoreVoting") - ?.address as string, - gscVault: goerliContracts.find(({ name }) => name === "GSCVault") - ?.address as string, -}; - -type Addresses = typeof mainnetAddressList.addresses | typeof goerliAddresses; - -export async function getElementAddress(): Promise { - const { chainId } = await provider.getNetwork(); - return chainId === 5 ? goerliAddresses : mainnetAddressList.addresses; -} diff --git a/apps/council-sdk-starter/src/client.ts b/apps/council-sdk-starter/src/client.ts new file mode 100644 index 00000000..d1075462 --- /dev/null +++ b/apps/council-sdk-starter/src/client.ts @@ -0,0 +1,20 @@ +import { + PublicClient, + createPublicClient, + createWalletClient, + http, +} from "viem"; +import { privateKeyToAccount } from "viem/accounts"; + +export const publicClient: PublicClient = createPublicClient({ + transport: http(process.env.RPC_URL), +}); + +export const walletClient = + process.env.WALLET_PRIVATE_KEY && + createWalletClient({ + account: privateKeyToAccount( + process.env.WALLET_PRIVATE_KEY as `0x${string}`, + ), + transport: http(process.env.RPC_URL), + }); diff --git a/apps/council-sdk-starter/src/provider.ts b/apps/council-sdk-starter/src/provider.ts deleted file mode 100644 index 1121a117..00000000 --- a/apps/council-sdk-starter/src/provider.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { getDefaultProvider } from "ethers"; - -const defaultChainId = 1; // mainnet chain id - -// get provider using the PROVIDER_URI environment variable. Fallback to a -// default Goerli provider if no environment variable is found. -export const provider = getDefaultProvider( - process.env.PROVIDER_URI || defaultChainId, -); diff --git a/apps/council-sdk-starter/src/scripts/changeVaultStatus.ts b/apps/council-sdk-starter/src/scripts/changeVaultStatus.ts index e14a9fb4..1c800043 100644 --- a/apps/council-sdk-starter/src/scripts/changeVaultStatus.ts +++ b/apps/council-sdk-starter/src/scripts/changeVaultStatus.ts @@ -1,30 +1,28 @@ -import { CouncilContext, VotingContract } from "@council/sdk"; -import { Wallet } from "ethers"; -import { getElementAddress } from "src/addresses/elementAddresses"; -import { provider } from "src/provider"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { publicClient, walletClient } from "src/client"; // wrap the script in an async function so we can await promises export async function changeVaultStatus(): Promise { - const addresses = await getElementAddress(); - - // create a CouncilContext instance - const context = new CouncilContext(provider); - - // Create a VotingContract instance. - // The vaults array can be left empty since we won't be fetching any voting - // power data. - const coreVoting = new VotingContract(addresses.coreVoting, [], context); - - // create a signer for the proposal transaction - const signer = new Wallet(process.env.WALLET_PRIVATE_KEY as string, provider); - - const tx = await coreVoting.changeVaultStatus( - signer, - addresses.lockingVault, - true, - ); - - console.log(`Executed! (${tx})`); + if (!walletClient) { + throw new Error( + "Wallet client not available. Ensure the WALLET_PRIVATE_KEY environment variable is set.", + ); + } + + // create a ReadWriteCouncil instance + const council = new ReadWriteCouncil({ publicClient, walletClient }); + + // Create a ReadWriteCoreVoting instance. + const coreVoting = council.coreVoting({ + address: "0x", // <-- replace with the CoreVoting contract address + }); + + const hash = await coreVoting.changeVaultStatus({ + vault: "0x", // <-- replace with the vault address + isValid: true, + }); + + console.log(`Submitted! (${hash})`); process.exit(); } diff --git a/apps/council-sdk-starter/src/scripts/createProposal.ts b/apps/council-sdk-starter/src/scripts/createProposal.ts index 688e5a9e..4ec8bab8 100644 --- a/apps/council-sdk-starter/src/scripts/createProposal.ts +++ b/apps/council-sdk-starter/src/scripts/createProposal.ts @@ -1,87 +1,76 @@ -import { - CouncilContext, - LockingVault, - VestingVault, - VotingContract, -} from "@council/sdk"; -import { CoreVoting__factory } from "@council/typechain"; -import { BigNumber, utils, Wallet } from "ethers"; -import { getElementAddress } from "src/addresses/elementAddresses"; -import { provider } from "src/provider"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { publicClient, walletClient } from "src/client"; // approx 90 days in blocks assuming 12 seconds a block -const NINETY_DAYS_IN_BLOCKS = (90 * 24 * 60 * 60) / 12; +const FOURTEEN_DAYS_IN_BLOCKS = (14n * 24n * 60n * 60n) / 12n; // wrap the script in an async function so we can await promises export async function createProposal(): Promise { - const addresses = await getElementAddress(); + if (!walletClient) { + throw new Error( + "Wallet client not available. Ensure the WALLET_PRIVATE_KEY environment variable is set.", + ); + } - // create a CouncilContext instance - const context = new CouncilContext(provider); + // create a ReadWriteCouncil instance + const council = new ReadWriteCouncil({ publicClient, walletClient }); // create model instances - const lockingVault = new LockingVault(addresses.lockingVault, context); - const vestingVault = new VestingVault(addresses.vestingVault, context); - const coreVoting = new VotingContract( - addresses.coreVoting, - [lockingVault, vestingVault], - context, - ); - - // create a signer for the proposal transaction - const signer = new Wallet(process.env.WALLET_PRIVATE_KEY as string, provider); + const lockingVault = council.lockingVault("0x"); // <-- replace with the LockingVault contract address + const vestingVault = council.vestingVault("0x"); // <-- replace with the VestingVault contract address + const coreVoting = council.coreVoting({ + address: "0x", // <-- replace with the CoreVoting contract address + vaults: [lockingVault, vestingVault], + }); // prep arguments // the vaults that will be used to cast the first vote const vaults = []; + const account = (await walletClient.getAddresses())[0]; // trying to create a proposal with vaults you have no power in will throw an // uninitialized error. - const lockingVaultVotingPower = await lockingVault.getVotingPower( - signer.address, - ); - if (+lockingVaultVotingPower > 0) { + const lockingVaultVotingPower = await lockingVault.getVotingPower({ + account, + }); + if (lockingVaultVotingPower > 0n) { vaults.push(lockingVault); } - const vestingVaultVotingPower = await vestingVault.getVotingPower( - signer.address, - ); - if (+vestingVaultVotingPower > 0) { + const vestingVaultVotingPower = await vestingVault.getVotingPower({ + account, + }); + if (vestingVaultVotingPower > 0) { vaults.push(vestingVault); } // the target contract addresses for the proposal const targets = [coreVoting.address]; - // get the core voting contract abi to encode call data - const coreVotingInterface = new utils.Interface(CoreVoting__factory.abi); - // the proposed calls datas to send to the targets const calldatas = [ - coreVotingInterface.encodeFunctionData("setDefaultQuorum", [ - BigNumber.from(10), - ]), + coreVoting.contract.encodeFunctionData("setDefaultQuorum", { + quorum: 100n, + }), ]; - const currentBlock = await provider.getBlockNumber(); + const currentBlock = await publicClient.getBlockNumber(); // the block number after which the proposal can no longer be executed - const lastCall = currentBlock + NINETY_DAYS_IN_BLOCKS; + const lastCall = currentBlock + FOURTEEN_DAYS_IN_BLOCKS; // the ballot to cast for the first vote const ballot = "yes"; - const tx = await coreVoting.createProposal( - signer, - vaults, - targets, + const hash = await coreVoting.createProposal({ + ballot, calldatas, lastCall, - ballot, - ); + targets, + vaults, + }); - console.log(tx); + console.log(hash); process.exit(); } diff --git a/apps/council-sdk-starter/src/scripts/executeProposal.ts b/apps/council-sdk-starter/src/scripts/executeProposal.ts index 37fdf04d..16a091b3 100644 --- a/apps/council-sdk-starter/src/scripts/executeProposal.ts +++ b/apps/council-sdk-starter/src/scripts/executeProposal.ts @@ -1,31 +1,28 @@ -import { CouncilContext, VotingContract } from "@council/sdk"; -import { Wallet } from "ethers"; -import { getElementAddress } from "src/addresses/elementAddresses"; -import { provider } from "src/provider"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { publicClient, walletClient } from "src/client"; // wrap the script in an async function so we can await promises export async function getProposalResults(): Promise { - const addresses = await getElementAddress(); - - // create a CouncilContext instance - const context = new CouncilContext(provider); - - // Create a VotingContract instance. - // The vaults array can be left empty since we won't be fetching any voting - // power data. - const coreVoting = new VotingContract(addresses.coreVoting, [], context); - - // create a signer for the proposal transaction - const signer = new Wallet(process.env.WALLET_PRIVATE_KEY as string, provider); + if (!walletClient) { + throw new Error( + "Wallet client not available. Ensure the WALLET_PRIVATE_KEY environment variable is set.", + ); + } + + // create a ReadWriteCouncil instance + const council = new ReadWriteCouncil({ publicClient, walletClient }); + + // Create a ReadWriteCoreVoting instance. + const coreVoting = council.coreVoting({ + address: "0x", // <-- replace with the CoreVoting contract address + }); // get the proposal to be executed - const proposal = await coreVoting.getProposal(0); + const proposal = await coreVoting.getProposal({ id: 0n }); - const tx = await proposal.execute(signer, { - onSubmitted: (tx) => console.log(`Executing... (${tx})`), - }); + const hash = await proposal?.execute(); - console.log(`Executed! (${tx})`); + console.log(`Execution transaction submitted! (${hash})`); process.exit(); } diff --git a/apps/council-sdk-starter/src/scripts/getGSCMembers.ts b/apps/council-sdk-starter/src/scripts/getGSCMembers.ts index 863ad2e5..02c586cd 100644 --- a/apps/council-sdk-starter/src/scripts/getGSCMembers.ts +++ b/apps/council-sdk-starter/src/scripts/getGSCMembers.ts @@ -1,16 +1,20 @@ -import { CouncilContext, GSCVault } from "@council/sdk"; -import { getElementAddress } from "src/addresses/elementAddresses"; -import { provider } from "src/provider"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { elementAddresses } from "src/addresses/ElementMainnetAddressList"; +import { publicClient, walletClient } from "src/client"; // wrap the script in an async function so we can await promises export async function getGSCMembers(): Promise { - const addresses = await getElementAddress(); + if (!walletClient) { + throw new Error( + "Wallet client not available. Ensure the WALLET_PRIVATE_KEY environment variable is set.", + ); + } - // create a CouncilContext instance - const context = new CouncilContext(provider); + // create a ReadWriteCouncil instance + const council = new ReadWriteCouncil({ publicClient, walletClient }); - // create a GSCVault instance - const gscVault = new GSCVault(addresses.gscVault, context); + // create a ReadGscVault instance + const gscVault = council.gscVault(elementAddresses.gscVault); // <-- replace with the LockingVault contract address // get all members const members = await gscVault.getMembers(); @@ -20,14 +24,16 @@ export async function getGSCMembers(): Promise { for (const member of members) { console.log("fetching", member.address); - // get the voting vaults used to prove the member meets the minimum voting - // power requirement - const votingPowerVaults = await gscVault.getMemberVaults(member.address); + // get the voting vaults that were used to prove the member meets the + // minimum voting power requirement + const votingPowerVaults = await gscVault.getMemberVaults({ + account: member.address, + }); memberStats.push({ address: member.address, - joinDate: await gscVault.getJoinDate(member.address), - votingPower: await member.getVotingPower(votingPowerVaults), + joinDate: await gscVault.getJoinDate({ account: member.address }), + votingPower: await member.getVotingPower({ vaults: votingPowerVaults }), }); } diff --git a/apps/council-sdk-starter/src/scripts/getProposalResults.ts b/apps/council-sdk-starter/src/scripts/getProposalResults.ts index 4226c443..54536d8f 100644 --- a/apps/council-sdk-starter/src/scripts/getProposalResults.ts +++ b/apps/council-sdk-starter/src/scripts/getProposalResults.ts @@ -1,18 +1,22 @@ -import { CouncilContext, VoteResults, VotingContract } from "@council/sdk"; -import { getElementAddress } from "src/addresses/elementAddresses"; -import { provider } from "src/provider"; +import { ReadWriteCouncil, VoteResults } from "@delvtech/council-viem"; +import { elementAddresses } from "src/addresses/ElementMainnetAddressList"; +import { publicClient, walletClient } from "src/client"; // wrap the script in an async function so we can await promises export async function getProposalResults(): Promise { - const addresses = await getElementAddress(); + if (!walletClient) { + throw new Error( + "Wallet client not available. Ensure the WALLET_PRIVATE_KEY environment variable is set.", + ); + } - // create a CouncilContext instance - const context = new CouncilContext(provider); + // create a ReadWriteCouncil instance + const council = new ReadWriteCouncil({ publicClient, walletClient }); - // Create a VotingContract instance. - // The vaults array can be left empty since we won't be fetching any voting - // power data. - const coreVoting = new VotingContract(addresses.coreVoting, [], context); + // Create a ReadWriteCoreVoting instance. + const coreVoting = council.coreVoting({ + address: elementAddresses.coreVoting, // <-- replace with the CoreVoting contract address + }); // get all proposals const proposals = await coreVoting.getProposals(); @@ -20,7 +24,7 @@ export async function getProposalResults(): Promise { // get results for all proposals and key them by id in a new object const resultsByProposalId: Record = {}; for (const proposal of proposals) { - resultsByProposalId[proposal.id] = await proposal.getResults(); + resultsByProposalId[Number(proposal.id)] = await proposal.getResults(); } console.table(resultsByProposalId); diff --git a/apps/council-sdk-starter/src/scripts/setLockDuration.ts b/apps/council-sdk-starter/src/scripts/setLockDuration.ts index 0c90124d..db193376 100644 --- a/apps/council-sdk-starter/src/scripts/setLockDuration.ts +++ b/apps/council-sdk-starter/src/scripts/setLockDuration.ts @@ -1,28 +1,29 @@ -import { CouncilContext, VotingContract } from "@council/sdk"; -import { Wallet } from "ethers"; -import { getElementAddress } from "src/addresses/elementAddresses"; -import { provider } from "src/provider"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { publicClient, walletClient } from "src/client"; // wrap the script in an async function so we can await promises -export async function getProposalResults(): Promise { - const addresses = await getElementAddress(); +export async function setLockDuration(): Promise { + if (!walletClient) { + throw new Error( + "Wallet client not available. Ensure the WALLET_PRIVATE_KEY environment variable is set.", + ); + } - // create a CouncilContext instance - const context = new CouncilContext(provider); + // create a ReadWriteCouncil instance + const council = new ReadWriteCouncil({ publicClient, walletClient }); - // Create a VotingContract instance. - // The vaults array can be left empty since we won't be fetching any voting - // power data. - const coreVoting = new VotingContract(addresses.coreVoting, [], context); + // Create a ReadWriteCoreVoting instance. + const coreVoting = council.coreVoting({ + address: "0x", // <-- replace with the CoreVoting contract address + }); - // create a signer for the proposal transaction - const signer = new Wallet(process.env.WALLET_PRIVATE_KEY as string, provider); + const hash = await coreVoting.setLockDuration({ + blocks: 0n, // <-- replace with the number of blocks to lock + }); - const tx = await coreVoting.setLockDuration(signer, 0); - - console.log(`Executed! (${tx})`); + console.log(`Submitted! (${hash})`); process.exit(); } -getProposalResults(); +setLockDuration(); diff --git a/apps/council-sdk-starter/tsconfig.json b/apps/council-sdk-starter/tsconfig.json index 38697782..6af24742 100644 --- a/apps/council-sdk-starter/tsconfig.json +++ b/apps/council-sdk-starter/tsconfig.json @@ -5,9 +5,9 @@ "compilerOptions": { "rootDir": ".", "baseUrl": ".", - "paths": { - "src/*": ["src/*"] - }, - "resolveJsonModule": true + "resolveJsonModule": true, + "module": "ESNext", + "target": "ESNext", + "moduleResolution": "bundler" } } diff --git a/apps/council-ui/.env.sample b/apps/council-ui/.env.sample index 41ec8e68..b728fdb8 100644 --- a/apps/council-ui/.env.sample +++ b/apps/council-ui/.env.sample @@ -1,12 +1,16 @@ -# Alchemy id for the rpc provider of your choice -NEXT_PUBLIC_MAINNET_ALCHEMY_KEY= -NEXT_PUBLIC_GOERLI_ALCHEMY_KEY= +# URL for the rpc provider of your choice +NEXT_PUBLIC_MAINNET_RPC_URL= +NEXT_PUBLIC_GOERLI_RPC_URL= # Intentionally blank for local development. This lets you build the app using # `next export` and serve it locally from the ./out directory. If serving from a # subdirectory (eg: GH Pages), you'll want to set this to your subdirectory # path, ie: `/council-monorepo` for a github repo called council-monorepo. -NEXT_PUBLIC_COUNCIL_UI_BASE_PATH= +# NEXT_PUBLIC_COUNCIL_UI_BASE_PATH= # If running a local node, use this instead of the alchemy id -NEXT_PUBLIC_LOCAL_RPC_URL= \ No newline at end of file +NEXT_PUBLIC_LOCAL_RPC_URL=http://127.0.0.1:8545 + +# WalletConnect integration w/ RainbowKit +NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID= +WALLET_CONNECT_DOMAIN_VERIFICATION_CODE= diff --git a/apps/council-ui/.gitignore b/apps/council-ui/.gitignore index fe4217fd..1ae13b9a 100644 --- a/apps/council-ui/.gitignore +++ b/apps/council-ui/.gitignore @@ -1,2 +1,5 @@ .env -out \ No newline at end of file +out + +# WalletConnect domain verification code +public/.well-known/walletconnect.txt diff --git a/apps/council-ui/.prettierrc.cjs b/apps/council-ui/.prettierrc.cjs new file mode 100644 index 00000000..da6a83a3 --- /dev/null +++ b/apps/council-ui/.prettierrc.cjs @@ -0,0 +1,9 @@ +module.exports = { + plugins: ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"], + tabWidth: 2, + useTabs: false, + trailingComma: "all", + singleQuote: false, + semi: true, + printWidth: 80, +}; diff --git a/apps/council-ui/.prettierrc.js b/apps/council-ui/.prettierrc.js deleted file mode 100644 index 4a902ca3..00000000 --- a/apps/council-ui/.prettierrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), - plugins: [ - require("prettier-plugin-tailwindcss"), - require("prettier-plugin-organize-imports"), - ], - tailwindConfig: "./tailwind.config.js", -}; diff --git a/apps/council-ui/CHANGELOG.md b/apps/council-ui/CHANGELOG.md new file mode 100644 index 00000000..43472975 --- /dev/null +++ b/apps/council-ui/CHANGELOG.md @@ -0,0 +1,25 @@ +# council-ui + +## 0.0.3 + +### Patch Changes + +- Updated dependencies [a5ed20e] + - @delvtech/council-artifacts@0.0.3 + - @delvtech/council-viem@0.0.3 + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [5ab0981] + - @delvtech/council-artifacts@0.0.2 + - @delvtech/council-viem@0.0.2 + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [abebf3c] + - @delvtech/council-artifacts@0.0.1 + - @delvtech/council-viem@0.0.1 diff --git a/apps/council-ui/next.config.js b/apps/council-ui/next.config.js index 5e0ab922..76632234 100644 --- a/apps/council-ui/next.config.js +++ b/apps/council-ui/next.config.js @@ -24,6 +24,11 @@ module.exports = (phase) => { swcMinify: false, basePath: process.env.NEXT_PUBLIC_COUNCIL_UI_BASE_PATH ?? "", + + i18n: { + locales: ["en-US", "zh-CN"], + defaultLocale: "en-US", + }, }; }; diff --git a/apps/council-ui/package.json b/apps/council-ui/package.json index 63eb4b43..feba7745 100644 --- a/apps/council-ui/package.json +++ b/apps/council-ui/package.json @@ -1,64 +1,62 @@ { "name": "council-ui", - "version": "0.0.0", + "version": "0.0.3", "private": true, "scripts": { "dev": "next dev", + "prebuild": "sh ./scripts/prebuild.sh", "build": "next build", "export": "next export", "start": "next start", "lint": "next lint", - "format": "prettier --write '**/*.{gql,graphql,js,jsx,ts,tsx,json,md,yaml,yml}'", - "format:check": "prettier --check '**/*.{gql,graphql,js,jsx,ts,tsx,json,md}'" + "typecheck": "tsc --noEmit" }, "dependencies": { - "@council/deploy": "*", - "@council/sdk": "*", - "@ensdomains/ensjs": "^3.0.0-alpha.37", - "@heroicons/react": "^2.0.13", + "@delvtech/council-artifacts": "^0.0.3", + "@delvtech/council-viem": "^0.0.3", + "@ensdomains/ensjs": "^3.4.4", + "@heroicons/react": "^2.1.1", "@metamask/jazzicon": "^2.0.0", - "@pushprotocol/restapi": "^1.2.10", - "@rainbow-me/rainbowkit": "^0.7.4", - "@tailwindcss/line-clamp": "^0.4.2", - "@tanstack/react-query": "^4.16.1", - "@types/lodash.chunk": "^4.2.7", + "@pushprotocol/restapi": "^1.6.7", + "@rainbow-me/rainbowkit": "^2.0.2", + "@tailwindcss/line-clamp": "^0.4.4", + "@tanstack/react-query": "^5.22.2", "assert-never": "^1.2.1", - "classnames": "^2.3.2", + "classnames": "^2.5.1", "d3-format": "^3.1.0", - "daisyui": "^2.33.0", - "date-fns": "^2.29.3", - "ethers": "^5.7.2", - "fuse.js": "^6.6.2", - "listr2": "^5.0.6", + "daisyui": "^4.7.2", + "date-fns": "^3.3.1", + "ethers": "^6.11.1", + "fuse.js": "^7.0.0", + "listr2": "^8.0.2", "lodash.chunk": "^4.2.0", "next": "13.0.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-hot-toast": "^2.4.0", - "react-loading-skeleton": "^3.1.0", - "react-tooltip": "^5.7.0", - "wagmi": "^0.7.7" + "react-hot-toast": "^2.4.1", + "react-loading-skeleton": "^3.4.0", + "react-tooltip": "^5.26.0", + "viem": "^2.8.16", + "wagmi": "^2.5.11" }, "devDependencies": { - "@babel/core": "^7.0.0", + "@babel/core": "^7.23.9", "@council/eslint-config": "*", - "@council/prettier-config": "*", "@council/tsconfig": "*", - "@tailwindcss/typography": "^0.5.8", - "@tanstack/eslint-plugin-query": "^4.15.1", - "@types/d3-format": "^3.0.1", - "@types/node": "^17.0.12", - "@types/react": "18.0.17", - "autoprefixer": "^10.4.13", - "eslint": "7.32.0", - "eslint-config-next": "^13.0.1", - "eslint-plugin-react": "^7.31.10", - "eslint-plugin-tailwindcss": "^3.6.2", - "next-transpile-modules": "9.0.0", - "postcss": "^8.4.18", - "prettier-plugin-organize-imports": "^3.1.1", - "prettier-plugin-tailwindcss": "^0.1.13", - "tailwindcss": "^3.2.1", - "typescript": "^4.5.3" + "@tailwindcss/typography": "^0.5.10", + "@tanstack/eslint-plugin-query": "^5.20.1", + "@types/d3-format": "^3.0.4", + "@types/lodash.chunk": "^4.2.9", + "@types/node": "^20.11.19", + "@types/react": "18.2.57", + "autoprefixer": "^10.4.17", + "eslint": "8.56.0", + "eslint-config-next": "^14.1.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-tailwindcss": "^3.14.3", + "next-transpile-modules": "10.0.1", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "typescript": "^5.3.3" } } diff --git a/apps/council-ui/pages/_app.tsx b/apps/council-ui/pages/_app.tsx index f624cd03..2a7f0605 100644 --- a/apps/council-ui/pages/_app.tsx +++ b/apps/council-ui/pages/_app.tsx @@ -1,7 +1,6 @@ // disabling prettier organize imports plugin to preserve css import order // organize-imports-ignore import dynamic from "next/dynamic"; -import "react-tooltip/dist/react-tooltip.css"; import "@rainbow-me/rainbowkit/styles.css"; import "src/styles/globals.css"; import "react-loading-skeleton/dist/skeleton.css"; diff --git a/apps/council-ui/pages/airdrop/index.tsx b/apps/council-ui/pages/airdrop/index.tsx new file mode 100644 index 00000000..658c830a --- /dev/null +++ b/apps/council-ui/pages/airdrop/index.tsx @@ -0,0 +1,163 @@ +import { ConnectButton } from "@rainbow-me/rainbowkit"; +import classNames from "classnames"; +import { ReactElement, useEffect, useState } from "react"; +import ClaimStep from "src/ui/airdrop/ClaimStep"; +import ConfirmClaimStep from "src/ui/airdrop/ConfirmClaimStep"; +import ConfirmDepositStep from "src/ui/airdrop/ConfirmDepositStep"; +import DepositOrClaimStep from "src/ui/airdrop/DepositOrClaimStep"; +import DepositStep from "src/ui/airdrop/DepositStep"; +import { useAirdropVault } from "src/ui/airdrop/hooks/useAirdropLockingVault"; +import { useClaimAirdrop } from "src/ui/airdrop/hooks/useClaimAirdrop"; +import { useClaimAndDelegateAirdrop } from "src/ui/airdrop/hooks/useClaimAndDelegateAirdrop"; +import { useClaimableAirdropAmount } from "src/ui/airdrop/hooks/useClaimableAirdropAmount"; +import useRouterSteps from "src/ui/router/hooks/useRouterSteps"; +import { useDelegate } from "src/ui/vaults/lockingVault/hooks/useDelegate"; +import { zeroAddress } from "viem"; +import { useAccount } from "wagmi"; + +export default function AirdropPage(): ReactElement { + // Utilities to help with routing between steps + const { currentStep, currentStepNumber, goToStep } = useRouterSteps({ + steps: [ + "deposit-or-claim", + ["claim", "deposit"], + ["confirm-claim", "confirm-deposit"], + ], + }); + + // The address that will receive the airdrop + const [recipientAddress, setRecipientAddress] = useState(); + + // The address to delegate to if the user chooses to deposit + const [delegateAddress, setDelegateAddress] = useState(); + + // Determine if the user needs to choose a delegate + const { airdropVault } = useAirdropVault(); + const { delegate: currentDelegate } = useDelegate({ + account: recipientAddress as `0x${string}`, + vault: airdropVault, + }); + const needsDelegate = + currentDelegate && currentDelegate.address === zeroAddress; + + // Set the recipient and delegate addresses to the connected wallet if they + // haven't been set yet + const account = useAccount(); + useEffect(() => { + setRecipientAddress((previousValue) => previousValue || account.address); + setDelegateAddress((previousValue) => previousValue || account.address); + }, [account.address]); + + const { claimableAmount } = useClaimableAirdropAmount(); + const { claimAirdrop } = useClaimAirdrop(); + const { claimAndDelegateAirdrop } = useClaimAndDelegateAirdrop(); + + return ( +
+
+

Airdrop Claim

+
    +
  • = 1, + })} + > + Deposit or Claim +
  • +
  • = 2, + })} + > + Choose account +
  • +
  • = 3, + })} + > + Confirm +
  • +
+
+ {(() => { + if (!account) { + return ( +
+ +
+ ); + } + + switch (currentStep) { + case "deposit": + return ( + goToStep("deposit-or-claim")} + onNext={() => goToStep("confirm-deposit")} + /> + ); + case "confirm-deposit": + return ( + goToStep("deposit")} + onConfirm={ + claimAndDelegateAirdrop + ? () => + claimAndDelegateAirdrop({ + recipient: recipientAddress as `0x${string}`, + delegate: delegateAddress as `0x${string}`, + }) + : undefined + } + /> + ); + case "claim": + return ( + goToStep("deposit-or-claim")} + onNext={() => goToStep("confirm-claim")} + /> + ); + case "confirm-claim": + return ( + goToStep("claim")} + onConfirm={ + claimAirdrop + ? () => + claimAirdrop({ + recipient: recipientAddress as `0x${string}`, + }) + : undefined + } + /> + ); + + case "deposit-or-claim": + default: + return ( + goToStep("deposit") : undefined + } + onClaim={claimableAmount ? () => goToStep("claim") : undefined} + /> + ); + } + })()} +
+ ); +} diff --git a/apps/council-ui/pages/api/airdrop/[address].ts b/apps/council-ui/pages/api/airdrop/[address].ts new file mode 100644 index 00000000..7f904078 --- /dev/null +++ b/apps/council-ui/pages/api/airdrop/[address].ts @@ -0,0 +1,44 @@ +import { NextApiRequest, NextApiResponse } from "next"; +import merkleRewardsJSON from "./sample-merkle-rewards-tree.json"; + +interface MerkleRewards { + root: string; + rewardsTotal: string; + uniqueAccountsTotal: number; + accounts: { + [address: string]: { + amount: string; + proof: string[]; + }; + }; +} + +const merkleRewards: MerkleRewards = merkleRewardsJSON; + +export default function handler( + req: NextApiRequest, + res: NextApiResponse, +): void { + const { address } = req.query; + + if (typeof address === "string") { + const info = merkleRewards.accounts[address.toLowerCase()]; + + if (info) { + res.status(200).json(info); + } else { + res.status(404).json({ error: `Address not found: ${address}` }); + } + + return; + } + + if (Array.isArray(address)) { + res + .status(400) + .json({ error: `Address must be single value. Received: ${address}` }); + return; + } + + res.status(400).json({ error: `Invalid address: ${address}` }); +} diff --git a/apps/council-ui/pages/api/airdrop/sample-merkle-rewards-tree.json b/apps/council-ui/pages/api/airdrop/sample-merkle-rewards-tree.json new file mode 100644 index 00000000..d0fb7f46 --- /dev/null +++ b/apps/council-ui/pages/api/airdrop/sample-merkle-rewards-tree.json @@ -0,0 +1,199 @@ +{ + "root": "0xbd5a53187c4b15fcfb5288c353f31209cf547bc07df38f8add978643ca88b3a6", + "rewardsTotal": "2000.000000000000000000", + "uniqueAccountsTotal": 20, + "accounts": { + "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266": { + "amount": "100.000000000000000000", + "proof": [ + "0xb744c83281c8c4e19fd76aa9822f709c68558891ccff788560f3873aab6b19b3", + "0x59b10379e7370dd4868dbb6e31a210b3379278d34f050d183314e59e616790e2", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x70997970c51812dc3a010c7d01b50e0d17dc79c8": { + "amount": "100.000000000000000000", + "proof": [ + "0x271e61abd8219c77862fda17c0c094302fa9884962394db34da950745db9fbbb", + "0x59b10379e7370dd4868dbb6e31a210b3379278d34f050d183314e59e616790e2", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc": { + "amount": "100.000000000000000000", + "proof": [ + "0x259b98d749bca4a7d88fb6d07e639aad4a3f8b7d12f690ce0e60d427bb3ebcae", + "0x3f87550f26a9aab6c876c43bfdd868b17998d6149fc17d88db2e8c900e170f2e", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x90f79bf6eb2c4f870365e785982e1f101e93b906": { + "amount": "100.000000000000000000", + "proof": [ + "0x0b4c05bfeaff696a6005ca9096af2535d85c4ea6adf929f186c5765844f99f2f", + "0x3f87550f26a9aab6c876c43bfdd868b17998d6149fc17d88db2e8c900e170f2e", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x15d34aaf54267db7d7c367839aaf71a00a2c6a65": { + "amount": "100.000000000000000000", + "proof": [ + "0x31a86e2cb84e9b9bd4d2dab3b7229f0ca1c502125660a4437684eed20c038dfb", + "0xa3c3bd48b4d1ac0ab86203fe7990f3a1960550994c1c700596a4f2d6803067cc", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc": { + "amount": "100.000000000000000000", + "proof": [ + "0x237d3a47770a3265ae98e7c870ce112e5e53b0cec3c538cae793f0a6d7d7748d", + "0xa3c3bd48b4d1ac0ab86203fe7990f3a1960550994c1c700596a4f2d6803067cc", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x976ea74026e726554db657fa54763abd0c3a0aa9": { + "amount": "100.000000000000000000", + "proof": [ + "0x2bae99146855be76d9c08230ff2c83e4ce0831ed88361a397ab84f7d29b8d41f", + "0xb7285d5f39aba557c414b195e94954bc04c2b8553679b854db4de3c268b2d53e", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x14dc79964da2c08b23698b3d3cc7ca32193d9955": { + "amount": "100.000000000000000000", + "proof": [ + "0x6545c1b0851437146349911f98785b64a69871c3c18882cb762e45c605a8afc0", + "0xb7285d5f39aba557c414b195e94954bc04c2b8553679b854db4de3c268b2d53e", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f": { + "amount": "100.000000000000000000", + "proof": [ + "0xa84bf1e8b6a30abc143d45ddc2a160f04396c3e759b3e5064d446b1c88093f16", + "0x8805a4a9ce1a9948c551433fe184d44a683385ab622b00458bad6483d4f985a1", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xa0ee7a142d267c1f36714e4a8f75612f20a79720": { + "amount": "100.000000000000000000", + "proof": [ + "0x0abb0359915327508657e3e644da7e117520e27b152e2b0e2be006dd9e94314f", + "0x8805a4a9ce1a9948c551433fe184d44a683385ab622b00458bad6483d4f985a1", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xbcd4042de499d14e55001ccbb24a551f3b954096": { + "amount": "100.000000000000000000", + "proof": [ + "0xce4015e9cf00d9cfc071e0098f7c3fbc17d4bd35a69ec78de7c7fdac00ad0ea3", + "0x6c3be16698f5e88eb8687e4a70728a3a98c60e39bcc4bd75c1f9fc210bde66f0", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x71be63f3384f5fb98995898a86b02fb2426c5788": { + "amount": "100.000000000000000000", + "proof": [ + "0xb20fafca7288bded45466edbfc94390ff7802fe0b0fd9ec0b9f182a8454a43f7", + "0x6c3be16698f5e88eb8687e4a70728a3a98c60e39bcc4bd75c1f9fc210bde66f0", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xfabb0ac9d68b0b445fb7357272ff202c5651694a": { + "amount": "100.000000000000000000", + "proof": [ + "0xf6aac97d74332159b0b4e8e1fbd2881ce08f71cb306eb13be7a7b0708efac90f", + "0xc0a50eb1738aae75031d5226193a5bf9873dbe276d619236d29ba1bac75bb5eb", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x1cbd3b2770909d4e10f157cabc84c7264073c9ec": { + "amount": "100.000000000000000000", + "proof": [ + "0x0ea60014f6c391bcb7acf81f90fa59fa625e792024fb15ee4536e6e6c7607e20", + "0xc0a50eb1738aae75031d5226193a5bf9873dbe276d619236d29ba1bac75bb5eb", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xdf3e18d64bc6a983f673ab319ccae4f1a57c7097": { + "amount": "100.000000000000000000", + "proof": [ + "0xe629ddd09f5eabec1773b2fee1f68f0f3d08b2e1ebc0f7eac50e10c993539bba", + "0x530987fb6803a593073348ece7a6c87ff0379bcd265ad084db3a8644ad8c5ea8", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xcd3b766ccdd6ae721141f452c550ca635964ce71": { + "amount": "100.000000000000000000", + "proof": [ + "0x6e0274f5c91b03c2cc6f3ee4dc94936c4f4e92dbbb890a353a733915a099a1a8", + "0x530987fb6803a593073348ece7a6c87ff0379bcd265ad084db3a8644ad8c5ea8", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x2546bcd3c84621e976d8185a91a922ae77ecec30": { + "amount": "100.000000000000000000", + "proof": [ + "0x3bc5233828d3fb84582db0271c758aa8e09050550e7cde2a55c210d7535a5cb5", + "0xede3212e5f959a0d3080ed9a06d22601ffcf9583aede2a7c94a10d94489b1332", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + }, + "0xbda5747bfd65f08deb54cb465eb87d40e51b197e": { + "amount": "100.000000000000000000", + "proof": [ + "0xed48d896b00e8d894c9ce329b527896ed364777d55a9f9e78af38d3d4f75d903", + "0xede3212e5f959a0d3080ed9a06d22601ffcf9583aede2a7c94a10d94489b1332", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + }, + "0xdd2fd4581271e230360230f9337d5c0430bf44c0": { + "amount": "100.000000000000000000", + "proof": [ + "0x7813edc1f65098212e488eab9fab15e2d8858c7bb38e1171706625fbc53cb80d", + "0xaee707d758296030a5c420cd2881cd514e90d7848b358daed594f16940ebaf00", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + }, + "0x8626f6940e2eb28930efb4cef49b2d1f2c9c1199": { + "amount": "100.000000000000000000", + "proof": [ + "0x59334dc98ed57a649c67ea1dc91886fd4a7ad58ef586e77b1b2cad24c6233cee", + "0xaee707d758296030a5c420cd2881cd514e90d7848b358daed594f16940ebaf00", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + } + } +} diff --git a/apps/council-ui/pages/index.tsx b/apps/council-ui/pages/index.tsx index 85ce0bc4..6757f924 100644 --- a/apps/council-ui/pages/index.tsx +++ b/apps/council-ui/pages/index.tsx @@ -4,8 +4,8 @@ import { ReactElement } from "react"; export default function Index(): ReactElement { return (
-
-

+
+

Council is a decentralized governance protocol that allows a community to manage a DAO.

@@ -30,11 +30,11 @@ export default function Index(): ReactElement {

-
-
+
+
Get Started
-
+
Get up and running with Council with our quick start guides, protocol documentation, a fully customizable reference UI, a Javascript SDK, and fully open source code.{" "} @@ -51,16 +51,16 @@ export default function Index(): ReactElement {
-
-
+
+

Why use Council?

-

+

Council Protocol was created because there are no governance frameworks that exist today that meet the realistic needs of day-to-day and long-term governance.

-
+

Voting Vaults 🗳️

@@ -106,14 +106,14 @@ export default function Index(): ReactElement {
-
-
+
+

Council 🤝 DAOs

-
-
+
+

Yearn

yearn logo
-
-
+
+

Balancer

balancer logo
-
-
+
+

Synthetix

snx logo
-
-
-

+
+
+

Built with ❤️ and 🧠 by{" "} - Delve + Delve

Building Council has been an absolute pleasure and we couldn't diff --git a/apps/council-ui/pages/proposals/details.tsx b/apps/council-ui/pages/proposals/details.tsx index 915a3553..bc093a77 100644 --- a/apps/council-ui/pages/proposals/details.tsx +++ b/apps/council-ui/pages/proposals/details.tsx @@ -1,107 +1,76 @@ -import { Ballot, getBlockDate, Proposal, Vote } from "@council/sdk"; -import { useQuery } from "@tanstack/react-query"; -import { parseUnits } from "ethers/lib/utils"; +import { Ballot, ReadVote } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; import { useRouter } from "next/router"; import { ReactElement, useMemo, useState } from "react"; import Skeleton from "react-loading-skeleton"; -import { councilConfigs } from "src/config/council.config"; -import { ProposalConfig } from "src/config/CouncilConfig"; -import { EnsRecords, getBulkEnsRecords } from "src/ens/getBulkEnsRecords"; -import { - getProposalStatus, - ProposalStatus, -} from "src/proposals/getProposalStatus"; import { Routes } from "src/routes"; import { Breadcrumbs } from "src/ui/base/Breadcrumbs"; -import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; -import ExternalLink from "src/ui/base/links/ExternalLink"; import { Page } from "src/ui/base/Page"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import ExternalLink from "src/ui/base/links/ExternalLink"; +import { getBlockDate } from "src/ui/base/utils/getBlockDate"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useReadGscVoting } from "src/ui/council/hooks/useReadGscVoting"; import { ProposalStatsRow } from "src/ui/proposals/ProposalStatsRow/ProposalStatsRow"; import { ProposalStatsRowSkeleton } from "src/ui/proposals/ProposalStatsRow/ProposalStatsRowSkeleton"; import { Quorum } from "src/ui/proposals/Quorum/Quorum"; import { QuorumBarSkeleton } from "src/ui/proposals/Quorum/QuorumSkeleton"; import { VotingActivityTable } from "src/ui/proposals/VotingActivityTable/VotingActivityTable"; import { VotingActivityTableSkeleton } from "src/ui/proposals/VotingActivityTable/VotingActivityTableSkeleton"; -import { useGSCMemberAddresses } from "src/ui/vaults/gscVault/useGSCMemberAddresses"; -import { useVotingPower } from "src/ui/vaults/hooks/useVotingPower"; -import { GSCOnlyToggle } from "src/ui/voters/GSCOnlyToggle"; -import { useGSCVote } from "src/ui/voting/hooks/useGSCVote"; -import { useVote } from "src/ui/voting/hooks/useVote"; +import { useReadProposal } from "src/ui/proposals/hooks/useReadProposal"; +import { useGscMembers } from "src/ui/vaults/gscVault/hooks/useGscMembers"; +import { GSCOnlyToggle } from "src/ui/voters/GscOnlyToggle"; import { ProposalVoting } from "src/ui/voting/ProposalVoting"; import { ProposalVotingSkeleton } from "src/ui/voting/ProposalVotingSkeleton"; -import { useAccount, useBlockNumber, useSigner } from "wagmi"; +import { EnsRecords, getBulkEnsRecords } from "src/utils/getBulkEnsRecords"; +import { ProposalStatus, getProposalStatus } from "src/utils/getProposalStatus"; +import { useAccount, usePublicClient } from "wagmi"; export default function ProposalPage(): ReactElement { const { query, replace } = useRouter(); const { id: idParam, votingContract: votingContractAddressParam } = query; - const id = +(idParam as string); - const votingContractAddress = votingContractAddressParam as string; + const id = BigInt((idParam as string) || 0); + const votingContractAddress = votingContractAddressParam as `0x${string}`; + + const account = useAccount(); - const { data: signer } = useSigner(); - const { address } = useAccount(); - const { data: blockNumber } = useBlockNumber(); + const coreVoting = useReadCoreVoting(); + const gscVoting = useReadGscVoting(); + const usedCoreVoting = + votingContractAddress === gscVoting?.address ? gscVoting : coreVoting; - const { data, error, status } = useProposalDetailsPageData( + const { data, status } = useProposalDetailsPageData( votingContractAddress, id, - address, + account.address, ); - const { data: gscMemberAddresses } = useGSCMemberAddresses(); + const { gscMembers } = useGscMembers(); // voting activity filtering const [gscOnly, setGscOnly] = useState(false); const filteredVotes = useMemo(() => { - if (data && gscOnly && gscMemberAddresses) { + if (data?.votes && gscOnly && gscMembers) { return dedupeVotes(data.votes).filter(({ voter }) => - gscMemberAddresses.includes(voter.address), + gscMembers.some((member) => member.address === voter.address), ); } return dedupeVotes(data?.votes); - }, [data, gscOnly, gscMemberAddresses]); - - const { data: votingPower } = useVotingPower(address); - const { mutate: vote } = useVote(); - const { mutate: gscVote } = useGSCVote(); - - const handleVote = (ballot: Ballot) => { - if (!data || !signer) { - return; - } - const voteArgs = { - signer, - proposalId: id, - ballot, - }; - if (data.type === "gsc") { - return gscVote(voteArgs); - } - return vote(voteArgs); - }; + }, [data, gscOnly, gscMembers]); - const { coreVoting, gscVoting } = useCouncil(); - if ( - ![coreVoting.address, gscVoting?.address].includes(votingContractAddress) || - !votingContractAddressParam || - !idParam - ) { + // Redirect to proposals page if the voting contract is not found. + if (!usedCoreVoting) { replace("/proposals"); // Returning empty fragment is to remove the undefined type from the query params. return <>; } - if (status === "error") { - return ; - } - const proposalTitle = data?.title ?? `Proposal ${id}`; return (

- {status === "loading" ? ( + {status === "pending" ? ( ) : ( )} -
-
-

- {status === "loading" ? ( - +
+
+

+ {status === "pending" ? ( + ) : ( proposalTitle )} @@ -126,9 +95,9 @@ export default function ProposalPage(): ReactElement {

- {status === "success" ? ( + {data ? ( @@ -139,7 +108,7 @@ export default function ProposalPage(): ReactElement {
- {status === "success" ? ( + {data ? ( )} -
+
- {status === "success" ? ( + {data ? ( data.paragraphSummary && (

{data.paragraphSummary}

) @@ -170,7 +139,7 @@ export default function ProposalPage(): ReactElement { Voting Activity {filteredVotes && `(${filteredVotes.length})`}

- {gscMemberAddresses && ( + {gscMembers && ( - {status === "success" && filteredVotes ? ( + {data && filteredVotes ? ( ) : ( @@ -193,15 +165,11 @@ export default function ProposalPage(): ReactElement {

Your Vote

- {status === "success" ? ( + {data ? ( ) : ( @@ -213,157 +181,135 @@ export default function ProposalPage(): ReactElement { } interface ProposalDetailsPageData { - type: "core" | "gsc"; - votingContractName: string; + proposalExists: boolean; + isGsc: boolean; status: ProposalStatus; isActive: boolean; - currentQuorum: string; - requiredQuorum: string | null; - createdAtBlock: number | null; - createdBy: string | null; - createdAtDate: Date | null; - createdTransactionHash: string | null; - endsAtDate: Date | null; - unlockedAtDate: Date | null; - lastCallAtDate: Date | null; - votes: Vote[]; - accountBallot?: Ballot; + votes?: ReadVote[]; voterEnsRecords: EnsRecords; - descriptionURL: string | null; + createdAtBlock: bigint; + currentQuorum: bigint; + createdTransactionHash?: `0x${string}`; + votingContractName?: string; + requiredQuorum?: bigint; + createdBy?: `0x${string}`; + createdAtDate?: Date; + endsAtDate?: Date; + unlockedAtDate?: Date; + lastCallDate?: Date; + accountBallot?: Ballot; + descriptionURL?: string; title?: string; - paragraphSummary: string | null; - executedTransactionHash: string | null; + paragraphSummary?: string; + executedTransactionHash?: `0x${string}`; } function useProposalDetailsPageData( - votingContractAddress?: string, - id?: number, - account?: string, -) { - const { context, coreVoting, gscVoting } = useCouncil(); - const provider = context.provider; - const chainId = useChainId(); + coreVotingAddress?: `0x${string}`, + id?: bigint, + account?: `0x${string}`, +): { + // proposalExists: boolean; + data: ProposalDetailsPageData | undefined; + status: QueryStatus; +} { + const gscVoting = useReadGscVoting(); + const config = useCouncilConfig(); + const client = usePublicClient(); + const { proposal } = useReadProposal({ + id, + coreVoting: coreVotingAddress, + }); - // Default to the coreVoting, but if it's gsc grab the gsc name and proposal - // configs instead - let proposalConfigs = councilConfigs[chainId].coreVoting.proposals; - let votingContractName = councilConfigs[chainId].coreVoting.name; - if (gscVoting && votingContractAddress === gscVoting.address) { - proposalConfigs = councilConfigs[chainId].gscVoting?.proposals as Record< - string, - ProposalConfig - >; - votingContractName = councilConfigs[chainId].gscVoting?.name as string; - } + const isGsc = coreVotingAddress === gscVoting?.address; + const votingConfig = isGsc ? config.gscVoting : config.coreVoting; + const votingContractName = votingConfig?.name; - const queryEnabled = votingContractAddress !== undefined && id !== undefined; + const enabled = !!proposal; - return useQuery({ - queryKey: ["proposalDetailsPage", id], - enabled: queryEnabled, - queryFn: queryEnabled + const { data, status } = useQuery({ + queryKey: ["proposalDetailsPage", coreVotingAddress, String(proposal?.id)], + enabled, + queryFn: enabled ? async (): Promise => { - let proposal: Proposal | undefined; - let type: ProposalDetailsPageData["type"] = "core"; + const createdTransaction = await proposal.getCreatedTransaction(); + const createdAtDate = proposal.created + ? await getBlockDate(proposal.created, client) + : undefined; - if (votingContractAddress === coreVoting.address) { - proposal = coreVoting.getProposal(id); - } else if (votingContractAddress === gscVoting?.address) { - type = "gsc"; - proposal = gscVoting.getProposal(id); - } else { - throw new Error( - `No config found for voting contract address ${votingContractAddress}, See src/config.`, - ); - } - - const createdTransactionHash = - await proposal.getCreatedTransactionHash(); - const createdAtBlock = await proposal.getCreatedBlock(); - const createdAtDate = createdAtBlock - ? await getBlockDate(createdAtBlock, provider) - : null; - - const expirationBlock = await proposal.getExpirationBlock(); - const endsAtDate = expirationBlock - ? await getBlockDate(expirationBlock, context.provider, { - estimateFutureDates: true, - }) - : null; + const endsAtDate = proposal.expiration + ? await getBlockDate(proposal.expiration, client) + : undefined; const unlockedAtBlock = await proposal.getUnlockBlock(); const unlockedAtDate = unlockedAtBlock - ? await getBlockDate(unlockedAtBlock, provider, { - estimateFutureDates: true, - }) - : null; + ? await getBlockDate(unlockedAtBlock, client) + : undefined; const lastCallBlock = await proposal.getLastCallBlock(); - const lastCallAtDate = lastCallBlock - ? await getBlockDate(lastCallBlock, provider, { - estimateFutureDates: true, - }) - : null; + const lastCallDate = lastCallBlock + ? await getBlockDate(lastCallBlock, client) + : undefined; - let votes = await proposal.getVotes(); + const votes = await proposal.getVotes(); const voterEnsRecords = await getBulkEnsRecords( - Array.from(new Set(votes.map((vote) => vote.voter.address))), - provider, + Array.from(new Set(votes?.map(({ voter }) => voter.address))), + client, ); - let currentQuorum = await proposal.getCurrentQuorum(); - let requiredQuorum = await proposal.getRequiredQuorum(); + const isExecuted = await proposal.getIsExecuted(); + const currentQuorum = await proposal.getCurrentQuorum(); + const requiredQuorum = await proposal.getRequiredQuorum(); const results = await proposal.getResults(); + const isActive = await proposal.getIsActive(); + const createdBy = await proposal.getCreatedBy(); - const proposalConfig = proposalConfigs[id]; + const accountBallot = account + ? (await proposal.getVote({ account }))?.ballot + : undefined; - // Hotfix for correct vote display of gsc - // TODO @cashd: add parameter to voting vault configs for voting power decimals - if (type === "gsc") { - currentQuorum = parseUnits(currentQuorum).toString(); - requiredQuorum = requiredQuorum - ? parseUnits(requiredQuorum).toString() - : null; - votes = votes.map((vote) => ({ - ...vote, - power: parseUnits(vote.power).toString(), - })); - } + const proposalConfig = votingConfig?.proposals[String(id)]; + const executedTransaction = await proposal.getExecutedTransaction(); return { - type, + proposalExists: !!proposal, + isGsc, votingContractName, status: getProposalStatus({ - isExecuted: await proposal.getIsExecuted(), - lastCallDate: lastCallAtDate, + isExecuted, + lastCallDate, currentQuorum, requiredQuorum, results, }), - isActive: await proposal.getIsActive(), + isActive: isActive ?? false, currentQuorum, requiredQuorum, - createdAtBlock, - createdBy: await proposal.getCreatedBy(), + createdAtBlock: proposal.created, + createdBy: createdBy?.address, createdAtDate, endsAtDate, unlockedAtDate, - lastCallAtDate: lastCallAtDate, + lastCallDate, votes, voterEnsRecords, - createdTransactionHash, - accountBallot: account - ? (await proposal.getVote(account))?.ballot - : undefined, - descriptionURL: proposalConfig?.descriptionURL ?? null, - paragraphSummary: proposalConfig?.paragraphSummary ?? null, + createdTransactionHash: createdTransaction?.hash, + accountBallot, + descriptionURL: proposalConfig?.descriptionURL, + paragraphSummary: proposalConfig?.paragraphSummary, title: proposalConfig?.title, - executedTransactionHash: - await proposal.getExecutedTransactionHash(), + executedTransactionHash: executedTransaction?.hash, }; + // return "ProposalDetailsPageData"; } : undefined, }); + + return { + // proposalExists: data?.proposalExists ?? false, + data, + status, + }; } /** @@ -371,12 +317,12 @@ function useProposalDetailsPageData( */ // TODO: This function breaks the build when only the generic signature is used. // The overload signature fixes the build and maintains a strong return type. -function dedupeVotes(votes: T): T; -function dedupeVotes(votes: Vote[] | undefined): Vote[] | undefined { +function dedupeVotes(votes: T): T; +function dedupeVotes(votes: ReadVote[] | undefined): ReadVote[] | undefined { if (!votes) { return votes; } - const byVoterAddress: Record = {}; + const byVoterAddress: Record = {}; for (const vote of votes) { byVoterAddress[vote.voter.address] = vote; } diff --git a/apps/council-ui/pages/proposals/index.tsx b/apps/council-ui/pages/proposals/index.tsx index 2c7791f8..1c50811d 100644 --- a/apps/council-ui/pages/proposals/index.tsx +++ b/apps/council-ui/pages/proposals/index.tsx @@ -1,21 +1,20 @@ -import { getBlockDate } from "@council/sdk"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; import assertNever from "assert-never"; -import { parseEther } from "ethers/lib/utils"; import { ReactElement } from "react"; -import { councilConfigs } from "src/config/council.config"; -import { ProposalConfig } from "src/config/CouncilConfig"; -import { getProposalStatus } from "src/proposals/getProposalStatus"; import { ExternalInfoCard } from "src/ui/base/information/ExternalInfoCard"; import { Page } from "src/ui/base/Page"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { getBlockDate } from "src/ui/base/utils/getBlockDate"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useReadGscVoting } from "src/ui/council/hooks/useReadGscVoting"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { ProposalRowData, ProposalsTable, } from "src/ui/proposals/ProposalTable/ProposalsTable"; import { ProposalsTableSkeleton } from "src/ui/proposals/ProposalTable/ProposalsTableSkeleton"; -import { useAccount } from "wagmi"; +import { getProposalStatus } from "src/utils/getProposalStatus"; +import { useAccount, usePublicClient } from "wagmi"; export default function ProposalsPage(): ReactElement { const { address } = useAccount(); @@ -27,7 +26,7 @@ export default function ProposalsPage(): ReactElement { {(() => { switch (status) { - case "loading": + case "pending": return (
@@ -37,8 +36,8 @@ export default function ProposalsPage(): ReactElement { case "error": return (
- - {error ? (error as string).toString() : "Unknown error"} + + {error ? String(error) : "Unknown error"}
); @@ -71,15 +70,17 @@ export default function ProposalsPage(): ReactElement { } function useProposalsPageData( - account: string | undefined, + account: `0x${string}` | undefined, ): UseQueryResult { - const { context, coreVoting, gscVoting } = useCouncil(); - const chainId = useChainId(); - const proposalsConfig = councilConfigs[chainId].coreVoting.proposals; - const gscProposalsConfig = councilConfigs[chainId].gscVoting?.proposals; + const coreVoting = useReadCoreVoting(); + const gscVoting = useReadGscVoting(); + const chainId = useSupportedChainId(); + const config = useCouncilConfig(); + const client = usePublicClient(); + return useQuery({ - queryKey: ["proposalsPage", account], - queryFn: async () => { + queryKey: ["proposalsPage", account, chainId], + queryFn: async (): Promise => { let allProposals = await coreVoting.getProposals(); if (gscVoting) { @@ -89,48 +90,50 @@ function useProposalsPageData( return await Promise.all( allProposals.map(async (proposal) => { - let proposalConfig: ProposalConfig | undefined; - if (proposal.votingContract.address === gscVoting?.address) { - proposalConfig = gscProposalsConfig?.[proposal.id]; - } else { - proposalConfig = proposalsConfig[proposal.id]; - } - - const createdBlock = await proposal.getCreatedBlock(); - const expirationBlock = await proposal.getExpirationBlock(); - const votingEnds = expirationBlock - ? await getBlockDate(expirationBlock, context.provider, { - estimateFutureDates: true, - }) - : null; + const vote = account + ? await proposal.getVote({ account }) + : undefined; + + const currentQuorum = await proposal.getCurrentQuorum(); + + const requiredQuorum = await proposal.getRequiredQuorum(); + const isExecuted = await proposal.getIsExecuted(); + const results = await proposal.getResults(); + const lastCall = await proposal.getLastCallBlock(); const lastCallDate = lastCall - ? await getBlockDate(lastCall, context.provider, { - estimateFutureDates: true, - }) - : null; - const currentQuorum = await proposal.getCurrentQuorum(); - const vote = account ? await proposal.getVote(account) : null; - return { - status: getProposalStatus({ - isExecuted: await proposal.getIsExecuted(), - currentQuorum, - lastCallDate, - requiredQuorum: await proposal.getRequiredQuorum(), - results: await proposal.getResults(), - }), - votingContractAddress: proposal.votingContract.address, - votingContractName: proposal.votingContract.name, + ? await getBlockDate(lastCall, client) + : undefined; + + const createdDate = await getBlockDate(proposal.created, client); + const votingEnds = await getBlockDate(proposal.expiration, client); + + const status = getProposalStatus({ + isExecuted, + currentQuorum, + lastCallDate, + requiredQuorum, + results, + }); + + const isGsc = proposal.coreVoting.address === gscVoting?.address; + const proposalConfig = isGsc + ? config.gscVoting?.proposals[String(proposal.id)] + : config.coreVoting.proposals[String(proposal.id)]; + + const result: ProposalRowData = { + status, + coreVotingAddress: proposal.coreVoting.address, + votingContractName: proposal.coreVoting.name, id: proposal.id, - created: - createdBlock && - (await getBlockDate(createdBlock, context.provider)), + created: createdDate, votingEnds, currentQuorum, - ballot: vote && parseEther(vote.power).gt(0) ? vote.ballot : null, + ballot: vote && vote.power > BigInt(0) ? vote.ballot : undefined, sentenceSummary: proposalConfig?.sentenceSummary, title: proposalConfig?.title, }; + return result; }), ); }, diff --git a/apps/council-ui/pages/vaults/details.tsx b/apps/council-ui/pages/vaults/details.tsx index af471ba3..5e2aa48b 100644 --- a/apps/council-ui/pages/vaults/details.tsx +++ b/apps/council-ui/pages/vaults/details.tsx @@ -1,22 +1,19 @@ import { useRouter } from "next/router"; import { ReactElement } from "react"; import { Page } from "src/ui/base/Page"; -import { useChainId } from "src/ui/network/useChainId"; +import { useVaultConfig } from "src/ui/config/hooks/useVaultConfig"; import { FrozenLockingVaultDetails } from "src/ui/vaults/frozenLockingVault/FrozenLockingVaultDetails"; import { GenericVaultDetails } from "src/ui/vaults/genericVault/GenericVaultDetails"; -import { GSCVaultDetails } from "src/ui/vaults/gscVault/GSCVaultDetails"; +import { GscVaultDetails } from "src/ui/vaults/gscVault/GSCVaultDetails"; import { LockingVaultDetails } from "src/ui/vaults/lockingVault/LockingVaultDetails"; import { VestingVaultDetails } from "src/ui/vaults/vestingVault/VestingVaultDetails"; -import { getVaultConfig } from "src/vaults/vaults"; +// import { VestingVaultDetails } from"src/ui/vaults/vestingVault/VestingVaultDetails"; -export default function Vault(): ReactElement { - const { - query: { address }, - replace, - } = useRouter(); +export default function VaultPage(): ReactElement { + const { query, replace } = useRouter(); + const address = query.address as `0x${string}` | undefined; - const chainId = useChainId(); - const vaultConfig = getVaultConfig(address?.toString() || "", chainId); + const vaultConfig = useVaultConfig(address); if (!address || !vaultConfig) { replace("/vaults"); @@ -25,24 +22,24 @@ export default function Vault(): ReactElement { return ( {(() => { - if (!vaultConfig) { + if (!address || !vaultConfig) { return; } switch (vaultConfig.type) { case "FrozenLockingVault": - return ; + return ; case "LockingVault": - return ; + return ; case "VestingVault": - return ; + return ; case "GSCVault": - return ; + return ; default: - return ; + return ; } })()} diff --git a/apps/council-ui/pages/vaults/index.tsx b/apps/council-ui/pages/vaults/index.tsx index c19f48de..01e12959 100644 --- a/apps/council-ui/pages/vaults/index.tsx +++ b/apps/council-ui/pages/vaults/index.tsx @@ -1,15 +1,16 @@ +import { ReadLockingVault, ReadVestingVault } from "@delvtech/council-viem"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; import { ReactElement } from "react"; import { ExternalInfoCard } from "src/ui/base/information/ExternalInfoCard"; import { Page } from "src/ui/base/Page"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useReadGscVoting } from "src/ui/council/hooks/useReadGscVoting"; import { GenericVaultCard, GenericVaultCardSkeleton, } from "src/ui/vaults/GenericVaultCard"; -import { GSCVaultPreviewCard } from "src/ui/vaults/gscVault/GSCVaultPreviewCard/GSCVaultPreviewCard"; -import { getVaultConfig } from "src/vaults/vaults"; +import { GSCVaultPreviewCard } from "src/ui/vaults/gscVault/GscVaultPreviewCard"; import { useAccount } from "wagmi"; export default function VaultsPage(): ReactElement { @@ -28,7 +29,7 @@ export default function VaultsPage(): ReactElement {

-
+
{status === "success" ? ( data.map((vault) => { switch (vault.name) { @@ -64,7 +65,7 @@ export default function VaultsPage(): ReactElement { )}
-
+
=> { - let allVaults = coreVoting.vaults; - if (gscVoting) { - allVaults = [...allVaults, ...gscVoting.vaults]; - } + queryFn: async (): Promise => { + const data: VaultData[] = []; + + // core voting vaults + for (const vault of coreVoting.vaults) { + const vaultConfig = config.coreVoting.vaults.find( + ({ address }) => address === vault.address, + ); + + let tvp: bigint | undefined = undefined; + if ( + vault instanceof ReadLockingVault || + vault instanceof ReadVestingVault + ) { + tvp = await vault.getTotalVotingPower(); + } - return Promise.all( - allVaults.map(async (vault) => { - const vaultConfig = getVaultConfig(vault.address, chainId); + data.push({ + address: vault.address, + name: vaultConfig?.name || vault.name, + tvp, + votingPower: account && (await vault.getVotingPower({ account })), + sentenceSummary: vaultConfig?.sentenceSummary, + }); + } - return { + // gsc vault + if (gscVoting) { + for (const vault of gscVoting.vaults) { + data.push({ address: vault.address, - name: vaultConfig?.name || vault.name, - tvp: await vault.getTotalVotingPower?.(), - votingPower: account && (await vault.getVotingPower(account)), - sentenceSummary: vaultConfig?.sentenceSummary, - }; - }), - ); + name: config.gscVoting!.vault.name, + tvp: undefined, + votingPower: account && (await vault.getVotingPower({ account })), + sentenceSummary: config.gscVoting!.vault.sentenceSummary, + }); + } + } + + return data; }, }); } diff --git a/apps/council-ui/pages/voters/details.tsx b/apps/council-ui/pages/voters/details.tsx index e9926380..f13b18f8 100644 --- a/apps/council-ui/pages/voters/details.tsx +++ b/apps/council-ui/pages/voters/details.tsx @@ -1,37 +1,37 @@ -import { Vote, Voter } from "@council/sdk"; +import { ReadVote, ReadVotingVault } from "@delvtech/council-viem"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { getAddress } from "ethers/lib/utils"; import { useRouter } from "next/router"; import { ReactElement } from "react"; import Skeleton from "react-loading-skeleton"; -import { makeEtherscanAddressURL } from "src/etherscan/makeEtherscanAddressURL"; import { Routes } from "src/routes"; import { Breadcrumbs } from "src/ui/base/Breadcrumbs"; import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; import { Page } from "src/ui/base/Page"; import { asyncFilter } from "src/ui/base/utils/asyncFilter"; -import { useCouncil } from "src/ui/council/useCouncil"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; import { AddressWithEtherscan } from "src/ui/ens/AdddressWithEtherscan"; -import { useChainId } from "src/ui/network/useChainId"; -import { useGSCStatus } from "src/ui/vaults/gscVault/useGSCStatus"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { useGscStatus } from "src/ui/vaults/gscVault/hooks/useGscStatus"; import { VoterStatsRowSkeleton } from "src/ui/voters/skeletons/VoterStatsRowSkeleton"; import { VoterStatsRow } from "src/ui/voters/VoterStatsRow"; import { VoterVaultsList } from "src/ui/voters/VoterVaultsList"; import { VoterVaultsListSkeleton } from "src/ui/voters/VoterVaultsListSkeleton"; import { VotingHistoryTableSkeleton } from "src/ui/voters/VotingHistorySkeleton"; import { VotingHistoryTable } from "src/ui/voters/VotingHistoryTable"; -import { GSCStatus } from "src/vaults/gscVault/types"; +import { makeEtherscanAddressURL } from "src/utils/etherscan/makeEtherscanAddressURL"; +import { GscStatus } from "src/utils/gscVault/types"; +import { getAddress } from "viem"; import { useEnsName } from "wagmi"; -export default function VoterDetailsPage(): ReactElement { +export default function VoterPage(): ReactElement { const { query } = useRouter(); - const { address } = query as { address: string | undefined }; - const { coreVoting } = useCouncil(); - const { data, status } = useVoterData(address); - const displayName = useDisplayName(address); + const { address: account } = query as { address: `0x${string}` | undefined }; + const coreVoting = useReadCoreVoting(); + const { data, status } = useVoterData(account); + const displayName = useDisplayName(account); - if (!address) { + if (!account) { return ( ); @@ -48,7 +48,7 @@ export default function VoterDetailsPage(): ReactElement { crumbs={[{ href: Routes.VOTERS, content: "All voters" }]} currentPage={displayName} /> - +
{status === "success" ? ( @@ -68,7 +68,7 @@ export default function VoterDetailsPage(): ReactElement {

Voting Vaults ({numVotingVaults})

- +
) : (
@@ -79,7 +79,7 @@ export default function VoterDetailsPage(): ReactElement {
)} -
+

Voting History ({data?.votingHistory.length ?? 0})

@@ -96,24 +96,23 @@ export default function VoterDetailsPage(): ReactElement { } interface VoterHeaderProps { - address: string; + address: `0x${string}`; } function VoterHeader({ address }: VoterHeaderProps) { - const chainId = useChainId(); + const chainId = useSupportedChainId(); const { data: ens, isLoading: ensLoading } = useEnsName({ - address: getAddress(address as string), - enabled: !!address, + address: getAddress(address), }); if (ensLoading) { return (
-

+

-

+

@@ -134,57 +133,63 @@ function VoterHeader({ address }: VoterHeaderProps) {
) : ( -

+

); } interface VoterData { - gscStatus: GSCStatus | null; + gscStatus: GscStatus | undefined; proposalsCreated: number; - votingHistory: Vote[]; - votingPower: string; + votingHistory: ReadVote[]; + votingPower: bigint; percentOfTVP: number; } export function useVoterData( - address: string | undefined, + account: `0x${string}` | undefined, ): UseQueryResult { - const { context, coreVoting } = useCouncil(); - const { data: gscStatus } = useGSCStatus(address); + const coreVoting = useReadCoreVoting(); + const { gscStatus } = useGscStatus(account); - const queryEnabled = !!address && !!gscStatus; + const queryEnabled = !!account && !!gscStatus; return useQuery({ - queryKey: ["voter-details", address, gscStatus], + queryKey: ["voter-details", account, gscStatus], enabled: queryEnabled, queryFn: queryEnabled ? async (): Promise => { - const voter = new Voter(address, context); // display voting history in reverse chronological order, ie: most // recent proposals first // TODO: Where does GSC Voting history fit in this? const votingHistory = [ - ...(await voter.getVotes(coreVoting.address)), + ...(await coreVoting.getVotes({ account })), ].reverse(); - const votingPower = await voter.getVotingPower( - coreVoting.vaults.map((vault) => vault.address), - ); - const tvp = await coreVoting.getTotalVotingPower(); + + const votingPower = await coreVoting.getVotingPower({ account }); + let tvp = 0n; + + for (const vault of coreVoting.vaults) { + if (hasTotalVotingPower(vault)) { + tvp += await vault.getTotalVotingPower(); + } + } const coreVotingProposals = await coreVoting.getProposals(); const proposalsCreatedByAddress = await asyncFilter( coreVotingProposals, async (proposal) => { const createdBy = await proposal.getCreatedBy(); - return createdBy === address; + return createdBy?.address === account; }, ); return { votingHistory, votingPower, - percentOfTVP: +((+votingPower / +tvp) * 100).toFixed(1), + percentOfTVP: +((Number(votingPower) / Number(tvp)) * 100).toFixed( + 1, + ), gscStatus, proposalsCreated: proposalsCreatedByAddress.length, }; @@ -193,3 +198,12 @@ export function useVoterData( refetchOnWindowFocus: false, }); } + +function hasTotalVotingPower( + vault: ReadVotingVault, +): vault is ReadVotingVault & { getTotalVotingPower: () => Promise } { + return ( + "getTotalVotingPower" in vault && + typeof vault.getTotalVotingPower === "function" + ); +} diff --git a/apps/council-ui/pages/voters/index.tsx b/apps/council-ui/pages/voters/index.tsx index 20bde2bc..ec5a94e4 100644 --- a/apps/council-ui/pages/voters/index.tsx +++ b/apps/council-ui/pages/voters/index.tsx @@ -1,19 +1,26 @@ +import { + ReadVotingVault, + VoterPowerBreakdown, + VoterWithPower, +} from "@delvtech/council-viem"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; import { ReactElement, useMemo, useState } from "react"; -import { getBulkEnsRecords } from "src/ens/getBulkEnsRecords"; import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; import { Page } from "src/ui/base/Page"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { GSCOnlyToggle } from "src/ui/voters/GSCOnlyToggle"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { useReadGscVault } from "src/ui/vaults/gscVault/hooks/useReadGscVault"; +import { GSCOnlyToggle } from "src/ui/voters/GscOnlyToggle"; import { useVotersSearch } from "src/ui/voters/hooks/useVotersSearch"; import { VoterRowData } from "src/ui/voters/types"; import { VoterList } from "src/ui/voters/VoterList/VoterList"; import { VoterListSkeleton } from "src/ui/voters/VoterList/VoterListSkeleton"; +import { getBulkEnsRecords } from "src/utils/getBulkEnsRecords"; +import { usePublicClient } from "wagmi"; const DEFAULT_LIST_SIZE = 100; -export default function Voters(): ReactElement { +export default function VotersPage(): ReactElement { const { data: voters, status, error } = useVoterPageData(); const { results, search } = useVotersSearch(voters); const [listSize, setListSize] = useState(DEFAULT_LIST_SIZE); @@ -32,7 +39,7 @@ export default function Voters(): ReactElement { return ( -
+

Voters

@@ -46,7 +53,7 @@ export default function Voters(): ReactElement { search(e.target.value as string)} disabled={status !== "success"} /> @@ -71,32 +78,48 @@ export default function Voters(): ReactElement { ); } -function useVoterPageData(): UseQueryResult { - const { - coreVoting, - gscVoting, - context: { provider }, - } = useCouncil(); - const chainId = useChainId(); +export function useVoterPageData(): UseQueryResult { + const coreVoting = useReadCoreVoting(); + const gscVault = useReadGscVault(); + const chainId = useSupportedChainId(); + const publicClient = usePublicClient(); return useQuery({ queryKey: ["voter-list-page", chainId], queryFn: async () => { - const voterPowerBreakdowns = await coreVoting.getVotingPowerBreakdown(); - const gscMembers = (await gscVoting?.getVoters()) || []; + const voterPowerBreakdowns: VoterPowerBreakdown[] = []; + + for (const vault of coreVoting.vaults) { + if (hasVotingPowerBreakdown(vault)) { + const breakdown = await vault.getVotingPowerBreakdown(); + voterPowerBreakdowns.push(...breakdown); + } + } + + const mergedBreakdowns = mergeVoterPowerBreakdowns(voterPowerBreakdowns); + + const gscMembers = (await gscVault?.getVoters()) || []; const gscMemberAddresses = gscMembers.map(({ address }) => address); const ensRecords = await getBulkEnsRecords( voterPowerBreakdowns.map(({ voter }) => voter.address), - provider, + publicClient, ); - return voterPowerBreakdowns.map(({ voter, votingPower, delegators }) => ({ - address: voter.address, - ensName: ensRecords[voter.address], - votingPower, - numberOfDelegators: delegators.length, - isGSCMember: gscMemberAddresses.includes(voter.address), - })); + console.log({ + ensRecords, + }); + + return mergedBreakdowns.map( + ({ voter, votingPower, votingPowerByDelegator }) => { + return { + address: voter.address, + ensName: ensRecords[voter.address], + votingPower, + numberOfDelegators: votingPowerByDelegator.length, + isGSCMember: gscMemberAddresses.includes(voter.address), + }; + }, + ); }, // This is an expensive query and do not want to refetch. @@ -104,3 +127,80 @@ function useVoterPageData(): UseQueryResult { staleTime: Infinity, }); } + +function hasVotingPowerBreakdown( + vault: ReadVotingVault, +): vault is ReadVotingVault & { + getVotingPowerBreakdown: () => Promise; +} { + return ( + "getVotingPowerBreakdown" in vault && + typeof vault.getVotingPowerBreakdown === "function" + ); +} + +// TODO: This was a method on the old Voting Contract type, but depended on +// vaults having an optional method. It seems like a combined voter list would +// be a common use case, so this might still belong in the SDK somewhere. +function mergeVoterPowerBreakdowns( + breakdowns: VoterPowerBreakdown[], +): VoterPowerBreakdown[] { + // create a temp object to merge unique addresses + const breakdownsByVoter: Record< + `0x${string}`, + VoterWithPower & { + fromDelegators: bigint; + byDelegator: Record<`0x${string}`, VoterWithPower>; + } + > = {}; + + for (const { + voter, + votingPower, + votingPowerByDelegator, + votingPowerFromAllDelegators, + } of breakdowns) { + const breakdown = breakdownsByVoter[voter.address]; + + if (!breakdown) { + // Add a breakdown for this voter in the unique list + breakdownsByVoter[voter.address] = { + voter, + votingPower, + fromDelegators: votingPowerFromAllDelegators, + // key delegators by their address + byDelegator: Object.fromEntries( + votingPowerByDelegator.map((delegatorWithPower) => [ + delegatorWithPower.voter.address, + delegatorWithPower, + ]), + ), + }; + } else { + // if a breakdown for this voter already exists, then merge with the + // current one. + breakdown.votingPower += votingPower; + breakdown.fromDelegators += votingPowerFromAllDelegators; + + for (const delegatorWithPower of votingPowerByDelegator) { + if (!breakdown.byDelegator[delegatorWithPower.voter.address]) { + // Add the delegator with power to the breakdown in the unique list + breakdown.byDelegator[delegatorWithPower.voter.address] = + delegatorWithPower; + } else { + breakdown.byDelegator[delegatorWithPower.voter.address].votingPower += + delegatorWithPower.votingPower; + } + } + } + } + + return Object.values(breakdownsByVoter).map( + ({ voter, votingPower, fromDelegators, byDelegator }) => ({ + voter, + votingPower, + votingPowerFromAllDelegators: fromDelegators, + votingPowerByDelegator: Object.values(byDelegator), + }), + ); +} diff --git a/apps/council-ui/scripts/prebuild.sh b/apps/council-ui/scripts/prebuild.sh new file mode 100644 index 00000000..8124ea6b --- /dev/null +++ b/apps/council-ui/scripts/prebuild.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e + +# Set the environment variables from the .env file if it exists +if [ -f .env ]; then + set -o allexport + source .env + set +o allexport +fi + +# Get the WalletConnect domain verification code from the +# WALLET_CONNECT_DOMAIN_VERIFICATION_CODE environment variable +verification_code=$WALLET_CONNECT_DOMAIN_VERIFICATION_CODE + +# Save the verification code to Public/.well-known/walletconnect.txt +if [ -n "$verification_code" ]; then + echo "Saving verification code to public/.well-known/walletconnect.txt" + mkdir -p public/.well-known + echo "$verification_code" >public/.well-known/walletconnect.txt +else + echo "Verification code is empty. Skipping." +fi diff --git a/apps/council-ui/src/clients/council.ts b/apps/council-ui/src/clients/council.ts deleted file mode 100644 index d14e82a5..00000000 --- a/apps/council-ui/src/clients/council.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - CouncilContext, - GSCVault, - GSCVotingContract, - LockingVault, - VestingVault, - VotingContract, - VotingVault, -} from "@council/sdk"; -import { councilConfigs, SupportedChainId } from "src/config/council.config"; -import { provider as getProvider } from "src/provider"; - -export interface CouncilClient { - context: CouncilContext; - coreVoting: VotingContract; - gscVoting?: GSCVotingContract; -} - -export function getCouncilClient(chainId: SupportedChainId): CouncilClient { - const config = councilConfigs[chainId]; - if (!config) { - throw new Error( - `Attempted to create a Council client with Chain ID ${chainId}, but no config was found. See src/config.`, - ); - } - - const provider = getProvider({ chainId }); - const context = new CouncilContext(provider); - - const coreVotingVaults = config.coreVoting.vaults.map(({ type, address }) => { - switch (type) { - case "FrozenLockingVault": - case "LockingVault": - return new LockingVault(address, context); - case "VestingVault": - return new VestingVault(address, context); - case "GSCVault": - return new GSCVault(address, context); - default: - return new VotingVault(address, context); - } - }); - - const client: CouncilClient = { - context, - coreVoting: new VotingContract( - config.coreVoting.address, - coreVotingVaults, - context, - ), - }; - - if (config.gscVoting) { - client.gscVoting = new GSCVotingContract( - config.gscVoting.address, - new GSCVault(config.gscVoting.vaults[0].address, context), - context, - ); - } - - return client; -} diff --git a/apps/council-ui/src/clients/wagmi.ts b/apps/council-ui/src/clients/wagmi.ts deleted file mode 100644 index 588b5e45..00000000 --- a/apps/council-ui/src/clients/wagmi.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { provider } from "src/provider"; -import { connectors } from "src/wallet/connectors"; -import { createClient } from "wagmi"; - -export const wagmiClient = createClient({ - autoConnect: true, - connectors, - provider, -}); diff --git a/apps/council-ui/src/config/CouncilConfig.ts b/apps/council-ui/src/config/CouncilConfig.ts index 905708bf..7c6df908 100644 --- a/apps/council-ui/src/config/CouncilConfig.ts +++ b/apps/council-ui/src/config/CouncilConfig.ts @@ -11,8 +11,9 @@ export interface CouncilConfig { */ chainId: number; timelock: ContractConfig; - coreVoting: VotingContractConfig; - gscVoting?: VotingContractConfig; + coreVoting: CoreVotingContractConfig; + gscVoting?: GscVotingContractConfig; + airdrop?: AirdropConfig; /** * Optional Push Integration @@ -22,16 +23,23 @@ export interface CouncilConfig { } export interface ContractConfig { - address: string; + address: `0x${string}`; } -export interface VotingContractConfig extends ContractConfig { +export interface BaseVotingContractConfig extends ContractConfig { name: string; descriptionURL: string; - vaults: VaultConfig[]; proposals: Record; } +export interface CoreVotingContractConfig extends BaseVotingContractConfig { + vaults: VaultConfig[]; +} + +export interface GscVotingContractConfig extends BaseVotingContractConfig { + vault: VaultConfig; +} + export interface VaultConfig extends ContractConfig { type: | "LockingVault" @@ -69,6 +77,27 @@ export interface ProposalConfig { calldatas: string[]; } +interface AirdropConfig extends ContractConfig { + /** + * The base url for the airdrop data api. + * + * if the base url is https://cdn.io/airdrop/ then the airdrop data for + * the address `0x123` will be fetched from https://cdn.io/airdrop/0x123 + * + * The data returned from the api should be a json object matching the + * following example: + * + * ```json + * { + * "amount": "100.5", + * "proof": ["0x123", "0x456", "0x789"] + * } + * ``` + * + */ + baseDataURL: string; +} + interface PushSettings { /** * The address of the channel to subscribe to diff --git a/apps/council-ui/src/config/goerli.ts b/apps/council-ui/src/config/goerli.ts index 2040de47..7397445c 100644 --- a/apps/council-ui/src/config/goerli.ts +++ b/apps/council-ui/src/config/goerli.ts @@ -1,51 +1,25 @@ -import { goerliDeployments } from "@council/deploy"; import { CouncilConfig } from "src/config/CouncilConfig"; -const { contracts: goerliContracts } = - goerliDeployments[goerliDeployments.length - 1]; - -// Find the deployed contract addresses. These are safe to cast as strings -// because we know the deployment contains these contracts in the -// @council/deploy project. -const goerliTimelockAddress = goerliContracts.find( - ({ name }) => name === "Timelock", -)?.address as string; -const goerliCoreVotingAddress = goerliContracts.find( - ({ name }) => name === "CoreVoting", -)?.address as string; -const lockingVaultProxyAddress = goerliContracts.find( - ({ name }) => name === "LockingVaultProxy", -)?.address as string; -const vestingVaultProxyAddress = goerliContracts.find( - ({ name }) => name === "VestingVaultProxy", -)?.address as string; -const gscVotingAddress = goerliContracts.find( - ({ name }) => name === "GSCCoreVoting", -)?.address as string; -const goerliGSCVaultAddress = goerliContracts.find( - ({ name }) => name === "GSCVault", -)?.address as string; - export const goerliCouncilConfig: CouncilConfig = { version: "", chainId: 5, timelock: { - address: goerliTimelockAddress, + address: "0x7e7eEc56D2C53E9203d5cF48E01560Da52ff5214", }, coreVoting: { name: "Core Voting", - address: goerliCoreVotingAddress, + address: "0x1dcFAD45c31e0b4d9A3E3cb05013023d9A9Bbd11", descriptionURL: "https://moreinfo.com", vaults: [ { name: "Locking Vault", - address: lockingVaultProxyAddress, + address: "0x4520da1DDFad1F48536A2a21CF5923dd2c2247e9", type: "LockingVault", descriptionURL: "https://moreinfo.com", }, { name: "Vesting Vault", - address: vestingVaultProxyAddress, + address: "0x6dbE1aF34649d1efe5f6a708A1CF93bF2F422250", type: "VestingVault", descriptionURL: "https://moreinfo.com", }, @@ -74,22 +48,25 @@ export const goerliCouncilConfig: CouncilConfig = { gscVoting: { name: "GSC", - address: gscVotingAddress, + address: "0xd3f84fc6f50e421502e9f8e36b519E0D156BE6C8", descriptionURL: "https://moreinfo.com", - vaults: [ - { - name: "GSC Vault", - address: goerliGSCVaultAddress, - type: "GSCVault", - descriptionURL: "https://moreinfo.com", - }, - ], + vault: { + name: "GSC Vault", + address: "0xCFb73f8D5D29e5d936AdF86A8A739AE12b882E8D", + type: "GSCVault", + descriptionURL: "https://moreinfo.com", + }, proposals: { 0: { descriptionURL: "", targets: [], calldatas: [] }, 1: { descriptionURL: "", targets: [], calldatas: [] }, }, }, + airdrop: { + address: "0x8278a7951f9E3C88B1817223603635981D65bC63", + baseDataURL: "/api/airdrop", + }, + /** * Optional Push integration */ diff --git a/apps/council-ui/src/config/localhost.ts b/apps/council-ui/src/config/localhost.ts index 474295c9..504a9f21 100644 --- a/apps/council-ui/src/config/localhost.ts +++ b/apps/council-ui/src/config/localhost.ts @@ -2,22 +2,39 @@ import { CouncilConfig } from "src/config/CouncilConfig"; export const localhostCouncilConfig: CouncilConfig = { version: "", - chainId: 31337, + chainId: 1337, timelock: { address: "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", }, coreVoting: { name: "Core Voting", - address: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + address: "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", descriptionURL: "https://moreinfo.com", vaults: [ { name: "Locking Vault", - address: "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + address: "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", type: "LockingVault", descriptionURL: "https://moreinfo.com", }, + { + name: "Locking Vault 2", + address: "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + type: "LockingVault", + descriptionURL: "https://moreinfo.com", + }, + { + name: "Vesting Vault", + address: "0x59b670e9fa9d0a427751af201d676719a970857b", + type: "VestingVault", + descriptionURL: "https://moreinfo.com", + }, ], proposals: {}, }, + + airdrop: { + address: "0x0165878a594ca255338adfa4d48449f69242eb8f", + baseDataURL: "/api/airdrop", + }, }; diff --git a/apps/council-ui/src/config/mainnet.ts b/apps/council-ui/src/config/mainnet.ts index 1c0e6ccc..cf37c233 100644 --- a/apps/council-ui/src/config/mainnet.ts +++ b/apps/council-ui/src/config/mainnet.ts @@ -203,20 +203,18 @@ export const mainnetCouncilConfig: CouncilConfig = { name: "GSC", address: "0x40309f197e7f94B555904DF0f788a3F48cF326aB", descriptionURL: "https://moreinfo.com", - vaults: [ - { - name: "GSC Vault", - address: "0xcA870E8aa4FCEa85b5f0c6F4209C8CBA9265B940", - type: "GSCVault", + vault: { + name: "GSC Vault", + address: "0xcA870E8aa4FCEa85b5f0c6F4209C8CBA9265B940", + type: "GSCVault", - sentenceSummary: - "The Governance Steering Council (GSC) vault gives one vote to each member that has reached an established threshold of delegated voting power defined by the DAO.", - paragraphSummary: - "The Governance Steering Council (GSC) vault gives one vote to each member that has reached an established threshold of delegated voting power defined by the DAO. Council members can create, vote, and execute proposals if the GSC quorum is met, with quorum set by the DAO.", - descriptionURL: - "https://docs.element.fi/governance-council/council-protocol-smart-contracts/voting-vaults/governance-steering-council-gsc-vault", - }, - ], + sentenceSummary: + "The Governance Steering Council (GSC) vault gives one vote to each member that has reached an established threshold of delegated voting power defined by the DAO.", + paragraphSummary: + "The Governance Steering Council (GSC) vault gives one vote to each member that has reached an established threshold of delegated voting power defined by the DAO. Council members can create, vote, and execute proposals if the GSC quorum is met, with quorum set by the DAO.", + descriptionURL: + "https://docs.element.fi/governance-council/council-protocol-smart-contracts/voting-vaults/governance-steering-council-gsc-vault", + }, proposals: { 0: { descriptionURL: diff --git a/apps/council-ui/src/ens/getBulkEnsRecords.ts b/apps/council-ui/src/ens/getBulkEnsRecords.ts deleted file mode 100644 index cd5a9dac..00000000 --- a/apps/council-ui/src/ens/getBulkEnsRecords.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ENS } from "@ensdomains/ensjs"; -import { providers } from "ethers"; -import chunk from "lodash.chunk"; - -export type EnsRecords = Record; - -/** - * Fetches ENS names in bulk using MultiCall. - * Some addresses may not get resolved if the gas limit of the chunk was reached. - * This size can be tweaked the options. - * @param {Array} addresses - An array of addresses. - * @param {providers.Provider} addresses - Ethers provider. - * @returns {Record} A record of addresses to ens name. The name is nullable. - */ -export async function getBulkEnsRecords( - addresses: string[], - provider: providers.Provider, - options?: { chunkSize?: number }, -): Promise { - const ENSInstance = new ENS(); - await ENSInstance.setProvider(provider as providers.JsonRpcProvider); // safe to cast - - // spit array in chunks to paginate bulk requests - const chunkedAddresses = chunk(addresses, options?.chunkSize ?? 100); - - // fetch each paginated request - const chunkedResults = await Promise.all( - chunkedAddresses.map(async (chunk): Promise<[string, string | null][]> => { - // batch call of ens names using MultiCall - const batch = await ENSInstance.batch( - ...chunk.map((address) => { - return ENSInstance.getName.batch(address); - }), - ); - - // batch may not exist if gas limited was reached when reading - // TODO @cashd: investigate why certain addresses require more gas to read than others, by 10x deviation. - if (batch) { - return chunk.map((address, i) => { - return [address, batch[i]?.name ?? null]; - }); - } - - return chunk.map((address) => [address, null]); - }), - ); - - // construct the record - const records = Object.fromEntries(chunkedResults.flat()); - return records; -} diff --git a/apps/council-ui/src/lib/councilSdk.ts b/apps/council-ui/src/lib/councilSdk.ts new file mode 100644 index 00000000..aa14c4b6 --- /dev/null +++ b/apps/council-ui/src/lib/councilSdk.ts @@ -0,0 +1,3 @@ +import { createLruSimpleCache } from "@delvtech/council-viem"; + +export const sdkCache = createLruSimpleCache({ max: 500 }); diff --git a/apps/council-ui/src/lib/rainbowKit.ts b/apps/council-ui/src/lib/rainbowKit.ts new file mode 100644 index 00000000..7d3c5581 --- /dev/null +++ b/apps/council-ui/src/lib/rainbowKit.ts @@ -0,0 +1,17 @@ +import { getDefaultConfig } from "@rainbow-me/rainbowkit"; +import { chains, transports } from "src/lib/wagmi"; + +const projectId = process.env.NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID; + +if (!projectId) { + throw new Error( + "Missing WalletConnect project ID. Please set the NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID variable in your environment.", + ); +} + +export const wagmiConfig = getDefaultConfig({ + appName: "Council", + projectId, + chains: chains as any, + transports, +}); diff --git a/apps/council-ui/src/clients/reactQuery.ts b/apps/council-ui/src/lib/reactQuery.ts similarity index 100% rename from apps/council-ui/src/clients/reactQuery.ts rename to apps/council-ui/src/lib/reactQuery.ts diff --git a/apps/council-ui/src/lib/wagmi.ts b/apps/council-ui/src/lib/wagmi.ts new file mode 100644 index 00000000..c63d227e --- /dev/null +++ b/apps/council-ui/src/lib/wagmi.ts @@ -0,0 +1,23 @@ +import { councilConfigs } from "src/config/council.config"; +import { http } from "wagmi"; +import { goerli, hardhat, localhost, mainnet } from "wagmi/chains"; + +const configuredChainIds = Object.keys(councilConfigs); + +const allChains = [mainnet, goerli, hardhat, localhost]; +const rpcUrlsByChainId: Record = { + 1: process.env.NEXT_PUBLIC_MAINNET_RPC_URL, + 5: process.env.NEXT_PUBLIC_GOERLI_RPC_URL, + 1337: process.env.NEXT_PUBLIC_LOCAL_RPC_URL, + 31337: process.env.NEXT_PUBLIC_LOCAL_RPC_URL, +}; + +export const chains = Object.values(allChains).filter(({ id }) => + configuredChainIds.includes(String(id)), +); + +export const transports = Object.fromEntries( + chains.map(({ id }) => { + return [id, http(rpcUrlsByChainId[id])]; + }), +); diff --git a/apps/council-ui/src/provider.ts b/apps/council-ui/src/provider.ts deleted file mode 100644 index f2f2e598..00000000 --- a/apps/council-ui/src/provider.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { councilConfigs } from "src/config/council.config"; -import { allChains, ChainProviderFn, configureChains } from "wagmi"; -import { alchemyProvider } from "wagmi/providers/alchemy"; -import { jsonRpcProvider } from "wagmi/providers/jsonRpc"; - -const supportedChainIds = Object.keys(councilConfigs); - -const configuredChains = allChains.filter((chain) => { - // Wagmi has 2 chains with the 31337 id, Hardhat and Foundry. Calling - // configureChains with 2 chains using the same id will cause errors, so we - // filter them out here to make room for a custom one. - return chain.id !== 31337 && supportedChainIds.includes(`${chain.id}`); -}); - -// Add a general Localhost chain for 31337 if in development -if ( - supportedChainIds.includes("31337") && - process.env.NODE_ENV === "development" -) { - configuredChains.push({ - id: 31337, - name: "Localhost", - network: "localhost", - rpcUrls: { - default: process.env.NEXT_PUBLIC_LOCAL_RPC_URL || "http://127.0.0.1:8545", - }, - }); -} - -const configuredProviders = configuredChains.map((chain) => { - if (chain.id === 1) { - const mainnetAlchemyKey = process.env.NEXT_PUBLIC_MAINNET_ALCHEMY_KEY; - if (!mainnetAlchemyKey) { - console.error( - "Chain ID 1 (mainnet) exists in council.config.ts, but no provider was given, see .env", - ); - } - return alchemyProvider({ - apiKey: process.env.NEXT_PUBLIC_MAINNET_ALCHEMY_KEY, - }); - } - - if (chain.id === 5) { - const goerliAlchemyKey = process.env.NEXT_PUBLIC_GOERLI_ALCHEMY_KEY; - if (!goerliAlchemyKey) { - console.error( - "Chain ID 5 (goerli) exists in council.config.ts, but no provider was given, see .env", - ); - } - return alchemyProvider({ - apiKey: process.env.NEXT_PUBLIC_GOERLI_ALCHEMY_KEY, - }); - } - - if (chain.id === 31337) { - const provider = jsonRpcProvider({ - rpc: () => ({ http: chain.rpcUrls.default }), - }); - return provider; - } -}) as ChainProviderFn[]; // safe to cast - -/** - * Use configureChains from wagmi to specify providers for each chain at - * config-time. - * - * See: https://wagmi.sh/docs/providers/configuring-chains - */ -export const { provider, chains } = configureChains( - configuredChains, - // If a provider does not support a chain, it will fall back onto the next one - // in the array. - configuredProviders, -); diff --git a/apps/council-ui/src/routes.ts b/apps/council-ui/src/routes.ts index 1594669b..107cd068 100644 --- a/apps/council-ui/src/routes.ts +++ b/apps/council-ui/src/routes.ts @@ -7,14 +7,14 @@ export enum Routes { } export function makeProposalURL( - votingContractAddress: string, - id: number, + votingContractAddress: `0x${string}`, + id: bigint | number, ): UrlObject { return { pathname: "/proposals/details", query: { votingContract: votingContractAddress, - id, + id: String(id), }, }; } diff --git a/apps/council-ui/src/ui/airdrop/ClaimStep.tsx b/apps/council-ui/src/ui/airdrop/ClaimStep.tsx new file mode 100644 index 00000000..f09efb15 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/ClaimStep.tsx @@ -0,0 +1,53 @@ +import { ArrowLeftIcon, ArrowRightIcon } from "@heroicons/react/20/solid"; +import { ReactElement } from "react"; + +interface ClaimStepProps { + recipient: string | undefined; + setRecipient: (address: string) => void; + onBack: () => void; + onNext: () => void; +} + +export default function ClaimStep({ + recipient, + setRecipient, + onBack, + onNext, +}: ClaimStepProps): ReactElement { + return ( + <> +

+ + setRecipient(e.target.value)} + /> + +
+
+ + +
+ + ); +} diff --git a/apps/council-ui/src/ui/airdrop/ConfirmClaimStep.tsx b/apps/council-ui/src/ui/airdrop/ConfirmClaimStep.tsx new file mode 100644 index 00000000..beae3757 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/ConfirmClaimStep.tsx @@ -0,0 +1,60 @@ +import { ArrowLeftIcon, CheckIcon } from "@heroicons/react/20/solid"; +import { ReactElement } from "react"; +import Skeleton from "react-loading-skeleton"; +import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; +import { useTokenSymbol } from "src/ui/token/hooks/useTokenSymbol"; +import { useAirdropToken } from "./hooks/useAirdropToken"; +import { useClaimableAirdropAmount } from "./hooks/useClaimableAirdropAmount"; + +interface ConfirmClaimStepProps { + recipient: `0x${string}` | undefined; + onBack: () => void; + onConfirm: (() => void) | undefined; +} + +export default function ConfirmClaimStep({ + recipient, + onBack, + onConfirm, +}: ConfirmClaimStepProps): ReactElement { + const { claimableAmountFormatted } = useClaimableAirdropAmount(); + const { airdropToken } = useAirdropToken(); + const { symbol } = useTokenSymbol(airdropToken?.address); + const displayName = useDisplayName(recipient); + + return ( + <> +
+
+
Send
+
+ {claimableAmountFormatted && symbol ? ( + `${formatBalance(claimableAmountFormatted, 4)} ${symbol}` + ) : ( + + )} +
+
+
+
To
+
{displayName}
+
+
+
+ + +
+ + ); +} diff --git a/apps/council-ui/src/ui/airdrop/ConfirmDepositStep.tsx b/apps/council-ui/src/ui/airdrop/ConfirmDepositStep.tsx new file mode 100644 index 00000000..e493c079 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/ConfirmDepositStep.tsx @@ -0,0 +1,70 @@ +import { ArrowLeftIcon, CheckIcon } from "@heroicons/react/20/solid"; +import { ReactElement } from "react"; +import Skeleton from "react-loading-skeleton"; +import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; +import { useTokenSymbol } from "src/ui/token/hooks/useTokenSymbol"; +import { useAirdropToken } from "./hooks/useAirdropToken"; +import { useClaimableAirdropAmount } from "./hooks/useClaimableAirdropAmount"; + +interface ConfirmDepositStepProps { + account: `0x${string}` | undefined; + delegate?: `0x${string}`; + onBack: () => void; + onConfirm: (() => void) | undefined; +} + +export default function ConfirmDepositStep({ + account, + delegate, + onBack, + onConfirm, +}: ConfirmDepositStepProps): ReactElement { + const { claimableAmountFormatted } = useClaimableAirdropAmount(); + const { airdropToken } = useAirdropToken(); + const { symbol } = useTokenSymbol(airdropToken); + + const displayName = useDisplayName(account); + const delegateDisplayName = useDisplayName(delegate); + + return ( + <> +
+
+
Deposit
+
+ {claimableAmountFormatted && symbol ? ( + `${formatBalance(claimableAmountFormatted, 4)} ${symbol}` + ) : ( + + )} +
+
+
+
Credited To
+
{displayName}
+
+ {delegate && ( +
+
Voting power delegated to
+
{delegateDisplayName}
+
+ )} +
+
+ + +
+ + ); +} diff --git a/apps/council-ui/src/ui/airdrop/DepositOrClaimStep.tsx b/apps/council-ui/src/ui/airdrop/DepositOrClaimStep.tsx new file mode 100644 index 00000000..ac5ddeef --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/DepositOrClaimStep.tsx @@ -0,0 +1,72 @@ +import { BuildingLibraryIcon, WalletIcon } from "@heroicons/react/20/solid"; +import { ReactElement } from "react"; +import Skeleton from "react-loading-skeleton"; +import { useAirdropToken } from "src/ui/airdrop/hooks/useAirdropToken"; +import { useClaimableAirdropAmount } from "src/ui/airdrop/hooks/useClaimableAirdropAmount"; +import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { AirdropIcon } from "src/ui/base/svg/24/AirdropIcon"; +import { useTokenSymbol } from "src/ui/token/hooks/useTokenSymbol"; + +interface DepositOrClaimStepProps { + onDeposit: (() => void) | undefined; + onClaim: (() => void) | undefined; +} + +export default function DepositOrClaimStep({ + onDeposit, + onClaim, +}: DepositOrClaimStepProps): ReactElement { + const { claimableAmountFormatted } = useClaimableAirdropAmount(); + const { airdropToken } = useAirdropToken(); + const { symbol } = useTokenSymbol(airdropToken); + + return ( + <> +
+

You've been airdropped

+
+
+ + + + + + {claimableAmountFormatted && symbol ? ( + formatBalance(claimableAmountFormatted, 4) + ) : ( + + )} + {symbol} + + +
+
+
+
+

+ These tokens can be claimed to a wallet or{" "} + deposited directly into the locking vault for + immediate voting power. +

+
+ + +
+
+ + ); +} diff --git a/apps/council-ui/src/ui/airdrop/DepositStep.tsx b/apps/council-ui/src/ui/airdrop/DepositStep.tsx new file mode 100644 index 00000000..bcce0fcb --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/DepositStep.tsx @@ -0,0 +1,76 @@ +import { ArrowLeftIcon, ArrowRightIcon } from "@heroicons/react/20/solid"; +import { ReactElement } from "react"; + +interface DepositStepProps { + account: string | undefined; + setAccount: (account: string) => void; + delegate?: string; + setDelegate?: (delegate: string) => void; + onBack: () => void; + onNext: () => void; +} + +export default function DepositStep({ + account, + setAccount, + delegate, + setDelegate, + onBack, + onNext, +}: DepositStepProps): ReactElement { + return ( + <> +
+
+ + setAccount(e.target.value)} + /> + +
+ {setDelegate && ( +
+ + setDelegate(e.target.value)} + /> + +
+ )} +
+
+ + +
+ + ); +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useAirdropData.ts b/apps/council-ui/src/ui/airdrop/hooks/useAirdropData.ts new file mode 100644 index 00000000..8ecf9bd2 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useAirdropData.ts @@ -0,0 +1,34 @@ +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { AirdropData, getAirdropData } from "src/utils/getAirdropData"; +import { useAccount } from "wagmi"; + +/** + * Fetch the data needed to claim an airdrop for the connected wallet address. + * If the address doesn't have an airdrop, `airdropData` will be `undefined`. + */ +export function useAirdropData(): { + airdropData: AirdropData | undefined; + status: QueryStatus; +} { + const { address } = useAccount(); + const chainId = useSupportedChainId(); + + const enabled = !!address && !!chainId; + + const { data, status } = useQuery({ + queryKey: ["useAirdropData", address, chainId], + enabled, + queryFn: enabled + ? async () => { + const data = await getAirdropData(address, chainId); + return data || null; + } + : undefined, + }); + + return { + airdropData: data || undefined, + status, + }; +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useAirdropLockingVault.ts b/apps/council-ui/src/ui/airdrop/hooks/useAirdropLockingVault.ts new file mode 100644 index 00000000..25ef47f3 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useAirdropLockingVault.ts @@ -0,0 +1,24 @@ +import { ReadLockingVault } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadAirdrop } from "src/ui/airdrop/hooks/useReadAirdrop"; + +/** + * Fetch the locking vault for the configured airdrop. + */ +export function useAirdropVault(): { + airdropVault: ReadLockingVault | undefined; + status: QueryStatus; +} { + const airdrop = useReadAirdrop(); + + const { data, status } = useQuery({ + queryKey: ["useAirdropLockingVault"], + enabled: !!airdrop, + queryFn: !!airdrop ? () => airdrop.getLockingVault() : undefined, + }); + + return { + airdropVault: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useAirdropToken.ts b/apps/council-ui/src/ui/airdrop/hooks/useAirdropToken.ts new file mode 100644 index 00000000..7dbab790 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useAirdropToken.ts @@ -0,0 +1,24 @@ +import { ReadToken } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadAirdrop } from "src/ui/airdrop/hooks/useReadAirdrop"; + +/** + * Fetch the token for the configured airdrop. + */ +export function useAirdropToken(): { + airdropToken: ReadToken | undefined; + status: QueryStatus; +} { + const airdrop = useReadAirdrop(); + + const { data, status } = useQuery({ + queryKey: ["airdropToken", airdrop?.address], + enabled: !!airdrop, + queryFn: !!airdrop ? () => airdrop.getToken() : undefined, + }); + + return { + airdropToken: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useClaimAirdrop.ts b/apps/council-ui/src/ui/airdrop/hooks/useClaimAirdrop.ts new file mode 100644 index 00000000..acebe39b --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useClaimAirdrop.ts @@ -0,0 +1,42 @@ +import { MutationStatus } from "@tanstack/react-query"; +import { useReadWriteAirdrop } from "src/ui/airdrop/hooks/useReadWriteAirdrop"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useAirdropData } from "./useAirdropData"; +import { useClaimableAirdropAmount } from "./useClaimableAirdropAmount"; + +interface ClaimOptions { + recipient: `0x${string}`; +} + +export function useClaimAirdrop(): { + claimAirdrop: ((options: ClaimOptions) => void) | undefined; + transactionHash: `0x${string}` | undefined; + status: MutationStatus; +} { + const airdrop = useReadWriteAirdrop(); + const { airdropData } = useAirdropData(); + const { claimableAmount } = useClaimableAirdropAmount(); + + const enabled = !!airdrop && !!claimableAmount && !!airdropData; + + const { write, status, transactionHash } = useWrite({ + writeFn: ({ recipient }: ClaimOptions) => { + if (!enabled) { + throw new Error("No claimable airdrop found"); + } + + return airdrop.claim({ + amount: claimableAmount, + merkleProof: airdropData.proof, + recipient, + totalGrant: airdropData.amount, + }); + }, + }); + + return { + claimAirdrop: enabled ? write : undefined, + transactionHash, + status, + }; +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useClaimAndDelegateAirdrop.ts b/apps/council-ui/src/ui/airdrop/hooks/useClaimAndDelegateAirdrop.ts new file mode 100644 index 00000000..29a440ba --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useClaimAndDelegateAirdrop.ts @@ -0,0 +1,46 @@ +import { MutationStatus } from "@tanstack/react-query"; +import { useReadWriteAirdrop } from "src/ui/airdrop/hooks/useReadWriteAirdrop"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useAirdropData } from "./useAirdropData"; +import { useClaimableAirdropAmount } from "./useClaimableAirdropAmount"; + +interface ClaimAndDelegateOptions { + delegate: `0x${string}`; + recipient: `0x${string}`; +} + +export function useClaimAndDelegateAirdrop(): { + claimAndDelegateAirdrop: + | ((options: ClaimAndDelegateOptions) => void) + | undefined; + transactionHash: `0x${string}` | undefined; + status: MutationStatus; +} { + const airdrop = useReadWriteAirdrop(); + const { airdropData } = useAirdropData(); + const { claimableAmount } = useClaimableAirdropAmount(); + + const enabled = !!airdrop && !!claimableAmount && !!airdropData; + + const { write, status, transactionHash } = useWrite({ + writeFn: ({ delegate, recipient }: ClaimAndDelegateOptions) => { + if (!enabled) { + throw new Error("No claimable airdrop found"); + } + + return airdrop.claimAndDelegate({ + amount: claimableAmount, + delegate, + merkleProof: airdropData.proof, + recipient, + totalGrant: airdropData.amount, + }); + }, + }); + + return { + claimAndDelegateAirdrop: enabled ? write : undefined, + transactionHash, + status, + }; +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useClaimableAirdropAmount.ts b/apps/council-ui/src/ui/airdrop/hooks/useClaimableAirdropAmount.ts new file mode 100644 index 00000000..2944987a --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useClaimableAirdropAmount.ts @@ -0,0 +1,55 @@ +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadAirdrop } from "src/ui/airdrop/hooks/useReadAirdrop"; +import { useTokenDecimals } from "src/ui/token/hooks/useTokenDecimals"; +import { formatUnits } from "viem"; +import { useAccount } from "wagmi"; +import { useAirdropData } from "./useAirdropData"; +import { useAirdropToken } from "./useAirdropToken"; + +/** + * Fetch the amount that can still be claimed from the configured airdrop by the + * connected wallet address. + */ +export function useClaimableAirdropAmount(): { + claimableAmount: bigint; + claimableAmountFormatted: `${number}`; + status: QueryStatus; +} { + const airdrop = useReadAirdrop(); + const { address: account } = useAccount(); + const { airdropData, status: dataStatus } = useAirdropData(); + const { airdropToken } = useAirdropToken(); + const { decimals } = useTokenDecimals(airdropToken); + + const enabled = !!airdrop && !!account && dataStatus === "success"; + + const { data, status } = useQuery({ + queryKey: [ + "useClaimableAirdropAmount", + airdrop?.address, + account, + airdropData, + ], + enabled, + queryFn: enabled + ? async () => { + if (!airdropData || !airdropData.amount) { + return 0n; + } + const claimed = await airdrop.getClaimedAmount({ account }); + return airdropData.amount - claimed; + } + : undefined, + }); + + const claimableAmountFormatted = + data !== undefined && decimals !== undefined + ? formatUnits(data, decimals) + : "0"; + + return { + claimableAmount: data ?? 0n, + claimableAmountFormatted: claimableAmountFormatted as `${number}`, + status, + }; +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useReadAirdrop.ts b/apps/council-ui/src/ui/airdrop/hooks/useReadAirdrop.ts new file mode 100644 index 00000000..776755a5 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useReadAirdrop.ts @@ -0,0 +1,17 @@ +import { ReadAirdrop } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; + +/** + * Use a ReadAirdrop instance for configured airdrop. + */ +export function useReadAirdrop(): ReadAirdrop | undefined { + const { airdrop } = useCouncilConfig(); + const council = useReadCouncil(); + + return useMemo( + () => airdrop && council.airdrop(airdrop.address), + [council, airdrop], + ); +} diff --git a/apps/council-ui/src/ui/airdrop/hooks/useReadWriteAirdrop.ts b/apps/council-ui/src/ui/airdrop/hooks/useReadWriteAirdrop.ts new file mode 100644 index 00000000..fd46a082 --- /dev/null +++ b/apps/council-ui/src/ui/airdrop/hooks/useReadWriteAirdrop.ts @@ -0,0 +1,17 @@ +import { ReadWriteAirdrop } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +/** + * Use a ReadWriteAirdrop instance for configured airdrop. + */ +export function useReadWriteAirdrop(): ReadWriteAirdrop | undefined { + const { airdrop } = useCouncilConfig(); + const council = useReadWriteCouncil(); + + return useMemo( + () => airdrop && council?.airdrop(airdrop.address), + [council, airdrop], + ); +} diff --git a/apps/council-ui/src/ui/app.tsx b/apps/council-ui/src/ui/app.tsx index c7c13397..ff29b90c 100644 --- a/apps/council-ui/src/ui/app.tsx +++ b/apps/council-ui/src/ui/app.tsx @@ -4,16 +4,13 @@ import type { AppProps } from "next/app"; import Head from "next/head"; import { ReactElement, useEffect } from "react"; import { Toaster } from "react-hot-toast"; -import { Tooltip, TooltipProvider } from "react-tooltip"; -import { reactQueryClient } from "src/clients/reactQuery"; -import { wagmiClient } from "src/clients/wagmi"; import { councilConfigs } from "src/config/council.config"; -import { chains } from "src/provider"; -import { getLocalStorage } from "src/ui/base/getLocalStorage"; +import { wagmiConfig } from "src/lib/rainbowKit"; +import { reactQueryClient } from "src/lib/reactQuery"; import { makeTOSAndPrivacyPolicyToast } from "src/ui/base/toast/makeTOSAndPrivacyPolicyToast"; -import { CouncilClientProvider } from "src/ui/council/CouncilProvider"; +import { getLocalStorage } from "src/ui/base/getLocalStorage"; import { Navigation } from "src/ui/navigation/Navigation"; -import { WagmiConfig } from "wagmi"; +import { WagmiProvider } from "wagmi"; console.log(councilConfigs); @@ -21,70 +18,54 @@ function App({ Component, pageProps }: AppProps): ReactElement { useToastTOSAndPrivacyPolicy(); return ( - - - - - - - - - - Element DAO - - + + + + + + + + Element DAO + + - - - - - + + + + + - - - - - - - -
- -
- {/* Share a single tooltip for the entire app to avoid nasty - coupling of tooltip and the wrapped component via an `id` prop. - This follows the recipe in - https://react-tooltip.com/docs/examples/multiple-anchors */} - -
-
-
-
-
+ + + + + + + +
+ +
+ + + ); } diff --git a/apps/council-ui/src/ui/base/Address.tsx b/apps/council-ui/src/ui/base/Address.tsx index ece73cf4..6621d9bf 100644 --- a/apps/council-ui/src/ui/base/Address.tsx +++ b/apps/council-ui/src/ui/base/Address.tsx @@ -4,7 +4,7 @@ import { formatAddress } from "src/ui/base/formatting/formatAddress"; import { WalletIcon } from "src/ui/base/WalletIcon"; interface AddressProps { - address: string; + address: `0x${string}`; /** * If provided this will be rendered instead of the formatted address. */ diff --git a/apps/council-ui/src/ui/base/Page.tsx b/apps/council-ui/src/ui/base/Page.tsx index 9413f27d..82edb5b3 100644 --- a/apps/council-ui/src/ui/base/Page.tsx +++ b/apps/council-ui/src/ui/base/Page.tsx @@ -12,10 +12,13 @@ export function Page({ }: PropsWithChildren): ReactElement { return ( // https://daisyui.com/docs/colors - +
diff --git a/apps/council-ui/src/ui/base/Tooltip.tsx b/apps/council-ui/src/ui/base/Tooltip.tsx new file mode 100644 index 00000000..938a1c43 --- /dev/null +++ b/apps/council-ui/src/ui/base/Tooltip.tsx @@ -0,0 +1,59 @@ +import classNames from "classnames"; +import { ReactElement } from "react"; +// TODO: Add dependency-cruiser rule to enforce nobody imports directly from +// react-tooltip outside of this file and app.tsx. +import { + Tooltip as BaseTooltip, + PlacesType, + PositionStrategy, + VariantType, +} from "react-tooltip"; + +export interface ToolTipOptions + extends React.AnchorHTMLAttributes { + content: string; + place?: PlacesType; + positionStrategy?: PositionStrategy; + variant?: VariantType; +} + +// Re-exporting to simplify the API and enforce proper usage. +export function Tooltip({ + content, + place = "top", + positionStrategy, + variant, + children, + ...passThruProps +}: ToolTipOptions): ReactElement { + return ( + <> + + {children} + + + + ); +} + +export function DefinitionTooltip({ + className, + ...passThruProps +}: ToolTipOptions): ReactElement { + return ( + + ); +} diff --git a/apps/council-ui/src/ui/base/Tooltip/Tooltip.tsx b/apps/council-ui/src/ui/base/Tooltip/Tooltip.tsx deleted file mode 100644 index a56c2116..00000000 --- a/apps/council-ui/src/ui/base/Tooltip/Tooltip.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import classNames from "classnames"; -import { ReactElement } from "react"; -// TODO: Add dependency-cruiser rule to enforce nobody imports directly from -// react-tooltip outside of this file and app.tsx. -import { ITooltipWrapper, TooltipWrapper } from "react-tooltip"; - -// Re-exporting for naming only is usually bad, but in this case it's worth it -// since TooltipWrapper isn't intuitive to remember and react-tooltip has a -// `Tooltip` component that we *shouldn't use*. -export const Tooltip = TooltipWrapper; - -export function DefinitionTooltip({ - className, - ...passThruProps -}: ITooltipWrapper): ReactElement { - return ( - - ); -} diff --git a/apps/council-ui/src/ui/base/formatting/commify.ts b/apps/council-ui/src/ui/base/formatting/commify.ts new file mode 100644 index 00000000..210d5f6a --- /dev/null +++ b/apps/council-ui/src/ui/base/formatting/commify.ts @@ -0,0 +1,3 @@ +export function commify(value: string | number | bigint): string { + return String(value).replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} diff --git a/apps/council-ui/src/ui/base/formatting/formatAddress.ts b/apps/council-ui/src/ui/base/formatting/formatAddress.ts index e761e96b..cb527555 100644 --- a/apps/council-ui/src/ui/base/formatting/formatAddress.ts +++ b/apps/council-ui/src/ui/base/formatting/formatAddress.ts @@ -1,4 +1,4 @@ -export function formatAddress(address: string): string { +export function formatAddress(address: `0x${string}`): string { // first 2 and last 4 to match rainbowkit's style return `0x${address.slice(2, 4)}...${address.slice(-4)}`; } diff --git a/apps/council-ui/src/ui/base/formatting/formatBalance.ts b/apps/council-ui/src/ui/base/formatting/formatBalance.ts index 7b5156e5..648003d0 100644 --- a/apps/council-ui/src/ui/base/formatting/formatBalance.ts +++ b/apps/council-ui/src/ui/base/formatting/formatBalance.ts @@ -1,5 +1,5 @@ import { format } from "d3-format"; -import { commify } from "ethers/lib/utils"; +import { commify } from "src/ui/base/formatting/commify"; /** * Used for final balance presentation since it cuts off decimals @@ -8,8 +8,8 @@ import { commify } from "ethers/lib/utils"; * @returns a formatted string with proper commas and {numDecimals} decimal places */ export function formatBalance( - balance: string | number, + balance: string | number | bigint, numDecimals = 1, -): string { - return commify(format(`.${numDecimals}~f`)(+balance)); +): `${number}` { + return commify(format(`.${numDecimals}~f`)(Number(balance))) as `${number}`; } diff --git a/apps/council-ui/src/ui/base/formatting/formatUnitsBalance.ts b/apps/council-ui/src/ui/base/formatting/formatUnitsBalance.ts new file mode 100644 index 00000000..455ede68 --- /dev/null +++ b/apps/council-ui/src/ui/base/formatting/formatUnitsBalance.ts @@ -0,0 +1,23 @@ +import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatUnits } from "viem"; + +/** + * Formats a balance with a fixed number of decimals + * @param balance The balance to format + * @param decimals The number of decimals in the balance to format. Defaults to + * 18. + * @param displayDecimals The number of decimals to display. Defaults to 1. + * @returns The formatted balance + */ +export function formatUnitsBalance({ + balance, + decimals = 18, + displayDecimals = 1, +}: { + balance: number | bigint; + decimals?: number; + displayDecimals?: number; +}): `${number}` { + const formatted = formatUnits(BigInt(balance), decimals); + return formatBalance(formatted, displayDecimals); +} diff --git a/apps/council-ui/src/ui/base/formatting/formatVotingPower.ts b/apps/council-ui/src/ui/base/formatting/formatVotingPower.ts new file mode 100644 index 00000000..5236fe34 --- /dev/null +++ b/apps/council-ui/src/ui/base/formatting/formatVotingPower.ts @@ -0,0 +1,14 @@ +import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatUnits } from "viem"; + +/** + * Formats a scaled voting power for display. + */ +export function formatVotingPower( + balance: number | bigint, + displayDecimals: number = 1, +): `${number}` { + // Always use 18 decimals for voting power + const formatted = formatUnits(BigInt(balance), 18); + return formatBalance(formatted, displayDecimals); +} diff --git a/apps/council-ui/src/ui/base/formatting/useDisplayName.ts b/apps/council-ui/src/ui/base/formatting/useDisplayName.ts index 19eb30c1..ce64a126 100644 --- a/apps/council-ui/src/ui/base/formatting/useDisplayName.ts +++ b/apps/council-ui/src/ui/base/formatting/useDisplayName.ts @@ -1,12 +1,10 @@ +import { formatAddress } from "src/ui/base/formatting/formatAddress"; import { useEnsName } from "wagmi"; -import { formatAddress } from "./formatAddress"; export function useDisplayName( - address: string | null | undefined, + address: `0x${string}` | undefined, ): string | undefined { - const { data: ensName } = useEnsName({ - address: address as `0x{string}` | undefined, - }); + const { data: ensName } = useEnsName({ address }); // hooks don't let us bail out early, so we do this after the useEnsName call if (!address) { diff --git a/apps/council-ui/src/ui/base/forms/NumericInput.tsx b/apps/council-ui/src/ui/base/forms/NumericInput.tsx index aca52101..78070ecb 100644 --- a/apps/council-ui/src/ui/base/forms/NumericInput.tsx +++ b/apps/council-ui/src/ui/base/forms/NumericInput.tsx @@ -1,5 +1,5 @@ import { ReactElement } from "react"; -import { Input, InputProps } from "./Input"; +import { Input, InputProps } from "src/ui/base/forms/Input"; export interface NumericInputProps extends InputProps { maxButtonValue?: string | number; diff --git a/apps/council-ui/src/ui/base/svg/20/AirdropIcon.tsx b/apps/council-ui/src/ui/base/svg/20/AirdropIcon.tsx new file mode 100644 index 00000000..c28a8d1a --- /dev/null +++ b/apps/council-ui/src/ui/base/svg/20/AirdropIcon.tsx @@ -0,0 +1,19 @@ +export function AirdropIcon(): JSX.Element { + return ( + + + + + + ); +} diff --git a/apps/council-ui/src/ui/base/svg/24/AirdropIcon.tsx b/apps/council-ui/src/ui/base/svg/24/AirdropIcon.tsx new file mode 100644 index 00000000..93233b59 --- /dev/null +++ b/apps/council-ui/src/ui/base/svg/24/AirdropIcon.tsx @@ -0,0 +1,19 @@ +export function AirdropIcon(): JSX.Element { + return ( + + + + + + ); +} diff --git a/apps/council-ui/src/ui/base/toast/makeTransactionErrorToast.tsx b/apps/council-ui/src/ui/base/toast/makeTransactionErrorToast.tsx index ac62c5e4..44276bbf 100644 --- a/apps/council-ui/src/ui/base/toast/makeTransactionErrorToast.tsx +++ b/apps/council-ui/src/ui/base/toast/makeTransactionErrorToast.tsx @@ -1,7 +1,7 @@ import { XMarkIcon } from "@heroicons/react/20/solid"; import toast from "react-hot-toast"; import { SupportedChainId } from "src/config/council.config"; -import { makeEtherscanTransactionURL } from "src/etherscan/makeEtherscanTransactionURL"; +import { makeEtherscanTransactionURL } from "src/utils/etherscan/makeEtherscanTransactionURL"; export function makeTransactionErrorToast( message: string, diff --git a/apps/council-ui/src/ui/base/toast/makeTransactionSubmittedToast.tsx b/apps/council-ui/src/ui/base/toast/makeTransactionSubmittedToast.tsx index 5b8ca26d..747517ac 100644 --- a/apps/council-ui/src/ui/base/toast/makeTransactionSubmittedToast.tsx +++ b/apps/council-ui/src/ui/base/toast/makeTransactionSubmittedToast.tsx @@ -1,7 +1,7 @@ import { XMarkIcon } from "@heroicons/react/20/solid"; import toast from "react-hot-toast"; import { SupportedChainId } from "src/config/council.config"; -import { makeEtherscanTransactionURL } from "src/etherscan/makeEtherscanTransactionURL"; +import { makeEtherscanTransactionURL } from "src/utils/etherscan/makeEtherscanTransactionURL"; export function makeTransactionSubmittedToast( message: string, diff --git a/apps/council-ui/src/ui/base/toast/makeTransactionSuccessToast.tsx b/apps/council-ui/src/ui/base/toast/makeTransactionSuccessToast.tsx index e2211593..d11d780f 100644 --- a/apps/council-ui/src/ui/base/toast/makeTransactionSuccessToast.tsx +++ b/apps/council-ui/src/ui/base/toast/makeTransactionSuccessToast.tsx @@ -1,7 +1,7 @@ import { XMarkIcon } from "@heroicons/react/20/solid"; import toast from "react-hot-toast"; import { SupportedChainId } from "src/config/council.config"; -import { makeEtherscanTransactionURL } from "src/etherscan/makeEtherscanTransactionURL"; +import { makeEtherscanTransactionURL } from "src/utils/etherscan/makeEtherscanTransactionURL"; export function makeTransactionSuccessToast( message: string, diff --git a/apps/council-ui/src/ui/base/utils/getBlockDate.ts b/apps/council-ui/src/ui/base/utils/getBlockDate.ts new file mode 100644 index 00000000..1ec228c1 --- /dev/null +++ b/apps/council-ui/src/ui/base/utils/getBlockDate.ts @@ -0,0 +1,34 @@ +import { BlockNotFoundError } from "viem"; +import { UsePublicClientReturnType } from "wagmi"; + +const blockTime = 12n; + +/** + * Get the date of a mined block or estimate the date of a future block. + */ +export async function getBlockDate( + blockNumber: bigint, + client: UsePublicClientReturnType, +): Promise { + if (!client) { + return; + } + + const block = await client + .getBlock({ + blockNumber: blockNumber, + }) + .catch((error) => { + if (error instanceof BlockNotFoundError) { + return undefined; + } + }); + + if (block) { + return new Date(Number(block.timestamp) * 1000); + } + + const latestBlock = await client.getBlockNumber(); + const secondsLeft = (blockNumber - latestBlock) * blockTime; + return new Date(Date.now() + Number(secondsLeft) * 1000); +} diff --git a/apps/council-ui/src/ui/config/hooks/useCouncilConfig.ts b/apps/council-ui/src/ui/config/hooks/useCouncilConfig.ts new file mode 100644 index 00000000..f7276a84 --- /dev/null +++ b/apps/council-ui/src/ui/config/hooks/useCouncilConfig.ts @@ -0,0 +1,8 @@ +import { CouncilConfig } from "src/config/CouncilConfig"; +import { councilConfigs } from "src/config/council.config"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; + +export function useCouncilConfig(): CouncilConfig { + const chainId = useSupportedChainId(); + return councilConfigs[chainId]; +} diff --git a/apps/council-ui/src/ui/config/hooks/useVaultConfig.ts b/apps/council-ui/src/ui/config/hooks/useVaultConfig.ts new file mode 100644 index 00000000..a47ec98f --- /dev/null +++ b/apps/council-ui/src/ui/config/hooks/useVaultConfig.ts @@ -0,0 +1,14 @@ +import { VaultConfig } from "src/config/CouncilConfig"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; + +export function useVaultConfig( + address: `0x${string}` | undefined, +): VaultConfig | undefined { + const config = useCouncilConfig(); + + if (config.gscVoting?.vault?.address === address) { + return config.gscVoting?.vault; + } + + return config.coreVoting.vaults.find((vault) => vault.address === address); +} diff --git a/apps/council-ui/src/ui/contract/hooks/useWrite.ts b/apps/council-ui/src/ui/contract/hooks/useWrite.ts new file mode 100644 index 00000000..dd1f9107 --- /dev/null +++ b/apps/council-ui/src/ui/contract/hooks/useWrite.ts @@ -0,0 +1,65 @@ +import { + MutationStatus, + useMutation, + useQueryClient, +} from "@tanstack/react-query"; +import { useState } from "react"; +import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; +import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; +import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { usePublicClient } from "wagmi"; + +/** + * A hook which takes a write function that returns a transaction hash and wraps + * it with unified logic for: + * + * - Waiting for the transaction to be mined + * - Showing toast notifications for transaction status + * - Invalidating queries on success + */ +export function useWrite< + TFunction extends (...args: any[]) => Promise<`0x${string}`>, +>({ + writeFn, +}: { + writeFn: TFunction; +}): { + write: TFunction; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const [transactionHash, setTransactionHash] = useState<`0x${string}`>(); + + const chainId = useSupportedChainId(); + const queryClient = useQueryClient(); + const publicClient = usePublicClient(); + + const mutationFn = async (...args: Parameters) => { + const hash = await writeFn(...args); + setTransactionHash(hash); + makeTransactionSubmittedToast("Approving", hash, chainId); + await publicClient?.waitForTransactionReceipt({ hash }); + return hash; + }; + + const { mutate, status } = useMutation({ + mutationFn: mutationFn as TFunction, + onSuccess: (hash) => { + makeTransactionSuccessToast("Successfully approved!", hash, chainId); + // All query cache can be invalidated. The SDK uses it's own cache which + // has built-in invalidation logic based on the methods called. + queryClient.invalidateQueries(); + }, + onError(error) { + makeTransactionErrorToast("Failed to approve", transactionHash, chainId); + console.error(error); + }, + }); + + return { + write: mutate as TFunction, + status, + transactionHash, + }; +} diff --git a/apps/council-ui/src/ui/council/CouncilClientContext.ts b/apps/council-ui/src/ui/council/CouncilClientContext.ts deleted file mode 100644 index a01b02e4..00000000 --- a/apps/council-ui/src/ui/council/CouncilClientContext.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createContext } from "react"; -import { getCouncilClient } from "src/clients/council"; -import { SupportedChainId } from "src/config/council.config"; -import { chains } from "src/provider"; - -export const CouncilClientContext = createContext( - getCouncilClient(chains[0].id as SupportedChainId), -); diff --git a/apps/council-ui/src/ui/council/CouncilProvider.tsx b/apps/council-ui/src/ui/council/CouncilProvider.tsx deleted file mode 100644 index 73e287f9..00000000 --- a/apps/council-ui/src/ui/council/CouncilProvider.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { PropsWithChildren, ReactElement, useMemo } from "react"; -import { getCouncilClient } from "src/clients/council"; -import { useChainId } from "src/ui/network/useChainId"; -import { CouncilClientContext } from "./CouncilClientContext"; - -export function CouncilClientProvider({ - children, -}: PropsWithChildren): ReactElement { - const chainId = useChainId(); - const client = useMemo(() => getCouncilClient(chainId), [chainId]); - return ( - - {children} - - ); -} diff --git a/apps/council-ui/src/ui/council/hooks/useReadCoreVoting.ts b/apps/council-ui/src/ui/council/hooks/useReadCoreVoting.ts new file mode 100644 index 00000000..9b9e1960 --- /dev/null +++ b/apps/council-ui/src/ui/council/hooks/useReadCoreVoting.ts @@ -0,0 +1,28 @@ +import { ReadCoreVoting } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; + +/** + * Use a ReadCoreVoting instance for configured core voting contract. + */ +export function useReadCoreVoting(): ReadCoreVoting { + const council = useReadCouncil(); + const { coreVoting } = useCouncilConfig(); + + return useMemo(() => { + return council.coreVoting({ + address: coreVoting.address, + vaults: coreVoting.vaults.map((vault) => { + switch (vault.type) { + case "LockingVault": + return council.lockingVault(vault.address); + case "VestingVault": + return council.vestingVault(vault.address); + default: + return vault.address; + } + }), + }); + }, [council, coreVoting.address, coreVoting.vaults]); +} diff --git a/apps/council-ui/src/ui/council/hooks/useReadCouncil.ts b/apps/council-ui/src/ui/council/hooks/useReadCouncil.ts new file mode 100644 index 00000000..2a57c27a --- /dev/null +++ b/apps/council-ui/src/ui/council/hooks/useReadCouncil.ts @@ -0,0 +1,25 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { sdkCache } from "src/lib/councilSdk"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { usePublicClient } from "wagmi"; + +/** + * Use a ReadCouncil instance. + */ +export function useReadCouncil(): ReadCouncil { + const chainId = useSupportedChainId(); + const publicClient = usePublicClient({ chainId }); + + return useMemo(() => { + if (!publicClient) { + throw new Error("Public client is not available"); + } + + return new ReadCouncil({ + publicClient, + cache: sdkCache, + namespace: "council-viem", + }); + }, [chainId]); +} diff --git a/apps/council-ui/src/ui/council/hooks/useReadGscVoting.ts b/apps/council-ui/src/ui/council/hooks/useReadGscVoting.ts new file mode 100644 index 00000000..01b372df --- /dev/null +++ b/apps/council-ui/src/ui/council/hooks/useReadGscVoting.ts @@ -0,0 +1,23 @@ +import { ReadCoreVoting } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; + +/** + * Use a ReadCoreVoting instance for the configured gsc voting contract. + */ +export function useReadGscVoting(): ReadCoreVoting | undefined { + const council = useReadCouncil(); + const { gscVoting } = useCouncilConfig(); + + return useMemo(() => { + if (!gscVoting) { + return undefined; + } + + return council.coreVoting({ + address: gscVoting.address, + vaults: [council.gscVault(gscVoting.vault.address)], + }); + }, [council, gscVoting]); +} diff --git a/apps/council-ui/src/ui/council/hooks/useReadWriteCoreVoting.ts b/apps/council-ui/src/ui/council/hooks/useReadWriteCoreVoting.ts new file mode 100644 index 00000000..3a7f7b41 --- /dev/null +++ b/apps/council-ui/src/ui/council/hooks/useReadWriteCoreVoting.ts @@ -0,0 +1,28 @@ +import { ReadWriteCoreVoting } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +/** + * Use a ReadWriteCoreVoting instance for configured core voting contract. + */ +export function useReadWriteCoreVoting(): ReadWriteCoreVoting | undefined { + const council = useReadWriteCouncil(); + const { coreVoting } = useCouncilConfig(); + + return useMemo(() => { + return council?.coreVoting({ + address: coreVoting.address, + vaults: coreVoting.vaults.map((vault) => { + switch (vault.type) { + case "LockingVault": + return council.lockingVault(vault.address); + case "VestingVault": + return council.vestingVault(vault.address); + default: + return vault.address; + } + }), + }); + }, [council, coreVoting.address, coreVoting.vaults]); +} diff --git a/apps/council-ui/src/ui/council/hooks/useReadWriteCouncil.ts b/apps/council-ui/src/ui/council/hooks/useReadWriteCouncil.ts new file mode 100644 index 00000000..55f4b9c4 --- /dev/null +++ b/apps/council-ui/src/ui/council/hooks/useReadWriteCouncil.ts @@ -0,0 +1,27 @@ +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { sdkCache } from "src/lib/councilSdk"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { usePublicClient, useWalletClient } from "wagmi"; + +/** + * Use a ReadWriteCouncil instance. + */ +export function useReadWriteCouncil(): ReadWriteCouncil | undefined { + const chainId = useSupportedChainId(); + const publicClient = usePublicClient({ chainId }); + const { data: walletClient } = useWalletClient({ chainId }); + + return useMemo(() => { + if (!walletClient || !publicClient) { + return undefined; + } + + return new ReadWriteCouncil({ + publicClient, + walletClient, + cache: sdkCache, + namespace: "council-viem", + }); + }, [publicClient, walletClient]); +} diff --git a/apps/council-ui/src/ui/council/hooks/useReadWriteGscVoting.ts b/apps/council-ui/src/ui/council/hooks/useReadWriteGscVoting.ts new file mode 100644 index 00000000..510e3b28 --- /dev/null +++ b/apps/council-ui/src/ui/council/hooks/useReadWriteGscVoting.ts @@ -0,0 +1,23 @@ +import { ReadWriteCoreVoting } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +/** + * Use a ReadWriteCoreVoting instance for configured gsc voting contract. + */ +export function useReadWriteGscVoting(): ReadWriteCoreVoting | undefined { + const council = useReadWriteCouncil(); + const { gscVoting } = useCouncilConfig(); + + return useMemo(() => { + if (!gscVoting || !council) { + return undefined; + } + + return council.coreVoting({ + address: gscVoting.address, + vaults: [council.gscVault(gscVoting.vault.address)], + }); + }, [council, gscVoting]); +} diff --git a/apps/council-ui/src/ui/council/useCouncil.ts b/apps/council-ui/src/ui/council/useCouncil.ts deleted file mode 100644 index 3cf34101..00000000 --- a/apps/council-ui/src/ui/council/useCouncil.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { useContext } from "react"; -import { CouncilClient } from "src/clients/council"; -import { CouncilClientContext } from "./CouncilClientContext"; - -export function useCouncil(): CouncilClient { - return useContext(CouncilClientContext); -} diff --git a/apps/council-ui/src/ui/ens/AdddressWithEtherscan.tsx b/apps/council-ui/src/ui/ens/AdddressWithEtherscan.tsx index a4199a3c..4e956736 100644 --- a/apps/council-ui/src/ui/ens/AdddressWithEtherscan.tsx +++ b/apps/council-ui/src/ui/ens/AdddressWithEtherscan.tsx @@ -1,12 +1,12 @@ import classNames from "classnames"; import { ReactElement } from "react"; -import { makeEtherscanAddressURL } from "src/etherscan/makeEtherscanAddressURL"; import { Address } from "src/ui/base/Address"; import { ExternalLinkSVG } from "src/ui/base/svg/ExternalLink"; -import { useChainId } from "src/ui/network/useChainId"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { makeEtherscanAddressURL } from "src/utils/etherscan/makeEtherscanAddressURL"; interface AddressWithEtherscanProps { - address: string; + address: `0x${string}`; /** * If provided this will be rendered instead of the formatted address or ens. */ @@ -21,10 +21,10 @@ export function AddressWithEtherscan({ label, iconSize, }: AddressWithEtherscanProps): ReactElement { - const chainId = useChainId(); + const chainId = useSupportedChainId(); return ( { + const client = usePublicClient(); + + const enabled = !!addresses.length && !!client; + + return useQuery({ + queryKey: ["bulkEnsRecords", addresses], + enabled, + queryFn: enabled + ? (): Promise => { + return getBulkEnsRecords(addresses, client); + } + : undefined, + refetchOnWindowFocus: false, + refetchOnMount: false, + }); +} diff --git a/apps/council-ui/src/ui/ens/useBulkEnsRecords.ts b/apps/council-ui/src/ui/ens/useBulkEnsRecords.ts deleted file mode 100644 index 24a6261c..00000000 --- a/apps/council-ui/src/ui/ens/useBulkEnsRecords.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { EnsRecords, getBulkEnsRecords } from "src/ens/getBulkEnsRecords"; -import { useProvider } from "wagmi"; - -export function useBulkEnsRecords( - addresses: string[], -): UseQueryResult { - const provider = useProvider(); - - return useQuery({ - queryKey: ["bulkEnsRecords", addresses], - enabled: !!addresses.length, - queryFn: (): Promise => { - return getBulkEnsRecords(addresses, provider); - }, - refetchOnWindowFocus: false, - refetchOnMount: false, - }); -} diff --git a/apps/council-ui/src/ui/navigation/Navigation.tsx b/apps/council-ui/src/ui/navigation/Navigation.tsx index 95f7161e..ce89692f 100644 --- a/apps/council-ui/src/ui/navigation/Navigation.tsx +++ b/apps/council-ui/src/ui/navigation/Navigation.tsx @@ -4,10 +4,12 @@ import Link from "next/link"; import { useRouter } from "next/router"; import { ReactElement } from "react"; import { makeVoterURL, Routes } from "src/routes"; +import { useClaimableAirdropAmount } from "src/ui/airdrop/hooks/useClaimableAirdropAmount"; import { makeImgSrc } from "src/ui/base/imgSrc"; +import { AirdropIcon } from "src/ui/base/svg/20/AirdropIcon"; import PushIcon from "src/ui/base/svg/PushLogo"; -import { Tooltip } from "src/ui/base/Tooltip/Tooltip"; -import { useWrongNetworkEffect } from "src/ui/network/useWrongNetworkEffect"; +import { Tooltip } from "src/ui/base/Tooltip"; +import { useWrongNetworkEffect } from "src/ui/network/hooks/useWrongNetworkEffect"; import { usePushSubscribe } from "src/ui/push/usePushSubscribe"; import { useAccount } from "wagmi"; @@ -15,16 +17,18 @@ export function Navigation(): ReactElement { const { address } = useAccount(); const { pathname, query } = useRouter(); const { toggleUserStatus, loading, isSubscribed } = usePushSubscribe(); + const { claimableAmount } = useClaimableAirdropAmount(); + useWrongNetworkEffect(); return (
-
+
-
    +
    • @@ -112,8 +117,8 @@ export function Navigation(): ReactElement {
    • @@ -122,8 +127,8 @@ export function Navigation(): ReactElement {
-
+
{address && toggleUserStatus && ( )} + {!!claimableAmount && ( + + + + + + Claim airdrop + + + )}
diff --git a/apps/council-ui/src/ui/network/hooks/useSupportedChainId.ts b/apps/council-ui/src/ui/network/hooks/useSupportedChainId.ts new file mode 100644 index 00000000..c4b3398f --- /dev/null +++ b/apps/council-ui/src/ui/network/hooks/useSupportedChainId.ts @@ -0,0 +1,18 @@ +import { useMemo } from "react"; +import { SupportedChainId } from "src/config/council.config"; +import { chains } from "src/lib/wagmi"; +import { useChainId } from "wagmi"; + +const allChainIds = chains.map(({ id }) => id); +const defaultChainId = chains[0].id as SupportedChainId; + +export function useSupportedChainId(): SupportedChainId { + const chainId = useChainId() as SupportedChainId; + + return useMemo(() => { + if (allChainIds.includes(chainId)) { + return chainId; + } + return defaultChainId; + }, [chainId]); +} diff --git a/apps/council-ui/src/ui/network/hooks/useWrongNetworkEffect.tsx b/apps/council-ui/src/ui/network/hooks/useWrongNetworkEffect.tsx new file mode 100644 index 00000000..29f41b2e --- /dev/null +++ b/apps/council-ui/src/ui/network/hooks/useWrongNetworkEffect.tsx @@ -0,0 +1,41 @@ +import { XMarkIcon } from "@heroicons/react/20/solid"; +import { useEffect } from "react"; +import { toast } from "react-hot-toast"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { useChainId, usePublicClient } from "wagmi"; + +const TOAST_ID = "wrong-network"; + +export function useWrongNetworkEffect(): void { + const client = usePublicClient(); + const connectedChain = useChainId(); + const usedChainId = useSupportedChainId(); + + const chainName = client?.chain.name; + + useEffect(() => { + if (connectedChain !== usedChainId) { + toast.error( +
+
+

Wrong network!

+ {chainName &&

Showing data for {chainName}

} +
+ +
, + { + position: "bottom-center", + duration: Infinity, + id: TOAST_ID, + }, + ); + } else { + toast.dismiss(TOAST_ID); + } + }, [connectedChain, usedChainId, chainName]); +} diff --git a/apps/council-ui/src/ui/network/useChainId.ts b/apps/council-ui/src/ui/network/useChainId.ts deleted file mode 100644 index 0c53a790..00000000 --- a/apps/council-ui/src/ui/network/useChainId.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { SupportedChainId } from "src/config/council.config"; -import { chains } from "src/provider"; -import { useNetwork } from "wagmi"; - -const defaultChainId = chains[0].id as SupportedChainId; - -export function useChainId(): SupportedChainId { - const { chain } = useNetwork(); - - if (!chain?.id || !chains.find(({ id }) => id === chain.id)) { - return defaultChainId; - } else { - return chain.id as SupportedChainId; - } -} diff --git a/apps/council-ui/src/ui/network/useWrongNetworkEffect.tsx b/apps/council-ui/src/ui/network/useWrongNetworkEffect.tsx deleted file mode 100644 index 83a99341..00000000 --- a/apps/council-ui/src/ui/network/useWrongNetworkEffect.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { XMarkIcon } from "@heroicons/react/20/solid"; -import { useEffect } from "react"; -import { toast } from "react-hot-toast"; -import { chains } from "src/provider"; -import { useChainId } from "src/ui/network/useChainId"; -import { useNetwork } from "wagmi"; - -const TOAST_ID = "wrong-network"; - -export function useWrongNetworkEffect(): void { - const { chain: connectedChain } = useNetwork(); - const usedChainId = useChainId(); - - useEffect(() => { - if (connectedChain && !chains.find(({ id }) => id === connectedChain.id)) { - const usedChain = chains.find(({ id }) => id === usedChainId); - toast.error( -
-
-

Wrong network!

- {usedChain &&

Showing data for {usedChain.name}

} -
- -
, - { - position: "bottom-center", - duration: Infinity, - id: TOAST_ID, - }, - ); - } else { - toast.dismiss(TOAST_ID); - } - }, [connectedChain, usedChainId]); -} diff --git a/apps/council-ui/src/ui/proposals/ProposalStatsRow/ProposalStatsRow.tsx b/apps/council-ui/src/ui/proposals/ProposalStatsRow/ProposalStatsRow.tsx index 268b6650..d3ac4caa 100644 --- a/apps/council-ui/src/ui/proposals/ProposalStatsRow/ProposalStatsRow.tsx +++ b/apps/council-ui/src/ui/proposals/ProposalStatsRow/ProposalStatsRow.tsx @@ -1,27 +1,27 @@ import classNames from "classnames"; import Link from "next/link"; import { ReactElement } from "react"; -import { makeEtherscanTransactionURL } from "src/etherscan/makeEtherscanTransactionURL"; -import { ProposalStatus } from "src/proposals/getProposalStatus"; import { makeVoterURL } from "src/routes"; +import { Stat } from "src/ui/base/Stat"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; import { formatAddress } from "src/ui/base/formatting/formatAddress"; import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; -import { Stat } from "src/ui/base/Stat"; import { ExternalLinkSVG } from "src/ui/base/svg/ExternalLink"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; import { AddressWithEtherscan } from "src/ui/ens/AdddressWithEtherscan"; -import { useChainId } from "src/ui/network/useChainId"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { VoterAddress } from "src/ui/voters/VoterAddress"; +import { makeEtherscanTransactionURL } from "src/utils/etherscan/makeEtherscanTransactionURL"; +import { ProposalStatus } from "src/utils/getProposalStatus"; interface ProposalStatsRowProps { - votingContractName: string; - votingContractAddress: string; - createdBy: string | null; - createdTransactionHash: string | null; - endsAtDate: Date | null; - unlockAtDate: Date | null; - lastCallAtDate: Date | null; - executedTransactionHash: string | null; + votingContractName?: string; + votingContractAddress: `0x${string}`; + createdBy: `0x${string}` | undefined; + createdTransactionHash: `0x${string}` | undefined; + endsAtDate: Date | undefined; + unlockAtDate: Date | undefined; + lastCallAtDate: Date | undefined; + executedTransactionHash: `0x${string}` | undefined; status: ProposalStatus; className?: string; } @@ -39,7 +39,7 @@ export function ProposalStatsRow({ className, }: ProposalStatsRowProps): ReactElement { const createdByDisplayName = useDisplayName(createdBy); - const chainId = useChainId(); + const chainId = useSupportedChainId(); return (
, ], }), @@ -112,9 +112,9 @@ export function ProposalsTable({ rowData }: ProposalsTableProps): ReactElement {
{/* Mobile */} -
+
{!sortedData.length ? ( -
+

Nothing to show.

) : ( @@ -124,9 +124,8 @@ export function ProposalsTable({ rowData }: ProposalsTableProps): ReactElement { status, ballot, id, - votingContractAddress, + coreVotingAddress: votingContractAddress, votingContractName, - votingEnds, sentenceSummary, title, }, @@ -135,10 +134,10 @@ export function ProposalsTable({ rowData }: ProposalsTableProps): ReactElement {
-

+

{title ?? `${votingContractName} Proposal ${id}`}

{sentenceSummary && ( @@ -148,12 +147,12 @@ export function ProposalsTable({ rowData }: ProposalsTableProps): ReactElement { : sentenceSummary}

)} -
-
+
+
Status
-
+
Your Ballot {ballot ? ( @@ -182,9 +181,9 @@ function sortProposalRowData( ) { if (key === "status") { if (direction === "ASC") { - return data.slice().sort((a, b) => +a.currentQuorum - +b.currentQuorum); + return data.slice().sort((a, b) => (b.status >= a.status ? 1 : -1)); } else { - return data.slice().sort((a, b) => +b.currentQuorum - +a.currentQuorum); + return data.slice().sort((a, b) => (a.status >= b.status ? 1 : -1)); } } // safe to assume the desired sort field is voting ends column @@ -210,7 +209,7 @@ function StatusBadge({ status }: { status: ProposalStatus }) { return (
- + ))} diff --git a/apps/council-ui/src/ui/proposals/Quorum/Quorum.tsx b/apps/council-ui/src/ui/proposals/Quorum/Quorum.tsx index 766033ff..b66faf05 100644 --- a/apps/council-ui/src/ui/proposals/Quorum/Quorum.tsx +++ b/apps/council-ui/src/ui/proposals/Quorum/Quorum.tsx @@ -1,13 +1,13 @@ import classNames from "classnames"; import { ReactElement } from "react"; -import { ProposalStatus } from "src/proposals/getProposalStatus"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { Tooltip } from "src/ui/base/Tooltip/Tooltip"; +import { Tooltip } from "src/ui/base/Tooltip"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { tooltipByStatus } from "src/ui/proposals/tooltips"; +import { ProposalStatus } from "src/utils/getProposalStatus"; interface QuorumProps { - current: string; - required: string | null; + current: bigint; + required: bigint | undefined; status: ProposalStatus; } @@ -22,7 +22,7 @@ export function Quorum({
{status === "EXECUTED" ? ( -

Quorum met

+

Quorum met

) : required ? (

Quorum

- {formatBalance(current, 0)} / - {formatBalance(required, 0)} + {formatVotingPower(current, 0)} / + {formatVotingPower(required, 0)} {" "}
) : null} @@ -57,8 +57,8 @@ export function Quorum({ } interface QuorumBarProps { - currentQuorum: string; - requiredQuorum: string | null; + currentQuorum: bigint; + requiredQuorum: bigint | undefined; status: ProposalStatus | undefined; } @@ -70,7 +70,7 @@ function QuorumBar({ if (status === "EXECUTED") { return ( @@ -78,18 +78,18 @@ function QuorumBar({ } if (!requiredQuorum || status === "UNKNOWN") { - return ; + return ; } return ( ); } diff --git a/apps/council-ui/src/ui/proposals/VoteResultsBar/VoteResultBar.tsx b/apps/council-ui/src/ui/proposals/VoteResultsBar/VoteResultBar.tsx index c419af81..6b438200 100644 --- a/apps/council-ui/src/ui/proposals/VoteResultsBar/VoteResultBar.tsx +++ b/apps/council-ui/src/ui/proposals/VoteResultsBar/VoteResultBar.tsx @@ -1,28 +1,15 @@ -import { formatEther } from "ethers/lib/utils"; +import { VoteResults } from "@delvtech/council-viem"; import { ReactElement } from "react"; -interface VoteResultBarProps { - yesResults: string; - noResults: string; - maybeResults: string; -} - -export function VoteResultBar({ - yesResults, - noResults, - maybeResults, -}: VoteResultBarProps): ReactElement { - const resultsTotal = - +formatEther(yesResults) + - +formatEther(noResults) + - +formatEther(maybeResults); +export function VoteResultBar({ yes, no, maybe }: VoteResults): ReactElement { + const resultsTotal = yes + no + maybe; if (!resultsTotal) { return
Unknown
; } - const yesPercent = (+formatEther(yesResults) / resultsTotal) * 100; - const maybePercent = (+formatEther(maybeResults) / resultsTotal) * 100; + const yesPercent = (yes / resultsTotal) * 100n; + const maybePercent = (maybe / resultsTotal) * 100n; return ( diff --git a/apps/council-ui/src/ui/proposals/VotingActivityTable/VotingActivityTable.tsx b/apps/council-ui/src/ui/proposals/VotingActivityTable/VotingActivityTable.tsx index 10a9ea3a..95a2eec2 100644 --- a/apps/council-ui/src/ui/proposals/VotingActivityTable/VotingActivityTable.tsx +++ b/apps/council-ui/src/ui/proposals/VotingActivityTable/VotingActivityTable.tsx @@ -1,26 +1,32 @@ -import { Ballot, Vote } from "@council/sdk"; -import { FixedNumber } from "ethers"; -import { ReactElement, useMemo, useState } from "react"; -import { EnsRecords } from "src/ens/getBulkEnsRecords"; +import { Ballot, ReadVote } from "@delvtech/council-viem"; +import { ReactElement, ReactNode, useMemo, useState } from "react"; import { makeVoterURL } from "src/routes"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { - SortableGridTable, + Column, SortOptions, + SortableGridTable, } from "src/ui/base/tables/SortableGridTable"; import { VoterAddress } from "src/ui/voters/VoterAddress"; import FormattedBallot from "src/ui/voting/FormattedBallot"; +import { EnsRecords } from "src/utils/getBulkEnsRecords"; type SortField = "votingPower" | "ballot"; interface VotingActivityTableProps { - votes: Vote[]; + votes: ReadVote[]; voterEnsRecords: EnsRecords; + /** + * Whether to show the voting power used by each voter. + * @default true + */ + showVotingPower?: boolean; } export function VotingActivityTable({ votes, voterEnsRecords, + showVotingPower = true, }: VotingActivityTableProps): ReactElement { const [sortOptions, setSortOptions] = useState>({ key: "votingPower", @@ -32,35 +38,50 @@ export function VotingActivityTable({ [sortOptions, votes], ); + const cols = useMemo(() => { + const cols: Column[] = ["Voter"]; + + if (showVotingPower) { + cols.push({ + cell: "Voting Power", + sortKey: "votingPower", + }); + } + + cols.push({ + cell: "Ballot", + sortKey: "ballot", + }); + + return cols; + }, [showVotingPower]); + return ( -
+
{ + const cells: ReactNode[] = [ + , + ]; + if (showVotingPower) { + cells.push(formatVotingPower(power)); + } + cells.push(); return { href: makeVoterURL(voter.address), - cells: [ - , - formatBalance(power), - , - ], + cells, }; })} /> @@ -75,25 +96,16 @@ const ballotSortIndexes: Record = { no: 0, }; -function sortVotes({ key, direction }: SortOptions, data: Vote[]) { +function sortVotes( + { key, direction }: SortOptions, + data: ReadVote[], +) { switch (key) { case "votingPower": if (direction === "ASC") { - return data - .slice() - .sort((a, b) => - FixedNumber.from(a.power) - .subUnsafe(FixedNumber.from(b.power)) - .toUnsafeFloat(), - ); + return data.slice().sort((a, b) => (a.power >= b.power ? 1 : -1)); } - return data - .slice() - .sort((a, b) => - FixedNumber.from(b.power) - .subUnsafe(FixedNumber.from(a.power)) - .toUnsafeFloat(), - ); + return data.slice().sort((a, b) => (b.power >= a.power ? 1 : -1)); case "ballot": if (direction === "ASC") { return data diff --git a/apps/council-ui/src/ui/proposals/hooks/useFilterVotesByGSCOnlyEffect.ts b/apps/council-ui/src/ui/proposals/hooks/useFilterVotesByGSCOnlyEffect.ts index 83615e76..c2bbb365 100644 --- a/apps/council-ui/src/ui/proposals/hooks/useFilterVotesByGSCOnlyEffect.ts +++ b/apps/council-ui/src/ui/proposals/hooks/useFilterVotesByGSCOnlyEffect.ts @@ -1,23 +1,25 @@ -import { Vote } from "@council/sdk"; +import { ReadVote } from "@delvtech/council-viem"; import { useEffect } from "react"; import { asyncFilter } from "src/ui/base/utils/asyncFilter"; -import { useCouncil } from "src/ui/council/useCouncil"; +import { useReadGscVault } from "src/ui/vaults/gscVault/hooks/useReadGscVault"; export function useFilterVotesByGSCOnlyEffect( - votes: Vote[], + votes: ReadVote[], gscOnly: boolean, - setFilteredVotes: (votes: Vote[]) => void, + setFilteredVotes: (votes: ReadVote[]) => void, ): void { - const { gscVoting } = useCouncil(); + const gscVault = useReadGscVault(); return useEffect(() => { - if (gscOnly && gscVoting) { - asyncFilter(votes, (vote) => - gscVoting.getIsMember(vote.voter.address), + if (gscOnly && gscVault) { + asyncFilter(votes, ({ voter }) => + gscVault.getIsMember({ + account: voter, + }), ).then((filteredVotes) => setFilteredVotes(filteredVotes)); } else { // reset filter setFilteredVotes(votes); } - }, [gscOnly]); + }, [gscOnly, gscVault]); } diff --git a/apps/council-ui/src/ui/proposals/hooks/useReadProposal.ts b/apps/council-ui/src/ui/proposals/hooks/useReadProposal.ts new file mode 100644 index 00000000..90ca2bd8 --- /dev/null +++ b/apps/council-ui/src/ui/proposals/hooks/useReadProposal.ts @@ -0,0 +1,69 @@ +import { + ReadCoreVoting, + ReadProposal, + ReadVotingVault, +} from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; + +export interface UseReadProposalOptions { + id: bigint | undefined; + coreVoting?: ReadCoreVoting | `0x${string}`; + vaults?: (ReadVotingVault | `0x${string}`)[]; +} + +interface UseReadProposalResult { + proposal: ReadProposal | undefined; + status: QueryStatus; +} + +/** + * Use a ReadProposal instance for a given proposal id and core voting address. + * Defaults to the coreVoting from the council config. + */ +export function useReadProposal({ + id, + coreVoting, + vaults, +}: UseReadProposalOptions): UseReadProposalResult { + const council = useReadCouncil(); + const { coreVoting: configuredCoreVoting, gscVoting } = useCouncilConfig(); + + let coreVotingAddressToUse = + typeof coreVoting === "string" ? coreVoting : coreVoting?.address; + if (!coreVotingAddressToUse) { + coreVotingAddressToUse = configuredCoreVoting.address; + } + const isConfiguredCoreVoting = + coreVotingAddressToUse === configuredCoreVoting.address; + const isConfiguredGscVoting = coreVotingAddressToUse === gscVoting?.address; + + let vaultsToUse = vaults; + if (!vaultsToUse && isConfiguredCoreVoting) { + vaultsToUse = configuredCoreVoting.vaults.map(({ address }) => address); + } else if (!vaultsToUse && isConfiguredGscVoting) { + vaultsToUse = [gscVoting.vault.address]; + } + + const enabled = id !== undefined && !!coreVotingAddressToUse; + + const { data, status } = useQuery({ + queryKey: ["proposal", String(id), coreVotingAddressToUse, vaultsToUse], + enabled, + queryFn: enabled + ? () => + council + .coreVoting({ + address: coreVotingAddressToUse!, + vaults: vaultsToUse, + }) + .getProposal({ id }) + : undefined, + }); + + return { + proposal: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/proposals/hooks/useReadWriteProposal.ts b/apps/council-ui/src/ui/proposals/hooks/useReadWriteProposal.ts new file mode 100644 index 00000000..d5a5669b --- /dev/null +++ b/apps/council-ui/src/ui/proposals/hooks/useReadWriteProposal.ts @@ -0,0 +1,69 @@ +import { + ReadVotingVault, + ReadWriteCoreVoting, + ReadWriteProposal, +} from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +export interface UseReadWriteProposalOptions { + id: bigint; + coreVoting?: ReadWriteCoreVoting | `0x${string}`; + vaults?: (ReadVotingVault | `0x${string}`)[]; +} + +interface UseReadWriteProposalResult { + proposal: ReadWriteProposal | undefined; + status: QueryStatus; +} + +/** + * Use a ReadWriteProposal instance for a given proposal id and core voting + * address. Defaults to the coreVoting from the council config. + */ +export function useReadProposal({ + id, + coreVoting, + vaults, +}: UseReadWriteProposalOptions): UseReadWriteProposalResult { + const council = useReadWriteCouncil(); + const { coreVoting: configuredCoreVoting, gscVoting } = useCouncilConfig(); + + let coreVotingAddressToUse = + typeof coreVoting === "string" ? coreVoting : coreVoting?.address; + if (!coreVotingAddressToUse) { + coreVotingAddressToUse = configuredCoreVoting.address; + } + const isConfiguredCoreVoting = + coreVotingAddressToUse === configuredCoreVoting.address; + const isConfiguredGscVoting = coreVotingAddressToUse === gscVoting?.address; + + let vaultsToUse = vaults; + if (!vaultsToUse && isConfiguredCoreVoting) { + vaultsToUse = configuredCoreVoting.vaults.map(({ address }) => address); + } else if (!vaultsToUse && isConfiguredGscVoting) { + vaultsToUse = [gscVoting.vault.address]; + } + + const enabled = !!coreVotingAddressToUse; + + const { data, status } = useQuery({ + queryKey: ["proposal", id, coreVotingAddressToUse, vaultsToUse], + enabled, + queryFn: enabled + ? () => + council + ?.coreVoting({ + address: coreVotingAddressToUse!, + vaults: vaultsToUse, + }) + .getProposal({ id }) + : undefined, + }); + + return { + proposal: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/proposals/hooks/useVoteResults.ts b/apps/council-ui/src/ui/proposals/hooks/useVoteResults.ts index 5c81d86b..08fe67cd 100644 --- a/apps/council-ui/src/ui/proposals/hooks/useVoteResults.ts +++ b/apps/council-ui/src/ui/proposals/hooks/useVoteResults.ts @@ -1,12 +1,29 @@ -import { Vote, VoteResults } from "@council/sdk"; -import { useQuery, UseQueryResult } from "@tanstack/react-query"; - -export function useVoteResults(vote: Vote): UseQueryResult { - return useQuery({ - queryKey: [vote.proposal.votingContract.address, vote.proposal.id], - queryFn: async () => { - const results = await vote.proposal.getResults(); - return results; - }, +import { ReadVote, VoteResults } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; + +type VoteResultsFormatted = { + [K in keyof VoteResults]: string; +}; + +export function useVoteResults({ proposal }: ReadVote): { + voteResults: VoteResults | undefined; + voteResultsFormatted: VoteResultsFormatted | undefined; + status: QueryStatus; +} { + const { data, status } = useQuery({ + queryKey: [proposal.coreVoting.address, proposal.id], + queryFn: () => proposal.getResults(), }); + + const formattedResults = + data && + Object.fromEntries( + Object.entries(data).map(([key, value]) => [key, String(value)]), + ); + + return { + voteResults: data, + voteResultsFormatted: formattedResults as VoteResultsFormatted | undefined, + status, + }; } diff --git a/apps/council-ui/src/ui/proposals/tooltips.ts b/apps/council-ui/src/ui/proposals/tooltips.ts index 4aa41a69..014348e8 100644 --- a/apps/council-ui/src/ui/proposals/tooltips.ts +++ b/apps/council-ui/src/ui/proposals/tooltips.ts @@ -1,4 +1,4 @@ -import { ProposalStatus } from "src/proposals/getProposalStatus"; +import { ProposalStatus } from "src/utils/getProposalStatus"; export const EXECUTED_STATUS = "This proposal passed and was executed."; export const EXPIRED_STATUS = diff --git a/apps/council-ui/src/ui/proposals/types.ts b/apps/council-ui/src/ui/proposals/types.ts index d88e9422..cda8d69e 100644 --- a/apps/council-ui/src/ui/proposals/types.ts +++ b/apps/council-ui/src/ui/proposals/types.ts @@ -1,4 +1,4 @@ -import { Ballot } from "@council/sdk"; +import { Ballot } from "@delvtech/council-viem"; export interface ProposalRowData { votingContractName: string; diff --git a/apps/council-ui/src/ui/push/usePushSubscribe.ts b/apps/council-ui/src/ui/push/usePushSubscribe.ts index bd2d138b..e5f616ba 100644 --- a/apps/council-ui/src/ui/push/usePushSubscribe.ts +++ b/apps/council-ui/src/ui/push/usePushSubscribe.ts @@ -4,13 +4,13 @@ import { useCallback, useEffect, useState } from "react"; import { ENV } from "@pushprotocol/restapi/src/lib/constants"; import { councilConfigs } from "src/config/council.config"; -import { useChainId } from "src/ui/network/useChainId"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { useAccount, useSignTypedData } from "wagmi"; import { UsePushSubscribeType } from "./types"; export function usePushSubscribe(): UsePushSubscribeType { const { address } = useAccount(); - const chainId = useChainId(); + const chainId = useSupportedChainId(); const [loading, setLoading] = useState(false); const [isSubscribed, setIsSubscribed] = useState(false); @@ -63,10 +63,11 @@ export function usePushSubscribe(): UsePushSubscribeType { throw new Error("FAILURE"); } } + function generatePayload(): SubscribeOptionsType { const { env, channel } = config; - const payload = { - signer: { _signTypedData }, + const payload: SubscribeOptionsType = { + signer: { _signTypedData } as any, channelAddress: `eip155:${chainId}:${channel}`, // channel address in CAIP userAddress: `eip155:${chainId}:${address}`, // user address in CAIP env: env as ENV, diff --git a/apps/council-ui/src/ui/router/hooks/useParams.ts b/apps/council-ui/src/ui/router/hooks/useParams.ts new file mode 100644 index 00000000..6bee08d5 --- /dev/null +++ b/apps/council-ui/src/ui/router/hooks/useParams.ts @@ -0,0 +1,25 @@ +import { useRouter } from "next/router"; +import { useMemo } from "react"; + +/** + * returns query params in the URL in an object. If a param appears more than + * once, it only returns the last value (e.g. ?foo=baz&foo=bar returns "bar"). + * This makes dealing with types a bit easier since useRouter returns an array + * for params that appear more than once + * (e.g. ?foo=baz&foo=bar returns ["baz", "bar"]). + */ +export function useParams(): { [key: string]: string | undefined } { + const { query } = useRouter(); + + return useMemo( + () => + Object.entries(query).reduce( + (reduced, [key, value]) => ({ + ...reduced, + [key]: Array.isArray(value) ? value.slice(-1)[0] : value, + }), + {}, + ), + [query], + ); +} diff --git a/apps/council-ui/src/ui/router/hooks/useRouterSteps.ts b/apps/council-ui/src/ui/router/hooks/useRouterSteps.ts new file mode 100644 index 00000000..1ef3e26f --- /dev/null +++ b/apps/council-ui/src/ui/router/hooks/useRouterSteps.ts @@ -0,0 +1,291 @@ +import { useRouter } from "next/router"; +import { + Dispatch, + SetStateAction, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { useParams } from "src/ui/router/hooks/useParams"; + +export type StepPosition = "behind" | "current" | "adjacent" | "ahead"; + +interface UseRouterStepsOptions { + /** + * The URL parameter name to use for the steps. Defaults to "step". + */ + paramName?: string; + + /** + * The steps in the flow. Each step can be a single value or an array of + * values for steps that have alternative paths. Steps are 1-indexed. + * + * @example + * // A flow with 3 steps + * steps: ["step1", "step2", "step3"] + * + * // A flow with 3 steps where step 2 has 2 alternative paths + * steps: ["step1", ["step2a", "step2b"], "step3"] + */ + steps?: (T | T[])[]; + + /** + * The number of initially completed steps. Defaults to 0. + */ + initialCompleted?: number; +} + +/** + * A custom hook to control routing in a multi-step process. It provides the + * functionality to keep track of the current step, the completed steps, and + * navigate to different steps. + * + * @template T The type of steps. Can be a string or any type that extends + * string. For example, it can be a string union type to create a type-safe step + * navigation. + */ +export default function useRouterSteps( + options?: UseRouterStepsOptions, +): { + /** + * Returns true for all steps up to and including the step after the last + * completed step. The step must be a valid step number or a step in the steps + * array. + */ + canViewStep: (step: number | T) => boolean; + + /** + * The number of steps considered complete. + */ + completedSteps: number; + + /** + * Complete a single step. This will not navigate to a new step. + */ + completeStep: (step: number | T) => void; + + /** + * The current step. This will be the same as `currentStepNumber` if no + * `steps` option was provided. + */ + currentStep: T; + + /** + * The number of the current step in the flow. + * + * @example + * const steps = ["step1", ["step2a", "step2b"], "step3"]; + * + * switch (currentStep) { + * case "step1": + * return 1; + * case "step2a": + * case "step2b": + * return 2; + * case "step3": + * return 3; + * } + */ + currentStepNumber: number; + + /** + * Get the number of a step in the flow. Returns 0 if the step is not in the + * flow. + */ + getStepNumber: (step: number | T) => number; + + /** + * Get the router path for a step. + */ + getStepPath: (step: number | T) => string; + + /** + * Get the position of a step in the flow. If the step's number is less than + * the current step's number, It's `behind`. If It's greater than the current + * step's number, It's `ahead`. If the numbers are the same, but the steps are + * different, It's `adjacent`. Otherwise, it's `current`. + */ + getStepPosition: (step: number | T) => StepPosition | undefined; + + /** + * Complete the current step and navigate to the next step in the flow. If the + * next step has multiple paths, it will go to the first path. + */ + goToNextStep: () => void; + + /** + * Navigate to the previous step in the flow. If the previous step has + * multiple paths, it will go to the first path. + */ + goToPreviousStep: () => void; + + /** + * Complete all steps up to a given step and navigate to that step. + */ + goToStep: (step: number | T) => void; + + /** + * Set the number of completed steps. This will not navigate to a new step. + * This is useful for when you want to persist the completed steps across + * sessions, skip steps, or reset steps for a new path. + */ + setCompletedSteps: Dispatch>; +} { + // using useRef to ensure these values never trigger rerenders when changed + const { + paramName = "step", + initialCompleted = 0, + steps, + } = useRef>(options || {}).current; + + const { pathname, push, replace } = useRouter(); + const { [paramName]: paramStep } = useParams(); + + // use these methods in dependency arrays + const staticRouterMethods = useRef({ safePush: push, safeReplace: replace }); + const { safePush, safeReplace } = staticRouterMethods.current; + + const [completedSteps, setCompletedSteps] = useState(initialCompleted); + + const currentStep = useMemo(() => { + if (steps) { + if (paramStep) { + return paramStep as T; + } + if (Array.isArray(steps[0])) { + return steps[0][0]; + } + return steps[0]; + } + return (paramStep ? parseInt(paramStep) : 1) as unknown as T; + }, [paramStep, steps]); + + const getStepNumber = useCallback( + (step: number | T) => { + if (typeof step === "number") { + return step; + } + if (steps) { + return ( + steps.findIndex((_step) => + Array.isArray(_step) ? _step.includes(step) : _step === step, + ) + 1 + ); + } + return 0; + }, + [steps], + ); + + const currentStepNumber = useMemo( + () => getStepNumber(currentStep), + [currentStep, getStepNumber], + ); + + const getStepPath = useCallback( + (step: number | T) => { + const pathStart = `${pathname}?${paramName}=`; + + if (steps && typeof step === "number") { + const stepLabel = steps[step - 1]; + if (Array.isArray(stepLabel)) { + return `${pathStart}${stepLabel[0]}`; + } + + return `${pathStart}${stepLabel}`; + } + + return `${pathStart}${step}`; + }, + [pathname, paramName, steps], + ); + + const getStepPosition = useCallback( + (step: number | T): StepPosition | undefined => { + // if the step is the current step, it is `current` + if (step === currentStep) { + return "current"; + } + + const stepNumber = getStepNumber(step); + const currentStepNumber = getStepNumber(currentStep); + + if (stepNumber === currentStepNumber) { + return "adjacent"; + } + if (stepNumber > currentStepNumber) { + return "ahead"; + } + if (stepNumber > 0 && stepNumber < currentStepNumber) { + return "behind"; + } + }, + [getStepNumber, currentStep], + ); + + const canViewStep = useCallback( + (step: number | T) => { + const stepNumber = getStepNumber(step); + return stepNumber > 0 && stepNumber <= completedSteps + 1; + }, + [getStepNumber, completedSteps], + ); + + const completeStep = useCallback( + (step: number | T) => { + setCompletedSteps((completedSteps) => + Math.max(completedSteps, getStepNumber(step)), + ); + }, + [getStepNumber], + ); + + const goToStep = useCallback( + (step: number | T) => { + completeStep(getStepNumber(step) - 1); + safePush(getStepPath(step)); + }, + [safePush, getStepPath, completeStep, getStepNumber], + ); + + const goToPreviousStep = useCallback(() => { + goToStep(getStepNumber(currentStep) - 1); + }, [goToStep, getStepNumber, currentStep]); + + const goToNextStep = useCallback(() => { + goToStep(getStepNumber(currentStep) + 1); + }, [goToStep, getStepNumber, currentStep]); + + useEffect(() => { + if (!canViewStep(currentStep)) { + // TODO: error notification? + safeReplace(getStepPath(completedSteps + 1), undefined, { + shallow: true, + }); + } + }, [ + paramStep, + canViewStep, + currentStep, + safeReplace, + getStepPath, + completedSteps, + ]); + + return { + canViewStep, + completedSteps, + completeStep, + currentStep, + currentStepNumber, + getStepNumber, + getStepPath, + getStepPosition, + goToNextStep, + goToPreviousStep, + goToStep, + setCompletedSteps, + }; +} diff --git a/apps/council-ui/src/ui/token/hooks/useTokenDecimals.ts b/apps/council-ui/src/ui/token/hooks/useTokenDecimals.ts new file mode 100644 index 00000000..db196bb6 --- /dev/null +++ b/apps/council-ui/src/ui/token/hooks/useTokenDecimals.ts @@ -0,0 +1,31 @@ +import { ReadToken } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; + +/** + * Fetch the token decimals for the given token address. + * @param token - The ReadToken or token address to fetch the decimals for + */ +export function useTokenDecimals( + token: ReadToken | `0x${string}` | undefined, +): { + decimals: number | undefined; + status: QueryStatus; +} { + const chainId = useSupportedChainId(); + const council = useReadCouncil(); + const tokenInstance = + typeof token === "string" ? council.token(token) : token; + + const { data, status } = useQuery({ + queryKey: ["useTokenName", chainId, token], + enabled: !!tokenInstance, + queryFn: !!tokenInstance ? () => tokenInstance.getDecimals() : undefined, + }); + + return { + decimals: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/token/hooks/useTokenName.ts b/apps/council-ui/src/ui/token/hooks/useTokenName.ts new file mode 100644 index 00000000..60a3d49a --- /dev/null +++ b/apps/council-ui/src/ui/token/hooks/useTokenName.ts @@ -0,0 +1,29 @@ +import { ReadToken } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; + +/** + * Fetch the token name for the given token address. + * @param token - A ReadToken or the token address to fetch the name for + */ +export function useTokenName(token: ReadToken | `0x${string}` | undefined): { + name: string | undefined; + status: QueryStatus; +} { + const chainId = useSupportedChainId(); + const council = useReadCouncil(); + const tokenInstance = + typeof token === "string" ? council.token(token) : token; + + const { data, status } = useQuery({ + queryKey: ["useTokenName", chainId, token], + enabled: !!tokenInstance, + queryFn: !!tokenInstance ? () => tokenInstance.getName() : undefined, + }); + + return { + name: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/token/hooks/useTokenSymbol.ts b/apps/council-ui/src/ui/token/hooks/useTokenSymbol.ts new file mode 100644 index 00000000..378e2c8a --- /dev/null +++ b/apps/council-ui/src/ui/token/hooks/useTokenSymbol.ts @@ -0,0 +1,29 @@ +import { ReadToken } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; + +/** + * Fetch the token symbol for the given token address. + * @param tokenAddress - The ReadToken or token address to fetch the symbol for + */ +export function useTokenSymbol(token: ReadToken | `0x${string}` | undefined): { + symbol: string | undefined; + status: QueryStatus; +} { + const chainId = useSupportedChainId(); + const council = useReadCouncil(); + const tokenInstance = + typeof token === "string" ? council.token(token) : token; + + const { data, status } = useQuery({ + queryKey: ["useTokenSymbol", chainId, token], + enabled: !!tokenInstance, + queryFn: !!tokenInstance ? () => tokenInstance.getSymbol() : undefined, + }); + + return { + symbol: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/vaults/ChangeDelegateForm.tsx b/apps/council-ui/src/ui/vaults/ChangeDelegateForm.tsx index 605a2f82..8ba5319d 100644 --- a/apps/council-ui/src/ui/vaults/ChangeDelegateForm.tsx +++ b/apps/council-ui/src/ui/vaults/ChangeDelegateForm.tsx @@ -1,15 +1,15 @@ -import { ethers } from "ethers"; import Link from "next/link"; import { ReactElement, useState } from "react"; import { makeVoterURL } from "src/routes"; import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; import { Input } from "src/ui/base/forms/Input"; import { VoterAddress } from "src/ui/voters/VoterAddress"; +import { zeroAddress } from "viem"; +import { useEnsResolver } from "wagmi"; interface ChangeDelegateFormProps { - currentDelegate: string; - onDelegate: (delegate: string) => void; - depositedBalance: string; + onDelegate: (newDelegate: `0x${string}`) => void; + currentDelegate?: `0x${string}`; disabled?: boolean; buttonText?: string; } @@ -20,15 +20,17 @@ export function ChangeDelegateForm({ disabled, buttonText = "Delegate", }: ChangeDelegateFormProps): ReactElement { - const [newDelegate, setNewDelegate] = useState(""); - const delegateName = useDisplayName(currentDelegate); - const isDelegateZeroAddress = - currentDelegate === ethers.constants.AddressZero; + const currentDelegateName = useDisplayName(currentDelegate); + const isDelegateZeroAddress = currentDelegate === zeroAddress; + const [newDelegate, setNewDelegate] = useState(""); + const { data: newDelegateAddress } = useEnsResolver({ + name: newDelegate, + }); const isNotNew = newDelegate === currentDelegate; return ( -
+
Change Delegate
+ Current Delegate: - {isDelegateZeroAddress ? ( + {!currentDelegate || isDelegateZeroAddress ? ( None ) : ( )} @@ -56,8 +58,8 @@ export function ChangeDelegateForm({ /> diff --git a/apps/council-ui/src/ui/vaults/DelegatorListModal.tsx b/apps/council-ui/src/ui/vaults/DelegatorListModal.tsx index 2f303974..508eef18 100644 --- a/apps/council-ui/src/ui/vaults/DelegatorListModal.tsx +++ b/apps/council-ui/src/ui/vaults/DelegatorListModal.tsx @@ -1,4 +1,4 @@ -import { VoterWithPower } from "@council/sdk"; +import { VoterWithPower } from "@delvtech/council-viem"; import { ReactElement } from "react"; import { formatAddress } from "src/ui/base/formatting/formatAddress"; import { WalletIcon } from "src/ui/base/WalletIcon"; @@ -8,7 +8,7 @@ export interface DelegatorListModalProps { id: string; delegators: VoterWithPower[]; delegateName?: string | undefined | null; - delegateAddress: string; + delegateAddress: `0x${string}`; } export function DelegatorListModal({ @@ -20,15 +20,15 @@ export function DelegatorListModal({ return ( <> -
+
diff --git a/apps/council-ui/src/ui/vaults/DepositAndWithdrawForm.tsx b/apps/council-ui/src/ui/vaults/DepositAndWithdrawForm.tsx index c4db31b0..647c21b0 100644 --- a/apps/council-ui/src/ui/vaults/DepositAndWithdrawForm.tsx +++ b/apps/council-ui/src/ui/vaults/DepositAndWithdrawForm.tsx @@ -1,23 +1,25 @@ import assertNever from "assert-never"; import classNames from "classnames"; -import { parseEther } from "ethers/lib/utils"; import { ReactElement, useState } from "react"; import { formatBalance } from "src/ui/base/formatting/formatBalance"; import { NumericInput } from "src/ui/base/forms/NumericInput"; +import { formatUnits, parseUnits } from "viem"; interface DepositAndWithdrawFormProps { symbol: string; - balance: string; - allowance: string; - depositedBalance: string; + decimals: number; + balance: bigint; + allowance: bigint; + depositedBalance: bigint; onApprove: () => void; - onDeposit: (amount: string) => void; - onWithdraw: (amount: string) => void; + onDeposit: (amount: bigint) => void; + onWithdraw: (amount: bigint) => void; disabled?: boolean; } export function DepositAndWithdrawForm({ symbol, + decimals, balance, allowance, depositedBalance, @@ -29,13 +31,12 @@ export function DepositAndWithdrawForm({ const [activeTab, setActiveTab] = useState<"deposit" | "withdraw">("deposit"); const [depositAmount, setDepositAmount] = useState(""); const [withdrawAmount, setWithdrawAmount] = useState(""); - - const isApproved = parseEther(allowance).gte( - parseEther(depositAmount || "0"), - ); + const isApproved = allowance >= parseUnits(depositAmount, decimals); + const balanceFormatted = formatUnits(balance, decimals); + const depositedBalanceFormatted = formatUnits(depositedBalance, decimals); return ( -
+
@@ -103,22 +106,24 @@ export function DepositAndWithdrawForm({ Deposited:{" "} - {formatBalance(depositedBalance, 4)} {symbol} + {formatBalance(depositedBalanceFormatted, 4)} {symbol} } - disabled={disabled || !+depositedBalance} + disabled={disabled || !depositedBalance} /> diff --git a/apps/council-ui/src/ui/vaults/GenericVaultCard.tsx b/apps/council-ui/src/ui/vaults/GenericVaultCard.tsx index ec11b86e..7e81e25a 100644 --- a/apps/council-ui/src/ui/vaults/GenericVaultCard.tsx +++ b/apps/council-ui/src/ui/vaults/GenericVaultCard.tsx @@ -3,15 +3,15 @@ import { ReactElement } from "react"; import Skeleton from "react-loading-skeleton"; import { makeVaultURL } from "src/routes"; import { Address } from "src/ui/base/Address"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { TVP_TIP } from "src/ui/vaults/tooltips"; interface GenericVaultCardProps { - address: string; + address: `0x${string}`; name: string; - tvp?: string; - votingPower?: string; + tvp?: bigint; + votingPower?: bigint; sentenceSummary?: string; } @@ -24,10 +24,10 @@ export function GenericVaultCard({ }: GenericVaultCardProps): ReactElement { return ( -
+
-

{name}

+

{name}

{/* Description */} @@ -35,23 +35,23 @@ export function GenericVaultCard({
-
+
{/* Total Voting Power */} -
+
Total voting power: - {tvp ? formatBalance(tvp) : "None"} + {tvp ? formatVotingPower(tvp) : "None"}
-
+
Your voting power: - {votingPower ? formatBalance(votingPower) : "None"} + {votingPower ? formatVotingPower(votingPower) : "None"}
@@ -63,13 +63,13 @@ export function GenericVaultCard({ export function GenericVaultCardSkeleton(): ReactElement { return ( -
+

-
+
diff --git a/apps/council-ui/src/ui/vaults/frozenLockingVault/FrozenLockingVaultDetails.tsx b/apps/council-ui/src/ui/vaults/frozenLockingVault/FrozenLockingVaultDetails.tsx index 039b60d6..597155ed 100644 --- a/apps/council-ui/src/ui/vaults/frozenLockingVault/FrozenLockingVaultDetails.tsx +++ b/apps/council-ui/src/ui/vaults/frozenLockingVault/FrozenLockingVaultDetails.tsx @@ -1,35 +1,31 @@ -import { LockingVault } from "@council/sdk"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { ethers, Signer } from "ethers"; import { ReactElement } from "react"; -import { councilConfigs } from "src/config/council.config"; import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; - +import { useVaultConfig } from "src/ui/config/hooks/useVaultConfig"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; import { ChangeDelegateForm } from "src/ui/vaults/ChangeDelegateForm"; import { useChangeDelegate } from "src/ui/vaults/lockingVault/hooks/useChangeDelegate"; import { LockingVaultStatsRow } from "src/ui/vaults/lockingVault/LockingVaultStatsRow"; import { VaultDetails } from "src/ui/vaults/VaultDetails/VaultDetails"; import { VaultDetailsSkeleton } from "src/ui/vaults/VaultDetails/VaultDetailsSkeleton"; import { VaultHeader } from "src/ui/vaults/VaultHeader"; -import { useAccount, useSigner } from "wagmi"; +import { zeroAddress } from "viem"; +import { useAccount } from "wagmi"; interface LockingVaultDetailsProps { - address: string; + address: `0x${string}`; } export function FrozenLockingVaultDetails({ address, }: LockingVaultDetailsProps): ReactElement { - const { data: signer } = useSigner(); const { address: account } = useAccount(); const { data, status, error } = useFrozenLockingVaultDetailsData( address, account, ); - const { mutate: changeDelegate } = useChangeDelegate(address); + const { changeDelegate } = useChangeDelegate(); if (status === "error") { return ; @@ -57,10 +53,13 @@ export function FrozenLockingVaultDetails({ } actions={ - changeDelegate({ signer: signer as Signer, delegate }) + currentDelegate={data.delegate || zeroAddress} + disabled={!changeDelegate} + onDelegate={(newDelegate) => + changeDelegate?.({ + vaultAddress: address, + newDelegate, + }) } /> } @@ -69,65 +68,68 @@ export function FrozenLockingVaultDetails({ } interface LockingVaultDetailsData { - accountVotingPower: string; + accountVotingPower: bigint; activeProposalCount: number; - delegate?: string; + delegate?: `0x${string}`; delegatedToAccount: number; - depositedBalance: string; + depositedBalance: bigint; paragraphSummary: string | undefined; descriptionURL: string | undefined; name: string | undefined; participants: number; - tokenAddress: string; - tokenAllowance: string; - tokenBalance: string; + tokenAddress: `0x${string}`; + tokenAllowance: bigint; + tokenBalance: bigint; tokenSymbol: string; } function useFrozenLockingVaultDetailsData( - address: string, - account: string | undefined, + address: `0x${string}`, + account: `0x${string}` | undefined, ): UseQueryResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const coreVotingConfig = councilConfigs[chainId].coreVoting; - const vaultConfig = coreVotingConfig.vaults.find( - (vault) => vault.address === address, - ); + const council = useReadWriteCouncil(); + const vaultConfig = useVaultConfig(address); + + const enabled = !!council; return useQuery({ queryKey: ["frozenLockingVaultDetails", address, account], - queryFn: async () => { - const lockingVault = new LockingVault(address, context); - const token = await lockingVault.getToken(); - const delegate = account - ? await lockingVault.getDelegate(account) - : undefined; - const accountVotingPower = account - ? await lockingVault.getVotingPower(account) - : "0"; + enabled, + queryFn: enabled + ? async () => { + const lockingVault = council.lockingVault(address); + const token = await lockingVault.getToken(); + const delegate = account + ? await lockingVault.getDelegate({ account }) + : undefined; + const accountVotingPower = account + ? await lockingVault.getVotingPower({ account }) + : 0n; + + return { + accountVotingPower, + tokenAddress: token.address, + tokenSymbol: await token.getSymbol(), + tokenBalance: account ? await token.getBalanceOf({ account }) : 0n, + + tokenAllowance: account + ? await token.getAllowance({ owner: account, spender: address }) + : 0n, - return { - accountVotingPower, - tokenAddress: token.address, - tokenSymbol: await token.getSymbol(), - tokenBalance: account ? await token.getBalanceOf(account) : "0", - tokenAllowance: account - ? await token.getAllowance(account, address) - : "0", - depositedBalance: account - ? await lockingVault.getDepositedBalance(account) - : "0", + depositedBalance: account + ? await lockingVault.getDepositedBalance({ account }) + : 0n, - delegate: delegate?.address, - descriptionURL: vaultConfig?.descriptionURL, - paragraphSummary: vaultConfig?.paragraphSummary, - name: vaultConfig?.name, - participants: (await lockingVault.getVoters()).length, - delegatedToAccount: account - ? (await lockingVault.getDelegatorsTo(account)).length - : 0, - }; - }, + delegate: delegate?.address, + descriptionURL: vaultConfig?.descriptionURL, + paragraphSummary: vaultConfig?.paragraphSummary, + name: vaultConfig?.name, + participants: (await lockingVault.getVoters()).length, + delegatedToAccount: account + ? (await lockingVault.getDelegatorsTo({ account })).length + : 0, + }; + } + : undefined, }); } diff --git a/apps/council-ui/src/ui/vaults/genericVault/GenericVaultDetails.tsx b/apps/council-ui/src/ui/vaults/genericVault/GenericVaultDetails.tsx index caee401e..331b75e6 100644 --- a/apps/council-ui/src/ui/vaults/genericVault/GenericVaultDetails.tsx +++ b/apps/council-ui/src/ui/vaults/genericVault/GenericVaultDetails.tsx @@ -1,11 +1,10 @@ -import { VotingVault } from "@council/sdk"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; import { ReactElement } from "react"; import { councilConfigs } from "src/config/council.config"; import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; import { VaultDetails } from "src/ui/vaults/VaultDetails/VaultDetails"; import { VaultDetailsSkeleton } from "src/ui/vaults/VaultDetails/VaultDetailsSkeleton"; import { VaultHeader } from "src/ui/vaults/VaultHeader"; @@ -13,7 +12,7 @@ import { useAccount } from "wagmi"; import { GenericVaultStatsRow } from "./GenericVaultStatsRow"; interface GenericVaultDetailsProps { - address: string; + address: `0x${string}`; } export function GenericVaultDetails({ @@ -38,29 +37,25 @@ export function GenericVaultDetails({ } statsRow={ - + } /> ); } interface GenericVaultDetailsData { - accountVotingPower: string; + accountVotingPower: bigint; descriptionURL: string | undefined; paragraphSummary: string | undefined; name: string | undefined; - participants?: number; } function useGenericVaultDetailsData( - address: string, - account: string | undefined, + address: `0x${string}`, + account: `0x${string}` | undefined, ): UseQueryResult { - const { context } = useCouncil(); - const chainId = useChainId(); + const council = useReadCouncil(); + const chainId = useSupportedChainId(); const coreVotingConfig = councilConfigs[chainId].coreVoting; const vaultConfig = coreVotingConfig.vaults.find( (vault) => vault.address === address, @@ -69,19 +64,16 @@ function useGenericVaultDetailsData( return useQuery({ queryKey: ["genericVaultDetails", address, account], queryFn: async () => { - const vault = new VotingVault(address, context); + const vault = council.votingVault(address); const accountVotingPower = account - ? await vault.getVotingPower(account) - : "0"; + ? await vault.getVotingPower({ account }) + : 0n; return { accountVotingPower, descriptionURL: vaultConfig?.descriptionURL, paragraphSummary: vaultConfig?.paragraphSummary, name: vaultConfig?.name, - participants: vault.getVoters - ? (await vault.getVoters()).length - : undefined, }; }, }); diff --git a/apps/council-ui/src/ui/vaults/genericVault/GenericVaultStatsRow.tsx b/apps/council-ui/src/ui/vaults/genericVault/GenericVaultStatsRow.tsx index 38e8ec6e..db12cf6e 100644 --- a/apps/council-ui/src/ui/vaults/genericVault/GenericVaultStatsRow.tsx +++ b/apps/council-ui/src/ui/vaults/genericVault/GenericVaultStatsRow.tsx @@ -1,20 +1,15 @@ import { ReactElement } from "react"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { Stat } from "src/ui/base/Stat"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; -import { - PARTICIPANTS_TIP, - YOUR_VOTING_POWER_TIP, -} from "src/ui/vaults/tooltips"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; +import { YOUR_VOTING_POWER_TIP } from "src/ui/vaults/tooltips"; interface GeneircVaultStatsRowProps { - accountVotingPower: string; - participants?: number; + accountVotingPower: bigint; } export function GenericVaultStatsRow({ accountVotingPower, - participants, }: GeneircVaultStatsRowProps): ReactElement { return (
@@ -24,19 +19,10 @@ export function GenericVaultStatsRow({ Your voting power } - value={+accountVotingPower ? formatBalance(accountVotingPower) : "None"} + value={ + accountVotingPower ? formatVotingPower(accountVotingPower) : "None" + } /> - - {typeof participants !== "undefined" && ( - - Participants - - } - value={participants} - /> - )}
); } diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCMembershipStat.tsx b/apps/council-ui/src/ui/vaults/gscVault/GSCMembershipStat.tsx deleted file mode 100644 index 450d099b..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCMembershipStat.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { ReactElement } from "react"; -import { Stat } from "src/ui/base/Stat"; -import { GSCStatus } from "src/vaults/gscVault/types"; -import { useAccount } from "wagmi"; - -interface GSCMembershipStatProps { - account: string | undefined; - accountMembership: GSCStatus; -} - -export function GSCMembershipStat({ - account, - accountMembership, -}: GSCMembershipStatProps): ReactElement { - const { address: connectedAccount } = useAccount(); - const showJoinButton = - account === connectedAccount && accountMembership === "Eligible"; - - return ( - - {accountMembership}{" "} - {showJoinButton ? ( - - ) : null} -
- } - /> - ); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultDetails.tsx b/apps/council-ui/src/ui/vaults/gscVault/GSCVaultDetails.tsx index 3e3713f7..91394ea3 100644 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultDetails.tsx +++ b/apps/council-ui/src/ui/vaults/gscVault/GSCVaultDetails.tsx @@ -1,34 +1,33 @@ -import { GSCVault } from "@council/sdk"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; import { ReactElement } from "react"; -import { councilConfigs } from "src/config/council.config"; -import { VaultConfig, VotingContractConfig } from "src/config/CouncilConfig"; import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { GSCMembersTable } from "src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTable"; -import { GSCVaultsStatsRow } from "src/ui/vaults/gscVault/GSCVaultStatsRow/GSCVaultStatsRow"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { GscMembersTable } from "src/ui/vaults/gscVault/GscMembersTable"; +import { GSCVaultsStatsRow } from "src/ui/vaults/gscVault/GscVaultStatsRow"; import { VaultDetails } from "src/ui/vaults/VaultDetails/VaultDetails"; import { VaultDetailsSkeleton } from "src/ui/vaults/VaultDetails/VaultDetailsSkeleton"; import { VaultHeader } from "src/ui/vaults/VaultHeader"; import { - getGSCMembers, - GSCMemberInfo, -} from "src/vaults/gscVault/getGSCMembers"; -import { getGSCStatus } from "src/vaults/gscVault/getGSCStatus"; -import { GSCStatus } from "src/vaults/gscVault/types"; -import { useAccount } from "wagmi"; + getGscMembers, + GscMemberInfo, +} from "src/utils/gscVault/getGscMembers"; +import { getGscStatus } from "src/utils/gscVault/getGscStatus"; +import { GscStatus } from "src/utils/gscVault/types"; +import { PublicClient } from "viem"; +import { useAccount, usePublicClient } from "wagmi"; +import { useReadGscVault } from "./hooks/useReadGscVault"; -interface GSCVaultDetailsProps { - address: string; +interface GscVaultDetailsProps { + address: `0x${string}`; } -export function GSCVaultDetails({ +export function GscVaultDetails({ address: vaultAddress, -}: GSCVaultDetailsProps): ReactElement { +}: GscVaultDetailsProps): ReactElement { const { address: account } = useAccount(); - const { data, status, error } = useGSCVaultDetails({ + const { data, status, error } = useGscVaultDetails({ vaultAddress, account, }); @@ -50,18 +49,16 @@ export function GSCVaultDetails({ } statsRow={ } actions={ -
- +
} @@ -70,53 +67,45 @@ export function GSCVaultDetails({ } interface GSCVaultDetailsData { - gscStatus: GSCStatus; + gscStatus: GscStatus; paragraphSummary: string | undefined; descriptionURL: string | undefined; name: string | undefined; - members: GSCMemberInfo[]; - requiredVotingPower: string; + members: GscMemberInfo[]; + requiredVotingPower: bigint; } -function useGSCVaultDetails({ +function useGscVaultDetails({ vaultAddress, account, }: { - vaultAddress: string; - account: string | undefined; + vaultAddress: `0x${string}`; + account: `0x${string}` | undefined; }): UseQueryResult { - const { context, coreVoting, gscVoting } = useCouncil(); - const chainId = useChainId(); + const coreVoting = useReadCoreVoting(); + const config = useCouncilConfig(); + const vaultConfig = config.gscVoting?.vault; + const gscVault = useReadGscVault(); + const publicClient = usePublicClient(); - const coreVotingConfig = councilConfigs[chainId].coreVoting; - // safe to cast because this component should never be rendered unless it's - // already known that there's a GSC Core Voting in the system. - // See: pages/vaults/details.tsx - const gscCoreVotingConfig = councilConfigs[chainId] - .gscVoting as VotingContractConfig; - const vaultConfig = gscCoreVotingConfig.vaults.find( - (vault) => vault.address === vaultAddress, - ) as VaultConfig; + const enabled = !!gscVault && !!vaultConfig; - const queryEnabled = !!gscVoting; return useQuery({ queryKey: ["gscLockingVaultDetails", vaultAddress, account], - enabled: queryEnabled, - queryFn: queryEnabled + enabled, + queryFn: enabled ? async (): Promise => { - const gscVault = new GSCVault(vaultAddress, context); - const requiredVotingPower = await gscVault.getRequiredVotingPower(); - const members = await getGSCMembers( + const members = await getGscMembers({ + client: publicClient as PublicClient, gscVault, - coreVotingConfig.vaults.map((vault) => vault.address), - context.provider, - ); + approvedVaults: coreVoting.vaults, + }); - const gscStatus = await getGSCStatus({ - coreVoting, - gscVoting, - address: account, + const gscStatus = await getGscStatus({ + account, + qualifyingVaults: coreVoting.vaults, + gscVault, }); return { diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultPreviewCard/GSCVaultPreviewCard.tsx b/apps/council-ui/src/ui/vaults/gscVault/GSCVaultPreviewCard/GSCVaultPreviewCard.tsx deleted file mode 100644 index 35e30875..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultPreviewCard/GSCVaultPreviewCard.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; -import assertNever from "assert-never"; -import Link from "next/link"; -import { ReactElement } from "react"; -import { makeVaultURL } from "src/routes"; -import { Address } from "src/ui/base/Address"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { GenericVaultCardSkeleton } from "src/ui/vaults/GenericVaultCard"; -import { useGSCStatus } from "src/ui/vaults/gscVault/useGSCStatus"; -import { GSCStatus } from "src/vaults/gscVault/types"; -import { getGSCCoreVotingVaults } from "src/vaults/vaults"; -import { useAccount } from "wagmi"; - -interface GSCVaultPreviewCardProps { - vaultAddress: string; -} - -export function GSCVaultPreviewCard({ - vaultAddress, -}: GSCVaultPreviewCardProps): ReactElement { - const { data: gscVaultPreviewCardData, status } = - useGSCVaultPreviewCard(vaultAddress); - - switch (status) { - case "loading": - return ; - case "error": - // TODO: render an error card instead - return ; - case "success": { - const { - vaultName, - memberCount, - connectedAccountMembershipStatus, - sentenceSummary, - } = gscVaultPreviewCardData; - return ( - -
-
-
-

{vaultName}

-
- {/* Description */} - - {sentenceSummary} - -
- -
- {/* GSC Members */} -
- GSC members: - - - {memberCount ? formatBalance(memberCount) : "None"} - - -
- - {/* Your status */} -
- Your status: - - {connectedAccountMembershipStatus} - -
-
-
-
- - ); - } - default: - assertNever(status); - } -} - -interface GSCVaultPreviewData { - vaultName: string; - memberCount: number; - connectedAccountMembershipStatus: GSCStatus; - sentenceSummary?: string; -} -function useGSCVaultPreviewCard(gscVaultAddress: string) { - const { gscVoting } = useCouncil(); - const chainId = useChainId(); - const { address: account } = useAccount(); - const { data: gscStatus } = useGSCStatus(account); - - const gscVaultConfig = getGSCCoreVotingVaults(chainId).find( - ({ address }) => gscVaultAddress === address, - ); - const gscVaultModel = gscVoting?.vaults.find( - ({ address }) => gscVaultAddress === address, - ); - - const queryEnabled = !!gscVaultModel && !!gscVaultConfig; - return useQuery({ - queryKey: ["GSCVaultPreviewCard", gscVaultConfig?.address, account], - enabled: queryEnabled, - queryFn: queryEnabled - ? async (): Promise => { - return { - vaultName: gscVaultConfig.name, - memberCount: await (await gscVaultModel.getMembers()).length, - connectedAccountMembershipStatus: gscStatus ?? "N/A", - sentenceSummary: gscVaultConfig.sentenceSummary, - }; - } - : undefined, - }); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultProfileCard/GSCVaultProfileCard.tsx b/apps/council-ui/src/ui/vaults/gscVault/GSCVaultProfileCard/GSCVaultProfileCard.tsx deleted file mode 100644 index fb6fd018..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultProfileCard/GSCVaultProfileCard.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; -import { ReactElement } from "react"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { useGSCStatus } from "src/ui/vaults/gscVault/useGSCStatus"; -import { useKickGSCMember } from "src/ui/vaults/gscVault/useKickGSCMember"; -import { VaultProfileCard } from "src/ui/vaults/VaultProfileCard"; -import { VaultProfileCardSkeleton } from "src/ui/vaults/VaultProfileCardSkeleton"; -import { getIsGSCMember } from "src/vaults/gscVault/getGSCStatus"; -import { getVaultConfig } from "src/vaults/vaults"; -import { useSigner } from "wagmi"; - -interface GSCVaultProfileCardProps { - address: string; - profileAddress: string; -} - -export function GSCVaultProfileCard({ - address, - profileAddress, -}: GSCVaultProfileCardProps): ReactElement { - const { data } = useGSCVaultProfileCardData(address, profileAddress); - - // config - const chainId = useChainId(); - const config = getVaultConfig(address, chainId); - const name = config?.name || "GSC Vault"; - - // kick transaction - const { data: signer } = useSigner(); - const { mutate: kickGSCMember } = useKickGSCMember(address); - - if (!data) { - return ; - } - - const { - gscStatus, - isBelowThreshold, - requiredVotingPower, - qualifyingVotingPower, - } = data; - - return ( - - signer && - kickGSCMember({ - memberAddress: profileAddress, - signer, - }), - }} - /> - ); -} - -function useGSCVaultProfileCardData(vaultAddress: string, userAddress: string) { - const { coreVoting, gscVoting } = useCouncil(); - const { data: gscStatus } = useGSCStatus(userAddress); - const queryEnabled = !!gscVoting; - - return useQuery({ - queryKey: ["gsc-vault-profile-card", { userAddress, vaultAddress }], - enabled: queryEnabled, - queryFn: queryEnabled - ? async () => { - const qualifyingVotingPower = await coreVoting.getVotingPower( - userAddress, - ); - const requiredVotingPower = await gscVoting?.getRequiredVotingPower(); - const isBelowThreshold = - +qualifyingVotingPower < +requiredVotingPower; - - return { - isBelowThreshold, - requiredVotingPower, - qualifyingVotingPower, - gscStatus, - }; - } - : undefined, - }); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultStatsRow/GSCMembershipStatusStat.tsx b/apps/council-ui/src/ui/vaults/gscVault/GSCVaultStatsRow/GSCMembershipStatusStat.tsx deleted file mode 100644 index d76e7dd2..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultStatsRow/GSCMembershipStatusStat.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { ReactElement, ReactNode } from "react"; -import { Stat } from "src/ui/base/Stat"; -import { useJoinGSC } from "src/ui/vaults/gscVault/useJoinGSC"; -import { GSCStatus } from "src/vaults/gscVault/types"; -import { useSigner } from "wagmi"; - -interface GSCMembershipStatusStatProps { - gscVaultAddress: string; - accountMembership: GSCStatus; -} -export function GSCMembershipStatusStat({ - gscVaultAddress, - accountMembership, -}: GSCMembershipStatusStatProps): ReactElement { - const { mutate: joinGSC } = useJoinGSC(gscVaultAddress); - const { data: signer } = useSigner(); - let joinButton: ReactNode | null = null; - - if (accountMembership === "Eligible" && signer) { - joinButton = ( - - ); - } - - return ( - - {accountMembership} - {joinButton} -
- } - /> - ); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTable.tsx b/apps/council-ui/src/ui/vaults/gscVault/GscMembersTable.tsx similarity index 52% rename from apps/council-ui/src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTable.tsx rename to apps/council-ui/src/ui/vaults/gscVault/GscMembersTable.tsx index 135134ff..4c795893 100644 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTable.tsx +++ b/apps/council-ui/src/ui/vaults/gscVault/GscMembersTable.tsx @@ -1,28 +1,24 @@ -import { Signer } from "ethers"; import { ReactElement } from "react"; import { makeVoterURL } from "src/routes"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { GridTableRowLink } from "src/ui/base/tables/GridTableRowLink"; -import { GSCMembersTableHeader } from "src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTableHeader"; -import { useKickGSCMember } from "src/ui/vaults/gscVault/useKickGSCMember"; +import { GscMembersTableHeader } from "src/ui/vaults/gscVault/GscMembersTableHeader"; +import { useKickGscMember } from "src/ui/vaults/gscVault/hooks/useKickGscMember"; import { VoterAddress } from "src/ui/voters/VoterAddress"; -import { GSCMemberInfo } from "src/vaults/gscVault/getGSCMembers"; -import { useSigner } from "wagmi"; +import { GscMemberInfo } from "src/utils/gscVault/getGscMembers"; -interface GSCMembersTableProps { - gscVaultAddress: string; - members: GSCMemberInfo[]; - requiredVotingPower: string; +interface GscMembersTableProps { + members: GscMemberInfo[]; + requiredVotingPower: bigint; } -export function GSCMembersTable({ +export function GscMembersTable({ members, requiredVotingPower, - gscVaultAddress, -}: GSCMembersTableProps): ReactElement { +}: GscMembersTableProps): ReactElement { return (
- + {members.length ? ( members.map((memberInfo) => ( @@ -30,36 +26,34 @@ export function GSCMembersTable({ key={memberInfo.member.address} requiredVotingPower={requiredVotingPower} member={memberInfo} - gscVaultAddress={gscVaultAddress} /> )) ) : ( -
No GSC Members
+
No GSC Members
)}
); } interface GSCMembersTableRow { - member: GSCMemberInfo; - gscVaultAddress: string; - requiredVotingPower: string; + member: GscMemberInfo; + requiredVotingPower: bigint; } function GSCMembersTableRow({ member: { member, ensName, qualifyingVotingPower }, - gscVaultAddress, requiredVotingPower, }: GSCMembersTableRow) { - const { data: signer } = useSigner(); + const { kickGscMember } = useKickGscMember(); + const isKickButtonDisabled = - +qualifyingVotingPower >= +requiredVotingPower && !!signer; - const { mutate: kickGSCMember } = useKickGSCMember(gscVaultAddress); + qualifyingVotingPower >= requiredVotingPower && !!kickGscMember; + return ( - {formatBalance(qualifyingVotingPower)} + {formatVotingPower(qualifyingVotingPower)} @@ -70,11 +64,7 @@ function GSCMembersTableRow({ // prevent clicking the button from navigating the user to the voter // page, since this is a button inside of a link.. e.preventDefault(); - kickGSCMember({ - memberAddress: member.address, - // safe to cast because button is disabled when signer is undefined - signer: signer as Signer, - }); + kickGscMember?.(member.address); }} > Kick Member diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTableHeader.tsx b/apps/council-ui/src/ui/vaults/gscVault/GscMembersTableHeader.tsx similarity index 78% rename from apps/council-ui/src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTableHeader.tsx rename to apps/council-ui/src/ui/vaults/gscVault/GscMembersTableHeader.tsx index e06dcd16..92ae3644 100644 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCMembersTable/GSCMembersTableHeader.tsx +++ b/apps/council-ui/src/ui/vaults/gscVault/GscMembersTableHeader.tsx @@ -1,8 +1,8 @@ import { ReactElement } from "react"; import { GridTableHeader } from "src/ui/base/tables/GridTableHeader"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; -export function GSCMembersTableHeader(): ReactElement { +export function GscMembersTableHeader(): ReactElement { return ( Member diff --git a/apps/council-ui/src/ui/vaults/gscVault/GscMembershipStatusStat.tsx b/apps/council-ui/src/ui/vaults/gscVault/GscMembershipStatusStat.tsx new file mode 100644 index 00000000..19f2e7fe --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/GscMembershipStatusStat.tsx @@ -0,0 +1,33 @@ +import { ReactElement } from "react"; +import { Stat } from "src/ui/base/Stat"; +import { GscStatus } from "src/utils/gscVault/types"; + +interface GscMembershipStatusStatProps { + status: GscStatus; + onJoin?: () => void; +} + +export function GscMembershipStatusStat({ + status, + onJoin, +}: GscMembershipStatusStatProps): ReactElement { + return ( + + {status} + + {onJoin && ( + + )} +
+ } + /> + ); +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GscVaultPreviewCard.tsx b/apps/council-ui/src/ui/vaults/gscVault/GscVaultPreviewCard.tsx new file mode 100644 index 00000000..b7fef8dd --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/GscVaultPreviewCard.tsx @@ -0,0 +1,89 @@ +import { QueryStatus } from "@tanstack/react-query"; +import assertNever from "assert-never"; +import Link from "next/link"; +import { ReactElement } from "react"; +import { makeVaultURL } from "src/routes"; +import { Address } from "src/ui/base/Address"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { GenericVaultCardSkeleton } from "src/ui/vaults/GenericVaultCard"; +import { useGscStatus } from "src/ui/vaults/gscVault/hooks/useGscStatus"; +import { useAccount } from "wagmi"; +import { useGscMembers } from "./hooks/useGscMembers"; + +interface GSCVaultPreviewCardProps { + vaultAddress: `0x${string}`; +} + +export function GSCVaultPreviewCard({ + vaultAddress, +}: GSCVaultPreviewCardProps): ReactElement { + const { address: account } = useAccount(); + + // config + const config = useCouncilConfig(); + const name = config.gscVoting?.vault.name; + const sentenceSummary = config.gscVoting?.vault.sentenceSummary; + + // members and status + const { gscMembers, status: gscMembersQueryStatus } = useGscMembers(); + const { + gscStatus: connectedAccountMembershipStatus, + status: gscStatusQueryStatus, + } = useGscStatus(account); + + const allQueryStatuses = [gscStatusQueryStatus, gscMembersQueryStatus]; + const queryStatus: QueryStatus = allQueryStatuses.includes("error") + ? "error" + : allQueryStatuses.includes("pending") + ? "pending" + : "success"; + + switch (queryStatus) { + case "pending": + return ; + case "error": + // TODO: render an error card instead + return ; + case "success": { + return ( + +
+
+
+

{name}

+
+ {/* Description */} + + {sentenceSummary} + +
+ +
+ {/* GSC Members */} +
+ GSC members: + + + {gscMembers?.length || "None"} + + +
+ + {/* Your status */} +
+ Your status: + + {connectedAccountMembershipStatus} + +
+
+
+
+ + ); + } + default: + assertNever(queryStatus); + } +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GscVaultProfileCard.tsx b/apps/council-ui/src/ui/vaults/gscVault/GscVaultProfileCard.tsx new file mode 100644 index 00000000..f0e68550 --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/GscVaultProfileCard.tsx @@ -0,0 +1,105 @@ +import { useQuery } from "@tanstack/react-query"; +import { ReactElement } from "react"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { VaultProfileCard } from "src/ui/vaults/VaultProfileCard"; +import { VaultProfileCardSkeleton } from "src/ui/vaults/VaultProfileCardSkeleton"; +import { useGscStatus } from "src/ui/vaults/gscVault/hooks/useGscStatus"; +import { useKickGscMember } from "src/ui/vaults/gscVault/hooks/useKickGscMember"; +import { getIsGscMember } from "src/utils/gscVault/getGscStatus"; +import { useReadGscVault } from "./hooks/useReadGscVault"; + +interface GSCVaultProfileCardProps { + address: `0x${string}`; + profileAddress: `0x${string}`; +} + +export function GSCVaultProfileCard({ + address, + profileAddress, +}: GSCVaultProfileCardProps): ReactElement { + const { data } = useGSCVaultProfileCardData(address, profileAddress); + + // config + const config = useCouncilConfig(); + const name = config.gscVoting?.vault?.name || "GSC Vault"; + + // kick transaction + const { kickGscMember } = useKickGscMember(); + + if (!data) { + return ; + } + + const { + gscStatus, + isBelowThreshold, + requiredVotingPower, + qualifyingVotingPower, + } = data; + + return ( + kickGscMember?.(profileAddress), + }} + /> + ); +} + +function useGSCVaultProfileCardData( + vaultAddress: `0x${string}`, + account: `0x${string}`, +) { + const coreVoting = useReadCoreVoting(); + const gscVault = useReadGscVault(); + const { gscStatus } = useGscStatus(account); + const enabled = !!gscVault; + + return useQuery({ + queryKey: [ + "gsc-vault-profile-card", + { userAddress: account, vaultAddress }, + ], + enabled, + queryFn: enabled + ? async () => { + const qualifyingVotingPower = await coreVoting.getVotingPower({ + account, + }); + const requiredVotingPower = await gscVault.getRequiredVotingPower(); + const isBelowThreshold = qualifyingVotingPower < requiredVotingPower; + + return { + isBelowThreshold, + requiredVotingPower, + qualifyingVotingPower, + gscStatus, + }; + } + : undefined, + }); +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultStatsRow/GSCVaultStatsRow.tsx b/apps/council-ui/src/ui/vaults/gscVault/GscVaultStatsRow.tsx similarity index 59% rename from apps/council-ui/src/ui/vaults/gscVault/GSCVaultStatsRow/GSCVaultStatsRow.tsx rename to apps/council-ui/src/ui/vaults/gscVault/GscVaultStatsRow.tsx index ca08d4ee..37781d5e 100644 --- a/apps/council-ui/src/ui/vaults/gscVault/GSCVaultStatsRow/GSCVaultStatsRow.tsx +++ b/apps/council-ui/src/ui/vaults/gscVault/GscVaultStatsRow.tsx @@ -1,19 +1,17 @@ import { ReactElement } from "react"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; import { Stat } from "src/ui/base/Stat"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; -import { GSCStatus } from "src/vaults/gscVault/types"; -import { GSCMembershipStatusStat } from "./GSCMembershipStatusStat"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import { GscStatus } from "src/utils/gscVault/types"; +import { GscMembershipStatusStat } from "./GscMembershipStatusStat"; interface GSCVaultStatsRowProps { - gscVaultAddress: string; - accountMembership: GSCStatus; + accountMembership: GscStatus; membersCount: number; - requiredVotingPower: string; + requiredVotingPower: bigint; } export function GSCVaultsStatsRow({ - gscVaultAddress, accountMembership, membersCount, requiredVotingPower, @@ -21,10 +19,7 @@ export function GSCVaultsStatsRow({ return (
{accountMembership && ( - + )} {membersCount >= 0 && ( @@ -41,7 +36,7 @@ export function GSCVaultsStatsRow({ Voting Power Required to be a GSC Member } - value={formatBalance(requiredVotingPower)} + value={formatVotingPower(requiredVotingPower)} />
); diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useGscMembers.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useGscMembers.ts new file mode 100644 index 00000000..b6d80acb --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useGscMembers.ts @@ -0,0 +1,22 @@ +import { ReadVoter } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadGscVault } from "./useReadGscVault"; + +export function useGscMembers(): { + gscMembers: ReadVoter[] | undefined; + status: QueryStatus; +} { + const gscVault = useReadGscVault(); + const enabled = !!gscVault?.address; + + const { data, status } = useQuery({ + queryKey: ["gsc-gsc-members", gscVault?.address], + enabled, + queryFn: enabled ? async () => gscVault?.getMembers() : undefined, + }); + + return { + gscMembers: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useGscStatus.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useGscStatus.ts new file mode 100644 index 00000000..51d22cba --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useGscStatus.ts @@ -0,0 +1,28 @@ +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useReadGscVault } from "src/ui/vaults/gscVault/hooks/useReadGscVault"; +import { getGscStatus } from "src/utils/gscVault/getGscStatus"; +import { GscStatus } from "src/utils/gscVault/types"; + +export function useGscStatus(account: `0x${string}` | undefined): { + gscStatus: GscStatus | undefined; + status: QueryStatus; +} { + const coreVoting = useReadCoreVoting(); + const gscVault = useReadGscVault(); + + const { data, status } = useQuery({ + queryKey: ["gsc-status", account], + queryFn: () => + getGscStatus({ + account, + qualifyingVaults: coreVoting.vaults, + gscVault, + }), + }); + + return { + gscStatus: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useIsGscMember.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useIsGscMember.ts new file mode 100644 index 00000000..2d5ddd82 --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useIsGscMember.ts @@ -0,0 +1,28 @@ +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadGscVault } from "./useReadGscVault"; + +/** + * GSC Status (which includes eligible, ineligible statuses) is an expensive + * lookup, but just checking if someone is a member is cheap. Prefer this + * instead of the heavier useGSCStatus hook whenever possible. + */ +export function useIsGscMember(account: `0x${string}` | undefined): { + isGscMember: boolean | undefined; + status: QueryStatus; +} { + const gscVault = useReadGscVault(); + const enabled = !!account; + + const { data, status } = useQuery({ + queryKey: ["useIsGSCMember", account], + enabled: enabled, + queryFn: enabled + ? async () => gscVault?.getIsMember({ account }) + : undefined, + }); + + return { + isGscMember: data, + status, + }; +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useJoinGsc.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useJoinGsc.ts new file mode 100644 index 00000000..fb3ce671 --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useJoinGsc.ts @@ -0,0 +1,37 @@ +import { getVaultsWithPower } from "@delvtech/council-core"; +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useAccount } from "wagmi"; +import { useReadWriteGscVault } from "./useReadWriteGscVault"; + +export function useJoinGsc(): { + joinGsc: (() => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const { address } = useAccount(); + const coreVoting = useReadCoreVoting(); + const gscVault = useReadWriteGscVault(); + const enabled = !!address && !!coreVoting && !!gscVault; + + const { write, status, transactionHash } = useWrite({ + writeFn: async () => { + if (!enabled) { + throw new Error("GSC Vault not found"); + } + + // collect the vaults that the signer has voting power in. We can only use + // those vaults when calling GSCVault.join + const vaults = await getVaultsWithPower(address, coreVoting.vaults); + + return gscVault.join({ vaults }); + }, + }); + + return { + joinGsc: enabled ? write : undefined, + status, + transactionHash, + }; +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useKickGscMember.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useKickGscMember.ts new file mode 100644 index 00000000..736914a3 --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useKickGscMember.ts @@ -0,0 +1,28 @@ +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteGscVault } from "./useReadWriteGscVault"; + +export function useKickGscMember(): { + kickGscMember: ((account: `0x${string}`) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const gscVault = useReadWriteGscVault(); + const enabled = !!gscVault; + + const { write, status, transactionHash } = useWrite({ + writeFn: async (account: `0x${string}`) => { + if (!enabled) { + throw new Error("GSC Vault not found"); + } + + return gscVault.kick({ account }); + }, + }); + + return { + kickGscMember: enabled ? write : undefined, + status, + transactionHash, + }; +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useReadGscVault.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useReadGscVault.ts new file mode 100644 index 00000000..3980f86c --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useReadGscVault.ts @@ -0,0 +1,17 @@ +import { ReadGscVault } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; + +/** + * Use a ReadGscVault instance for configured GSC vault. + */ +export function useReadGscVault(): ReadGscVault | undefined { + const { gscVoting } = useCouncilConfig(); + const council = useReadCouncil(); + + return useMemo( + () => gscVoting && council.gscVault(gscVoting.vault.address), + [council, gscVoting], + ); +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/hooks/useReadWriteGscVault.ts b/apps/council-ui/src/ui/vaults/gscVault/hooks/useReadWriteGscVault.ts new file mode 100644 index 00000000..0ad1c7fe --- /dev/null +++ b/apps/council-ui/src/ui/vaults/gscVault/hooks/useReadWriteGscVault.ts @@ -0,0 +1,17 @@ +import { ReadWriteGscVault } from "@delvtech/council-viem"; +import { useMemo } from "react"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +/** + * Use a ReadWriteGscVault instance for configured GSC vault. + */ +export function useReadWriteGscVault(): ReadWriteGscVault | undefined { + const { gscVoting } = useCouncilConfig(); + const council = useReadWriteCouncil(); + + return useMemo( + () => gscVoting && council?.gscVault(gscVoting.vault.address), + [council, gscVoting], + ); +} diff --git a/apps/council-ui/src/ui/vaults/gscVault/useGSCMemberAddresses.ts b/apps/council-ui/src/ui/vaults/gscVault/useGSCMemberAddresses.ts deleted file mode 100644 index 698ea025..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/useGSCMemberAddresses.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; - -export function useGSCMemberAddresses(): UseQueryResult { - const { gscVoting } = useCouncil(); - return useQuery({ - queryKey: ["gsc-status", !!gscVoting], - queryFn: async () => { - if (!gscVoting) { - return []; - } - const members = await gscVoting.getVoters(); - return members.map(({ address }) => address); - }, - }); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/useGSCStatus.ts b/apps/council-ui/src/ui/vaults/gscVault/useGSCStatus.ts deleted file mode 100644 index 5c9de185..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/useGSCStatus.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { getGSCStatus } from "src/vaults/gscVault/getGSCStatus"; -import { GSCStatus } from "src/vaults/gscVault/types"; - -export function useGSCStatus( - address: string | undefined, -): UseQueryResult { - const { gscVoting, coreVoting } = useCouncil(); - const queryEnabled = !!address; - return useQuery({ - queryKey: ["gsc-status", address], - enabled: queryEnabled, - queryFn: queryEnabled - ? async (): Promise => - getGSCStatus({ coreVoting, gscVoting, address }) - : undefined, - }); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/useIsGSCMember.ts b/apps/council-ui/src/ui/vaults/gscVault/useIsGSCMember.ts deleted file mode 100644 index 2bbb2c7b..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/useIsGSCMember.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; - -/** - * GSC Status (which includes eligible, ineligible statuses) is an expensive - * lookup, but just checking if someone is a member is cheap. Prefer this - * instead of the heavier useGSCStatus hook whenever possible. - */ -export function useIsGSCMember( - address: string | undefined, -): UseQueryResult { - const { gscVoting } = useCouncil(); - const queryEnabled = !!address; - return useQuery({ - queryKey: ["is-gsc-member", address], - enabled: queryEnabled, - queryFn: queryEnabled - ? async (): Promise => { - if (!gscVoting) { - return false; - } - const members = await gscVoting.getVoters(); - const memberAddresses = members.map(({ address }) => address); - return memberAddresses.includes(address); - } - : undefined, - }); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/useJoinGSC.ts b/apps/council-ui/src/ui/vaults/gscVault/useJoinGSC.ts deleted file mode 100644 index 2c245799..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/useJoinGSC.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { CouncilContext, GSCVault, VotingVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { Signer } from "ethers"; -import { VaultConfig } from "src/config/CouncilConfig"; -import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; -import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { getCoreVotingVaults } from "src/vaults/vaults"; - -interface JoinGSCOptions { - signer: Signer; -} -export function useJoinGSC( - gscVaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const queryClient = useQueryClient(); - const chainId = useChainId(); - let transactionHash: string; - const coreVotingVaultConfigs = getCoreVotingVaults(chainId); - - return useMutation({ - mutationFn: async ({ signer }: JoinGSCOptions): Promise => { - const signerAddress = await signer.getAddress(); - // collect the vaults that the signer has voting power in. We can only use - // those vaults when calling GSCVault.join - const vaultsWithVotingPowerForSigner = - await getVaultsWithVotingPowerForAccount( - signerAddress, - coreVotingVaultConfigs, - context, - ); - - const gscVault = new GSCVault(gscVaultAddress, context); - return gscVault.join(signer, vaultsWithVotingPowerForSigner, { - onSubmitted: (hash) => { - makeTransactionSubmittedToast( - "Transaction submitted to join the GSC...", - hash, - chainId, - ); - transactionHash = hash; - }, - }); - }, - onSuccess: (hash) => { - makeTransactionSuccessToast( - "Successfully joined the GSC!", - hash, - chainId, - ); - queryClient.invalidateQueries(); - }, - onError(error) { - makeTransactionErrorToast( - "Failed to join the GSC. Please make sure you have the requisite voting power to become a member first.", - transactionHash, - chainId, - ); - console.error(error); - }, - }); -} - -// TODO: Use getVaultsWithPower from SDK -async function getVaultsWithVotingPowerForAccount( - account: string, - coreVotingVaults: VaultConfig[], - context: CouncilContext, -) { - return ( - await Promise.all( - coreVotingVaults.map(async ({ address }) => { - const vault = new VotingVault(address, context); - return { - vaultAddress: vault.address, - votingPower: await vault.getVotingPower(account), - }; - }), - ) - ) - .filter(({ votingPower }) => +votingPower > 0) - .map(({ vaultAddress }) => vaultAddress); -} diff --git a/apps/council-ui/src/ui/vaults/gscVault/useKickGSCMember.ts b/apps/council-ui/src/ui/vaults/gscVault/useKickGSCMember.ts deleted file mode 100644 index 32eeed2a..00000000 --- a/apps/council-ui/src/ui/vaults/gscVault/useKickGSCMember.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { GSCVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { Signer } from "ethers"; -import { formatAddress } from "src/ui/base/formatting/formatAddress"; -import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; -import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; - -interface KickGSCMemberOptions { - signer: Signer; - memberAddress: string; -} -export function useKickGSCMember( - gscVaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const queryClient = useQueryClient(); - let transactionHash: string; - - return useMutation({ - mutationFn: ({ - signer, - memberAddress, - }: KickGSCMemberOptions): Promise => { - const gscVault = new GSCVault(gscVaultAddress, context); - return gscVault.kick(signer, memberAddress, { - onSubmitted: (hash) => { - makeTransactionSubmittedToast( - `Kicking GSC Member: ${formatAddress(memberAddress)}`, - hash, - chainId, - ); - transactionHash = hash; - }, - }); - }, - onSuccess: (hash, { memberAddress }) => { - makeTransactionSuccessToast( - `Successfully kicked ${formatAddress(memberAddress)} from the GSC!`, - hash, - chainId, - ); - queryClient.invalidateQueries(); - }, - onError(error, { memberAddress }) { - makeTransactionErrorToast( - `Failed to kick ${formatAddress(memberAddress)} from the GSC.`, - transactionHash, - chainId, - ); - console.error(error); - }, - }); -} diff --git a/apps/council-ui/src/ui/vaults/hooks/useDelegatesByVault.ts b/apps/council-ui/src/ui/vaults/hooks/useDelegatesByVault.ts index d8659a54..a2ec0394 100644 --- a/apps/council-ui/src/ui/vaults/hooks/useDelegatesByVault.ts +++ b/apps/council-ui/src/ui/vaults/hooks/useDelegatesByVault.ts @@ -1,42 +1,73 @@ -import { LockingVault, VestingVault, Voter } from "@council/sdk"; -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { getVaultConfig } from "src/vaults/vaults"; +import { + BlockLike, + ReadLockingVault, + ReadVestingVault, + ReadVoter, + ReadVotingVault, +} from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { useAccount } from "wagmi"; +interface UseDelegatesByVaultOptions { + vaults?: (ReadVotingVault | `0x${string}`)[]; + account?: `0x${string}`; + atBlock?: BlockLike; +} + /** - * Get an object representing the connected wallet's delegates by vault address. + * Get an object representing a wallet's delegates by vault address. + * @param account The account to get delegates for. If not provided, the + * connected account will be used. */ -export function useDelegatesByVault(): UseQueryResult> { - const { address } = useAccount(); - const { coreVoting } = useCouncil(); - const chainId = useChainId(); - - return useQuery({ - queryKey: ["delegates-by-vault", address, chainId], - enabled: !!address, - queryFn: !!address +export function useDelegatesByVault({ + vaults: _vaults, + account, + atBlock, +}: UseDelegatesByVaultOptions = {}): { + delegatesByVault: Record<`0x${string}`, ReadVoter> | undefined; + status: QueryStatus; +} { + const chainId = useSupportedChainId(); + const vaultConfigs = useCouncilConfig().coreVoting.vaults; + const council = useReadCouncil(); + const coreVoting = useReadCoreVoting(); + + const { address: connectedAccount } = useAccount(); + const accountToUse = account ?? connectedAccount; + + const enabled = !!accountToUse; + + const { data, status } = useQuery({ + queryKey: ["delegates-by-vault", accountToUse, chainId], + enabled, + queryFn: enabled ? async () => { - const delegatesByVault: Record = {}; + const delegatesByVault: Record<`0x${string}`, ReadVoter> = {}; - for (const vault of coreVoting.vaults) { - const config = getVaultConfig(vault.address, chainId); + const vaults = + _vaults?.map((vault) => + typeof vault === "string" ? council.votingVault(vault) : vault, + ) || coreVoting.vaults; - if (!config) { - continue; - } + for (const vault of vaults) { + const config = vaultConfigs.find( + ({ address }) => address === vault.address, + ); - let typedDelegationVault: LockingVault | VestingVault | undefined = - undefined; + let typedDelegationVault: + | ReadLockingVault + | ReadVestingVault + | undefined; - switch (config.type) { + switch (config?.type) { case "FrozenLockingVault": case "LockingVault": - typedDelegationVault = vault as LockingVault; - break; case "VestingVault": - typedDelegationVault = vault as VestingVault; + typedDelegationVault = vault as ReadVestingVault; break; case "GSCVault": // GSCVault does not have delegation, do nothing @@ -44,8 +75,11 @@ export function useDelegatesByVault(): UseQueryResult> { } if (typedDelegationVault) { - const delegate = await typedDelegationVault.getDelegate(address); - delegatesByVault[config.address] = delegate; + const delegate = await typedDelegationVault.getDelegate({ + account: accountToUse, + atBlock, + }); + delegatesByVault[vault.address] = delegate; } } @@ -53,4 +87,9 @@ export function useDelegatesByVault(): UseQueryResult> { } : undefined, }); + + return { + delegatesByVault: data, + status, + }; } diff --git a/apps/council-ui/src/ui/vaults/hooks/useVaultVotingPower.ts b/apps/council-ui/src/ui/vaults/hooks/useVaultVotingPower.ts index 8c5f1ddf..b17020a0 100644 --- a/apps/council-ui/src/ui/vaults/hooks/useVaultVotingPower.ts +++ b/apps/council-ui/src/ui/vaults/hooks/useVaultVotingPower.ts @@ -1,18 +1,53 @@ -import { VotingVault } from "@council/sdk"; -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; +import { BlockLike } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { formatEther } from "viem"; +import { useAccount } from "wagmi"; -export function useVaultVotingPower( - vaultAddress: string, - voterAddress: string | undefined, -): UseQueryResult { - const { context } = useCouncil(); - const votingVault = new VotingVault(vaultAddress, context); - return useQuery({ - queryKey: ["vaultVotingPower", vaultAddress, voterAddress], - enabled: !!voterAddress, - queryFn: !!voterAddress - ? () => votingVault.getVotingPower(voterAddress) +interface UseVaultVotingPowerOptions { + vaultAddress: `0x${string}`; + account?: `0x${string}`; + atBlock?: BlockLike; +} + +/** + * Get the voting power of a wallet in a specific vault. + * @param account The account to get voting power for. If not provided, the + * connected account will be used. + * @param vaultAddress The address of the vault to get voting power for. + */ +export function useVaultVotingPower({ + vaultAddress, + account, + atBlock, +}: UseVaultVotingPowerOptions): { + votingPower: bigint | undefined; + votingPowerFormatted: string | undefined; + status: QueryStatus; +} { + const council = useReadCouncil(); + const { address: connectedAccount } = useAccount(); + const accountToUse = account ?? connectedAccount; + + const enabled = !!accountToUse; + + const { data, status } = useQuery({ + queryKey: ["vaultVotingPower", vaultAddress, account], + enabled, + queryFn: enabled + ? () => + council + .votingVault(vaultAddress) + .getVotingPower({ account: accountToUse, atBlock }) : undefined, }); + + return { + votingPower: data, + /** + * All voting power is formatted as a string with 18 decimal places. + */ + votingPowerFormatted: data !== undefined ? formatEther(data) : undefined, + status, + }; } diff --git a/apps/council-ui/src/ui/vaults/hooks/useVotingPower.ts b/apps/council-ui/src/ui/vaults/hooks/useVotingPower.ts index 18d3c648..1097de3b 100644 --- a/apps/council-ui/src/ui/vaults/hooks/useVotingPower.ts +++ b/apps/council-ui/src/ui/vaults/hooks/useVotingPower.ts @@ -1,13 +1,58 @@ -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; - -export function useVotingPower( - address: string | undefined, -): UseQueryResult { - const { coreVoting } = useCouncil(); - return useQuery({ - queryKey: ["votingPower", address], - enabled: !!address, - queryFn: !!address ? () => coreVoting.getVotingPower(address) : undefined, +import { BlockLike } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { formatEther } from "ethers"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { useAccount } from "wagmi"; + +interface UseVotingPowerOptions { + account?: `0x${string}` | undefined; + atBlock?: BlockLike; +} + +/** + * Get the voting power of a wallet in all configured + * vaults. + * @param account The account to get voting power for. If not provided, the + * connected account will be used. + */ +export function useVotingPower({ + account, + atBlock, +}: UseVotingPowerOptions = {}): { + votingPower: bigint | undefined; + votingPowerFormatted: string | undefined; + status: QueryStatus; +} { + const chainId = useSupportedChainId(); + const coreVoting = useReadCoreVoting(); + const { address: connectedAccount } = useAccount(); + const accountToUse = account ?? connectedAccount; + + const enabled = !!accountToUse; + + const { data, status } = useQuery({ + queryKey: ["votingPower", account, chainId], + enabled, + queryFn: enabled + ? () => + Promise.all( + coreVoting.vaults.map(({ getVotingPower }) => + getVotingPower({ account: accountToUse, atBlock }), + ), + ) + : undefined, }); + + const votingPower = data?.reduce((a, b) => a + b, 0n); + + return { + votingPower, + /** + * All voting power is formatted as a string with 18 decimal places. + */ + votingPowerFormatted: + votingPower !== undefined ? formatEther(votingPower) : undefined, + status, + }; } diff --git a/apps/council-ui/src/ui/vaults/hooks/useVotingPowerByVault.ts b/apps/council-ui/src/ui/vaults/hooks/useVotingPowerByVault.ts index ff9f09f1..25f1e520 100644 --- a/apps/council-ui/src/ui/vaults/hooks/useVotingPowerByVault.ts +++ b/apps/council-ui/src/ui/vaults/hooks/useVotingPowerByVault.ts @@ -1,32 +1,95 @@ -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; +import { BlockLike, ReadVotingVault } from "@delvtech/council-core"; +import { FetchStatus, QueryStatus, useQuery } from "@tanstack/react-query"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; +import { formatEther } from "viem"; +import { useAccount } from "wagmi"; -interface VotingPowerByVault { - name: string; - address: string; - votingPower: string; +interface UseVotingPowerByVaultOptions { + vaults: (ReadVotingVault | `0x${string}`)[]; + account?: `0x${string}`; + atBlock?: BlockLike; } -export default function useVotingPowerByVault( - account: string | undefined, - atBlock?: number, -): UseQueryResult { - const { coreVoting } = useCouncil(); - - return useQuery({ - queryKey: ["votingPowerByVault", account], - enabled: !!account, - queryFn: async (): Promise => { - return Promise.all( - coreVoting.vaults.map(async (vault) => { - return { - name: vault.name, - address: vault.address, - // safe to cast because this function only is ran when string is non-nullable - votingPower: await vault.getVotingPower(account as string, atBlock), - }; - }), - ); - }, +/** + * Get the voting power of a wallet in all configured vaults. + * @param account The account to get voting power for. If not provided, the + * connected account will be used. + */ +export default function useVotingPowerByVault({ + vaults: _vaults, + account, + atBlock, +}: UseVotingPowerByVaultOptions): { + votingPowerByVault: + | { + name: string; + address: `0x${string}`; + votingPower: bigint; + votingPowerFormatted: string; + }[] + | undefined; + status: QueryStatus; + fetchStatus: FetchStatus; +} { + const chainId = useSupportedChainId(); + const council = useReadCouncil(); + const config = useCouncilConfig(); + + const vaults = _vaults.map((vault) => + typeof vault === "string" ? council.votingVault(vault) : vault, + ); + + const { address: connectedAccount } = useAccount(); + const accountToUse = account ?? connectedAccount; + + const enabled = !!accountToUse; + + const { data, status, fetchStatus } = useQuery({ + queryKey: ["votingPowerByVault", account, chainId, Number(atBlock)], + enabled, + queryFn: enabled + ? async () => { + return Promise.all( + vaults.map(async (vault) => { + let name = vault.name; + + if (vault.address === config.gscVoting?.vault.address) { + name = config.gscVoting?.vault.name; + } + + const vaultConfig = config.coreVoting.vaults.find( + ({ address }) => address === vault.address, + ); + + if (vaultConfig) { + name = vaultConfig.name; + } + + const votingPower = await vault.getVotingPower({ + account: accountToUse, + atBlock, + }); + + return { + name, + address: vault.address, + votingPower, + /** + * All voting power is formatted as a string with 18 decimal places. + */ + votingPowerFormatted: formatEther(votingPower), + }; + }), + ); + } + : undefined, }); + + return { + votingPowerByVault: data, + status, + fetchStatus, + }; } diff --git a/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultDetails.tsx b/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultDetails.tsx index d6c3fded..a5d9d741 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultDetails.tsx +++ b/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultDetails.tsx @@ -1,13 +1,10 @@ -import { LockingVault } from "@council/sdk"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { ethers, Signer } from "ethers"; -import { isAddress } from "ethers/lib/utils"; import { ReactElement } from "react"; -import { councilConfigs } from "src/config/council.config"; import { ErrorMessage } from "src/ui/base/error/ErrorMessage"; import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { useVaultConfig } from "src/ui/config/hooks/useVaultConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { ChangeDelegateForm } from "src/ui/vaults/ChangeDelegateForm"; import { DepositAndWithdrawForm } from "src/ui/vaults/DepositAndWithdrawForm"; @@ -19,25 +16,32 @@ import { LockingVaultStatsRow } from "src/ui/vaults/lockingVault/LockingVaultSta import { VaultDetails } from "src/ui/vaults/VaultDetails/VaultDetails"; import { VaultDetailsSkeleton } from "src/ui/vaults/VaultDetails/VaultDetailsSkeleton"; import { VaultHeader } from "src/ui/vaults/VaultHeader"; -import { useAccount, useSigner } from "wagmi"; +import { isAddress } from "viem"; +import { useAccount, usePublicClient } from "wagmi"; interface LockingVaultDetailsProps { - address: string; + address: `0x${string}`; } export function LockingVaultDetails({ address, }: LockingVaultDetailsProps): ReactElement { const { address: account } = useAccount(); - const chainId = useChainId(); - const { data: signer } = useSigner(); + const chainId = useSupportedChainId(); const { data, status, error } = useLockingVaultDetailsData(address, account); + const publicClient = usePublicClient(); - const { mutate: changeDelegate, isLoading: isDelegating } = - useChangeDelegate(address); - const { mutate: deposit, isLoading: isDepositing } = useDeposit(address); - const { mutate: withdraw, isLoading: isWithdrawing } = useWithdraw(address); - const { mutate: approve, isLoading: isApproving } = useApprove(address); + const { changeDelegate, status: changeDelegateStatus } = useChangeDelegate(); + const { deposit, status: depositStatus } = useDeposit(); + const { withdraw, status: withdrawStatus } = useWithdraw(); + const { approve, status: approveStatus } = useApprove(); + + const isTransacting = [ + changeDelegateStatus, + depositStatus, + withdrawStatus, + approveStatus, + ].some((status) => status === "pending"); if (status === "error") { return ; @@ -47,11 +51,11 @@ export function LockingVaultDetails({ } async function handleDelegate(delegate: string): Promise { - let address: string | null | undefined = delegate; + let delegateAddress: string | null | undefined = delegate; if (!isAddress(delegate)) { - address = await signer?.provider?.resolveName(delegate); + delegateAddress = await publicClient?.getEnsAddress({ name: delegate }); } - if (!address) { + if (!delegateAddress) { makeTransactionErrorToast( `Could not find address for ${delegate}`, undefined, @@ -59,9 +63,9 @@ export function LockingVaultDetails({ ); return; } - return changeDelegate({ - signer: signer as Signer, - delegate: address, + return changeDelegate?.({ + newDelegate: delegateAddress as `0x${string}`, + vaultAddress: address, }); } @@ -88,21 +92,29 @@ export function LockingVaultDetails({ balance={data.tokenBalance} allowance={data.tokenAllowance} depositedBalance={data.depositedBalance} - disabled={!signer || isApproving || isDepositing || isWithdrawing} - onApprove={() => approve({ signer: signer as Signer })} + disabled={ + !account || !deposit || !withdraw || !approve || isTransacting + } + onApprove={() => approve?.(address)} onDeposit={(amount) => - deposit({ signer: signer as Signer, amount }) + deposit?.({ + amount, + vaultAddress: address, + }) } onWithdraw={(amount) => - withdraw({ signer: signer as Signer, amount }) + withdraw?.({ + amount, + vaultAddress: address, + }) } + decimals={data.decimals} /> } @@ -111,56 +123,55 @@ export function LockingVaultDetails({ } interface LockingVaultDetailsData { - accountVotingPower: string; - activeProposalCount: number; - delegate?: string; + accountVotingPower: bigint; + delegate?: `0x${string}`; delegatedToAccount: number; - depositedBalance: string; + depositedBalance: bigint; descriptionURL: string | undefined; paragraphSummary: string | undefined; name: string | undefined; participants: number; - tokenAddress: string; - tokenAllowance: string; - tokenBalance: string; + tokenAddress: `0x${string}`; + tokenAllowance: bigint; + tokenBalance: bigint; tokenSymbol: string; + decimals: number; } function useLockingVaultDetailsData( - address: string, - account: string | undefined, + address: `0x${string}`, + account: `0x${string}` | undefined, ): UseQueryResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const coreVotingConfig = councilConfigs[chainId].coreVoting; - const vaultConfig = coreVotingConfig.vaults.find( - (vault) => vault.address === address, - ); + const council = useReadCouncil(); + const vaultConfig = useVaultConfig(address); return useQuery({ - queryKey: ["lockingVaultDetails", address, account], - queryFn: async () => { - const lockingVault = new LockingVault(address, context); + queryKey: ["lockingVaultDetails", address, account, vaultConfig], + queryFn: async (): Promise => { + const lockingVault = council.lockingVault(address); const token = await lockingVault.getToken(); const delegate = account - ? await lockingVault.getDelegate(account) + ? await lockingVault.getDelegate({ account }) : undefined; const accountVotingPower = account - ? await lockingVault.getVotingPower(account) - : "0"; + ? await lockingVault.getVotingPower({ account }) + : 0n; return { accountVotingPower, tokenAddress: token.address, tokenSymbol: await token.getSymbol(), - tokenBalance: account ? await token.getBalanceOf(account) : "0", + tokenBalance: account ? await token.getBalanceOf({ account }) : 0n, tokenAllowance: account - ? await token.getAllowance(account, address) - : "0", + ? await token.getAllowance({ + owner: account, + spender: address, + }) + : 0n, depositedBalance: account - ? await lockingVault.getDepositedBalance(account) - : "0", + ? await lockingVault.getDepositedBalance({ account }) + : 0n, delegate: delegate?.address, descriptionURL: vaultConfig?.descriptionURL, @@ -168,8 +179,9 @@ function useLockingVaultDetailsData( name: vaultConfig?.name, participants: (await lockingVault.getVoters()).length, delegatedToAccount: account - ? (await lockingVault.getDelegatorsTo(account)).length + ? (await lockingVault.getDelegatorsTo({ account })).length : 0, + decimals: await token.getDecimals(), }; }, }); diff --git a/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultStatsRow.tsx b/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultStatsRow.tsx index 1b6dd3c7..e13a2392 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultStatsRow.tsx +++ b/apps/council-ui/src/ui/vaults/lockingVault/LockingVaultStatsRow.tsx @@ -1,21 +1,21 @@ import { ReactElement } from "react"; -import { makeEtherscanAddressURL } from "src/etherscan/makeEtherscanAddressURL"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import ExternalLink from "src/ui/base/links/ExternalLink"; import { Stat } from "src/ui/base/Stat"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; -import { useChainId } from "src/ui/network/useChainId"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import ExternalLink from "src/ui/base/links/ExternalLink"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { PARTICIPANTS_TIP, WALLETS_DELEGATED_TIP, YOUR_VOTING_POWER_TIP, } from "src/ui/vaults/tooltips"; +import { makeEtherscanAddressURL } from "src/utils/etherscan/makeEtherscanAddressURL"; interface LockingVaultStatsRowProps { - accountVotingPower: string; + accountVotingPower: bigint; delegatedToAccount: number; participants: number; - tokenAddress: string; + tokenAddress: `0x${string}`; tokenSymbol: string; } @@ -26,21 +26,19 @@ export function LockingVaultStatsRow({ tokenAddress, tokenSymbol, }: LockingVaultStatsRowProps): ReactElement { - const chainId = useChainId(); + const chainId = useSupportedChainId(); + const votingPowerFormatted = formatVotingPower(accountVotingPower); + return (
- {accountVotingPower && ( - - Your voting power - - } - value={ - +accountVotingPower ? formatBalance(accountVotingPower) : "None" - } - /> - )} + + Your voting power + + } + value={votingPowerFormatted} + /> {delegatedToAccount >= 0 && ( ; @@ -53,6 +56,7 @@ export function LockingVaultProfileCard({ votingPowerBreakdown, delegate, delegateIsGSCMember, + decimals, } = data || {}; return ( @@ -62,19 +66,24 @@ export function LockingVaultProfileCard({ stats={[ { label: "Tokens Deposited", - value: +balance ? `${formatBalance(balance)} ${tokenSymbol}` : "None", + value: balance + ? `${formatUnitsBalance({ + balance, + decimals, + })} ${tokenSymbol}` + : "None", }, { label: "Voting Power", value: - votingPowerBreakdown && +votingPowerBreakdown.votingPower - ? formatBalance(votingPowerBreakdown.votingPower) + votingPowerBreakdown && votingPowerBreakdown.votingPower + ? formatVotingPower(votingPowerBreakdown.votingPower) : "None", }, { label: "Current Delegate", value: - delegate.address === constants.AddressZero ? ( + delegate.address === zeroAddress ? ( "None" ) : ( - + )} @@ -97,17 +106,17 @@ export function LockingVaultProfileCard({ }, { label: "# of Delegators", - value: votingPowerBreakdown?.delegators.length ? ( + value: votingPowerBreakdown?.votingPowerByDelegator.length ? ( <> @@ -119,39 +128,50 @@ export function LockingVaultProfileCard({ ]} button={{ text: "Delegate", - disabled: !signer || accountDelegate?.address === profileAddress, + disabled: + !changeDelegate || accountDelegate?.address === profileAddress, onClick: () => - signer && changeDelegate({ delegate: profileAddress, signer }), + changeDelegate!({ + vaultAddress: address, + newDelegate: profileAddress, + }), }} /> ); } function useLockingVaultProfileCardData( - address: string, - profileAddress: string, + address: `0x${string}`, + profileAddress: `0x${string}`, ) { - const { context, gscVoting } = useCouncil(); + const council = useReadCouncil(); + const gscVault = useReadGscVault(); return useQuery({ queryKey: ["locking-vault-profile-card", address, profileAddress], queryFn: async () => { - const lockingVault = new LockingVault(address, context); - const votingPowerBreakdowns = await lockingVault.getVotingPowerBreakdown( - profileAddress, - ); + const lockingVault = council.lockingVault(address); + const votingPowerBreakdowns = await lockingVault.getVotingPowerBreakdown({ + account: profileAddress, + }); const token = await lockingVault.getToken(); - const delegate = await lockingVault.getDelegate(profileAddress); + const delegate = await lockingVault.getDelegate({ + account: profileAddress, + }); return { - balance: await lockingVault.getDepositedBalance(profileAddress), + balance: await lockingVault.getDepositedBalance({ + account: profileAddress, + }), + decimals: await token.getDecimals(), tokenSymbol: await token.getSymbol(), votingPowerBreakdown: votingPowerBreakdowns[0] as | VoterPowerBreakdown | undefined, delegate, delegateIsGSCMember: - gscVoting && (await gscVoting.getIsMember(delegate.address)), + gscVault && + (await gscVault.getIsMember({ account: delegate.address })), }; }, }); diff --git a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useApprove.ts b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useApprove.ts index d3a4a787..cf79b638 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useApprove.ts +++ b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useApprove.ts @@ -1,58 +1,38 @@ -import { LockingVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { ethers, Signer } from "ethers"; -import { formatUnits } from "ethers/lib/utils"; -import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; -import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; +import { maxUint256 } from "viem"; +import { useAccount } from "wagmi"; -interface ApproveArguments { - signer: Signer; -} +export function useApprove(): { + approve: ((vaultAddress: `0x${string}`) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const council = useReadWriteCouncil(); + const { address } = useAccount(); + const enabled = !!council && !!address; -export function useApprove( - vaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const queryClient = useQueryClient(); - let transactionHash: string; - return useMutation( - async ({ signer }: ApproveArguments): Promise => { - const vault = new LockingVault(vaultAddress, context); - const token = await vault.getToken(); - const decimals = await token.getDecimals(); - return token.approve( - signer, - vault.address, - formatUnits(ethers.constants.MaxUint256, decimals), - { - onSubmitted: (hash) => { - makeTransactionSubmittedToast("Approving", hash, chainId); - transactionHash = hash; - }, - }, - ); - }, - { - onSuccess: (hash) => { - makeTransactionSuccessToast("Successfully approved!", hash, chainId); - queryClient.invalidateQueries(); - }, - onError(error) { - makeTransactionErrorToast( - "Failed to approve", - transactionHash, - chainId, + const { status, transactionHash, write } = useWrite({ + writeFn: async (vaultAddress: `0x${string}`) => { + if (!enabled) { + throw new Error( + "Connection to council not available. Check your wallet connection.", ); - console.error(error); - }, + } + + const token = await council.lockingVault(vaultAddress).getToken(); + return token.approve({ + amount: maxUint256, + owner: address, + spender: vaultAddress, + }); }, - ); + }); + + return { + approve: enabled ? write : undefined, + status, + transactionHash, + }; } diff --git a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useChangeDelegate.ts b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useChangeDelegate.ts index 65b7bddd..1bc3035e 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useChangeDelegate.ts +++ b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useChangeDelegate.ts @@ -1,55 +1,40 @@ -interface ChangeDelegateArguments { - signer: Signer; - delegate: string; +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +export interface ChangeDelegateOptions { + vaultAddress: `0x${string}`; + newDelegate: `0x${string}`; } -import { LockingVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { Signer } from "ethers"; -import { formatAddress } from "src/ui/base/formatting/formatAddress"; -import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; -import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -export function useChangeDelegate( - vaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const queryClient = useQueryClient(); - let transactionHash: string; - return useMutation( - ({ signer, delegate }: ChangeDelegateArguments): Promise => { - const vault = new LockingVault(vaultAddress, context); - return vault.changeDelegate(signer, delegate, { - onSubmitted: (hash) => { - makeTransactionSubmittedToast("Delegating", hash, chainId); - transactionHash = hash; - }, - }); - }, - { - onSuccess: (hash, { delegate }) => { - makeTransactionSuccessToast( - `Successfully delegated to ${formatAddress(delegate)}!`, - hash, - chainId, - ); - queryClient.invalidateQueries(); - }, - onError(error, { delegate }) { - makeTransactionErrorToast( - `Failed to delegate to ${formatAddress(delegate)}`, - transactionHash, - chainId, +export function useChangeDelegate(): { + changeDelegate: ((options: ChangeDelegateOptions) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const council = useReadWriteCouncil(); + const enabled = !!council; + + const { write, status, transactionHash } = useWrite({ + writeFn: ({ + newDelegate, + vaultAddress, + }: ChangeDelegateOptions): Promise<`0x${string}`> => { + if (!enabled) { + throw new Error( + "Connection to council not available. Check your wallet connection.", ); - console.error(error); - }, + } + + return council + .lockingVault(vaultAddress) + .changeDelegate({ delegate: newDelegate }); }, - ); + }); + + return { + changeDelegate: enabled ? write : undefined, + status, + transactionHash, + }; } diff --git a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDelegate.ts b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDelegate.ts index 3f687109..4b988554 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDelegate.ts +++ b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDelegate.ts @@ -1,19 +1,38 @@ -import { LockingVault, Voter } from "@council/sdk"; -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useAccount } from "wagmi"; +import { ReadLockingVault, ReadVoter } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; -export function useDelegate(vaultAddress: string): UseQueryResult { - const { context } = useCouncil(); - const { address } = useAccount(); - return useQuery({ - queryKey: ["delegate", vaultAddress, address], - enabled: !!address, - queryFn: !!address - ? async () => { - const lockingVault = new LockingVault(vaultAddress, context); - return lockingVault.getDelegate(address); +interface UseDelegateOptions { + vault: ReadLockingVault | `0x${string}` | undefined; + account: `0x${string}` | undefined; +} + +interface DelegateResult { + delegate: ReadVoter; + status: QueryStatus; +} + +export function useDelegate({ + vault, + account, +}: UseDelegateOptions): DelegateResult { + const council = useReadCouncil(); + const enabled = !!vault && !!account; + + const { data, status } = useQuery({ + queryKey: ["delegate", vault, account], + enabled, + queryFn: enabled + ? () => { + const _vault = + typeof vault === "string" ? council.lockingVault(vault) : vault; + return _vault.getDelegate({ account }); } : undefined, }); + + return { + delegate: data as ReadVoter, + status, + }; } diff --git a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDeposit.ts b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDeposit.ts index c843688f..c046eb67 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDeposit.ts +++ b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useDeposit.ts @@ -1,56 +1,43 @@ -import { LockingVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { Signer } from "ethers"; -import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; -import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; -interface DepositArguments { - signer: Signer; - amount: string; +export interface DepositOptions { + vaultAddress: `0x${string}`; + amount: bigint; + account?: `0x${string}`; } -export function useDeposit( - vaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const queryClient = useQueryClient(); - let transactionHash: string; - return useMutation( - async ({ signer, amount }: DepositArguments): Promise => { - const vault = new LockingVault(vaultAddress, context); - const account = await signer.getAddress(); - return vault.deposit(signer, account, amount, account, { - onSubmitted: (hash) => { - makeTransactionSubmittedToast("Depositing", hash, chainId); - transactionHash = hash; - }, - }); - }, - { - onSuccess: (hash, { amount }) => { - makeTransactionSuccessToast( - `Successfully deposited ${amount}!`, - hash, - chainId, - ); - queryClient.invalidateQueries(); - }, - onError(error, { amount }) { - makeTransactionErrorToast( - `Failed to deposit ${amount}`, - transactionHash, - chainId, +export function useDeposit(): { + deposit: ((options: DepositOptions) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const council = useReadWriteCouncil(); + const enabled = !!council; + + const { write, status, transactionHash } = useWrite({ + writeFn: ({ + vaultAddress, + amount, + account, + }: DepositOptions): Promise<`0x${string}`> => { + if (!enabled) { + throw new Error( + "Connection to council not available. Check your wallet connection.", ); - console.error(error); - }, + } + + return council.lockingVault(vaultAddress).deposit({ + account, + amount, + }); }, - ); + }); + + return { + deposit: enabled ? write : undefined, + status, + transactionHash, + }; } diff --git a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useWithdraw.ts b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useWithdraw.ts index 55c185d5..9e356165 100644 --- a/apps/council-ui/src/ui/vaults/lockingVault/hooks/useWithdraw.ts +++ b/apps/council-ui/src/ui/vaults/lockingVault/hooks/useWithdraw.ts @@ -1,55 +1,40 @@ -import { LockingVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { Signer } from "ethers"; -import { makeTransactionErrorToast } from "src/ui/base/toast/makeTransactionErrorToast"; -import { makeTransactionSubmittedToast } from "src/ui/base/toast/makeTransactionSubmittedToast"; -import { makeTransactionSuccessToast } from "src/ui/base/toast/makeTransactionSuccessToast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; -interface WithdrawArguments { - signer: Signer; - amount: string; +export interface WithdrawOptions { + vaultAddress: `0x${string}`; + amount: bigint; } -export function useWithdraw( - vaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const chainId = useChainId(); - const queryClient = useQueryClient(); - let transactionHash: string; - return useMutation( - async ({ signer, amount }: WithdrawArguments): Promise => { - const vault = new LockingVault(vaultAddress, context); - return vault.withdraw(signer, amount, { - onSubmitted: (hash) => { - makeTransactionSubmittedToast("Withdrawing", hash, chainId); - transactionHash = hash; - }, - }); - }, - { - onSuccess: (hash, { amount }) => { - makeTransactionSuccessToast( - `Successfully withdrew ${amount}!`, - hash, - chainId, - ); - queryClient.invalidateQueries(); - }, - onError(error, { amount }) { - makeTransactionErrorToast( - `Failed to withdraw ${amount}`, - transactionHash, - chainId, +export function useWithdraw(): { + withdraw: ((options: WithdrawOptions) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const council = useReadWriteCouncil(); + const enabled = !!council; + + const { write, status, transactionHash } = useWrite({ + writeFn: ({ + vaultAddress, + amount, + }: WithdrawOptions): Promise<`0x${string}`> => { + if (!enabled) { + throw new Error( + "Connection to council not available. Check your wallet connection.", ); - console.error(error); - }, + } + + return council.lockingVault(vaultAddress).withdraw({ + amount, + }); }, - ); + }); + + return { + withdraw: enabled ? write : undefined, + status, + transactionHash, + }; } diff --git a/apps/council-ui/src/ui/vaults/vestingVault/GrantCard.tsx b/apps/council-ui/src/ui/vaults/vestingVault/GrantCard.tsx index 649237c4..44464497 100644 --- a/apps/council-ui/src/ui/vaults/vestingVault/GrantCard.tsx +++ b/apps/council-ui/src/ui/vaults/vestingVault/GrantCard.tsx @@ -1,30 +1,28 @@ -import { Signer } from "ethers"; -import { parseEther } from "ethers/lib/utils"; import { ReactElement } from "react"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { useClaimGrant } from "src/ui/vaults/vestingVault/hooks/useGrantClaim"; -import { useSigner } from "wagmi"; +import { formatUnitsBalance } from "src/ui/base/formatting/formatUnitsBalance"; +import { useClaimGrant } from "src/ui/vaults/vestingVault/hooks/useClaimGrant"; interface GrantCardProps { - expirationDate: Date | null; - grantBalance: string; - grantBalanceWithdrawn: string; - unlockDate: Date | null; - vestingVaultAddress: string; + expirationDate: Date | undefined; + grantBalance: bigint; + grantBalanceWithdrawn: bigint; + decimals: number; + unlockDate: Date | undefined; + vestingVaultAddress: `0x${string}`; } export function GrantCard({ expirationDate, grantBalance, grantBalanceWithdrawn, + decimals, unlockDate, vestingVaultAddress, }: GrantCardProps): ReactElement { const currentDate = new Date(); - const { data: signer } = useSigner(); - const { mutate: claim } = useClaimGrant(vestingVaultAddress); + const { claimGrant } = useClaimGrant(); - const grantExist = !!signer && parseEther(grantBalance).gt(0); + const grantExist = !!grantBalance; const canClaim = unlockDate && unlockDate.getTime() < currentDate.getTime() && @@ -32,7 +30,7 @@ export function GrantCard({ if (!grantExist) { return ( -
+
Your Vesting Info

There is no grant allocated for this account.

@@ -41,21 +39,22 @@ export function GrantCard({ } return ( -
+
Your Vesting Info

Grant Amount

- {formatBalance(grantBalance)} ELFI + {formatUnitsBalance({ balance: grantBalance, decimals })} ELFI

Grant Claimed

- {formatBalance(grantBalanceWithdrawn)} ELFI + {formatUnitsBalance({ balance: grantBalanceWithdrawn, decimals })}{" "} + ELFI

@@ -80,8 +79,9 @@ export function GrantCard({ {canClaim ? ( @@ -91,7 +91,7 @@ export function GrantCard({ data-tip="The vesting period has not started yet." >
+ - changeDelegate({ signer: signer as Signer, delegate }) + currentDelegate={data.delegate} + onDelegate={(newDelegate) => + changeDelegate?.({ newDelegate, vaultAddress: address }) } + disabled={!changeDelegate} /> } @@ -76,62 +75,58 @@ export function VestingVaultDetails({ } interface VestingVaultDetailsData { - accountVotingPower: string; - unvestedMultiplier: number; - delegate?: string; + accountVotingPower: bigint; + unvestedMultiplier: bigint; + decimals: number; + delegate?: `0x${string}`; delegatedToAccount: number; descriptionURL: string | undefined; paragraphSummary: string | undefined; - expirationDate: Date | null; - grantBalance: string; - grantBalanceWithdrawn: string; + expirationDate: Date | undefined; + grantBalance: bigint; + grantBalanceWithdrawn: bigint; name: string | undefined; participants: number; - tokenAddress: string; + tokenAddress: `0x${string}`; tokenSymbol: string; - unlockDate: Date | null; + unlockDate: Date | undefined; } function useVestingVaultDetailsData( - address: string, - account: string | undefined, + address: `0x${string}`, + account: `0x${string}` | undefined, ): UseQueryResult { - const { context } = useCouncil(); - - const chainId = useChainId(); - const coreVotingConfig = councilConfigs[chainId].coreVoting; - const vaultConfig = coreVotingConfig.vaults.find( - (vault) => vault.address === address, - ); + const council = useReadCouncil(); + const vaultConfig = useVaultConfig(address); + const publicClient = usePublicClient(); return useQuery({ queryKey: ["vestingVaultDetails", address, account], queryFn: async (): Promise => { - const vestingVault = new VestingVault(address, context); + const vestingVault = council.vestingVault(address); const token = await vestingVault.getToken(); - const grant = account ? await vestingVault.getGrant(account) : undefined; + const grant = account + ? await vestingVault.getGrant({ account }) + : undefined; const accountVotingPower = account - ? await vestingVault.getVotingPower(account) - : "0"; + ? await vestingVault.getVotingPower({ account }) + : 0n; return { tokenAddress: token.address, tokenSymbol: await token.getSymbol(), - grantBalance: grant?.allocation || "0", - grantBalanceWithdrawn: grant?.withdrawn || "0", + decimals: await token.getDecimals(), + grantBalance: grant?.allocation || 0n, + grantBalanceWithdrawn: grant?.withdrawn || 0n, paragraphSummary: vaultConfig?.paragraphSummary, unlockDate: grant - ? await getBlockDate(grant.unlockBlock, context.provider, { - estimateFutureDates: true, - }) - : null, + ? await getBlockDate(grant.cliff, publicClient) + : undefined, expirationDate: grant - ? await getBlockDate(grant.expirationBlock, context.provider, { - estimateFutureDates: true, - }) - : null, + ? await getBlockDate(grant.expiration, publicClient) + : undefined, delegate: account - ? (await vestingVault.getDelegate(account)).address + ? (await vestingVault.getDelegate({ account })).address : undefined, descriptionURL: vaultConfig?.descriptionURL, name: vaultConfig?.name, @@ -139,7 +134,7 @@ function useVestingVaultDetailsData( unvestedMultiplier: await vestingVault.getUnvestedMultiplier(), participants: (await vestingVault.getVoters()).length, delegatedToAccount: account - ? (await vestingVault.getDelegatorsTo(account)).length + ? (await vestingVault.getDelegatorsTo({ account })).length : 0, }; }, diff --git a/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultProfileCard.tsx b/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultProfileCard.tsx index ef6552f7..94f3ce44 100644 --- a/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultProfileCard.tsx +++ b/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultProfileCard.tsx @@ -1,27 +1,28 @@ -import { VestingVault, VoterPowerBreakdown } from "@council/sdk"; +import { VoterPowerBreakdown } from "@delvtech/council-viem"; import { BuildingLibraryIcon } from "@heroicons/react/20/solid"; import { useQuery } from "@tanstack/react-query"; -import { constants } from "ethers"; import Link from "next/link"; import { ReactElement } from "react"; import { makeVoterURL } from "src/routes"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; -import { Tooltip } from "src/ui/base/Tooltip/Tooltip"; +import { Tooltip } from "src/ui/base/Tooltip"; import { WalletIcon } from "src/ui/base/WalletIcon"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; +import { formatUnitsBalance } from "src/ui/base/formatting/formatUnitsBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import { useDisplayName } from "src/ui/base/formatting/useDisplayName"; +import { useVaultConfig } from "src/ui/config/hooks/useVaultConfig"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; import { DelegatorListModal } from "src/ui/vaults/DelegatorListModal"; import { VaultProfileCard } from "src/ui/vaults/VaultProfileCard"; import { VaultProfileCardSkeleton } from "src/ui/vaults/VaultProfileCardSkeleton"; +import { useReadGscVault } from "src/ui/vaults/gscVault/hooks/useReadGscVault"; import { useChangeDelegate } from "src/ui/vaults/vestingVault/hooks/useChangeDelegate"; import { useDelegate } from "src/ui/vaults/vestingVault/hooks/useDelegate"; -import { getVaultConfig } from "src/vaults/vaults"; -import { useSigner } from "wagmi"; +import { zeroAddress } from "viem"; +import { useAccount } from "wagmi"; interface VestingVaultProfileCardProps { - address: string; - profileAddress: string; + address: `0x${string}`; + profileAddress: `0x${string}`; } export function VestingVaultProfileCard({ @@ -32,16 +33,18 @@ export function VestingVaultProfileCard({ const { data } = useVestingVaultProfileCardData(address, profileAddress); const profileName = useDisplayName(profileAddress); const delegateName = useDisplayName(data?.delegate.address); - const { data: accountDelegate } = useDelegate(address); + const { address: account } = useAccount(); + const { delegate: accountDelegate } = useDelegate({ + vault: address, + account, + }); // config - const chainId = useChainId(); - const config = getVaultConfig(address, chainId); + const config = useVaultConfig(address); const name = config?.name || "Vesting Vault"; // delegate transaction - const { data: signer } = useSigner(); - const { mutate: changeDelegate } = useChangeDelegate(address); + const { changeDelegate } = useChangeDelegate(); if (!data) { return ; @@ -49,6 +52,7 @@ export function VestingVaultProfileCard({ const { grantSize, + decimals, tokenSymbol, votingPowerBreakdown, delegate, @@ -62,21 +66,21 @@ export function VestingVaultProfileCard({ stats={[ { label: "Grant Size", - value: +grantSize - ? `${formatBalance(grantSize)} ${tokenSymbol}` + value: grantSize + ? `${formatUnitsBalance({ balance: grantSize, decimals })} ${tokenSymbol}` : "None", }, { label: "Voting Power", value: - votingPowerBreakdown && +votingPowerBreakdown.votingPower - ? formatBalance(votingPowerBreakdown.votingPower) + votingPowerBreakdown && votingPowerBreakdown.votingPower + ? formatVotingPower(votingPowerBreakdown.votingPower) : "None", }, { label: "Current Delegate", value: - delegate.address === constants.AddressZero ? ( + delegate.address === zeroAddress ? ( "None" ) : ( - + )} @@ -99,17 +103,17 @@ export function VestingVaultProfileCard({ }, { label: "# of Delegators", - value: votingPowerBreakdown?.delegators.length ? ( + value: votingPowerBreakdown?.votingPowerByDelegator.length ? ( <> @@ -121,40 +125,53 @@ export function VestingVaultProfileCard({ ]} button={{ text: "Delegate", - disabled: !signer || accountDelegate?.address === profileAddress, + disabled: + !changeDelegate || accountDelegate?.address === profileAddress, onClick: () => - signer && changeDelegate({ delegate: profileAddress, signer }), + changeDelegate!({ + vaultAddress: address, + newDelegate: profileAddress, + }), }} /> ); } function useVestingVaultProfileCardData( - address: string, - profileAddress: string, + address: `0x${string}`, + profileAddress: `0x${string}`, ) { - const { context, gscVoting } = useCouncil(); + const council = useReadCouncil(); + const gscVault = useReadGscVault(); return useQuery({ queryKey: ["vesting-vault-profile-card", address, profileAddress], queryFn: async () => { - const vestingVault = new VestingVault(address, context); - const votingPowerBreakdowns = await vestingVault.getVotingPowerBreakdown( - profileAddress, - ); + const vestingVault = council.vestingVault(address); + const votingPowerBreakdowns = await vestingVault.getVotingPowerBreakdown({ + account: profileAddress, + }); - const grant = await vestingVault.getGrant(profileAddress); + // FIXME: This isn't properly typed. evm-client isn't deriving the + // component types correctly. + const grant = await vestingVault.getGrant({ account: profileAddress }); const token = await vestingVault.getToken(); - const delegate = await vestingVault.getDelegate(profileAddress); + const delegate = await vestingVault.getDelegate({ + account: profileAddress, + }); + + grant; return { grantSize: grant.allocation, + decimals: await token.getDecimals(), tokenSymbol: await token.getSymbol(), votingPowerBreakdown: votingPowerBreakdowns[0] as | VoterPowerBreakdown | undefined, delegate, delegateIsGSCMember: - gscVoting && (await gscVoting.getIsMember(delegate.address)), + gscVault && + (await gscVault.getIsMember({ account: delegate.address })), }; }, }); diff --git a/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultStatsRow.tsx b/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultStatsRow.tsx index c3b2cc88..abff9046 100644 --- a/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultStatsRow.tsx +++ b/apps/council-ui/src/ui/vaults/vestingVault/VestingVaultStatsRow.tsx @@ -1,22 +1,22 @@ import { ReactElement } from "react"; -import { makeEtherscanAddressURL } from "src/etherscan/makeEtherscanAddressURL"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import ExternalLink from "src/ui/base/links/ExternalLink"; import { Stat } from "src/ui/base/Stat"; -import { DefinitionTooltip } from "src/ui/base/Tooltip/Tooltip"; -import { useChainId } from "src/ui/network/useChainId"; +import { DefinitionTooltip } from "src/ui/base/Tooltip"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import ExternalLink from "src/ui/base/links/ExternalLink"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import { PARTICIPANTS_TIP, WALLETS_DELEGATED_TIP, YOUR_VOTING_POWER_TIP, } from "src/ui/vaults/tooltips"; +import { makeEtherscanAddressURL } from "src/utils/etherscan/makeEtherscanAddressURL"; interface VestingVaultStatsRowProps { - accountVotingPower: string; - unvestedMultiplier: number; + accountVotingPower: bigint; + unvestedMultiplier: bigint; delegatedToAccount: number; participants: number; - tokenAddress: string; + tokenAddress: `0x${string}`; tokenSymbol: string; } @@ -28,19 +28,21 @@ export function VestingVaultStatsRow({ tokenAddress, tokenSymbol, }: VestingVaultStatsRowProps): ReactElement { - const chainId = useChainId(); + const chainId = useSupportedChainId(); return (
- {accountVotingPower && ( - - Your voting power - - } - value={formatBalance(accountVotingPower)} - /> - )} + + Your voting power + + } + value={ + accountVotingPower > 0 + ? formatVotingPower(accountVotingPower) + : "None" + } + /> - {delegatedToAccount >= 0 && ( - - Wallets delegated to you - - } - value={delegatedToAccount || "None"} - /> - )} + + Wallets delegated to you + + } + value={delegatedToAccount || "None"} + /> - {participants >= 0 && ( + {participants && ( diff --git a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useChangeDelegate.ts b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useChangeDelegate.ts index a3e5c6dc..574baf7a 100644 --- a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useChangeDelegate.ts +++ b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useChangeDelegate.ts @@ -1,47 +1,40 @@ -import { VestingVault } from "@council/sdk"; -import { - useMutation, - UseMutationResult, - useQueryClient, -} from "@tanstack/react-query"; -import { Signer } from "ethers"; -import index from "react-hot-toast"; -import { formatAddress } from "src/ui/base/formatting/formatAddress"; -import { useCouncil } from "src/ui/council/useCouncil"; +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; -interface ChangeDelegateArguments { - signer: Signer; - delegate: string; +export interface ChangeDelegateOptions { + vaultAddress: `0x${string}`; + newDelegate: `0x${string}`; } -export function useChangeDelegate( - vaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const queryClient = useQueryClient(); - let toastId: string; - return useMutation( - ({ signer, delegate }: ChangeDelegateArguments): Promise => { - const vault = new VestingVault(vaultAddress, context); - return vault.changeDelegate(signer, delegate, { - onSubmitted: () => (toastId = index.loading("Delegating")), - }); - }, - { - onSuccess: (_, { delegate }) => { - index.success(`Successfully delegated to ${formatAddress(delegate)}!`, { - id: toastId, - }); - // Invalidates the UI cache so that components will refetch the latest data. - // Note, the SDK has its own data cache that is cleared when we call changeDelegate. - queryClient.invalidateQueries(); - }, - onError(error, { delegate }) { - index.error(`Failed to delegate to ${formatAddress(delegate)}!`, { - id: toastId, - }); - console.error(error); - }, +export function useChangeDelegate(): { + changeDelegate: ((options: ChangeDelegateOptions) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const council = useReadWriteCouncil(); + const enabled = !!council; + + const { write, status, transactionHash } = useWrite({ + writeFn: ({ + newDelegate, + vaultAddress, + }: ChangeDelegateOptions): Promise<`0x${string}`> => { + if (!enabled) { + throw new Error( + "Connection to council not available. Check your wallet connection.", + ); + } + + return council + .vestingVault(vaultAddress) + .changeDelegate({ delegate: newDelegate }); }, - ); + }); + + return { + changeDelegate: enabled ? write : undefined, + status, + transactionHash, + }; } diff --git a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useClaimGrant.ts b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useClaimGrant.ts new file mode 100644 index 00000000..a4f05121 --- /dev/null +++ b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useClaimGrant.ts @@ -0,0 +1,30 @@ +import { MutationStatus } from "@tanstack/react-query"; +import { useWrite } from "src/ui/contract/hooks/useWrite"; +import { useReadWriteCouncil } from "src/ui/council/hooks/useReadWriteCouncil"; + +export function useClaimGrant(): { + claimGrant: ((vaultAddress: `0x${string}`) => void) | undefined; + status: MutationStatus; + transactionHash: `0x${string}` | undefined; +} { + const council = useReadWriteCouncil(); + const enabled = !!council; + + const { write, status, transactionHash } = useWrite({ + writeFn: (vaultAddress: `0x${string}`) => { + if (!enabled) { + throw new Error( + "Connection to council not available. Check your wallet connection.", + ); + } + + return council.vestingVault(vaultAddress).claim(); + }, + }); + + return { + claimGrant: enabled ? write : undefined, + status, + transactionHash, + }; +} diff --git a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useDelegate.ts b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useDelegate.ts index 3d978842..b48f4913 100644 --- a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useDelegate.ts +++ b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useDelegate.ts @@ -1,19 +1,38 @@ -import { VestingVault, Voter } from "@council/sdk"; -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useAccount } from "wagmi"; +import { ReadVestingVault, ReadVoter } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; -export function useDelegate(vaultAddress: string): UseQueryResult { - const { context } = useCouncil(); - const { address } = useAccount(); - return useQuery({ - queryKey: ["delegate", vaultAddress, address], - enabled: !!address, - queryFn: !!address - ? async () => { - const vestingVault = new VestingVault(vaultAddress, context); - return vestingVault.getDelegate(address); +interface UseDelegateOptions { + vault: ReadVestingVault | `0x${string}` | undefined; + account: `0x${string}` | undefined; +} + +interface DelegateResult { + delegate: ReadVoter; + status: QueryStatus; +} + +export function useDelegate({ + vault, + account, +}: UseDelegateOptions): DelegateResult { + const council = useReadCouncil(); + const enabled = !!vault && !!account; + + const { data, status } = useQuery({ + queryKey: ["delegate", vault, account], + enabled, + queryFn: enabled + ? () => { + const _vault = + typeof vault === "string" ? council.vestingVault(vault) : vault; + return _vault.getDelegate({ account }); } : undefined, }); + + return { + delegate: data as ReadVoter, + status, + }; } diff --git a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useGrantClaim.ts b/apps/council-ui/src/ui/vaults/vestingVault/hooks/useGrantClaim.ts deleted file mode 100644 index b0512e4c..00000000 --- a/apps/council-ui/src/ui/vaults/vestingVault/hooks/useGrantClaim.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { VestingVault } from "@council/sdk"; -import { UseMutationResult } from "@tanstack/react-query"; -import { Signer } from "ethers"; -import index from "react-hot-toast"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useMutation, useQueryClient } from "wagmi"; - -interface ClaimGrantArguments { - signer: Signer; -} - -export function useClaimGrant( - vestingVaultAddress: string, -): UseMutationResult { - const { context } = useCouncil(); - const queryClient = useQueryClient(); - let toastId: string; - - return useMutation( - ({ signer }: ClaimGrantArguments) => { - const vault = new VestingVault(vestingVaultAddress, context); - - return vault.claim(signer, { - onSubmitted: () => (toastId = index.loading("Claiming grant...")), - }); - }, - { - onSuccess: () => { - index.success(`Successfully claimed your ELFI!`, { - id: toastId, - }); - // Invalidates the UI cache so that components will refetch the latest data. - // Note, the SDK has its own data cache that is cleared when we call claim. - - queryClient.invalidateQueries(); - }, - onError(error) { - index.error(`Failed to claim grant!`, { - id: toastId, - }); - console.error(error); - }, - }, - ); -} diff --git a/apps/council-ui/src/ui/voters/GSCOnlyToggle.tsx b/apps/council-ui/src/ui/voters/GscOnlyToggle.tsx similarity index 78% rename from apps/council-ui/src/ui/voters/GSCOnlyToggle.tsx rename to apps/council-ui/src/ui/voters/GscOnlyToggle.tsx index 3eb0c006..c65ccc72 100644 --- a/apps/council-ui/src/ui/voters/GSCOnlyToggle.tsx +++ b/apps/council-ui/src/ui/voters/GscOnlyToggle.tsx @@ -18,12 +18,12 @@ export function GSCOnlyToggle({ return (
- + diff --git a/apps/council-ui/src/ui/voters/VoterVaultsList.tsx b/apps/council-ui/src/ui/voters/VoterVaultsList.tsx index 4673465b..3d9897a1 100644 --- a/apps/council-ui/src/ui/voters/VoterVaultsList.tsx +++ b/apps/council-ui/src/ui/voters/VoterVaultsList.tsx @@ -1,44 +1,46 @@ import { useQuery, UseQueryResult } from "@tanstack/react-query"; import { ReactElement } from "react"; import { formatAddress } from "src/ui/base/formatting/formatAddress"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useChainId } from "src/ui/network/useChainId"; -import { GSCVaultProfileCard } from "src/ui/vaults/gscVault/GSCVaultProfileCard/GSCVaultProfileCard"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import { useCouncilConfig } from "src/ui/config/hooks/useCouncilConfig"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { GSCVaultProfileCard } from "src/ui/vaults/gscVault/GscVaultProfileCard"; +import { useReadGscVault } from "src/ui/vaults/gscVault/hooks/useReadGscVault"; import { useVaultVotingPower } from "src/ui/vaults/hooks/useVaultVotingPower"; import { LockingVaultProfileCard } from "src/ui/vaults/lockingVault/LockingVaultsProfileCard"; import { VaultProfileCard } from "src/ui/vaults/VaultProfileCard"; import { VaultProfileCardSkeleton } from "src/ui/vaults/VaultProfileCardSkeleton"; import { VestingVaultProfileCard } from "src/ui/vaults/vestingVault/VestingVaultProfileCard"; -import { getIsGSCEligible } from "src/vaults/gscVault/getIsGSCEligible"; -import { getVaultConfig } from "src/vaults/vaults"; +import { getIsGscEligible } from "src/utils/gscVault/getIsGscEligible"; interface VoterVaultsListProps { - address: string; + account: `0x${string}`; } export function VoterVaultsList({ - address, + account, }: VoterVaultsListProps): ReactElement { - const { coreVoting, gscVoting } = useCouncil(); - const { data: isGSCRelevant } = useIsGSCRelevant(address); - - const chainId = useChainId(); + const coreVoting = useReadCoreVoting(); + const config = useCouncilConfig(); + const gscVault = useReadGscVault(); + const { data: isGSCRelevant } = useIsGSCRelevant(account); return ( -
+
{/* core voting vaults */} {coreVoting.vaults.map((vault) => { - const config = getVaultConfig(vault.address, chainId); + const vaultConfig = config.coreVoting.vaults.find( + (v) => v.address === vault.address, + ); - switch (config?.type) { + switch (vaultConfig?.type) { case "LockingVault": case "FrozenLockingVault": return ( ); case "VestingVault": @@ -46,24 +48,24 @@ export function VoterVaultsList({ ); default: return ( ); } })} {/* gsc vault */} - {isGSCRelevant && !!gscVoting && ( + {isGSCRelevant && !!gscVault && ( )}
@@ -74,32 +76,40 @@ export function VoterVaultsList({ * Get a boolean indicating that the GSC is relevant to this voter because they * are either a member or eligible. */ -function useIsGSCRelevant(address: string): UseQueryResult { - const { coreVoting, gscVoting } = useCouncil(); +function useIsGSCRelevant(account: `0x${string}`): UseQueryResult { + const gscVault = useReadGscVault(); + const coreVoting = useReadCoreVoting(); return useQuery({ - queryKey: ["is-gsc-relevant", address], + queryKey: ["is-gsc-relevant", account], queryFn: async () => { - if (!gscVoting) { + if (!gscVault) { return false; } - if (await gscVoting.getIsMember(address)) { + if (await gscVault.getIsMember({ account })) { return true; } - return getIsGSCEligible({ address, coreVoting, gscVoting }); + return getIsGscEligible({ + account, + gscVault, + qualifyingVaults: coreVoting.vaults, + }); }, }); } interface DefaultVaultProfileCardProps { - address: string; - profileAddress: string; + address: `0x${string}`; + profileAddress: `0x${string}`; } function DefaultVaultProfileCard({ address, profileAddress, }: DefaultVaultProfileCardProps) { - const { data: votingPower } = useVaultVotingPower(address, profileAddress); + const { votingPower } = useVaultVotingPower({ + vaultAddress: address, + account: profileAddress, + }); const name = `Voting Vault ${formatAddress(address)}`; if (!votingPower) { @@ -113,7 +123,7 @@ function DefaultVaultProfileCard({ stats={[ { label: "Voting Power", - value: +votingPower ? formatBalance(votingPower) : "None", + value: votingPower ? formatVotingPower(votingPower) : "None", }, ]} /> diff --git a/apps/council-ui/src/ui/voters/VotersListCompact.tsx b/apps/council-ui/src/ui/voters/VotersListCompact.tsx index 6d418142..5442acd3 100644 --- a/apps/council-ui/src/ui/voters/VotersListCompact.tsx +++ b/apps/council-ui/src/ui/voters/VotersListCompact.tsx @@ -1,12 +1,12 @@ -import { VoterWithPower } from "@council/sdk"; +import { VoterWithPower } from "@delvtech/council-viem"; import { ReactElement, useMemo, useState } from "react"; import { makeVoterURL } from "src/routes"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { - SortableGridTable, SortOptions, + SortableGridTable, } from "src/ui/base/tables/SortableGridTable"; -import { useBulkEnsRecords } from "src/ui/ens/useBulkEnsRecords"; +import { useBulkEnsRecords } from "src/ui/ens/hooks/useBulkEnsRecords"; import { VoterAddress } from "src/ui/voters/VoterAddress"; interface VotersListCompactProps { @@ -31,7 +31,7 @@ export function VotersListCompact({ default: sorted = voters .slice() - .sort((a, b) => +a.votingPower - +b.votingPower); + .sort((a, b) => (a.votingPower >= b.votingPower ? 1 : -1)); break; } @@ -70,7 +70,7 @@ export function VotersListCompact({ address={voter.address} ensName={ensRecords?.[voter.address]} />, - formatBalance(votingPower, 0), + formatVotingPower(votingPower, 0), ], }; })} diff --git a/apps/council-ui/src/ui/voters/VotingHistoryTable.tsx b/apps/council-ui/src/ui/voters/VotingHistoryTable.tsx index e0474234..909d503c 100644 --- a/apps/council-ui/src/ui/voters/VotingHistoryTable.tsx +++ b/apps/council-ui/src/ui/voters/VotingHistoryTable.tsx @@ -1,15 +1,15 @@ -import { Vote } from "@council/sdk"; +import { ReadVote } from "@delvtech/council-viem"; import { ReactElement } from "react"; import { councilConfigs } from "src/config/council.config"; import { makeProposalURL } from "src/routes"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; import { GridTableHeader } from "src/ui/base/tables/GridTableHeader"; import { GridTableRowLink } from "src/ui/base/tables/GridTableRowLink"; -import { useChainId } from "src/ui/network/useChainId"; +import { useSupportedChainId } from "src/ui/network/hooks/useSupportedChainId"; import FormattedBallot from "src/ui/voting/FormattedBallot"; interface VotingHistoryTableProps { - history: Vote[]; + history: ReadVote[]; } export function VotingHistoryTable({ @@ -33,28 +33,28 @@ export function VotingHistoryTable({ ); } -function VoteHistoryRow({ vote }: { vote: Vote }): ReactElement { - const chainId = useChainId(); +function VoteHistoryRow({ vote }: { vote: ReadVote }): ReactElement { + const chainId = useSupportedChainId(); const proposalsConfig = councilConfigs[chainId].coreVoting.proposals; const proposal = vote.proposal; - const votingContract = proposal.votingContract; - const sentenceSummary = proposalsConfig[proposal.id]?.sentenceSummary; + const coreVoting = proposal.coreVoting; + const sentenceSummary = proposalsConfig[String(proposal.id)]?.sentenceSummary; return ( - {votingContract.name} Proposal {proposal.id} + {coreVoting.name} Proposal {String(proposal.id)} {sentenceSummary && ( -

+

{sentenceSummary.length > 80 ? `${sentenceSummary.slice(0, 80)}\u2026` // unicode for horizontal ellipses : sentenceSummary}

)}
- {formatBalance(vote.power)} + {formatVotingPower(vote.power)} diff --git a/apps/council-ui/src/ui/voters/hooks/useVoterStats.ts b/apps/council-ui/src/ui/voters/hooks/useVoterStats.ts index 105cd09e..50b85e4c 100644 --- a/apps/council-ui/src/ui/voters/hooks/useVoterStats.ts +++ b/apps/council-ui/src/ui/voters/hooks/useVoterStats.ts @@ -1,37 +1,47 @@ -import { Vote, Voter } from "@council/sdk"; -import { useQuery, UseQueryResult } from "@tanstack/react-query"; -import { useCouncil } from "src/ui/council/useCouncil"; -import { useGSCStatus } from "src/ui/vaults/gscVault/useGSCStatus"; -import { GSCStatus } from "src/vaults/gscVault/types"; +import { ReadVote } from "@delvtech/council-viem"; +import { QueryStatus, useQuery } from "@tanstack/react-query"; +import { useReadCoreVoting } from "src/ui/council/hooks/useReadCoreVoting"; +import { useReadCouncil } from "src/ui/council/hooks/useReadCouncil"; +import { useGscStatus } from "src/ui/vaults/gscVault/hooks/useGscStatus"; +import { GscStatus } from "src/utils/gscVault/types"; interface VoterStatistics { - votingHistory: Vote[]; - votingPower: string; - gscStatus: GSCStatus | null; + votingHistory: ReadVote[]; + votingPower: bigint; + gscStatus: GscStatus | undefined; } -export function useVoterStats( - address: string | undefined, -): UseQueryResult { - const { context, coreVoting } = useCouncil(); - const { data: gscStatus } = useGSCStatus(address); - return useQuery({ +export function useVoterStats(address: `0x${string}` | undefined): { + data: VoterStatistics | undefined; + status: QueryStatus; +} { + const coreVoting = useReadCoreVoting(); + const council = useReadCouncil(); + const { gscStatus } = useGscStatus(address); + + const enabled = !!address; + + const { data, status } = useQuery({ queryKey: ["voter-stats", address], - enabled: !!address, - queryFn: async () => { - const voter = new Voter(address as string, context); - const votingHistory = await voter.getVotes(coreVoting.address); - const votingPower = await voter.getVotingPower( - coreVoting.vaults.map((vault) => vault.address), - ); + enabled, + queryFn: enabled + ? async () => { + const voter = council.voter(address); + const votingHistory = await voter.getVotes({ coreVoting }); + const votingPower = await coreVoting.getVotingPower({ + account: voter, + }); - return { - votingHistory: votingHistory, - votingPower, - gscStatus: gscStatus ?? null, - }; - }, + return { + votingHistory: votingHistory, + votingPower, + gscStatus: gscStatus, + }; + } + : undefined, refetchOnWindowFocus: false, refetchOnMount: false, }); + + return { data, status }; } diff --git a/apps/council-ui/src/ui/voters/types.ts b/apps/council-ui/src/ui/voters/types.ts index 429953f0..527df866 100644 --- a/apps/council-ui/src/ui/voters/types.ts +++ b/apps/council-ui/src/ui/voters/types.ts @@ -1,7 +1,7 @@ export interface VoterRowData { - address: string; + address: `0x${string}`; ensName: string | null; - votingPower: string; + votingPower: bigint; numberOfDelegators: number; isGSCMember: boolean; } diff --git a/apps/council-ui/src/ui/voting/FormattedBallot.tsx b/apps/council-ui/src/ui/voting/FormattedBallot.tsx index 1a067bf0..b090fae5 100644 --- a/apps/council-ui/src/ui/voting/FormattedBallot.tsx +++ b/apps/council-ui/src/ui/voting/FormattedBallot.tsx @@ -1,4 +1,5 @@ -import { Ballot } from "@council/sdk"; +import { Ballot } from "@delvtech/council-viem"; +import assertNever from "assert-never"; import { ReactElement } from "react"; interface FormattedBallotProps { @@ -17,5 +18,8 @@ export default function FormattedBallot({ case "maybe": return

ABSTAIN

; + + default: + assertNever(ballot); } } diff --git a/apps/council-ui/src/ui/voting/ProposalVoting.tsx b/apps/council-ui/src/ui/voting/ProposalVoting.tsx index 04fb018e..55891c11 100644 --- a/apps/council-ui/src/ui/voting/ProposalVoting.tsx +++ b/apps/council-ui/src/ui/voting/ProposalVoting.tsx @@ -1,40 +1,69 @@ -import { Ballot } from "@council/sdk"; +import { Ballot, ReadVotingVault } from "@delvtech/council-viem"; import classNames from "classnames"; import Link from "next/link"; import { ReactElement } from "react"; import { makeVaultURL } from "src/routes"; -import { formatBalance } from "src/ui/base/formatting/formatBalance"; +import { formatVotingPower } from "src/ui/base/formatting/formatVotingPower"; +import { useReadProposal } from "src/ui/proposals/hooks/useReadProposal"; import useVotingPowerByVault from "src/ui/vaults/hooks/useVotingPowerByVault"; +import { ProposalVotingSkeleton } from "src/ui/voting/ProposalVotingSkeleton"; +import { useSubmitVote } from "src/ui/voting/hooks/useSubmitVote"; +import { useVote } from "src/ui/voting/hooks/useVote"; +import { useAccount } from "wagmi"; interface ProposalVotingProps { - account: string | undefined; - accountBallot?: Ballot | null; - atBlock: number | undefined; - disabled?: boolean; - onVote: (ballot: Ballot) => void; + coreVotingAddress: `0x${string}`; + proposalId: bigint; + vaults: (ReadVotingVault | `0x${string}`)[]; } export function ProposalVoting({ - account, - accountBallot, - atBlock, - disabled, - onVote, + coreVotingAddress, + proposalId, + vaults, }: ProposalVotingProps): ReactElement { - const { data: votingPowerByVault } = useVotingPowerByVault(account, atBlock); + const isConnected = useAccount().isConnected; + const { proposal } = useReadProposal({ + id: proposalId, + coreVoting: coreVotingAddress, + }); + const { votingPowerByVault, status, fetchStatus } = useVotingPowerByVault({ + vaults, + atBlock: proposal?.created, + }); const totalVotingPower = votingPowerByVault?.reduce( - (total, vault) => total + +vault.votingPower, - 0, + (total, vault) => total + vault.votingPower, + 0n, ); - return ( + const { vote } = useVote({ + proposalId, + coreVotingAddress, + }); + const { submitVote, status: submitVoteStatus } = useSubmitVote(); + + function handleVote(ballot: Ballot) { + submitVote?.({ + proposalId, + coreVotingAddress, + ballot, + vaults, + }); + } + + const disabled = + !isConnected || !submitVote || submitVoteStatus === "pending"; + + return fetchStatus === "fetching" ? ( + + ) : (

Vaults

Voting Power

-
+
{votingPowerByVault?.map((vault) => (

{vault.name}

-

{formatBalance(vault.votingPower)}

+

{formatVotingPower(vault.votingPower)}

))}
@@ -51,34 +80,43 @@ export function ProposalVoting({

Total Voting Power

- {formatBalance(totalVotingPower ?? 0)} + {formatVotingPower(totalVotingPower ?? 0)}

-
+
- Gyroscope + ArcadeDAO -

- COMING SOON! -

-

- 🥷 -

-

- COMING SOON! -

+ + Gyroscope +
diff --git a/apps/landing-page/src/ui/Footer.tsx b/apps/landing-page/src/ui/Footer.tsx index 9b88b768..379e776b 100644 --- a/apps/landing-page/src/ui/Footer.tsx +++ b/apps/landing-page/src/ui/Footer.tsx @@ -14,6 +14,24 @@ export function Footer(): ReactElement { Built with 💜 by{" "} DELV

+

+ + Terms + + + Privacy + +

© 2023 Element Finance Inc., dba DELV. All rights reserved

diff --git a/apps/landing-page/tsconfig.json b/apps/landing-page/tsconfig.json index 1aae4a0a..6c2e7e38 100644 --- a/apps/landing-page/tsconfig.json +++ b/apps/landing-page/tsconfig.json @@ -2,9 +2,6 @@ "extends": "@council/tsconfig/base.json", "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }], - "paths": { - "src/*": ["./src/*"] - }, "compilerOptions": { "target": "ESNext", "useDefineForClassFields": true, @@ -22,6 +19,9 @@ "noEmit": true, "jsx": "react-jsx", "rootDir": ".", - "baseUrl": "." + "baseUrl": ".", + "paths": { + "src/*": ["./src/*"] + } } } diff --git a/package.json b/package.json index 6f9133f2..1c373f1b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "council-kit", - "version": "0.0.0", + "version": "0.0.3", "private": true, "workspaces": [ "apps/*", @@ -13,20 +13,21 @@ "lint": "turbo run lint", "format": "turbo run format", "format:check": "turbo run format:check", - "postinstall": "husky install" + "typecheck": "turbo run typecheck", + "postinstall": "husky install", + "test": "turbo test", + "release": "turbo build && changeset publish" }, "devDependencies": { - "@parcel/packager-ts": "2.8.0", - "@parcel/transformer-typescript-types": "2.8.0", + "@changesets/cli": "^2.27.1", + "eslint": "^8.56.0", "husky": "^8.0.1", "lint-staged": "^13.0.3", "os-browserify": "^0.3.0", - "prettier": "latest", - "turbo": "latest", - "typescript": ">=3.0.0" - }, - "resolutions": { - "typescript": "4.7.4" + "prettier": "^3.2.5", + "prettier-plugin-organize-imports": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.5.11", + "turbo": "latest" }, "lint-staged": { "{apps,packages}/**/*.{gql,graphql,js,jsx,ts,tsx,json}": [ @@ -34,9 +35,18 @@ "prettier --write" ] }, + "resolutions": { + "react": "18.2.0", + "react-dom": "18.2.0", + "@types/react": "18.2.57", + "prettier": "^3.2.5", + "prettier-plugin-organize-imports": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.5.11", + "viem": "^2.7.12", + "wagmi": "^2.5.7" + }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, - "dependencies": {}, - "packageManager": "yarn@1.22.18" + "packageManager": "yarn@1.22.21" } diff --git a/packages/contract-stub/.env.example b/packages/contract-stub/.env.example deleted file mode 100644 index 512a1b0e..00000000 --- a/packages/contract-stub/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -# the private key of the wallet to use in test functions -# (hardhat #0 account private key by default) -MOCK_WALLET_PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ No newline at end of file diff --git a/packages/contract-stub/.gitignore b/packages/contract-stub/.gitignore deleted file mode 100644 index c327b9d9..00000000 --- a/packages/contract-stub/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -.env \ No newline at end of file diff --git a/packages/contract-stub/.prettierignore b/packages/contract-stub/.prettierignore deleted file mode 100644 index 5c07730a..00000000 --- a/packages/contract-stub/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -src/types -dist \ No newline at end of file diff --git a/packages/contract-stub/.prettierrc.js b/packages/contract-stub/.prettierrc.js deleted file mode 100644 index 2f90e90c..00000000 --- a/packages/contract-stub/.prettierrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), -}; diff --git a/packages/contract-stub/jest.config.js b/packages/contract-stub/jest.config.js deleted file mode 100644 index 085011a8..00000000 --- a/packages/contract-stub/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: "ts-jest/presets/default-esm", - // load environment variables from .env - setupFiles: ["dotenv/config"], - moduleNameMapper: { - // rewrite paths configured in tsconfig - "src/(.*)": "/src/$1", - }, - transform: { - // transform .ts files into es modules. - "^.+\\.ts$": [ - "ts-jest", - { - useESM: true, - }, - ], - }, -}; diff --git a/packages/contract-stub/package.json b/packages/contract-stub/package.json deleted file mode 100644 index 02e37fe4..00000000 --- a/packages/contract-stub/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@council/contract-stub", - "version": "0.0.1", - "license": "MIT", - "source": "src/index.ts", - "main": "dist/main.cjs", - "module": "dist/main.mjs", - "types": "dist/types.d.ts", - "files": [ - "dist" - ], - "alias": { - "src": "./src" - }, - "scripts": { - "watch": "parcel watch", - "build": "parcel build", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "build:typechain": "typechain --target=ethers-v5 src/testing/abis/* --out-dir src/types" - }, - "dependencies": { - "sinon": "^15.0.1" - }, - "devDependencies": { - "@council/eslint-config": "*", - "@council/prettier-config": "*", - "@council/tsconfig": "*", - "@jest/globals": "^29.4.3", - "@typechain/ethers-v5": "^10.2.0", - "@types/sinon": "^10.0.13", - "@wagmi/connectors": "^0.2.6", - "dotenv": "^16.0.3", - "ethers": "^5.7.2", - "jest": "^29.4.3", - "parcel": "^2.8.0", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-jest": "^29.0.5", - "ts-node": "^10.9.1", - "tsconfig-paths": "^4.1.0", - "tsconfig-paths-jest": "^0.0.1", - "typechain": "^8.1.1", - "typescript": "^4.7.4" - }, - "peerDependencies": { - "ethers": ">=5.6 < 6" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/contract-stub/src/index.ts b/packages/contract-stub/src/index.ts deleted file mode 100644 index ff4ec8f7..00000000 --- a/packages/contract-stub/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./stubContract"; diff --git a/packages/contract-stub/src/stubContract.test.ts b/packages/contract-stub/src/stubContract.test.ts deleted file mode 100644 index 49380d13..00000000 --- a/packages/contract-stub/src/stubContract.test.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { BigNumber, ethers } from "ethers"; -import { stubContract } from "./stubContract"; -import { ApprovalEvent } from "@council/typechain/dist/contracts/interfaces/IERC20"; -import { stub } from "sinon"; -import { ERC20__factory } from "src/testing/types"; -import { test, expect } from "@jest/globals"; -import { mockProvider } from "src/testing/mockProvider"; - -test("Stubs methods correctly", async () => { - const stubbedContract = setupMockERC20(); - - // should throw an error if stub's resolve value was never set - expect(stubbedContract.decimals).toThrow(); - - stubbedContract.decimals.resolves(18); - const decimals = await stubbedContract.decimals(); - expect(decimals).toEqual(18); -}); - -test("Stubs functions methods correctly", async () => { - const stubbedContract = setupMockERC20(); - - // should throw an error if stub's resolve value was never set - expect(stubbedContract.functions.decimals).toThrow(); - - stubbedContract.functions.decimals.resolves([18]); - const decimals = await stubbedContract.functions.decimals(); - expect(decimals).toEqual([18]); -}); - -test("Stubs callStatic methods correctly", async () => { - const stubbedContract = setupMockERC20(); - // should throw an error if stub's resolve value was never set - expect(stubbedContract.callStatic.approve).toThrow(); - - stubbedContract.callStatic.approve.resolves(true); - const gasToApprove100Tokens = await stubbedContract.callStatic.approve( - ethers.constants.AddressZero, - 100, - ); - expect(gasToApprove100Tokens).toEqual(true); -}); - -test("Stubs estimateGas methods correctly", async () => { - const stubbedContract = setupMockERC20(); - - // should throw an error if stub's resolve value was never set - expect(stubbedContract.estimateGas.approve).toThrow(); - - stubbedContract.estimateGas.approve.resolves(BigNumber.from(555)); - const gasToApprove100Tokens = await stubbedContract.estimateGas.approve( - ethers.constants.AddressZero, - 100, - ); - expect(gasToApprove100Tokens).toEqual(BigNumber.from(555)); -}); - -test("Stubs popoulateTransaction methods correctly", async () => { - const stubbedContract = setupMockERC20(); - - // should throw an error if stub's resolve value was never set - expect(stubbedContract.populateTransaction.approve).toThrow(); - - stubbedContract.populateTransaction.approve.resolves({}); - const approveTx = await stubbedContract.populateTransaction.approve( - ethers.constants.AddressZero, - 100, - ); - expect(approveTx).toEqual({}); -}); - -test("Stubs queryFilter correctly", async () => { - const stubbedContract = setupMockERC20(); - - // should throw an error if stub's resolve value was never set - expect(stubbedContract.queryFilter).toThrow(); - - const getBlockStub = stub().resolves(12345678); - - stubbedContract.queryFilter.resolves([ - { - args: [], - getBlock: getBlockStub, - }, - ] as unknown as ApprovalEvent[]); - - const filter = stubbedContract.filters.Approval(); - const approvalEvents = await stubbedContract.queryFilter(filter); - - expect(approvalEvents).toEqual([ - { - args: [], - getBlock: getBlockStub, - }, - ]); -}); - -test("Stubs connect correctly", async () => { - const stubbedContract = setupMockERC20(); - stubbedContract.decimals.resolves(18); - - const newInstance = stubbedContract.connect(mockProvider); - const newInstanceDecimals = await newInstance.decimals(); - - // should keep mocks from original - expect(newInstanceDecimals).toEqual(18); - - // shouldn't be affected by changes to non-mock properties on the original - // instance - Object.assign(stubbedContract, { address: "0x1" }); - expect(newInstance.address).not.toEqual(stubbedContract.address); -}); - -function setupMockERC20() { - return stubContract( - ERC20__factory.connect(ethers.constants.AddressZero, mockProvider), - ); -} diff --git a/packages/contract-stub/src/stubContract.ts b/packages/contract-stub/src/stubContract.ts deleted file mode 100644 index 2e7e0e28..00000000 --- a/packages/contract-stub/src/stubContract.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { Contract, ContractFunction, Signer, providers } from "ethers"; -import { stub, SinonStub } from "sinon"; - -// TODO: refactor for ethers v6 (and viem? https://viem.sh/) - -/** - * An object with `ContractFunction` methods on it. - */ -export interface ContractMethodBucket { - [name: string]: ContractFunction; -} - -/** - * Get a stubbed version of a method bucket where each method is a `SinonStub` - */ -export type StubbedMethodBucket = { - [K in keyof F]: SinonStub, ReturnType>; -}; - -/** - * Get a stubbed version of a contract where every method is a `SinonStub` - */ -export type StubbedContract = C & { - // Replace all direct method types with a typed `SinonStub` - [K in keyof C["functions"]]: SinonStub, ReturnType>; -} & { - // Replace the method types in method buckets - callStatic: StubbedMethodBucket; - functions: StubbedMethodBucket; - estimateGas: StubbedMethodBucket; - populateTransaction: StubbedMethodBucket; - // replace the `queryFilter` method with a typed `SinonStub` - queryFilter: SinonStub< - Parameters, - ReturnType - >; - connect: ( - signerOrProvider: Signer | providers.Provider | string, - ) => StubbedContract; -}; - -/** - * Get a stubbed version of an [Ethers](https://docs.ethers.org/v5/) contract - * instance where every method is replaced with a [Sinon - * stub](https://sinonjs.org/releases/v15/stubs/). - * @param contract - * @returns - */ -export function stubContract( - contract: C, -): StubbedContract { - const overrides = { - callStatic: {}, - functions: {}, - estimateGas: {}, - populateTransaction: {}, - queryFilter: stub().callsFake(() => { - throw new Error( - `This is an unhandled error calling "queryFilter" in the test.`, - ); - }), - connect(signerOrProvider: Signer | providers.Provider | string) { - const stubbedContract = stubContract(contract); - // use the same stubs from the original - Object.assign(stubbedContract, { - functions: { ...this.functions }, - callStatic: { ...this.callStatic }, - estimateGas: { ...this.estimateGas }, - populateTransaction: { ...this.populateTransaction }, - queryFilter: this.queryFilter, - }); - for (const method of Object.keys(this.functions)) { - Object.assign(stubbedContract, { [method]: this[method] }); - } - return stubbedContract; - }, - } as StubbedContract; - - Object.keys(contract.callStatic).forEach((methodName) => { - overrides.callStatic[methodName] = stub().callsFake(() => { - throw new Error( - `This is an unhandled error calling "callStatic.${methodName}" in the test.`, - ); - }); - }); - - Object.keys(contract.functions).forEach((methodName) => { - overrides[methodName] = stub().callsFake(() => { - throw new Error( - `This is an unhandled error calling "${methodName}" in the test.`, - ); - }); - overrides.functions[methodName] = stub().callsFake(() => { - throw new Error( - `This is an unhandled error calling "functions.${methodName}" in the test.`, - ); - }); - }); - - Object.keys(contract.estimateGas).forEach((methodName) => { - overrides.estimateGas[methodName] = stub().callsFake(() => { - throw new Error( - `This is an unhandled error calling "estimateGas.${methodName}" in the test.`, - ); - }); - }); - - Object.keys(contract.populateTransaction).forEach((methodName) => { - overrides.populateTransaction[methodName] = stub().callsFake(() => { - throw new Error( - `This is an unhandled error calling "populateTransaction.${methodName}" in the test.`, - ); - }); - }); - - const contractPrototype = Object.getPrototypeOf(contract); - const clone = Object.create(contractPrototype); - Object.assign(clone, contract.connect(contract.provider), overrides); - - return clone as StubbedContract; -} diff --git a/packages/contract-stub/src/testing/abis/ERC20.json b/packages/contract-stub/src/testing/abis/ERC20.json deleted file mode 100644 index 405d6b36..00000000 --- a/packages/contract-stub/src/testing/abis/ERC20.json +++ /dev/null @@ -1,222 +0,0 @@ -[ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - } -] diff --git a/packages/contract-stub/src/testing/mockProvider.ts b/packages/contract-stub/src/testing/mockProvider.ts deleted file mode 100644 index 3bd7cf24..00000000 --- a/packages/contract-stub/src/testing/mockProvider.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { MockProvider } from "@wagmi/connectors/mock"; -import { Wallet } from "ethers"; - -const privateKey = process.env.MOCK_WALLET_PRIVATE_KEY; -if (!privateKey) { - throw "Missing environment variable: MOCK_WALLET_PRIVATE_KEY"; -} - -export const mockProvider = new MockProvider({ - chainId: 1, - signer: new Wallet(privateKey), -}); diff --git a/packages/contract-stub/src/testing/types/ERC20.ts b/packages/contract-stub/src/testing/types/ERC20.ts deleted file mode 100644 index 951990ea..00000000 --- a/packages/contract-stub/src/testing/types/ERC20.ts +++ /dev/null @@ -1,384 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "./common"; - -export interface ERC20Interface extends utils.Interface { - functions: { - "name()": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "decimals()": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "symbol()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "allowance(address,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "name" - | "approve" - | "totalSupply" - | "transferFrom" - | "decimals" - | "balanceOf" - | "symbol" - | "transfer" - | "allowance", - ): FunctionFragment; - - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - name(overrides?: CallOverrides): Promise<[string]>; - - approve( - _spender: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber] & { balance: BigNumber }>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - transfer( - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - allowance( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - }; - - name(overrides?: CallOverrides): Promise; - - approve( - _spender: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - transfer( - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - allowance( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - name(overrides?: CallOverrides): Promise; - - approve( - _spender: PromiseOrValue, - _value: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - transfer( - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - allowance( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - name(overrides?: CallOverrides): Promise; - - approve( - _spender: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - transfer( - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - allowance( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - name(overrides?: CallOverrides): Promise; - - approve( - _spender: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - transfer( - _to: PromiseOrValue, - _value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - allowance( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/contract-stub/src/testing/types/common.ts b/packages/contract-stub/src/testing/types/common.ts deleted file mode 100644 index d06cebc7..00000000 --- a/packages/contract-stub/src/testing/types/common.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { Listener } from "@ethersproject/providers"; -import type { Event, EventFilter } from "ethers"; - -export interface TypedEvent< - TArgsArray extends Array = any, - TArgsObject = any, -> extends Event { - args: TArgsArray & TArgsObject; -} - -export interface TypedEventFilter<_TEvent extends TypedEvent> - extends EventFilter {} - -export interface TypedListener { - (...listenerArg: [...__TypechainArgsArray, TEvent]): void; -} - -type __TypechainArgsArray = T extends TypedEvent ? U : never; - -export interface OnEvent { - ( - eventFilter: TypedEventFilter, - listener: TypedListener, - ): TRes; - (eventName: string, listener: Listener): TRes; -} - -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 PromiseOrValue = T | Promise; diff --git a/packages/contract-stub/src/testing/types/factories/ERC20__factory.ts b/packages/contract-stub/src/testing/types/factories/ERC20__factory.ts deleted file mode 100644 index 713d5125..00000000 --- a/packages/contract-stub/src/testing/types/factories/ERC20__factory.ts +++ /dev/null @@ -1,240 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { ERC20, ERC20Interface } from "../ERC20"; - -const _abi = [ - { - constant: true, - inputs: [], - name: "name", - outputs: [ - { - name: "", - type: "string", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - name: "_spender", - type: "address", - }, - { - name: "_value", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "totalSupply", - outputs: [ - { - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - name: "_from", - type: "address", - }, - { - name: "_to", - type: "address", - }, - { - name: "_value", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "decimals", - outputs: [ - { - name: "", - type: "uint8", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - name: "_owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - name: "balance", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "symbol", - outputs: [ - { - name: "", - type: "string", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - name: "_to", - type: "address", - }, - { - name: "_value", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [ - { - name: "_owner", - type: "address", - }, - { - name: "_spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - payable: true, - stateMutability: "payable", - type: "fallback", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - name: "owner", - type: "address", - }, - { - indexed: true, - name: "spender", - type: "address", - }, - { - indexed: false, - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - name: "from", - type: "address", - }, - { - indexed: true, - name: "to", - type: "address", - }, - { - indexed: false, - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, -] as const; - -export class ERC20__factory { - static readonly abi = _abi; - static createInterface(): ERC20Interface { - return new utils.Interface(_abi) as ERC20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): ERC20 { - return new Contract(address, _abi, signerOrProvider) as ERC20; - } -} diff --git a/packages/contract-stub/src/testing/types/factories/index.ts b/packages/contract-stub/src/testing/types/factories/index.ts deleted file mode 100644 index 4a39ead9..00000000 --- a/packages/contract-stub/src/testing/types/factories/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { ERC20__factory } from "./ERC20__factory"; diff --git a/packages/contract-stub/src/testing/types/index.ts b/packages/contract-stub/src/testing/types/index.ts deleted file mode 100644 index e1f9fc1b..00000000 --- a/packages/contract-stub/src/testing/types/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { ERC20 } from "./ERC20"; -export * as factories from "./factories"; -export { ERC20__factory } from "./factories/ERC20__factory"; diff --git a/packages/council-artifacts/.gitignore b/packages/council-artifacts/.gitignore new file mode 100644 index 00000000..5ee7e6de --- /dev/null +++ b/packages/council-artifacts/.gitignore @@ -0,0 +1,5 @@ +node_modules +dist + +# Ignore temporary clones of the council repo used by the build script +council-temp.* diff --git a/packages/council-artifacts/CHANGELOG.md b/packages/council-artifacts/CHANGELOG.md new file mode 100644 index 00000000..44d734d4 --- /dev/null +++ b/packages/council-artifacts/CHANGELOG.md @@ -0,0 +1,19 @@ +# @delvtech/council-artifacts + +## 0.0.3 + +### Patch Changes + +- a5ed20e: Remove hardhat dependency + +## 0.0.2 + +### Patch Changes + +- 5ab0981: Add missing publishConfig setting in package.json + +## 0.0.1 + +### Patch Changes + +- abebf3c: Initial release 🚀 diff --git a/packages/council-typechain/LICENSE b/packages/council-artifacts/LICENSE similarity index 100% rename from packages/council-typechain/LICENSE rename to packages/council-artifacts/LICENSE diff --git a/packages/council-artifacts/package.json b/packages/council-artifacts/package.json new file mode 100644 index 00000000..4bf2d0e9 --- /dev/null +++ b/packages/council-artifacts/package.json @@ -0,0 +1,33 @@ +{ + "name": "@delvtech/council-artifacts", + "version": "0.0.3", + "license": "MIT", + "type": "module", + "files": [ + "dist" + ], + "exports": { + "./*": { + "types": "./dist/*.d.ts", + "default": "./dist/*.js" + }, + "./*.js": { + "types": "./dist/*.d.ts", + "default": "./dist/*.js" + }, + "./package.json": "./package.json" + }, + "scripts": { + "build:src": "sh scripts/build_src.sh main", + "build": "npm run build:src && tsc --build --force", + "build:new": "rm -rf src && npm run build" + }, + "devDependencies": { + "@council/eslint-config": "*", + "@council/tsconfig": "*", + "typescript": "^5.3.3" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/council-artifacts/scripts/build_src.sh b/packages/council-artifacts/scripts/build_src.sh new file mode 100644 index 00000000..d6d7c5b5 --- /dev/null +++ b/packages/council-artifacts/scripts/build_src.sh @@ -0,0 +1,81 @@ +#!/bin/bash +set -e + +# SETTINGS +default_branch="main" +default_repo_url="git@github.com:delvtech/council.git" +src_dir_name="src" +max_file_size=1000000 # 1MB + +# Skip the build if the src directory already exists +if [ -d "$src_dir_name" ]; then + echo "Src path ($src_dir_name) already exists. Skipping src build." + exit 0 +fi + +# Echo usage +echo "" +echo "+" +echo "| $0" +echo "| Builds typescript src files from the council repo." +echo "|" +echo "| Usage: $0 [branch] [repo_url]" +echo "|" +echo "| branch: The branch to clone. (default: $default_branch)" +echo "| repo_url: The url of the git repository to clone. (default: $default_repo_url)" +echo "+" +echo "" + +branch=${1:-$default_branch} +repo_url=${2:-$default_repo_url} +temp_dir=$(mktemp -d "council-temp.XXXXXX") + +# Echo settings +echo "Branch: $branch" +echo "Repo URL: $repo_url" +echo "Source directory: $src_dir_name" +echo "Max file size: $max_file_size bytes" +echo "" + +git clone --depth 1 "$repo_url" --branch "$branch" "$temp_dir" + +echo "Compiling contracts..." +( + cd "$temp_dir" + yarn + npx hardhat compile +) + +echo "Creating typescript files..." + +# Reset the src folder +rm -rf "$src_dir_name" +mkdir "$src_dir_name" + +# Loop through all the json files in the artifacts directory that aren't in the +# build-info directory and aren't debug files. +find "$temp_dir"/artifacts \ + -type d -name "build-info" -prune \ + -o -type f -name "*.json" ! -name "*.dbg.json" -print | + while IFS= read -r file; do + + # Ignore the contract if the file is too large. This prevents TSC from + # throwing errors while trying to parse large files and prevents the script + # from processing files we probably don't want to be importing into our + # codebase. + file_size=$(wc -c <"$file") + if [ "$file_size" -gt "$max_file_size" ]; then + echo "WARNING: File $file is too large ($(echo $file_size | tr -d ' ') bytes) and will be omitted." + continue + fi + + contract_name=$(basename $file .json) + + # Write the contract to a typescript file as a named export with `as const` + # to prevent typescript from widening the type of the contract. + src_file="$src_dir_name/$contract_name.ts" + echo "export const $contract_name = $(cat $file) as const;" >$src_file + done + +echo "Cleaning up..." +rm -rf "$temp_dir" diff --git a/packages/council-artifacts/src/AbstractLockingVault.ts b/packages/council-artifacts/src/AbstractLockingVault.ts new file mode 100644 index 00000000..7c70569d --- /dev/null +++ b/packages/council-artifacts/src/AbstractLockingVault.ts @@ -0,0 +1,188 @@ +export const AbstractLockingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "AbstractLockingVault", + "sourceName": "contracts/vaults/LockingVault.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDelegate", + "type": "address" + } + ], + "name": "changeDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fundedAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "firstDelegation", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/AbstractMerkleRewards.ts b/packages/council-artifacts/src/AbstractMerkleRewards.ts new file mode 100644 index 00000000..68ba4bc6 --- /dev/null +++ b/packages/council-artifacts/src/AbstractMerkleRewards.ts @@ -0,0 +1,130 @@ +export const AbstractMerkleRewards = { + "_format": "hh-sol-artifact-1", + "contractName": "AbstractMerkleRewards", + "sourceName": "contracts/libraries/MerkleRewards.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claimAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockingVault", + "outputs": [ + { + "internalType": "contract ILockingVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/AbstractVestingVault.ts b/packages/council-artifacts/src/AbstractVestingVault.ts new file mode 100644 index 00000000..54f15335 --- /dev/null +++ b/packages/council-artifacts/src/AbstractVestingVault.ts @@ -0,0 +1,394 @@ +export const AbstractVestingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "AbstractVestingVault", + "sourceName": "contracts/vaults/VestingVault.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [], + "name": "acceptGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "uint128", + "name": "_amount", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_cliff", + "type": "uint128" + }, + { + "internalType": "address", + "name": "_delegatee", + "type": "address" + } + ], + "name": "addGrantAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_multiplier", + "type": "uint256" + } + ], + "name": "changeUnvestedMultiplier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "getGrant", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "allocation", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "withdrawn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "created", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "cliff", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "latestVotingPower", + "type": "uint128" + }, + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256[2]", + "name": "range", + "type": "uint256[2]" + } + ], + "internalType": "struct VestingVaultStorage.Grant", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + }, + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "removeGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "setTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timelock", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unvestedMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "updateVotingPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Address.ts b/packages/council-artifacts/src/Address.ts new file mode 100644 index 00000000..13053335 --- /dev/null +++ b/packages/council-artifacts/src/Address.ts @@ -0,0 +1,10 @@ +export const Address = { + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220460afce0d69e9f46d6667dbba90dfa3e0519fe3ea612a7fb3f5a09b4ddd5b1ad64736f6c63430008030033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220460afce0d69e9f46d6667dbba90dfa3e0519fe3ea612a7fb3f5a09b4ddd5b1ad64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Airdrop.ts b/packages/council-artifacts/src/Airdrop.ts new file mode 100644 index 00000000..31757ca7 --- /dev/null +++ b/packages/council-artifacts/src/Airdrop.ts @@ -0,0 +1,277 @@ +export const Airdrop = { + "_format": "hh-sol-artifact-1", + "contractName": "Airdrop", + "sourceName": "contracts/features/Airdrop.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_governance", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_merkleRoot", + "type": "bytes32" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_expiration", + "type": "uint256" + }, + { + "internalType": "contract ILockingVault", + "name": "_lockingVault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claimAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "expiration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockingVault", + "outputs": [ + { + "internalType": "contract ILockingVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "reclaim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620011483803806200114883398101604081905262000034916200019f565b6000849055606083901b6001600160601b031916608052600280546001600160a01b0319166001600160a01b0383811691821790925560405163095ea7b360e01b8152600481019190915260001960248201528591859184918491849184919083169063095ea7b390604401602060405180830381600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f6919062000206565b5050600380546001600160a01b0319163317905550505060a084905250620001209050856200012b565b505050505062000248565b6003546001600160a01b031633146200017d5760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600060a08688031215620001b7578081fd5b8551620001c4816200022f565b602087015160408801519196509450620001de816200022f565b606087015160808801519194509250620001f8816200022f565b809150509295509295909350565b60006020828403121562000218578081fd5b8151801515811462000228578182fd5b9392505050565b6001600160a01b03811681146200024557600080fd5b50565b60805160601c60a051610ebb6200028d6000396000818161015e01526107f101526000818161025001528181610322015281816108a901526109870152610ebb6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b6a5d7de1161008c578063d2a0434511610066578063d2a043451461022b578063fc0c546a1461024b578063fc772c8b14610272578063fe9fbb8014610285576100ea565b8063b6a5d7de146101c5578063b9181611146101d8578063c884ef831461020b576100ea565b8063217863b7116100c8578063217863b71461012a57806327c97fa5146101465780634665096d146101595780638da5cb5b14610180576100ea565b806309ed28f1146100ef5780630a33e8c21461010457806313af403514610117575b600080fd5b6101026100fd366004610d9f565b610298565b005b610102610112366004610d2a565b6103a6565b610102610125366004610cd8565b610502565b61013360005481565b6040519081526020015b60405180910390f35b610102610154366004610cd8565b6105ca565b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6003546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013d565b6101026101d3366004610cd8565b610697565b6101fb6101e6366004610cd8565b60046020526000908152604090205460ff1681565b604051901515815260200161013d565b610133610219366004610cd8565b60016020526000908152604090205481565b6002546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610102610280366004610cd8565b61076e565b6101fb610293366004610cd8565b610a0a565b6102d68585858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a3992505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561036657600080fd5b505af115801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190610cf2565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b6104668685858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a3992505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b50505050505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b61076b8173ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b7f00000000000000000000000000000000000000000000000000000000000000004211610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f742065787069726564000000000000000000000000000000000000000000604482015260640161041f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190610d12565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b1580156109cd57600080fd5b505af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190610cf2565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff165b919050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260348101839052600090605401604051602081830303815290604052805190602001209050610a998260005483610bae565b610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f6600000000000000000000000000000000000000604482015260640161041f565b336000908152600160205260409020548390610b1c908690610e05565b1115610b84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f436c61696d656420746f6f206d75636800000000000000000000000000000000604482015260640161041f565b3360009081526001602052604081208054869290610ba3908490610e05565b909155505050505050565b600082610bbb8584610bc4565b14949350505050565b600081815b8451811015610c3057610c1c82868381518110610c0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610c38565b915080610c2881610e1d565b915050610bc9565b509392505050565b6000818310610c54576000828152602084905260409020610c63565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3457600080fd5b60008083601f840112610c9f578182fd5b50813567ffffffffffffffff811115610cb6578182fd5b6020830191508360208260051b8501011115610cd157600080fd5b9250929050565b600060208284031215610ce9578081fd5b610c6382610c6a565b600060208284031215610d03578081fd5b81518015158114610c63578182fd5b600060208284031215610d23578081fd5b5051919050565b60008060008060008060a08789031215610d42578182fd5b86359550610d5260208801610c6a565b945060408701359350606087013567ffffffffffffffff811115610d74578283fd5b610d8089828a01610c8e565b9094509250610d93905060808801610c6a565b90509295509295509295565b600080600080600060808688031215610db6578081fd5b8535945060208601359350604086013567ffffffffffffffff811115610dda578182fd5b610de688828901610c8e565b9094509250610df9905060608701610c6a565b90509295509295909350565b60008219821115610e1857610e18610e56565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610e4f57610e4f610e56565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220235f3af62ae73550ce81dabeb3a3fa288aa7cbc73da26cbb1cc092181cab7d5064736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b6a5d7de1161008c578063d2a0434511610066578063d2a043451461022b578063fc0c546a1461024b578063fc772c8b14610272578063fe9fbb8014610285576100ea565b8063b6a5d7de146101c5578063b9181611146101d8578063c884ef831461020b576100ea565b8063217863b7116100c8578063217863b71461012a57806327c97fa5146101465780634665096d146101595780638da5cb5b14610180576100ea565b806309ed28f1146100ef5780630a33e8c21461010457806313af403514610117575b600080fd5b6101026100fd366004610d9f565b610298565b005b610102610112366004610d2a565b6103a6565b610102610125366004610cd8565b610502565b61013360005481565b6040519081526020015b60405180910390f35b610102610154366004610cd8565b6105ca565b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6003546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013d565b6101026101d3366004610cd8565b610697565b6101fb6101e6366004610cd8565b60046020526000908152604090205460ff1681565b604051901515815260200161013d565b610133610219366004610cd8565b60016020526000908152604090205481565b6002546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610102610280366004610cd8565b61076e565b6101fb610293366004610cd8565b610a0a565b6102d68585858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a3992505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561036657600080fd5b505af115801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190610cf2565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b6104668685858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a3992505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b50505050505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b61076b8173ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b7f00000000000000000000000000000000000000000000000000000000000000004211610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f742065787069726564000000000000000000000000000000000000000000604482015260640161041f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190610d12565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b1580156109cd57600080fd5b505af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190610cf2565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff165b919050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260348101839052600090605401604051602081830303815290604052805190602001209050610a998260005483610bae565b610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f6600000000000000000000000000000000000000604482015260640161041f565b336000908152600160205260409020548390610b1c908690610e05565b1115610b84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f436c61696d656420746f6f206d75636800000000000000000000000000000000604482015260640161041f565b3360009081526001602052604081208054869290610ba3908490610e05565b909155505050505050565b600082610bbb8584610bc4565b14949350505050565b600081815b8451811015610c3057610c1c82868381518110610c0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610c38565b915080610c2881610e1d565b915050610bc9565b509392505050565b6000818310610c54576000828152602084905260409020610c63565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3457600080fd5b60008083601f840112610c9f578182fd5b50813567ffffffffffffffff811115610cb6578182fd5b6020830191508360208260051b8501011115610cd157600080fd5b9250929050565b600060208284031215610ce9578081fd5b610c6382610c6a565b600060208284031215610d03578081fd5b81518015158114610c63578182fd5b600060208284031215610d23578081fd5b5051919050565b60008060008060008060a08789031215610d42578182fd5b86359550610d5260208801610c6a565b945060408701359350606087013567ffffffffffffffff811115610d74578283fd5b610d8089828a01610c8e565b9094509250610d93905060808801610c6a565b90509295509295509295565b600080600080600060808688031215610db6578081fd5b8535945060208601359350604086013567ffffffffffffffff811115610dda578182fd5b610de688828901610c8e565b9094509250610df9905060608701610c6a565b90509295509295909350565b60008219821115610e1857610e18610e56565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610e4f57610e4f610e56565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220235f3af62ae73550ce81dabeb3a3fa288aa7cbc73da26cbb1cc092181cab7d5064736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Authorizable.ts b/packages/council-artifacts/src/Authorizable.ts new file mode 100644 index 00000000..eab9b842 --- /dev/null +++ b/packages/council-artifacts/src/Authorizable.ts @@ -0,0 +1,106 @@ +export const Authorizable = { + "_format": "hh-sol-artifact-1", + "contractName": "Authorizable", + "sourceName": "contracts/libraries/Authorizable.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163317905561044d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063b6a5d7de11610050578063b6a5d7de146100e9578063b9181611146100fc578063fe9fbb801461012f57610072565b806313af40351461007757806327c97fa51461008c5780638da5cb5b1461009f575b600080fd5b61008a6100853660046103dc565b610168565b005b61008a61009a3660046103dc565b610235565b6000546100bf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a6100f73660046103dc565b610302565b61011f61010a3660046103dc565b60016020526000908152604090205460ff1681565b60405190151581526020016100e0565b61011f61013d3660046103dc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016101e5565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016101e5565b6103d98173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6000602082840312156103ed578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610410578182fd5b939250505056fea26469706673582212203ed5a76450ed5c578176510b676ecdd83e5a75c6a2ab37f0d461205642d9da8864736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063b6a5d7de11610050578063b6a5d7de146100e9578063b9181611146100fc578063fe9fbb801461012f57610072565b806313af40351461007757806327c97fa51461008c5780638da5cb5b1461009f575b600080fd5b61008a6100853660046103dc565b610168565b005b61008a61009a3660046103dc565b610235565b6000546100bf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a6100f73660046103dc565b610302565b61011f61010a3660046103dc565b60016020526000908152604090205460ff1681565b60405190151581526020016100e0565b61011f61013d3660046103dc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016101e5565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016101e5565b6103d98173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6000602082840312156103ed578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610410578182fd5b939250505056fea26469706673582212203ed5a76450ed5c578176510b676ecdd83e5a75c6a2ab37f0d461205642d9da8864736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/CoreVoting.ts b/packages/council-artifacts/src/CoreVoting.ts new file mode 100644 index 00000000..dd13dddc --- /dev/null +++ b/packages/council-artifacts/src/CoreVoting.ts @@ -0,0 +1,614 @@ +export const CoreVoting = { + "_format": "hh-sol-artifact-1", + "contractName": "CoreVoting", + "sourceName": "contracts/CoreVoting.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_timelock", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_baseQuorum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minProposalPower", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_gsc", + "type": "address" + }, + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "created", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "execution", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expiration", + "type": "uint256" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint128", + "name": "votingPower", + "type": "uint128" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "castBallot", + "type": "uint8" + } + ], + "indexed": false, + "internalType": "struct CoreVoting.Vote", + "name": "vote", + "type": "tuple" + } + ], + "name": "Voted", + "type": "event" + }, + { + "inputs": [], + "name": "DAY_IN_BLOCKS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "approvedVaults", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseQuorum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_extraVoteTime", + "type": "uint256" + } + ], + "name": "changeExtraVotingTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "name": "changeVaultStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "extraVoteTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "getProposalVotingPower", + "outputs": [ + { + "internalType": "uint128[3]", + "name": "", + "type": "uint128[3]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minProposalPower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "extraVaultData", + "type": "bytes[]" + }, + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "lastCall", + "type": "uint256" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "ballot", + "type": "uint8" + } + ], + "name": "proposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposalCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "proposals", + "outputs": [ + { + "internalType": "bytes32", + "name": "proposalHash", + "type": "bytes32" + }, + { + "internalType": "uint128", + "name": "created", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "unlock", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "quorum", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "lastCall", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "quorums", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + } + ], + "name": "setCustomQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + } + ], + "name": "setDefaultQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_lockDuration", + "type": "uint256" + } + ], + "name": "setLockDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minProposalPower", + "type": "uint256" + } + ], + "name": "setMinProposalPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "extraVaultData", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "ballot", + "type": "uint8" + } + ], + "name": "vote", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "votes", + "outputs": [ + { + "internalType": "uint128", + "name": "votingPower", + "type": "uint128" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "castBallot", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052620000136119606003620002d1565b600455620000256119606005620002d1565b6005553480156200003557600080fd5b5060405162002c2538038062002c258339810160408190526200005891620001c1565b600080546001600160a01b03191633178155600385905560068490555b8151811015620000ed57600160096000848481518110620000a657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e481620002f3565b91505062000075565b50620000f98562000130565b62000125826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b50505050506200033d565b6000546001600160a01b03163314620001825760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001bc57600080fd5b919050565b600080600080600060a08688031215620001d9578081fd5b620001e486620001a4565b94506020808701519450604087015193506200020360608801620001a4565b60808801519093506001600160401b038082111562000220578384fd5b818901915089601f83011262000234578384fd5b81518181111562000249576200024962000327565b8060051b604051601f19603f8301168101818110858211171562000271576200027162000327565b604052828152858101935084860182860187018e101562000290578788fd5b8795505b83861015620002bd57620002a881620001a4565b85526001959095019493860193860162000294565b508096505050505050509295509295909350565b6000816000190483118215151615620002ee57620002ee62000311565b500290565b60006000198214156200030a576200030a62000311565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128d8806200034d6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/ERC20Permit.ts b/packages/council-artifacts/src/ERC20Permit.ts new file mode 100644 index 00000000..458f94f7 --- /dev/null +++ b/packages/council-artifacts/src/ERC20Permit.ts @@ -0,0 +1,308 @@ +export const ERC20Permit = { + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Permit", + "sourceName": "contracts/libraries/ERC20Permit.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/ERC20PermitWithMint.ts b/packages/council-artifacts/src/ERC20PermitWithMint.ts new file mode 100644 index 00000000..657d1f44 --- /dev/null +++ b/packages/council-artifacts/src/ERC20PermitWithMint.ts @@ -0,0 +1,447 @@ +export const ERC20PermitWithMint = { + "_format": "hh-sol-artifact-1", + "contractName": "ERC20PermitWithMint", + "sourceName": "contracts/libraries/ERC20PermitWithMint.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/FrozenLockingVault.ts b/packages/council-artifacts/src/FrozenLockingVault.ts new file mode 100644 index 00000000..12c38073 --- /dev/null +++ b/packages/council-artifacts/src/FrozenLockingVault.ts @@ -0,0 +1,204 @@ +export const FrozenLockingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "FrozenLockingVault", + "sourceName": "contracts/vaults/FrozenLockingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_staleBlockLag", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDelegate", + "type": "address" + } + ], + "name": "changeDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fundedAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "firstDelegation", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b5060405161127a38038061127a83398101604081905261002f9161004a565b60609190911b6001600160601b03191660805260a052610082565b6000806040838503121561005c578182fd5b82516001600160a01b0381168114610072578283fd5b6020939093015192949293505050565b60805160601c60a0516111c36100b76000396000818160ba015261040301526000818161012d01526104f301526111c36000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063e91f32351161005b578063e91f323514610102578063f45346dc14610115578063fc0c546a14610128578063fc7e286d1461017457610088565b80632e1a7d4d1461008d5780639f973fd5146100a2578063c2c94b88146100b5578063e7d20283146100ef575b600080fd5b6100a061009b366004610fb1565b6101c0565b005b6100a06100b0366004610e8a565b610227565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100dc6100fd366004610eab565b6103ca565b6100dc610110366004610f0f565b6103ec565b6100a0610123366004610ed4565b61043b565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b610187610182366004610e8a565b610770565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100e6565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46726f7a656e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006102316107d7565b33600090815260209190915260408120805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083161783559193506bffffffffffffffffffffffff74010000000000000000000000000000000000000000820416929116906102b661081c565b905060006102c4828461086f565b90506102dc836102d48684611147565b849190610910565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e061033f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61108f565b60405190815260200160405180910390a3600061035c838861086f565b90506103748761036c878461100e565b859190610910565b60405185815273ffffffffffffffffffffffffffffffffffffffff88169033907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a350505050505050565b6000806103d561081c565b90506103e2818585610a4f565b9150505b92915050565b6000806103f761081c565b905061043186866104287f000000000000000000000000000000000000000000000000000000000000000043611147565b84929190610abe565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e000000000000000000000000604482015260640161021e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561054c57600080fd5b505af1158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190610f91565b50600061058f6107d7565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260209290925260409091208054909250168061066f575080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161780825582908490839060149061063c9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611026565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506106d8565b8154849083906014906106a99084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611026565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b60006106e261081c565b905060006106f0828461086f565b90508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e08860405161075191815260200190565b60405180910390a3610767836102d4888461100e565b50505050505050565b600080600061077d6107d7565b73ffffffffffffffffffffffffffffffffffffffff9485166000908152602091909152604090205493841694740100000000000000000000000000000000000000009094046bffffffffffffffffffffffff169392505050565b60006108176040518060400160405280600881526020017f6465706f73697473000000000000000000000000000000000000000000000000815250610b42565b905090565b6040805180820190915260608152600060208201526108176040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250610bbb565b60008061087d846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff16806108ca576000925050506103e6565b6000610905836108db600185611147565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f420000000000000000000000000000000000000000000000000000000000604482015260640161021e565b600061099f846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610a0757610a03866108db600185611147565b5090505b8143821415610a1e57610a1b600184611147565b90505b8481600189010155438214610a4257610a428785610a3d86600161100e565b610bf9565b5050505050505050505050565b600080610a5d856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690610ab08488838686610c22565b9a9950505050505050505050565b600080610acc866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610b20858a8a8787610c22565b9150915083821115610ab057610b37848387610dfb565b610ab0858385610bf9565b6000807f03a912cdb153207069d92d44a2357e3f0ce00f7ee84da3510f1c6851b4cac4ee905060008184604051602001610b7d929190610fc9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6040805180820190915260608152600060208201526000610bdb83610e2b565b6040805180820190915284815260208101919091529150505b919050565b808210610c0557600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a656400000000000000000000000000000000000000604482015260640161021e565b85851115610c9957600080fd5b828410610ca557600080fd5b6000610cb2600185611147565b90508460005b828214610d565760006002610ccd858561100e565b610cd890600161100e565b610ce29190611056565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610d2457929650919450610df19350505050565b8b821015610d40578a821015610d38578293505b829450610d4e565b610d4b600184611147565b95505b505050610cb8565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610de7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c757265000000000000000000000000000000000000604482015260640161021e565b9195509093505050505b9550959350505050565b81831115610e0857600080fd5b60018101835b83811015610e2457600082820155600101610e0e565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610b7d929190610fc9565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bf457600080fd5b600060208284031215610e9b578081fd5b610ea482610e66565b9392505050565b60008060408385031215610ebd578081fd5b610ec683610e66565b946020939093013593505050565b600080600060608486031215610ee8578081fd5b610ef184610e66565b925060208401359150610f0660408501610e66565b90509250925092565b60008060008060608587031215610f24578081fd5b610f2d85610e66565b935060208501359250604085013567ffffffffffffffff80821115610f50578283fd5b818701915087601f830112610f63578283fd5b813581811115610f71578384fd5b886020828501011115610f82578384fd5b95989497505060200194505050565b600060208284031215610fa2578081fd5b81518015158114610ea4578182fd5b600060208284031215610fc2578081fd5b5035919050565b60008382528251815b81811015610fee57602081860181015185830182015201610fd2565b81811115610fff5782602083860101525b50919091016020019392505050565b600082198211156110215761102161115e565b500190565b60006bffffffffffffffffffffffff80831681851680830382111561104d5761104d61115e565b01949350505050565b60008261108a577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818413828413858304851182821616156110ce576110ce61115e565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156111085761110861115e565b8587129250878205871284841616156111235761112361115e565b878505871281841616156111395761113961115e565b505050929093029392505050565b6000828210156111595761115961115e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207dbd6d0f6de25a883e1f5adc0a994881426509a4693a7f820891925d47d3ce4264736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063e91f32351161005b578063e91f323514610102578063f45346dc14610115578063fc0c546a14610128578063fc7e286d1461017457610088565b80632e1a7d4d1461008d5780639f973fd5146100a2578063c2c94b88146100b5578063e7d20283146100ef575b600080fd5b6100a061009b366004610fb1565b6101c0565b005b6100a06100b0366004610e8a565b610227565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100dc6100fd366004610eab565b6103ca565b6100dc610110366004610f0f565b6103ec565b6100a0610123366004610ed4565b61043b565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b610187610182366004610e8a565b610770565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100e6565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46726f7a656e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006102316107d7565b33600090815260209190915260408120805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083161783559193506bffffffffffffffffffffffff74010000000000000000000000000000000000000000820416929116906102b661081c565b905060006102c4828461086f565b90506102dc836102d48684611147565b849190610910565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e061033f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61108f565b60405190815260200160405180910390a3600061035c838861086f565b90506103748761036c878461100e565b859190610910565b60405185815273ffffffffffffffffffffffffffffffffffffffff88169033907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a350505050505050565b6000806103d561081c565b90506103e2818585610a4f565b9150505b92915050565b6000806103f761081c565b905061043186866104287f000000000000000000000000000000000000000000000000000000000000000043611147565b84929190610abe565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e000000000000000000000000604482015260640161021e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561054c57600080fd5b505af1158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190610f91565b50600061058f6107d7565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260209290925260409091208054909250168061066f575080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161780825582908490839060149061063c9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611026565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506106d8565b8154849083906014906106a99084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611026565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b60006106e261081c565b905060006106f0828461086f565b90508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e08860405161075191815260200190565b60405180910390a3610767836102d4888461100e565b50505050505050565b600080600061077d6107d7565b73ffffffffffffffffffffffffffffffffffffffff9485166000908152602091909152604090205493841694740100000000000000000000000000000000000000009094046bffffffffffffffffffffffff169392505050565b60006108176040518060400160405280600881526020017f6465706f73697473000000000000000000000000000000000000000000000000815250610b42565b905090565b6040805180820190915260608152600060208201526108176040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250610bbb565b60008061087d846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff16806108ca576000925050506103e6565b6000610905836108db600185611147565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f420000000000000000000000000000000000000000000000000000000000604482015260640161021e565b600061099f846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610a0757610a03866108db600185611147565b5090505b8143821415610a1e57610a1b600184611147565b90505b8481600189010155438214610a4257610a428785610a3d86600161100e565b610bf9565b5050505050505050505050565b600080610a5d856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690610ab08488838686610c22565b9a9950505050505050505050565b600080610acc866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610b20858a8a8787610c22565b9150915083821115610ab057610b37848387610dfb565b610ab0858385610bf9565b6000807f03a912cdb153207069d92d44a2357e3f0ce00f7ee84da3510f1c6851b4cac4ee905060008184604051602001610b7d929190610fc9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6040805180820190915260608152600060208201526000610bdb83610e2b565b6040805180820190915284815260208101919091529150505b919050565b808210610c0557600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a656400000000000000000000000000000000000000604482015260640161021e565b85851115610c9957600080fd5b828410610ca557600080fd5b6000610cb2600185611147565b90508460005b828214610d565760006002610ccd858561100e565b610cd890600161100e565b610ce29190611056565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610d2457929650919450610df19350505050565b8b821015610d40578a821015610d38578293505b829450610d4e565b610d4b600184611147565b95505b505050610cb8565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610de7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c757265000000000000000000000000000000000000604482015260640161021e565b9195509093505050505b9550959350505050565b81831115610e0857600080fd5b60018101835b83811015610e2457600082820155600101610e0e565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610b7d929190610fc9565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bf457600080fd5b600060208284031215610e9b578081fd5b610ea482610e66565b9392505050565b60008060408385031215610ebd578081fd5b610ec683610e66565b946020939093013593505050565b600080600060608486031215610ee8578081fd5b610ef184610e66565b925060208401359150610f0660408501610e66565b90509250925092565b60008060008060608587031215610f24578081fd5b610f2d85610e66565b935060208501359250604085013567ffffffffffffffff80821115610f50578283fd5b818701915087601f830112610f63578283fd5b813581811115610f71578384fd5b886020828501011115610f82578384fd5b95989497505060200194505050565b600060208284031215610fa2578081fd5b81518015158114610ea4578182fd5b600060208284031215610fc2578081fd5b5035919050565b60008382528251815b81811015610fee57602081860181015185830182015201610fd2565b81811115610fff5782602083860101525b50919091016020019392505050565b600082198211156110215761102161115e565b500190565b60006bffffffffffffffffffffffff80831681851680830382111561104d5761104d61115e565b01949350505050565b60008261108a577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818413828413858304851182821616156110ce576110ce61115e565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156111085761110861115e565b8587129250878205871284841616156111235761112361115e565b878505871281841616156111395761113961115e565b505050929093029392505050565b6000828210156111595761115961115e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207dbd6d0f6de25a883e1f5adc0a994881426509a4693a7f820891925d47d3ce4264736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/FrozenVestingVault.ts b/packages/council-artifacts/src/FrozenVestingVault.ts new file mode 100644 index 00000000..c00300ea --- /dev/null +++ b/packages/council-artifacts/src/FrozenVestingVault.ts @@ -0,0 +1,410 @@ +export const FrozenVestingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "FrozenVestingVault", + "sourceName": "contracts/vaults/FrozenVestingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_stale", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [], + "name": "acceptGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "uint128", + "name": "_amount", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_cliff", + "type": "uint128" + }, + { + "internalType": "address", + "name": "_delegatee", + "type": "address" + } + ], + "name": "addGrantAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_multiplier", + "type": "uint256" + } + ], + "name": "changeUnvestedMultiplier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claim", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "getGrant", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "allocation", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "withdrawn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "created", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "cliff", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "latestVotingPower", + "type": "uint128" + }, + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256[2]", + "name": "range", + "type": "uint256[2]" + } + ], + "internalType": "struct VestingVaultStorage.Grant", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + }, + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "removeGrant", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "setTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timelock", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unvestedMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "updateVotingPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620028db380380620028db833981016040819052620000349162000050565b60609190911b6001600160601b03191660805260a0526200008a565b6000806040838503121562000063578182fd5b82516001600160a01b03811681146200007a578283fd5b6020939093015192949293505050565b60805160601c60a05161280c620000cf6000396000818161028801526115480152600081816102f00152818161054301528181610603015261124d015261280c6000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c8063b6b55f25116100cd578063d0ebdbe711610081578063e7d2028311610066578063e7d20283146102c5578063e91f3235146102d8578063fc0c546a146102eb5761016b565b8063d0ebdbe7146102aa578063d33219b4146102bd5761016b565b8063bf31dbf4116100b2578063bf31dbf41461024d578063c1006f4f1461026d578063c2c94b88146102835761016b565b8063b6b55f2514610227578063bdacb3031461023a5761016b565b8063485cc955116101245780635c19a95c116101095780635c19a95c146101ee5780635f389a9d14610201578063747c1255146102145761016b565b8063485cc955146101d35780634e71d92d146101e65761016b565b8063267406cb11610155578063267406cb146101985780633e0bdaf7146101a6578063481c6a75146101ae5761016b565b8062f714ce146101705780632168034d14610185575b600080fd5b61018361017e366004612413565b610312565b005b6101836101933660046123fb565b61035f565b61018361017e366004612271565b610183610459565b6101b6610718565b6040516001600160a01b0390911681526020015b60405180910390f35b6101836101e136600461228b565b610728565b610183610312565b6101836101fc366004612271565b61092e565b61018361020f3660046122bd565b610c6d565b610183610222366004612271565b61115e565b6101836102353660046123fb565b61118d565b610183610248366004612271565b6112d1565b61026061025b366004612271565b611372565b6040516101ca91906124a3565b61027561145a565b6040519081526020016101ca565b6102757f000000000000000000000000000000000000000000000000000000000000000081565b6101836102b8366004612271565b611464565b6101b6611505565b6102756102d3366004612330565b61150f565b6102756102e6366004612359565b611531565b6101b67f000000000000000000000000000000000000000000000000000000000000000081565b60405162461bcd60e51b815260206004820152600660248201527f46726f7a656e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610367611580565b516001600160a01b031633146103bf5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b60648111156104105760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610356565b6104566104516040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b829055565b50565b6000610463611663565b3360009081526020919091526040812080549092506104aa906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116612730565b6fffffffffffffffffffffffffffffffff1690506000811161050e5760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610356565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561058f57600080fd5b505af11580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906123db565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906123db565b5060006106926116a8565b5160408051808201909152818152909150602081016106b18484612534565b90526106c3906004850190600261217e565b506107136107056040518060400160405280600581526020017f626f756e640000000000000000000000000000000000000000000000000000008152506115ea565b61070f8484612534565b9055565b505050565b6000610722611709565b51905090565b6107666040518060400160405280600b81526020017f696e697469616c697a65640000000000000000000000000000000000000000008152506115ea565b54156107b45760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610356565b6107fb6107f56040518060400160405280600b81526020017f696e697469616c697a65640000000000000000000000000000000000000000008152506115ea565b60019055565b61086f61083c6040518060400160405280600781526020017f6d616e6167657200000000000000000000000000000000000000000000000000815250611752565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b6108e36108b06040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b61092a6109246040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b60649055565b5050565b6000610938611663565b3360009081526020919091526040902060038101549091506001600160a01b03838116911614156109ab5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610356565b60006109b561178d565b60038301549091506000906109d49083906001600160a01b03166117e0565b604080516101008101825285546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c0830152825180840193849052939450600093610a9a93889260e08501929160048501919082845b815481526020019060010190808311610a7957505050505081525050611874565b60038501546002860154919250610aef916001600160a01b0390911690610ae79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1685612761565b8591906118f7565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e090610b779070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61258f565b60405190815260200160405180910390a36000610b9484876117e0565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e084604051610bdb91815260200190565b60405180910390a3610bf986610bf18484612534565b8691906118f7565b506002840180546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b610c75611709565b516001600160a01b03163314610ccd5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610356565b826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1611158015610d255750826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611155b610d715760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610356565b6fffffffffffffffffffffffffffffffff8416610d8c574393505b6000610d96611a0f565b90506000610da2611a4f565b9050866fffffffffffffffffffffffffffffffff1682600001541015610e0a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610356565b6000610e14611663565b6001600160a01b038a1660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1615610e915760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610356565b6001600160a01b03841615610ea65783610ea8565b885b93506000606483600001518a610ebe9190612647565b610ec8919061254c565b90506040518061010001604052808a6fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff168152602001876fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001866001600160a01b031681526020016040518060400160405280600081526020016000815250815250610f98611663565b6001600160a01b038c8116600090815260209283526040908190208451938501516fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e08301516110669160048401919061217e565b50905050886fffffffffffffffffffffffffffffffff168460000160008282546110909190612761565b90915550600090506110a061178d565b60038401549091506000906110bf9083906001600160a01b03166117e0565b60038501549091506110f8906001600160a01b03166110f06fffffffffffffffffffffffffffffffff861684612534565b8491906118f7565b60038401546040516fffffffffffffffffffffffffffffffff851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b6000611168611663565b6001600160a01b038316600090815260209190915260409020905061092a8282611a9c565b611195611709565b516001600160a01b031633146111ed5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610356565b60006111f7611a0f565b90508181600001600082825461120d9190612534565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561129957600080fd5b505af11580156112ad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071391906123db565b6112d9611580565b516001600160a01b031633146113315760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b6104566108b06040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b61137a6121bc565b611382611663565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b8154815260200190600101908083116114365750505050508152505090505b919050565b6000610722611a4f565b61146c611580565b516001600160a01b031633146114c45760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b6104566108b06040518060400160405280600781526020017f6d616e6167657200000000000000000000000000000000000000000000000000815250611752565b6000610722611580565b60008061151a61178d565b9050611527818585611ccc565b9150505b92915050565b60008061153c61178d565b9050611576868661156d7f000000000000000000000000000000000000000000000000000000000000000043612761565b84929190611d2e565b9695505050505050565b6040805160208101909152600081526115cd6040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b604080516020810190915290546001600160a01b03168152905090565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a32090506000818460405160200161162592919061245e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b60006116a36040518060400160405280600681526020017f6772616e74730000000000000000000000000000000000000000000000000000815250611da5565b905090565b6040805160208101909152600081526116f56040518060400160405280600581526020017f626f756e640000000000000000000000000000000000000000000000000000008152506115ea565b604080516020810190915290548152905090565b6040805160208101909152600081526115cd6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152505b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b90506000818460405160200161162592919061245e565b6040805180820190915260608152600060208201526116a36040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250611de0565b6000806117ee846020015190565b6001600160a01b03841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff168061182e5760009250505061152b565b60006118698361183f600185612761565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b60008061188083611e19565b9050600083602001516fffffffffffffffffffffffffffffffff16826118a69190612534565b84516118c491906fffffffffffffffffffffffffffffffff16612761565b905060646118d0611a4f565b516118db908361267f565b6118e5919061257b565b6118ef9083612534565b949350505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff81111561195f5760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610356565b600061196c846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff9091169081156119c7576119c38661183f600185612761565b5090505b81438214156119de576119db600184612761565b90505b8481600189010155438214611a0257611a0287856119fd866001612534565b611f45565b5050505050505050505050565b60006116a36040518060400160405280600a81526020017f756e61737369676e6564000000000000000000000000000000000000000000008152506115ea565b6040805160208101909152600081526116f56040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b6000611aa661178d565b6003830154909150600090611ac59083906001600160a01b03166117e0565b604080516101008101825285546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c08301528251808401909352929350600092611b8f92879160e0840191906004840190828282602002820191815481526020019060010190808311610a7957505050505081525050611874565b6002850154909150600090611bca9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16836126bc565b905080611bda575050505061092a565b6000811315611c04576003850154611bff906001600160a01b0316610bf18386612534565b611c4a565b6003850154611c4a906001600160a01b0316611c40837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61258f565b610bf19086612761565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905550505050565b600080611cda856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690611d208488838686611f6e565b9a9950505050505050505050565b600080611d3c866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080611d83858a8a8787611f6e565b9150915083821115611d2057611d9a848387612113565b611d20858385611f45565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c90506000818460405160200161162592919061245e565b6040805180820190915260608152600060208201526000611e0083612143565b6040805180820190915293845260208401525090919050565b600081608001516fffffffffffffffffffffffffffffffff16431080611e54575081604001516fffffffffffffffffffffffffffffffff1643105b15611e6157506000611455565b81606001516fffffffffffffffffffffffffffffffff164310611ea85760208201518251611e8f9190612730565b6fffffffffffffffffffffffffffffffff169050611455565b600082604001518360600151611ebe9190612730565b6fffffffffffffffffffffffffffffffff1683604001516fffffffffffffffffffffffffffffffff1643611ef29190612761565b8451611f1091906fffffffffffffffffffffffffffffffff1661267f565b611f1a919061257b565b905082602001516fffffffffffffffffffffffffffffffff1681611f3e9190612761565b9392505050565b808210611f5157600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082611fbe5760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610356565b85851115611fcb57600080fd5b828410611fd757600080fd5b6000611fe4600185612761565b90508460005b8282146120885760006002611fff8585612534565b61200a906001612534565b612014919061257b565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415612056579296509194506121099350505050565b8b821015612072578a82101561206a578293505b829450612080565b61207d600184612761565b95505b505050611fea565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156120ff5760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610356565b9195509093505050505b9550959350505050565b8183111561212057600080fd5b60018101835b8381101561213c57600082820155600101612126565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a90506000818460405160200161162592919061245e565b82600281019282156121ac579160200282015b828111156121ac578251825591602001919060010190612191565b506121b8929150612207565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e0810161220261221c565b905290565b5b808211156121b85760008155600101612208565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461145557600080fd5b80356fffffffffffffffffffffffffffffffff8116811461145557600080fd5b600060208284031215612282578081fd5b611f3e8261223a565b6000806040838503121561229d578081fd5b6122a68361223a565b91506122b46020840161223a565b90509250929050565b60008060008060008060c087890312156122d5578182fd5b6122de8761223a565b95506122ec60208801612251565b94506122fa60408801612251565b935061230860608801612251565b925061231660808801612251565b915061232460a0880161223a565b90509295509295509295565b60008060408385031215612342578182fd5b61234b8361223a565b946020939093013593505050565b6000806000806060858703121561236e578384fd5b6123778561223a565b935060208501359250604085013567ffffffffffffffff8082111561239a578384fd5b818701915087601f8301126123ad578384fd5b8135818111156123bb578485fd5b8860208285010111156123cc578485fd5b95989497505060200194505050565b6000602082840312156123ec578081fd5b81518015158114611f3e578182fd5b60006020828403121561240c578081fd5b5035919050565b60008060408385031215612425578182fd5b823591506122b46020840161223a565b8060005b6002811015612458578151845260209384019390910190600101612439565b50505050565b60008382528251815b8181101561248357602081860181015185830182015201612467565b818111156124945782602083860101525b50919091016020019392505050565b6000610120820190506fffffffffffffffffffffffffffffffff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c083015161251a60c08401826001600160a01b03169052565b5060e083015161252d60e0840182612435565b5092915050565b6000821982111561254757612547612778565b500190565b60006fffffffffffffffffffffffffffffffff8084168061256f5761256f6127a7565b92169190910492915050565b60008261258a5761258a6127a7565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818413828413858304851182821616156125ce576125ce612778565b7f80000000000000000000000000000000000000000000000000000000000000008487128682058812818416161561260857612608612778565b85871292508782058712848416161561262357612623612778565b8785058712818416161561263957612639612778565b505050929093029392505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561267657612676612778565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126b7576126b7612778565b500290565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156126f6576126f6612778565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561272a5761272a612778565b50500390565b60006fffffffffffffffffffffffffffffffff8381169083168181101561275957612759612778565b039392505050565b60008282101561277357612773612778565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220cc02a25cd99d7309e96c8dbadbe4493afdfc773d491a6c332be5cbdad22de16964736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016b5760003560e01c8063b6b55f25116100cd578063d0ebdbe711610081578063e7d2028311610066578063e7d20283146102c5578063e91f3235146102d8578063fc0c546a146102eb5761016b565b8063d0ebdbe7146102aa578063d33219b4146102bd5761016b565b8063bf31dbf4116100b2578063bf31dbf41461024d578063c1006f4f1461026d578063c2c94b88146102835761016b565b8063b6b55f2514610227578063bdacb3031461023a5761016b565b8063485cc955116101245780635c19a95c116101095780635c19a95c146101ee5780635f389a9d14610201578063747c1255146102145761016b565b8063485cc955146101d35780634e71d92d146101e65761016b565b8063267406cb11610155578063267406cb146101985780633e0bdaf7146101a6578063481c6a75146101ae5761016b565b8062f714ce146101705780632168034d14610185575b600080fd5b61018361017e366004612413565b610312565b005b6101836101933660046123fb565b61035f565b61018361017e366004612271565b610183610459565b6101b6610718565b6040516001600160a01b0390911681526020015b60405180910390f35b6101836101e136600461228b565b610728565b610183610312565b6101836101fc366004612271565b61092e565b61018361020f3660046122bd565b610c6d565b610183610222366004612271565b61115e565b6101836102353660046123fb565b61118d565b610183610248366004612271565b6112d1565b61026061025b366004612271565b611372565b6040516101ca91906124a3565b61027561145a565b6040519081526020016101ca565b6102757f000000000000000000000000000000000000000000000000000000000000000081565b6101836102b8366004612271565b611464565b6101b6611505565b6102756102d3366004612330565b61150f565b6102756102e6366004612359565b611531565b6101b67f000000000000000000000000000000000000000000000000000000000000000081565b60405162461bcd60e51b815260206004820152600660248201527f46726f7a656e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610367611580565b516001600160a01b031633146103bf5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b60648111156104105760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610356565b6104566104516040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b829055565b50565b6000610463611663565b3360009081526020919091526040812080549092506104aa906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116612730565b6fffffffffffffffffffffffffffffffff1690506000811161050e5760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610356565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561058f57600080fd5b505af11580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906123db565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906123db565b5060006106926116a8565b5160408051808201909152818152909150602081016106b18484612534565b90526106c3906004850190600261217e565b506107136107056040518060400160405280600581526020017f626f756e640000000000000000000000000000000000000000000000000000008152506115ea565b61070f8484612534565b9055565b505050565b6000610722611709565b51905090565b6107666040518060400160405280600b81526020017f696e697469616c697a65640000000000000000000000000000000000000000008152506115ea565b54156107b45760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610356565b6107fb6107f56040518060400160405280600b81526020017f696e697469616c697a65640000000000000000000000000000000000000000008152506115ea565b60019055565b61086f61083c6040518060400160405280600781526020017f6d616e6167657200000000000000000000000000000000000000000000000000815250611752565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b6108e36108b06040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b61092a6109246040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b60649055565b5050565b6000610938611663565b3360009081526020919091526040902060038101549091506001600160a01b03838116911614156109ab5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610356565b60006109b561178d565b60038301549091506000906109d49083906001600160a01b03166117e0565b604080516101008101825285546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c0830152825180840193849052939450600093610a9a93889260e08501929160048501919082845b815481526020019060010190808311610a7957505050505081525050611874565b60038501546002860154919250610aef916001600160a01b0390911690610ae79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1685612761565b8591906118f7565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e090610b779070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61258f565b60405190815260200160405180910390a36000610b9484876117e0565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e084604051610bdb91815260200190565b60405180910390a3610bf986610bf18484612534565b8691906118f7565b506002840180546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b610c75611709565b516001600160a01b03163314610ccd5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610356565b826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1611158015610d255750826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611155b610d715760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610356565b6fffffffffffffffffffffffffffffffff8416610d8c574393505b6000610d96611a0f565b90506000610da2611a4f565b9050866fffffffffffffffffffffffffffffffff1682600001541015610e0a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610356565b6000610e14611663565b6001600160a01b038a1660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1615610e915760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610356565b6001600160a01b03841615610ea65783610ea8565b885b93506000606483600001518a610ebe9190612647565b610ec8919061254c565b90506040518061010001604052808a6fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff168152602001876fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001866001600160a01b031681526020016040518060400160405280600081526020016000815250815250610f98611663565b6001600160a01b038c8116600090815260209283526040908190208451938501516fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e08301516110669160048401919061217e565b50905050886fffffffffffffffffffffffffffffffff168460000160008282546110909190612761565b90915550600090506110a061178d565b60038401549091506000906110bf9083906001600160a01b03166117e0565b60038501549091506110f8906001600160a01b03166110f06fffffffffffffffffffffffffffffffff861684612534565b8491906118f7565b60038401546040516fffffffffffffffffffffffffffffffff851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b6000611168611663565b6001600160a01b038316600090815260209190915260409020905061092a8282611a9c565b611195611709565b516001600160a01b031633146111ed5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610356565b60006111f7611a0f565b90508181600001600082825461120d9190612534565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561129957600080fd5b505af11580156112ad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071391906123db565b6112d9611580565b516001600160a01b031633146113315760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b6104566108b06040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b61137a6121bc565b611382611663565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b8154815260200190600101908083116114365750505050508152505090505b919050565b6000610722611a4f565b61146c611580565b516001600160a01b031633146114c45760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b6104566108b06040518060400160405280600781526020017f6d616e6167657200000000000000000000000000000000000000000000000000815250611752565b6000610722611580565b60008061151a61178d565b9050611527818585611ccc565b9150505b92915050565b60008061153c61178d565b9050611576868661156d7f000000000000000000000000000000000000000000000000000000000000000043612761565b84929190611d2e565b9695505050505050565b6040805160208101909152600081526115cd6040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b604080516020810190915290546001600160a01b03168152905090565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a32090506000818460405160200161162592919061245e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b60006116a36040518060400160405280600681526020017f6772616e74730000000000000000000000000000000000000000000000000000815250611da5565b905090565b6040805160208101909152600081526116f56040518060400160405280600581526020017f626f756e640000000000000000000000000000000000000000000000000000008152506115ea565b604080516020810190915290548152905090565b6040805160208101909152600081526115cd6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152505b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b90506000818460405160200161162592919061245e565b6040805180820190915260608152600060208201526116a36040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250611de0565b6000806117ee846020015190565b6001600160a01b03841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff168061182e5760009250505061152b565b60006118698361183f600185612761565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b60008061188083611e19565b9050600083602001516fffffffffffffffffffffffffffffffff16826118a69190612534565b84516118c491906fffffffffffffffffffffffffffffffff16612761565b905060646118d0611a4f565b516118db908361267f565b6118e5919061257b565b6118ef9083612534565b949350505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff81111561195f5760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610356565b600061196c846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff9091169081156119c7576119c38661183f600185612761565b5090505b81438214156119de576119db600184612761565b90505b8481600189010155438214611a0257611a0287856119fd866001612534565b611f45565b5050505050505050505050565b60006116a36040518060400160405280600a81526020017f756e61737369676e6564000000000000000000000000000000000000000000008152506115ea565b6040805160208101909152600081526116f56040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b6000611aa661178d565b6003830154909150600090611ac59083906001600160a01b03166117e0565b604080516101008101825285546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c08301528251808401909352929350600092611b8f92879160e0840191906004840190828282602002820191815481526020019060010190808311610a7957505050505081525050611874565b6002850154909150600090611bca9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16836126bc565b905080611bda575050505061092a565b6000811315611c04576003850154611bff906001600160a01b0316610bf18386612534565b611c4a565b6003850154611c4a906001600160a01b0316611c40837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61258f565b610bf19086612761565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905550505050565b600080611cda856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690611d208488838686611f6e565b9a9950505050505050505050565b600080611d3c866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080611d83858a8a8787611f6e565b9150915083821115611d2057611d9a848387612113565b611d20858385611f45565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c90506000818460405160200161162592919061245e565b6040805180820190915260608152600060208201526000611e0083612143565b6040805180820190915293845260208401525090919050565b600081608001516fffffffffffffffffffffffffffffffff16431080611e54575081604001516fffffffffffffffffffffffffffffffff1643105b15611e6157506000611455565b81606001516fffffffffffffffffffffffffffffffff164310611ea85760208201518251611e8f9190612730565b6fffffffffffffffffffffffffffffffff169050611455565b600082604001518360600151611ebe9190612730565b6fffffffffffffffffffffffffffffffff1683604001516fffffffffffffffffffffffffffffffff1643611ef29190612761565b8451611f1091906fffffffffffffffffffffffffffffffff1661267f565b611f1a919061257b565b905082602001516fffffffffffffffffffffffffffffffff1681611f3e9190612761565b9392505050565b808210611f5157600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082611fbe5760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610356565b85851115611fcb57600080fd5b828410611fd757600080fd5b6000611fe4600185612761565b90508460005b8282146120885760006002611fff8585612534565b61200a906001612534565b612014919061257b565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415612056579296509194506121099350505050565b8b821015612072578a82101561206a578293505b829450612080565b61207d600184612761565b95505b505050611fea565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156120ff5760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610356565b9195509093505050505b9550959350505050565b8183111561212057600080fd5b60018101835b8381101561213c57600082820155600101612126565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a90506000818460405160200161162592919061245e565b82600281019282156121ac579160200282015b828111156121ac578251825591602001919060010190612191565b506121b8929150612207565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e0810161220261221c565b905290565b5b808211156121b85760008155600101612208565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461145557600080fd5b80356fffffffffffffffffffffffffffffffff8116811461145557600080fd5b600060208284031215612282578081fd5b611f3e8261223a565b6000806040838503121561229d578081fd5b6122a68361223a565b91506122b46020840161223a565b90509250929050565b60008060008060008060c087890312156122d5578182fd5b6122de8761223a565b95506122ec60208801612251565b94506122fa60408801612251565b935061230860608801612251565b925061231660808801612251565b915061232460a0880161223a565b90509295509295509295565b60008060408385031215612342578182fd5b61234b8361223a565b946020939093013593505050565b6000806000806060858703121561236e578384fd5b6123778561223a565b935060208501359250604085013567ffffffffffffffff8082111561239a578384fd5b818701915087601f8301126123ad578384fd5b8135818111156123bb578485fd5b8860208285010111156123cc578485fd5b95989497505060200194505050565b6000602082840312156123ec578081fd5b81518015158114611f3e578182fd5b60006020828403121561240c578081fd5b5035919050565b60008060408385031215612425578182fd5b823591506122b46020840161223a565b8060005b6002811015612458578151845260209384019390910190600101612439565b50505050565b60008382528251815b8181101561248357602081860181015185830182015201612467565b818111156124945782602083860101525b50919091016020019392505050565b6000610120820190506fffffffffffffffffffffffffffffffff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c083015161251a60c08401826001600160a01b03169052565b5060e083015161252d60e0840182612435565b5092915050565b6000821982111561254757612547612778565b500190565b60006fffffffffffffffffffffffffffffffff8084168061256f5761256f6127a7565b92169190910492915050565b60008261258a5761258a6127a7565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818413828413858304851182821616156125ce576125ce612778565b7f80000000000000000000000000000000000000000000000000000000000000008487128682058812818416161561260857612608612778565b85871292508782058712848416161561262357612623612778565b8785058712818416161561263957612639612778565b505050929093029392505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561267657612676612778565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126b7576126b7612778565b500290565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156126f6576126f6612778565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561272a5761272a612778565b50500390565b60006fffffffffffffffffffffffffffffffff8381169083168181101561275957612759612778565b039392505050565b60008282101561277357612773612778565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220cc02a25cd99d7309e96c8dbadbe4493afdfc773d491a6c332be5cbdad22de16964736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/GSCVault.ts b/packages/council-artifacts/src/GSCVault.ts new file mode 100644 index 00000000..e86c17d5 --- /dev/null +++ b/packages/council-artifacts/src/GSCVault.ts @@ -0,0 +1,341 @@ +export const GSCVault = { + "_format": "hh-sol-artifact-1", + "contractName": "GSCVault", + "sourceName": "contracts/vaults/GSCVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ICoreVoting", + "name": "_coreVoting", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_votingPowerBound", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "when", + "type": "uint256" + } + ], + "name": "Kicked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "when", + "type": "uint256" + } + ], + "name": "MembershipProved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "coreVoting", + "outputs": [ + { + "internalType": "contract ICoreVoting", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "getUserVaults", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "idleDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes[]", + "name": "extraData", + "type": "bytes[]" + } + ], + "name": "kick", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "members", + "outputs": [ + { + "internalType": "uint256", + "name": "joined", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "extraData", + "type": "bytes[]" + } + ], + "name": "proveMembership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ICoreVoting", + "name": "_newVoting", + "type": "address" + } + ], + "name": "setCoreVoting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_idleDuration", + "type": "uint256" + } + ], + "name": "setIdleDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newBound", + "type": "uint256" + } + ], + "name": "setVotePowerBound", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "votingPowerBound", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052620546006005553480156200001857600080fd5b5060405162001507380380620015078339810160408190526200003b91620000f1565b60008054336001600160a01b031991821617909155600380549091166001600160a01b038516179055600482905562000074816200007d565b50505062000151565b6000546001600160a01b03163314620000cf5760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006060848603121562000106578283fd5b8351620001138162000138565b6020850151604086015191945092506200012d8162000138565b809150509250925092565b6001600160a01b03811681146200014e57600080fd5b50565b6113a680620001616000396000f3fe608060405234801561001057600080fd5b506004361061011a5760003560e01c80637e280246116100b2578063b6a5d7de11610081578063e7f3c69c11610066578063e7f3c69c14610272578063e91f323514610292578063fe9fbb80146102a55761011a565b8063b6a5d7de1461022c578063b91816111461023f5761011a565b80637e280246146101d25780638da5cb5b146101e5578063ad292ff814610210578063ae4b3628146102195761011a565b806322905a6c116100ee57806322905a6c1461019057806327c97fa5146101a357806338e02bf7146101b65780633eba045b146101bf5761011a565b8062fe809c1461011f57806308ae4b0c1461013457806309960f001461016a57806313af40351461017d575b600080fd5b61013261012d366004611199565b6102d1565b005b610157610142366004611016565b60026020526000908152604090206001015481565b6040519081526020015b60405180910390f35b610132610178366004611110565b610335565b61013261018b366004611016565b6107eb565b61013261019e366004611039565b61087f565b6101326101b1366004611016565b610b81565b61015760045481565b6101326101cd366004611199565b610c1a565b6101326101e0366004611016565b610c79565b6000546101f8906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b61015760055481565b6003546101f8906001600160a01b031681565b61013261023a366004611016565b610d0d565b61026261024d366004611016565b60016020526000908152604090205460ff1681565b6040519015158152602001610161565b610285610280366004611016565b610db3565b604051610161919061122d565b6101576102a036600461108c565b610e29565b6102626102b3366004611016565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146103305760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b8261035057634e487b7160e01b600052600160045260246000fd5b60005b8381101561058a5760006103688260016112dd565b90505b8481101561044f5785858281811061039357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906103a89190611016565b6001600160a01b03168686848181106103d157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906103e69190611016565b6001600160a01b0316141561043d5760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610327565b806104478161130c565b91505061036b565b506003546000906001600160a01b031663af7a060c87878581811061048457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104999190611016565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156104f057600080fd5b505afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105289190611179565b9050806105775760405162461bcd60e51b815260206004820152601960248201527f566f74696e67207661756c74206e6f7420617070726f766564000000000000006044820152606401610327565b50806105828161130c565b915050610353565b506000805b848110156106ad5760008686838181106105b957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105ce9190611016565b6001600160a01b031663e91f3235336105e86001436112f5565b88888781811061060857634e487b7160e01b600052603260045260246000fd5b905060200281019061061a919061127a565b6040518563ffffffff1660e01b815260040161063994939291906111c9565b602060405180830381600087803b15801561065357600080fd5b505af1158015610667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b91906111b1565b905061069781846112dd565b92505080806106a59061130c565b91505061058f565b506004548110156107005760405162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f75676820766f746573000000000000000000000000000000006044820152606401610327565b336000908152600260205260409020600101541561073857336000908152600260205260409020610732908686610eb5565b506107ae565b6040518060400160405280868680806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250504260209384015250338152600282526040902082518051919261079f92849290910190610f30565b50602082015181600101559050505b60405142815233907ff1e092311eefceee7206049c87d17464c34a7b92b85779b0b835ddb292a42e70906020015b60405180910390a25050505050565b6000546001600160a01b031633146108455760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600260209081526040808320805482518185028101850190935280835291929091908301828280156108e957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108cb575b505050505090506000805b8251811015610ac75760035483516001600160a01b039091169063af7a060c9085908490811061093457634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161096791906001600160a01b0391909116815260200190565b60206040518083038186803b15801561097f57600080fd5b505afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190611179565b15610ab55760008382815181106109de57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663e91f323588600143610a0291906112f5565b898987818110610a2257634e487b7160e01b600052603260045260246000fd5b9050602002810190610a34919061127a565b6040518563ffffffff1660e01b8152600401610a5394939291906111c9565b602060405180830381600087803b158015610a6d57600080fd5b505af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa591906111b1565b9050610ab181846112dd565b9250505b80610abf8161130c565b9150506108f4565b506004548110610b195760405162461bcd60e51b815260206004820152600d60248201527f4e6f74206b69636b2d61626c65000000000000000000000000000000000000006044820152606401610327565b6001600160a01b038516600090815260026020526040812090610b3c8282610f9d565b60018201600090555050846001600160a01b03167f8684348ed72cd103be12fcb99e9c5917294a8092ccd4808d1cd7b19daf982991436040516107dc91815260200190565b6000546001600160a01b03163314610bdb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b6001600160a01b0316600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000546001600160a01b03163314610c745760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600455565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d675760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b610db0816001600160a01b0316600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6001600160a01b038116600090815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e1d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dff575b50505050509050919050565b600080546001600160a01b0386811691161415610e4a5750620186a0610ead565b6001600160a01b03851660009081526002602052604090206001015415801590610e9c57506005546001600160a01b0386166000908152600260205260409020600101544291610e99916112dd565b11155b15610ea957506001610ead565b5060005b949350505050565b828054828255906000526020600020908101928215610f20579160200282015b82811115610f205781547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03843516178255602090920191600190910190610ed5565b50610f2c929150610fb7565b5090565b828054828255906000526020600020908101928215610f20579160200282015b82811115610f2057825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190610f50565b5080546000825590600052602060002090810190610db091905b5b80821115610f2c5760008155600101610fb8565b60008083601f840112610fdd578182fd5b50813567ffffffffffffffff811115610ff4578182fd5b6020830191508360208260051b850101111561100f57600080fd5b9250929050565b600060208284031215611027578081fd5b81356110328161135b565b9392505050565b60008060006040848603121561104d578182fd5b83356110588161135b565b9250602084013567ffffffffffffffff811115611073578283fd5b61107f86828701610fcc565b9497909650939450505050565b600080600080606085870312156110a1578081fd5b84356110ac8161135b565b935060208501359250604085013567ffffffffffffffff808211156110cf578283fd5b818701915087601f8301126110e2578283fd5b8135818111156110f0578384fd5b886020828501011115611101578384fd5b95989497505060200194505050565b60008060008060408587031215611125578384fd5b843567ffffffffffffffff8082111561113c578586fd5b61114888838901610fcc565b90965094506020870135915080821115611160578384fd5b5061116d87828801610fcc565b95989497509550505050565b60006020828403121561118a578081fd5b81518015158114611032578182fd5b6000602082840312156111aa578081fd5b5035919050565b6000602082840312156111c2578081fd5b5051919050565b60006001600160a01b03861682528460208301526060604083015282606083015282846080840137818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b6020808252825182820181905260009190848201906040850190845b8181101561126e5783516001600160a01b031683529284019291840191600101611249565b50909695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112ae578283fd5b83018035915067ffffffffffffffff8211156112c8578283fd5b60200191503681900382131561100f57600080fd5b600082198211156112f0576112f0611345565b500190565b60008282101561130757611307611345565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561133e5761133e611345565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610db057600080fdfea26469706673582212206123420b651077d05d296bf60a53173cec396b8d9e74a89449d021e1dab6d0d764736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011a5760003560e01c80637e280246116100b2578063b6a5d7de11610081578063e7f3c69c11610066578063e7f3c69c14610272578063e91f323514610292578063fe9fbb80146102a55761011a565b8063b6a5d7de1461022c578063b91816111461023f5761011a565b80637e280246146101d25780638da5cb5b146101e5578063ad292ff814610210578063ae4b3628146102195761011a565b806322905a6c116100ee57806322905a6c1461019057806327c97fa5146101a357806338e02bf7146101b65780633eba045b146101bf5761011a565b8062fe809c1461011f57806308ae4b0c1461013457806309960f001461016a57806313af40351461017d575b600080fd5b61013261012d366004611199565b6102d1565b005b610157610142366004611016565b60026020526000908152604090206001015481565b6040519081526020015b60405180910390f35b610132610178366004611110565b610335565b61013261018b366004611016565b6107eb565b61013261019e366004611039565b61087f565b6101326101b1366004611016565b610b81565b61015760045481565b6101326101cd366004611199565b610c1a565b6101326101e0366004611016565b610c79565b6000546101f8906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b61015760055481565b6003546101f8906001600160a01b031681565b61013261023a366004611016565b610d0d565b61026261024d366004611016565b60016020526000908152604090205460ff1681565b6040519015158152602001610161565b610285610280366004611016565b610db3565b604051610161919061122d565b6101576102a036600461108c565b610e29565b6102626102b3366004611016565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146103305760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b8261035057634e487b7160e01b600052600160045260246000fd5b60005b8381101561058a5760006103688260016112dd565b90505b8481101561044f5785858281811061039357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906103a89190611016565b6001600160a01b03168686848181106103d157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906103e69190611016565b6001600160a01b0316141561043d5760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610327565b806104478161130c565b91505061036b565b506003546000906001600160a01b031663af7a060c87878581811061048457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104999190611016565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156104f057600080fd5b505afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105289190611179565b9050806105775760405162461bcd60e51b815260206004820152601960248201527f566f74696e67207661756c74206e6f7420617070726f766564000000000000006044820152606401610327565b50806105828161130c565b915050610353565b506000805b848110156106ad5760008686838181106105b957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105ce9190611016565b6001600160a01b031663e91f3235336105e86001436112f5565b88888781811061060857634e487b7160e01b600052603260045260246000fd5b905060200281019061061a919061127a565b6040518563ffffffff1660e01b815260040161063994939291906111c9565b602060405180830381600087803b15801561065357600080fd5b505af1158015610667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b91906111b1565b905061069781846112dd565b92505080806106a59061130c565b91505061058f565b506004548110156107005760405162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f75676820766f746573000000000000000000000000000000006044820152606401610327565b336000908152600260205260409020600101541561073857336000908152600260205260409020610732908686610eb5565b506107ae565b6040518060400160405280868680806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250504260209384015250338152600282526040902082518051919261079f92849290910190610f30565b50602082015181600101559050505b60405142815233907ff1e092311eefceee7206049c87d17464c34a7b92b85779b0b835ddb292a42e70906020015b60405180910390a25050505050565b6000546001600160a01b031633146108455760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600260209081526040808320805482518185028101850190935280835291929091908301828280156108e957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108cb575b505050505090506000805b8251811015610ac75760035483516001600160a01b039091169063af7a060c9085908490811061093457634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161096791906001600160a01b0391909116815260200190565b60206040518083038186803b15801561097f57600080fd5b505afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190611179565b15610ab55760008382815181106109de57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663e91f323588600143610a0291906112f5565b898987818110610a2257634e487b7160e01b600052603260045260246000fd5b9050602002810190610a34919061127a565b6040518563ffffffff1660e01b8152600401610a5394939291906111c9565b602060405180830381600087803b158015610a6d57600080fd5b505af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa591906111b1565b9050610ab181846112dd565b9250505b80610abf8161130c565b9150506108f4565b506004548110610b195760405162461bcd60e51b815260206004820152600d60248201527f4e6f74206b69636b2d61626c65000000000000000000000000000000000000006044820152606401610327565b6001600160a01b038516600090815260026020526040812090610b3c8282610f9d565b60018201600090555050846001600160a01b03167f8684348ed72cd103be12fcb99e9c5917294a8092ccd4808d1cd7b19daf982991436040516107dc91815260200190565b6000546001600160a01b03163314610bdb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b6001600160a01b0316600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000546001600160a01b03163314610c745760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600455565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d675760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b610db0816001600160a01b0316600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6001600160a01b038116600090815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e1d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dff575b50505050509050919050565b600080546001600160a01b0386811691161415610e4a5750620186a0610ead565b6001600160a01b03851660009081526002602052604090206001015415801590610e9c57506005546001600160a01b0386166000908152600260205260409020600101544291610e99916112dd565b11155b15610ea957506001610ead565b5060005b949350505050565b828054828255906000526020600020908101928215610f20579160200282015b82811115610f205781547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03843516178255602090920191600190910190610ed5565b50610f2c929150610fb7565b5090565b828054828255906000526020600020908101928215610f20579160200282015b82811115610f2057825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190610f50565b5080546000825590600052602060002090810190610db091905b5b80821115610f2c5760008155600101610fb8565b60008083601f840112610fdd578182fd5b50813567ffffffffffffffff811115610ff4578182fd5b6020830191508360208260051b850101111561100f57600080fd5b9250929050565b600060208284031215611027578081fd5b81356110328161135b565b9392505050565b60008060006040848603121561104d578182fd5b83356110588161135b565b9250602084013567ffffffffffffffff811115611073578283fd5b61107f86828701610fcc565b9497909650939450505050565b600080600080606085870312156110a1578081fd5b84356110ac8161135b565b935060208501359250604085013567ffffffffffffffff808211156110cf578283fd5b818701915087601f8301126110e2578283fd5b8135818111156110f0578384fd5b886020828501011115611101578384fd5b95989497505060200194505050565b60008060008060408587031215611125578384fd5b843567ffffffffffffffff8082111561113c578586fd5b61114888838901610fcc565b90965094506020870135915080821115611160578384fd5b5061116d87828801610fcc565b95989497509550505050565b60006020828403121561118a578081fd5b81518015158114611032578182fd5b6000602082840312156111aa578081fd5b5035919050565b6000602082840312156111c2578081fd5b5051919050565b60006001600160a01b03861682528460208301526060604083015282606083015282846080840137818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b6020808252825182820181905260009190848201906040850190845b8181101561126e5783516001600160a01b031683529284019291840191600101611249565b50909695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112ae578283fd5b83018035915067ffffffffffffffff8211156112c8578283fd5b60200191503681900382131561100f57600080fd5b600082198211156112f0576112f0611345565b500190565b60008282101561130757611307611345565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561133e5761133e611345565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610db057600080fdfea26469706673582212206123420b651077d05d296bf60a53173cec396b8d9e74a89449d021e1dab6d0d764736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/History.ts b/packages/council-artifacts/src/History.ts new file mode 100644 index 00000000..6dc59cb3 --- /dev/null +++ b/packages/council-artifacts/src/History.ts @@ -0,0 +1,10 @@ +export const History = { + "_format": "hh-sol-artifact-1", + "contractName": "History", + "sourceName": "contracts/libraries/History.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001fb6f2f8568f31bef4171d65add537581e97701eb4a107914fe9eb6b123696a64736f6c63430008030033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001fb6f2f8568f31bef4171d65add537581e97701eb4a107914fe9eb6b123696a64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/ICoreVoting.ts b/packages/council-artifacts/src/ICoreVoting.ts new file mode 100644 index 00000000..62a28088 --- /dev/null +++ b/packages/council-artifacts/src/ICoreVoting.ts @@ -0,0 +1,30 @@ +export const ICoreVoting = { + "_format": "hh-sol-artifact-1", + "contractName": "ICoreVoting", + "sourceName": "contracts/interfaces/ICoreVoting.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "approvedVaults", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/IERC20.ts b/packages/council-artifacts/src/IERC20.ts new file mode 100644 index 00000000..d2c20087 --- /dev/null +++ b/packages/council-artifacts/src/IERC20.ts @@ -0,0 +1,194 @@ +export const IERC20 = { + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/IERC20Permit.ts b/packages/council-artifacts/src/IERC20Permit.ts new file mode 100644 index 00000000..1c845878 --- /dev/null +++ b/packages/council-artifacts/src/IERC20Permit.ts @@ -0,0 +1,86 @@ +export const IERC20Permit = { + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Permit", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "abi": [ + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/ILockingVault.ts b/packages/council-artifacts/src/ILockingVault.ts new file mode 100644 index 00000000..f3cb0ed1 --- /dev/null +++ b/packages/council-artifacts/src/ILockingVault.ts @@ -0,0 +1,73 @@ +export const ILockingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "ILockingVault", + "sourceName": "contracts/interfaces/ILockingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "newDelegate", + "type": "address" + } + ], + "name": "changeDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fundedAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "firstDelegation", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/IVotingVault.ts b/packages/council-artifacts/src/IVotingVault.ts new file mode 100644 index 00000000..be30ca6a --- /dev/null +++ b/packages/council-artifacts/src/IVotingVault.ts @@ -0,0 +1,40 @@ +export const IVotingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "IVotingVault", + "sourceName": "contracts/interfaces/IVotingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/LockingVault.ts b/packages/council-artifacts/src/LockingVault.ts new file mode 100644 index 00000000..004cccf5 --- /dev/null +++ b/packages/council-artifacts/src/LockingVault.ts @@ -0,0 +1,204 @@ +export const LockingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "LockingVault", + "sourceName": "contracts/vaults/LockingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_staleBlockLag", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDelegate", + "type": "address" + } + ], + "name": "changeDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fundedAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "firstDelegation", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b5060405161144d38038061144d83398101604081905261002f9161004a565b60609190911b6001600160601b03191660805260a052610082565b6000806040838503121561005c578182fd5b82516001600160a01b0381168114610072578283fd5b6020939093015192949293505050565b60805160601c60a05161138f6100be6000396000818160ba015261059d01526000818161012d015281816103300152610692015261138f6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063e91f32351161005b578063e91f323514610102578063f45346dc14610115578063fc0c546a14610128578063fc7e286d1461017457610088565b80632e1a7d4d1461008d5780639f973fd5146100a2578063c2c94b88146100b5578063e7d20283146100ef575b600080fd5b6100a061009b366004611150565b6101c0565b005b6100a06100b0366004611029565b6103c9565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100dc6100fd36600461104a565b610564565b6100dc6101103660046110ae565b610586565b6100a0610123366004611073565b6105d5565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b610187610182366004611029565b61090f565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100e6565b60006101ca610976565b336000908152602091909152604090208054909150829082906014906102179084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166112fd565b82546bffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550805473ffffffffffffffffffffffffffffffffffffffff1660006102616109bb565b9050600061026f8284610a0e565b90506102878361027f87846112e6565b849190610aaf565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e06102ea887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61122e565b60405190815260200160405180910390a36040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c19190611130565b505050505050565b60006103d3610976565b33600090815260209190915260408120805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083161783559193506bffffffffffffffffffffffff74010000000000000000000000000000000000000000820416929116906104586109bb565b905060006104668284610a0e565b90506104768361027f86846112e6565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e06104d9877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61122e565b60405190815260200160405180910390a360006104f68388610a0e565b905061050e8761050687846111ad565b859190610aaf565b60405185815273ffffffffffffffffffffffffffffffffffffffff88169033907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a350505050505050565b60008061056f6109bb565b905061057c818585610bee565b9150505b92915050565b6000806105916109bb565b90506105cb86866105c27f0000000000000000000000000000000000000000000000000000000000000000436112e6565b84929190610c5d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190611130565b50600061072e610976565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260209290925260409091208054909250168061080e575080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316178082558290849083906014906107db9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166111c5565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610877565b8154849083906014906108489084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166111c5565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b60006108816109bb565b9050600061088f8284610a0e565b90508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0886040516108f091815260200190565b60405180910390a36109068361027f88846111ad565b50505050505050565b600080600061091c610976565b73ffffffffffffffffffffffffffffffffffffffff9485166000908152602091909152604090205493841694740100000000000000000000000000000000000000009094046bffffffffffffffffffffffff169392505050565b60006109b66040518060400160405280600881526020017f6465706f73697473000000000000000000000000000000000000000000000000815250610ce1565b905090565b6040805180820190915260608152600060208201526109b66040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250610d5a565b600080610a1c846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1680610a6957600092505050610580565b6000610aa483610a7a6001856112e6565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f420000000000000000000000000000000000000000000000000000000000604482015260640161064e565b6000610b3e846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610ba657610ba286610a7a6001856112e6565b5090505b8143821415610bbd57610bba6001846112e6565b90505b8481600189010155438214610be157610be18785610bdc8660016111ad565b610d98565b5050505050505050505050565b600080610bfc856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690610c4f8488838686610dc1565b9a9950505050505050505050565b600080610c6b866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610cbf858a8a8787610dc1565b9150915083821115610c4f57610cd6848387610f9a565b610c4f858385610d98565b6000807f03a912cdb153207069d92d44a2357e3f0ce00f7ee84da3510f1c6851b4cac4ee905060008184604051602001610d1c929190611168565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6040805180820190915260608152600060208201526000610d7a83610fca565b6040805180820190915284815260208101919091529150505b919050565b808210610da457600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082610e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a656400000000000000000000000000000000000000604482015260640161064e565b85851115610e3857600080fd5b828410610e4457600080fd5b6000610e516001856112e6565b90508460005b828214610ef55760006002610e6c85856111ad565b610e779060016111ad565b610e8191906111f5565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610ec357929650919450610f909350505050565b8b821015610edf578a821015610ed7578293505b829450610eed565b610eea6001846112e6565b95505b505050610e57565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c757265000000000000000000000000000000000000604482015260640161064e565b9195509093505050505b9550959350505050565b81831115610fa757600080fd5b60018101835b83811015610fc357600082820155600101610fad565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610d1c929190611168565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d9357600080fd5b60006020828403121561103a578081fd5b61104382611005565b9392505050565b6000806040838503121561105c578081fd5b61106583611005565b946020939093013593505050565b600080600060608486031215611087578081fd5b61109084611005565b9250602084013591506110a560408501611005565b90509250925092565b600080600080606085870312156110c3578081fd5b6110cc85611005565b935060208501359250604085013567ffffffffffffffff808211156110ef578283fd5b818701915087601f830112611102578283fd5b813581811115611110578384fd5b886020828501011115611121578384fd5b95989497505060200194505050565b600060208284031215611141578081fd5b81518015158114611043578182fd5b600060208284031215611161578081fd5b5035919050565b60008382528251815b8181101561118d57602081860181015185830182015201611171565b8181111561119e5782602083860101525b50919091016020019392505050565b600082198211156111c0576111c061132a565b500190565b60006bffffffffffffffffffffffff8083168185168083038211156111ec576111ec61132a565b01949350505050565b600082611229577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184138284138583048511828216161561126d5761126d61132a565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156112a7576112a761132a565b8587129250878205871284841616156112c2576112c261132a565b878505871281841616156112d8576112d861132a565b505050929093029392505050565b6000828210156112f8576112f861132a565b500390565b60006bffffffffffffffffffffffff838116908316818110156113225761132261132a565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122031efbbc9dfc48d14a1cb376d2e16e00eb9e63ab249a99197bf8b7b3c6133c51064736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063e91f32351161005b578063e91f323514610102578063f45346dc14610115578063fc0c546a14610128578063fc7e286d1461017457610088565b80632e1a7d4d1461008d5780639f973fd5146100a2578063c2c94b88146100b5578063e7d20283146100ef575b600080fd5b6100a061009b366004611150565b6101c0565b005b6100a06100b0366004611029565b6103c9565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100dc6100fd36600461104a565b610564565b6100dc6101103660046110ae565b610586565b6100a0610123366004611073565b6105d5565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b610187610182366004611029565b61090f565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100e6565b60006101ca610976565b336000908152602091909152604090208054909150829082906014906102179084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166112fd565b82546bffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550805473ffffffffffffffffffffffffffffffffffffffff1660006102616109bb565b9050600061026f8284610a0e565b90506102878361027f87846112e6565b849190610aaf565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e06102ea887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61122e565b60405190815260200160405180910390a36040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c19190611130565b505050505050565b60006103d3610976565b33600090815260209190915260408120805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083161783559193506bffffffffffffffffffffffff74010000000000000000000000000000000000000000820416929116906104586109bb565b905060006104668284610a0e565b90506104768361027f86846112e6565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e06104d9877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61122e565b60405190815260200160405180910390a360006104f68388610a0e565b905061050e8761050687846111ad565b859190610aaf565b60405185815273ffffffffffffffffffffffffffffffffffffffff88169033907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a350505050505050565b60008061056f6109bb565b905061057c818585610bee565b9150505b92915050565b6000806105916109bb565b90506105cb86866105c27f0000000000000000000000000000000000000000000000000000000000000000436112e6565b84929190610c5d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190611130565b50600061072e610976565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260209290925260409091208054909250168061080e575080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316178082558290849083906014906107db9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166111c5565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610877565b8154849083906014906108489084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166111c5565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b60006108816109bb565b9050600061088f8284610a0e565b90508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0886040516108f091815260200190565b60405180910390a36109068361027f88846111ad565b50505050505050565b600080600061091c610976565b73ffffffffffffffffffffffffffffffffffffffff9485166000908152602091909152604090205493841694740100000000000000000000000000000000000000009094046bffffffffffffffffffffffff169392505050565b60006109b66040518060400160405280600881526020017f6465706f73697473000000000000000000000000000000000000000000000000815250610ce1565b905090565b6040805180820190915260608152600060208201526109b66040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250610d5a565b600080610a1c846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1680610a6957600092505050610580565b6000610aa483610a7a6001856112e6565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f420000000000000000000000000000000000000000000000000000000000604482015260640161064e565b6000610b3e846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610ba657610ba286610a7a6001856112e6565b5090505b8143821415610bbd57610bba6001846112e6565b90505b8481600189010155438214610be157610be18785610bdc8660016111ad565b610d98565b5050505050505050505050565b600080610bfc856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690610c4f8488838686610dc1565b9a9950505050505050505050565b600080610c6b866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610cbf858a8a8787610dc1565b9150915083821115610c4f57610cd6848387610f9a565b610c4f858385610d98565b6000807f03a912cdb153207069d92d44a2357e3f0ce00f7ee84da3510f1c6851b4cac4ee905060008184604051602001610d1c929190611168565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6040805180820190915260608152600060208201526000610d7a83610fca565b6040805180820190915284815260208101919091529150505b919050565b808210610da457600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082610e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a656400000000000000000000000000000000000000604482015260640161064e565b85851115610e3857600080fd5b828410610e4457600080fd5b6000610e516001856112e6565b90508460005b828214610ef55760006002610e6c85856111ad565b610e779060016111ad565b610e8191906111f5565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610ec357929650919450610f909350505050565b8b821015610edf578a821015610ed7578293505b829450610eed565b610eea6001846112e6565b95505b505050610e57565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c757265000000000000000000000000000000000000604482015260640161064e565b9195509093505050505b9550959350505050565b81831115610fa757600080fd5b60018101835b83811015610fc357600082820155600101610fad565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610d1c929190611168565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d9357600080fd5b60006020828403121561103a578081fd5b61104382611005565b9392505050565b6000806040838503121561105c578081fd5b61106583611005565b946020939093013593505050565b600080600060608486031215611087578081fd5b61109084611005565b9250602084013591506110a560408501611005565b90509250925092565b600080600080606085870312156110c3578081fd5b6110cc85611005565b935060208501359250604085013567ffffffffffffffff808211156110ef578283fd5b818701915087601f830112611102578283fd5b813581811115611110578384fd5b886020828501011115611121578384fd5b95989497505060200194505050565b600060208284031215611141578081fd5b81518015158114611043578182fd5b600060208284031215611161578081fd5b5035919050565b60008382528251815b8181101561118d57602081860181015185830182015201611171565b8181111561119e5782602083860101525b50919091016020019392505050565b600082198211156111c0576111c061132a565b500190565b60006bffffffffffffffffffffffff8083168185168083038211156111ec576111ec61132a565b01949350505050565b600082611229577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184138284138583048511828216161561126d5761126d61132a565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156112a7576112a761132a565b8587129250878205871284841616156112c2576112c261132a565b878505871281841616156112d8576112d861132a565b505050929093029392505050565b6000828210156112f8576112f861132a565b500390565b60006bffffffffffffffffffffffff838116908316818110156113225761132261132a565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122031efbbc9dfc48d14a1cb376d2e16e00eb9e63ab249a99197bf8b7b3c6133c51064736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MerkleProof.ts b/packages/council-artifacts/src/MerkleProof.ts new file mode 100644 index 00000000..f9aa7173 --- /dev/null +++ b/packages/council-artifacts/src/MerkleProof.ts @@ -0,0 +1,10 @@ +export const MerkleProof = { + "_format": "hh-sol-artifact-1", + "contractName": "MerkleProof", + "sourceName": "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220000c4c9f582ee36cc025ba00a8967cac3050e16bed82e648b699ccded709cecf64736f6c63430008030033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220000c4c9f582ee36cc025ba00a8967cac3050e16bed82e648b699ccded709cecf64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MerkleRewards.ts b/packages/council-artifacts/src/MerkleRewards.ts new file mode 100644 index 00000000..9c245517 --- /dev/null +++ b/packages/council-artifacts/src/MerkleRewards.ts @@ -0,0 +1,151 @@ +export const MerkleRewards = { + "_format": "hh-sol-artifact-1", + "contractName": "MerkleRewards", + "sourceName": "contracts/libraries/MerkleRewards.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_rewardsRoot", + "type": "bytes32" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "contract ILockingVault", + "name": "_lockingVault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claimAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockingVault", + "outputs": [ + { + "internalType": "contract ILockingVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516109b83803806109b883398101604081905261002f91610119565b6000839055606082901b6001600160601b031916608052600280546001600160a01b0319166001600160a01b0383811691821790925560405163095ea7b360e01b81526004810191909152600019602482015284918491849183169063095ea7b390604401602060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e691906100f2565b50505050505050610173565b600060208284031215610103578081fd5b81518015158114610112578182fd5b9392505050565b60008060006060848603121561012d578182fd5b83519250602084015161013f8161015b565b60408501519092506101508161015b565b809150509250925092565b6001600160a01b038116811461017057600080fd5b50565b60805160601c6108206101986000396000818161012501526101d101526108206000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c884ef8311610050578063c884ef83146100bb578063d2a04345146100db578063fc0c546a1461012057610072565b806309ed28f1146100775780630a33e8c21461008c578063217863b71461009f575b600080fd5b61008a610085366004610704565b610147565b005b61008a61009a36600461068f565b610255565b6100a860005481565b6040519081526020015b60405180910390f35b6100a86100c9366004610655565b60016020526000908152604090205481565b6002546100fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b2565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b61018585858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103b192505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561021557600080fd5b505af1158015610229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024d919061066f565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b61031586858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103b192505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b15801561039157600080fd5b505af11580156103a5573d6000803e3d6000fd5b50505050505050505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012090506104118260005483610526565b610477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016102ce565b33600090815260016020526040902054839061049490869061076a565b11156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f436c61696d656420746f6f206d7563680000000000000000000000000000000060448201526064016102ce565b336000908152600160205260408120805486929061051b90849061076a565b909155505050505050565b600082610533858461053c565b14949350505050565b600081815b84518110156105a85761059482868381518110610587577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105b0565b9150806105a081610782565b915050610541565b509392505050565b60008183106105cc5760008281526020849052604090206105db565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060657600080fd5b919050565b60008083601f84011261061c578182fd5b50813567ffffffffffffffff811115610633578182fd5b6020830191508360208260051b850101111561064e57600080fd5b9250929050565b600060208284031215610666578081fd5b6105db826105e2565b600060208284031215610680578081fd5b815180151581146105db578182fd5b60008060008060008060a087890312156106a7578182fd5b863595506106b7602088016105e2565b945060408701359350606087013567ffffffffffffffff8111156106d9578283fd5b6106e589828a0161060b565b90945092506106f89050608088016105e2565b90509295509295509295565b60008060008060006080868803121561071b578081fd5b8535945060208601359350604086013567ffffffffffffffff81111561073f578182fd5b61074b8882890161060b565b909450925061075e9050606087016105e2565b90509295509295909350565b6000821982111561077d5761077d6107bb565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156107b4576107b46107bb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220bb77d301e6477856d11f3a368c9df2dcd7a18f2861eced58c44bbd9f909cd20a64736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063c884ef8311610050578063c884ef83146100bb578063d2a04345146100db578063fc0c546a1461012057610072565b806309ed28f1146100775780630a33e8c21461008c578063217863b71461009f575b600080fd5b61008a610085366004610704565b610147565b005b61008a61009a36600461068f565b610255565b6100a860005481565b6040519081526020015b60405180910390f35b6100a86100c9366004610655565b60016020526000908152604090205481565b6002546100fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b2565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b61018585858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103b192505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561021557600080fd5b505af1158015610229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024d919061066f565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b61031586858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103b192505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b15801561039157600080fd5b505af11580156103a5573d6000803e3d6000fd5b50505050505050505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012090506104118260005483610526565b610477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016102ce565b33600090815260016020526040902054839061049490869061076a565b11156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f436c61696d656420746f6f206d7563680000000000000000000000000000000060448201526064016102ce565b336000908152600160205260408120805486929061051b90849061076a565b909155505050505050565b600082610533858461053c565b14949350505050565b600081815b84518110156105a85761059482868381518110610587577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105b0565b9150806105a081610782565b915050610541565b509392505050565b60008183106105cc5760008281526020849052604090206105db565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060657600080fd5b919050565b60008083601f84011261061c578182fd5b50813567ffffffffffffffff811115610633578182fd5b6020830191508360208260051b850101111561064e57600080fd5b9250929050565b600060208284031215610666578081fd5b6105db826105e2565b600060208284031215610680578081fd5b815180151581146105db578182fd5b60008060008060008060a087890312156106a7578182fd5b863595506106b7602088016105e2565b945060408701359350606087013567ffffffffffffffff8111156106d9578283fd5b6106e589828a0161060b565b90945092506106f89050608088016105e2565b90509295509295509295565b60008060008060006080868803121561071b578081fd5b8535945060208601359350604086013567ffffffffffffffff81111561073f578182fd5b61074b8882890161060b565b909450925061075e9050606087016105e2565b90509295509295909350565b6000821982111561077d5761077d6107bb565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156107b4576107b46107bb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220bb77d301e6477856d11f3a368c9df2dcd7a18f2861eced58c44bbd9f909cd20a64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockCoreVoting.ts b/packages/council-artifacts/src/MockCoreVoting.ts new file mode 100644 index 00000000..e6e05b8c --- /dev/null +++ b/packages/council-artifacts/src/MockCoreVoting.ts @@ -0,0 +1,48 @@ +export const MockCoreVoting = { + "_format": "hh-sol-artifact-1", + "contractName": "MockCoreVoting", + "sourceName": "contracts/mocks/MockCoreVoting.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "approvedVaults", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "internalType": "bool", + "name": "what", + "type": "bool" + } + ], + "name": "setVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610192806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063627f66c61461003b578063af7a060c146100a1575b600080fd5b61009f610049366004610122565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100c46100af366004610101565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b803573ffffffffffffffffffffffffffffffffffffffff811681146100fc57600080fd5b919050565b600060208284031215610112578081fd5b61011b826100d8565b9392505050565b60008060408385031215610134578081fd5b61013d836100d8565b915060208301358015158114610151578182fd5b80915050925092905056fea264697066735822122068a8e308aedfe2b4e7bf6e998de1ff9dd5b4271f63e2c371d001a6c21ccd48e164736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063627f66c61461003b578063af7a060c146100a1575b600080fd5b61009f610049366004610122565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100c46100af366004610101565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b803573ffffffffffffffffffffffffffffffffffffffff811681146100fc57600080fd5b919050565b600060208284031215610112578081fd5b61011b826100d8565b9392505050565b60008060408385031215610134578081fd5b61013d836100d8565b915060208301358015158114610151578182fd5b80915050925092905056fea264697066735822122068a8e308aedfe2b4e7bf6e998de1ff9dd5b4271f63e2c371d001a6c21ccd48e164736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockDoubleSpender.ts b/packages/council-artifacts/src/MockDoubleSpender.ts new file mode 100644 index 00000000..427825c9 --- /dev/null +++ b/packages/council-artifacts/src/MockDoubleSpender.ts @@ -0,0 +1,65 @@ +export const MockDoubleSpender = { + "_format": "hh-sol-artifact-1", + "contractName": "MockDoubleSpender", + "sourceName": "contracts/mocks/MockDoubleSpender.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract Spender", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "doubleSpendLarge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Spender", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "doubleSpendMedium", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Spender", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "doubleSpendSmall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506103c9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632b3fadc6146100465780638ae031951461005b57806395e18a691461006e575b600080fd5b610059610054366004610350565b610081565b005b610059610069366004610350565b610192565b61005961007c366004610350565b610271565b6040517fce0891d50000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff83169063ce0891d590604401600060405180830381600087803b1580156100ef57600080fd5b505af1158015610103573d6000803e3d6000fd5b50506040517fce0891d50000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff8516925063ce0891d591506044015b600060405180830381600087803b15801561017657600080fd5b505af115801561018a573d6000803e3d6000fd5b505050505050565b6040517f0d9460a00000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff831690630d9460a090604401600060405180830381600087803b15801561020057600080fd5b505af1158015610214573d6000803e3d6000fd5b50506040517f0d9460a00000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff85169250630d9460a0915060440161015c565b6040517f03e41d200000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff8316906303e41d2090604401600060405180830381600087803b1580156102df57600080fd5b505af11580156102f3573d6000803e3d6000fd5b50506040517f03e41d200000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff851692506303e41d20915060440161015c565b60008060408385031215610362578182fd5b823573ffffffffffffffffffffffffffffffffffffffff81168114610385578283fd5b94602093909301359350505056fea2646970667358221220f5d4d33faf67c8e1b7360b93e8bf3ed433c0a4bd112cf8938de3eeb625ca683564736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632b3fadc6146100465780638ae031951461005b57806395e18a691461006e575b600080fd5b610059610054366004610350565b610081565b005b610059610069366004610350565b610192565b61005961007c366004610350565b610271565b6040517fce0891d50000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff83169063ce0891d590604401600060405180830381600087803b1580156100ef57600080fd5b505af1158015610103573d6000803e3d6000fd5b50506040517fce0891d50000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff8516925063ce0891d591506044015b600060405180830381600087803b15801561017657600080fd5b505af115801561018a573d6000803e3d6000fd5b505050505050565b6040517f0d9460a00000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff831690630d9460a090604401600060405180830381600087803b15801561020057600080fd5b505af1158015610214573d6000803e3d6000fd5b50506040517f0d9460a00000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff85169250630d9460a0915060440161015c565b6040517f03e41d200000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff8316906303e41d2090604401600060405180830381600087803b1580156102df57600080fd5b505af11580156102f3573d6000803e3d6000fd5b50506040517f03e41d200000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff851692506303e41d20915060440161015c565b60008060408385031215610362578182fd5b823573ffffffffffffffffffffffffffffffffffffffff81168114610385578283fd5b94602093909301359350505056fea2646970667358221220f5d4d33faf67c8e1b7360b93e8bf3ed433c0a4bd112cf8938de3eeb625ca683564736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockERC20.ts b/packages/council-artifacts/src/MockERC20.ts new file mode 100644 index 00000000..b1e34ace --- /dev/null +++ b/packages/council-artifacts/src/MockERC20.ts @@ -0,0 +1,509 @@ +export const MockERC20 = { + "_format": "hh-sol-artifact-1", + "contractName": "MockERC20", + "sourceName": "contracts/mocks/MockERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "source", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620017e2380380620017e2833981016040819052620000349162000353565b8282828282816000908051906020019062000051929190620001fa565b50805162000067906001906020840190620001fa565b506002805460ff1916601217905560036020526000197f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff81905530600090815260409020557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000de9190620003dc565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f1981840301815291905280516020909101206006555050600780546001600160a01b031916331790556200017a8162000186565b505050505050620004d2565b6007546001600160a01b03163314620001d85760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b82805462000208906200047f565b90600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b600082601f830112620002b1578081fd5b81516001600160401b0380821115620002ce57620002ce620004bc565b604051601f8301601f19908116603f01168101908282118183101715620002f957620002f9620004bc565b8160405283815260209250868385880101111562000315578485fd5b8491505b8382101562000338578582018301518183018401529082019062000319565b838211156200034957848385830101525b9695505050505050565b60008060006060848603121562000368578283fd5b83516001600160401b03808211156200037f578485fd5b6200038d87838801620002a0565b94506020860151915080821115620003a3578384fd5b50620003b286828701620002a0565b604086015190935090506001600160a01b0381168114620003d1578182fd5b809150509250925092565b600080835482600182811c915080831680620003f957607f831692505b60208084108214156200041a57634e487b7160e01b87526022600452602487fd5b818015620004315760018114620004435762000471565b60ff1986168952848901965062000471565b60008a815260209020885b86811015620004695781548b8201529085019083016200044e565b505084890196505b509498975050505050505050565b600181811c908216806200049457607f821691505b60208210811415620004b657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61130080620004e26000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80637ecebe00116100e3578063b91816111161008c578063dd62ed3e11610066578063dd62ed3e146103ca578063e30443bc146103f5578063fe9fbb801461042c5761018d565b8063b91816111461034d578063d505accf14610370578063da46098c146103835761018d565b80639dc29fac116100bd5780639dc29fac14610314578063a9059cbb14610327578063b6a5d7de1461033a5761018d565b80637ecebe00146102a75780638da5cb5b146102c757806395d89b411461030c5761018d565b806327c97fa5116101455780633644e5151161011f5780633644e5151461026b57806340c10f191461027457806370a08231146102875761018d565b806327c97fa51461021257806330adf81f14610225578063313ce5671461024c5761018d565b806313af40351161017657806313af4035146101d357806318160ddd146101e857806323b872dd146101ff5761018d565b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61043f565b6040516101a7919061116e565b60405180910390f35b6101c36101be366004611145565b6104cd565b60405190151581526020016101a7565b6101e66101e136600461104d565b610546565b005b6101f160095481565b6040519081526020016101a7565b6101c361020d366004611099565b6105f9565b6101e661022036600461104d565b61082d565b6101f17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6002546102599060ff1681565b60405160ff90911681526020016101a7565b6101f160065481565b6101e6610282366004611145565b6108e0565b6101f161029536600461104d565b60036020526000908152604090205481565b6101f16102b536600461104d565b60056020526000908152604090205481565b6007546102e79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b61019a610955565b6101e6610322366004611145565b610962565b6101c3610335366004611145565b6109d3565b6101e661034836600461104d565b6109e7565b6101c361035b36600461104d565b60086020526000908152604090205460ff1681565b6101e661037e3660046110d4565b610aa4565b6101e6610391366004611099565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209490951682529290925291902055565b6101f16103d8366004611067565b600460209081526000928352604080842090915290825290205481565b6101e6610403366004611145565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b6101c361043a36600461104d565b610e43565b6000805461044c9061120e565b80601f01602080910402602001604051908101604052809291908181526020018280546104789061120e565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105359086815260200190565b60405180910390a350600192915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146105b25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548281101561066f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742d62616c616e6365000000000060448201526064016105a9565b73ffffffffffffffffffffffffffffffffffffffff851633146107725773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077057838110156107345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e742d616c6c6f77616e636500000060448201526064016105a9565b61073e84826111f7565b73ffffffffffffffffffffffffffffffffffffffff871660009081526004602090815260408083203384529091529020555b505b61077c83826111f7565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526003602052604080822093909355908616815220546107b99084906111df565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061081a9087815260200190565b60405180910390a3506001949350505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146108945760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b73ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109475760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b6109518282610e72565b5050565b6001805461044c9061120e565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109c95760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b6109518282610f35565b60006109e03384846105f9565b9392505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a4e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b610aa18173ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b60065473ffffffffffffffffffffffffffffffffffffffff8881166000818152600560209081526040918290205482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981840152808401859052948c166060860152608085018b905260a085015260c08085018a90528251808603909101815260e0850183528051908201207f1901000000000000000000000000000000000000000000000000000000000000610100860152610102850195909552610122808501959095528151808503909501855261014290930190528251929091019190912090610bd45760405162461bcd60e51b815260206004820152601860248201527f45524332303a20696e76616c69642d616464726573732d30000000000000000060448201526064016105a9565b60408051600081526020810180835283905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610cab5760405162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c69642d7065726d6974000000000000000000000060448201526064016105a9565b841580610cb85750844211155b610d045760405162461bcd60e51b815260206004820152601560248201527f45524332303a207065726d69742d65787069726564000000000000000000000060448201526064016105a9565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610d9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016105a9565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600560205260408120805491610dcb83611262565b909155505073ffffffffffffffffffffffffffffffffffffffff8881166000818152600460209081526040808320948c16808452948252918290208a905590518981527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090205460ff165b919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610ea39082906111df565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081209190915560098054839290610ede9084906111df565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205481811015610f8e5773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812055610fbf565b610f9882826111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260409020555b8160096000828254610fd191906111f7565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e6d57600080fd5b60006020828403121561105e578081fd5b6109e082611029565b60008060408385031215611079578081fd5b61108283611029565b915061109060208401611029565b90509250929050565b6000806000606084860312156110ad578081fd5b6110b684611029565b92506110c460208501611029565b9150604084013590509250925092565b600080600080600080600060e0888a0312156110ee578283fd5b6110f788611029565b965061110560208901611029565b95506040880135945060608801359350608088013560ff81168114611128578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611157578182fd5b61116083611029565b946020939093013593505050565b6000602080835283518082850152825b8181101561119a5785810183015185820160400152820161117e565b818111156111ab5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156111f2576111f261129b565b500190565b6000828210156112095761120961129b565b500390565b600181811c9082168061122257607f821691505b6020821081141561125c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112945761129461129b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220ecf59043643fb44384a65014f94b8fa34a0f2ec0e6ca6f4c07e46ac36aa3181564736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80637ecebe00116100e3578063b91816111161008c578063dd62ed3e11610066578063dd62ed3e146103ca578063e30443bc146103f5578063fe9fbb801461042c5761018d565b8063b91816111461034d578063d505accf14610370578063da46098c146103835761018d565b80639dc29fac116100bd5780639dc29fac14610314578063a9059cbb14610327578063b6a5d7de1461033a5761018d565b80637ecebe00146102a75780638da5cb5b146102c757806395d89b411461030c5761018d565b806327c97fa5116101455780633644e5151161011f5780633644e5151461026b57806340c10f191461027457806370a08231146102875761018d565b806327c97fa51461021257806330adf81f14610225578063313ce5671461024c5761018d565b806313af40351161017657806313af4035146101d357806318160ddd146101e857806323b872dd146101ff5761018d565b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61043f565b6040516101a7919061116e565b60405180910390f35b6101c36101be366004611145565b6104cd565b60405190151581526020016101a7565b6101e66101e136600461104d565b610546565b005b6101f160095481565b6040519081526020016101a7565b6101c361020d366004611099565b6105f9565b6101e661022036600461104d565b61082d565b6101f17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6002546102599060ff1681565b60405160ff90911681526020016101a7565b6101f160065481565b6101e6610282366004611145565b6108e0565b6101f161029536600461104d565b60036020526000908152604090205481565b6101f16102b536600461104d565b60056020526000908152604090205481565b6007546102e79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b61019a610955565b6101e6610322366004611145565b610962565b6101c3610335366004611145565b6109d3565b6101e661034836600461104d565b6109e7565b6101c361035b36600461104d565b60086020526000908152604090205460ff1681565b6101e661037e3660046110d4565b610aa4565b6101e6610391366004611099565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209490951682529290925291902055565b6101f16103d8366004611067565b600460209081526000928352604080842090915290825290205481565b6101e6610403366004611145565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b6101c361043a36600461104d565b610e43565b6000805461044c9061120e565b80601f01602080910402602001604051908101604052809291908181526020018280546104789061120e565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105359086815260200190565b60405180910390a350600192915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146105b25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548281101561066f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742d62616c616e6365000000000060448201526064016105a9565b73ffffffffffffffffffffffffffffffffffffffff851633146107725773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077057838110156107345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e742d616c6c6f77616e636500000060448201526064016105a9565b61073e84826111f7565b73ffffffffffffffffffffffffffffffffffffffff871660009081526004602090815260408083203384529091529020555b505b61077c83826111f7565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526003602052604080822093909355908616815220546107b99084906111df565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061081a9087815260200190565b60405180910390a3506001949350505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146108945760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b73ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109475760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b6109518282610e72565b5050565b6001805461044c9061120e565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109c95760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b6109518282610f35565b60006109e03384846105f9565b9392505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a4e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b610aa18173ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b60065473ffffffffffffffffffffffffffffffffffffffff8881166000818152600560209081526040918290205482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981840152808401859052948c166060860152608085018b905260a085015260c08085018a90528251808603909101815260e0850183528051908201207f1901000000000000000000000000000000000000000000000000000000000000610100860152610102850195909552610122808501959095528151808503909501855261014290930190528251929091019190912090610bd45760405162461bcd60e51b815260206004820152601860248201527f45524332303a20696e76616c69642d616464726573732d30000000000000000060448201526064016105a9565b60408051600081526020810180835283905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610cab5760405162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c69642d7065726d6974000000000000000000000060448201526064016105a9565b841580610cb85750844211155b610d045760405162461bcd60e51b815260206004820152601560248201527f45524332303a207065726d69742d65787069726564000000000000000000000060448201526064016105a9565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610d9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016105a9565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600560205260408120805491610dcb83611262565b909155505073ffffffffffffffffffffffffffffffffffffffff8881166000818152600460209081526040808320948c16808452948252918290208a905590518981527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090205460ff165b919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610ea39082906111df565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081209190915560098054839290610ede9084906111df565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205481811015610f8e5773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812055610fbf565b610f9882826111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260409020555b8160096000828254610fd191906111f7565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e6d57600080fd5b60006020828403121561105e578081fd5b6109e082611029565b60008060408385031215611079578081fd5b61108283611029565b915061109060208401611029565b90509250929050565b6000806000606084860312156110ad578081fd5b6110b684611029565b92506110c460208501611029565b9150604084013590509250925092565b600080600080600080600060e0888a0312156110ee578283fd5b6110f788611029565b965061110560208901611029565b95506040880135945060608801359350608088013560ff81168114611128578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611157578182fd5b61116083611029565b946020939093013593505050565b6000602080835283518082850152825b8181101561119a5785810183015185820160400152820161117e565b818111156111ab5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156111f2576111f261129b565b500190565b6000828210156112095761120961129b565b500390565b600181811c9082168061122257607f821691505b6020821081141561125c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112945761129461129b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220ecf59043643fb44384a65014f94b8fa34a0f2ec0e6ca6f4c07e46ac36aa3181564736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockHistoryTracker.ts b/packages/council-artifacts/src/MockHistoryTracker.ts new file mode 100644 index 00000000..31247668 --- /dev/null +++ b/packages/council-artifacts/src/MockHistoryTracker.ts @@ -0,0 +1,153 @@ +export const MockHistoryTracker = { + "_format": "hh-sol-artifact-1", + "contractName": "MockHistoryTracker", + "sourceName": "contracts/mocks/MockHistoryTracker.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + } + ], + "name": "clear", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "which", + "type": "uint256" + } + ], + "name": "find", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "which", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stale", + "type": "uint256" + } + ], + "name": "findAndClear", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "loadBounds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "loadTop", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "toBePushed", + "type": "uint256[]" + } + ], + "name": "multiPush", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "end", + "type": "uint256" + } + ], + "name": "peekArrayData", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "name": "push", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610fe3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063959ac4841161005b578063959ac4841461010457806395d3c7a114610119578063c0fe1af814610121578063c425f7da1461013457610088565b806335878cf71461008d5780633c795d29146100b35780633e530e5b146100d05780636dc925fa146100e3575b600080fd5b6100a061009b366004610e0f565b610147565b6040519081526020015b60405180910390f35b6100bb6101b4565b604080519283526020830191909152016100aa565b6100a06100de366004610df7565b61024d565b6100f66100f1366004610e0f565b6102b6565b6040516100aa929190610eaf565b610117610112366004610df7565b61050d565b005b6100a0610572565b61011761012f366004610df7565b6105d9565b610117610142366004610d87565b61070a565b6000806101886040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506101aa8173829bd824b016326a401d083b33d092293333a8308686610810565b9150505b92915050565b60008060006101f76040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610206826020015190565b73829bd824b016326a401d083b33d092293333a83060009081526020919091526040902054608081901c956fffffffffffffffffffffffffffffffff909116945092505050565b60008061028e6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506102af8173829bd824b016326a401d083b33d092293333a830856108a2565b9392505050565b60608060006102f96040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610308826020015190565b73829bd824b016326a401d083b33d092293333a83060009081526020919091526040812091506103388787610f2e565b67ffffffffffffffff811115610377577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156103a0578160200160208202803683370190505b50905060006103af8888610f2e565b67ffffffffffffffff8111156103ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000885b888110156104fe5760018582010154845160c082901c9177ffffffffffffffffffffffffffffffffffffffffffffffff1690829087908690811061048b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050808585815181106104d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020908102919091010152836104e681610f45565b945050505080806104f690610f45565b91505061041e565b50919890975095505050505050565b600061054d6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b905061056e8173829bd824b016326a401d083b33d092293333a83084610903565b5050565b6000806105b36040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506105d38173829bd824b016326a401d083b33d092293333a830610a6c565b91505090565b60006106196040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610628826020015190565b73829bd824b016326a401d083b33d092293333a8306000908152602091909152604090208054909150608081901c906fffffffffffffffffffffffffffffffff168185111561069c5761067c828685610ae3565b6fffffffffffffffffffffffffffffffff8116608086901b178355610703565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f436c656172206f7574206f6620626f756e64730000000000000000000000000060448201526064015b60405180910390fd5b5050505050565b600061074a6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b905060005b828110156107d1576107bf73829bd824b016326a401d083b33d092293333a8308585848181106107a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135846109039092919063ffffffff16565b806107c981610f45565b91505061074f565b50505050565b60408051808201909152606081526000602082015260006107f783610b1c565b6040805180820190915293845260208401525090919050565b60008061081e866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610872858a8a8787610b95565b915091508382111561089457610889848387610d6e565b610894858385610d7b565b9a9950505050505050505050565b6000806108b0856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff909116906108948488838686610b95565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f42000000000000000000000000000000000000000000000000000000000060448201526064016106fa565b6000610992846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610a2457610a20866109f6600185610f2e565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b5090505b8143821415610a3b57610a38600184610f2e565b90505b8481600189010155438214610a5f57610a5f8785610a5a866001610edd565b610d7b565b5050505050505050505050565b600080610a7a846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1680610ac7576000925050506101ae565b6000610ad8836109f6600185610f2e565b979650505050505050565b60018101835b8381101561070357600082820155600101610ae9565b6fffffffffffffffffffffffffffffffff1660809190911b179055565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610b57929190610e6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b60008082610bff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a65640000000000000000000000000000000000000060448201526064016106fa565b85851115610c0c57600080fd5b828410610c1857600080fd5b6000610c25600185610f2e565b90508460005b828214610cc95760006002610c408585610edd565b610c4b906001610edd565b610c559190610ef5565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610c9757929650919450610d649350505050565b8b821015610cb3578a821015610cab578293505b829450610cc1565b610cbe600184610f2e565b95505b505050610c2b565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c75726500000000000000000000000000000000000060448201526064016106fa565b9195509093505050505b9550959350505050565b81831115610ae357600080fd5b808210610aff57600080fd5b60008060208385031215610d99578182fd5b823567ffffffffffffffff80821115610db0578384fd5b818501915085601f830112610dc3578384fd5b813581811115610dd1578485fd5b8660208260051b8501011115610de5578485fd5b60209290920196919550909350505050565b600060208284031215610e08578081fd5b5035919050565b60008060408385031215610e21578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b83811015610e5f57815187529582019590820190600101610e43565b509495945050505050565b60008382528251815b81811015610e8f57602081860181015185830182015201610e73565b81811115610ea05782602083860101525b50919091016020019392505050565b600060408252610ec26040830185610e30565b8281036020840152610ed48185610e30565b95945050505050565b60008219821115610ef057610ef0610f7e565b500190565b600082610f29577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b600082821015610f4057610f40610f7e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f7757610f77610f7e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212209bceaf5c0128a6fec3ab5a5045fab2c4579ecd7fe44eeb1d6001115ab637dc9964736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063959ac4841161005b578063959ac4841461010457806395d3c7a114610119578063c0fe1af814610121578063c425f7da1461013457610088565b806335878cf71461008d5780633c795d29146100b35780633e530e5b146100d05780636dc925fa146100e3575b600080fd5b6100a061009b366004610e0f565b610147565b6040519081526020015b60405180910390f35b6100bb6101b4565b604080519283526020830191909152016100aa565b6100a06100de366004610df7565b61024d565b6100f66100f1366004610e0f565b6102b6565b6040516100aa929190610eaf565b610117610112366004610df7565b61050d565b005b6100a0610572565b61011761012f366004610df7565b6105d9565b610117610142366004610d87565b61070a565b6000806101886040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506101aa8173829bd824b016326a401d083b33d092293333a8308686610810565b9150505b92915050565b60008060006101f76040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610206826020015190565b73829bd824b016326a401d083b33d092293333a83060009081526020919091526040902054608081901c956fffffffffffffffffffffffffffffffff909116945092505050565b60008061028e6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506102af8173829bd824b016326a401d083b33d092293333a830856108a2565b9392505050565b60608060006102f96040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610308826020015190565b73829bd824b016326a401d083b33d092293333a83060009081526020919091526040812091506103388787610f2e565b67ffffffffffffffff811115610377577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156103a0578160200160208202803683370190505b50905060006103af8888610f2e565b67ffffffffffffffff8111156103ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000885b888110156104fe5760018582010154845160c082901c9177ffffffffffffffffffffffffffffffffffffffffffffffff1690829087908690811061048b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050808585815181106104d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020908102919091010152836104e681610f45565b945050505080806104f690610f45565b91505061041e565b50919890975095505050505050565b600061054d6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b905061056e8173829bd824b016326a401d083b33d092293333a83084610903565b5050565b6000806105b36040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506105d38173829bd824b016326a401d083b33d092293333a830610a6c565b91505090565b60006106196040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610628826020015190565b73829bd824b016326a401d083b33d092293333a8306000908152602091909152604090208054909150608081901c906fffffffffffffffffffffffffffffffff168185111561069c5761067c828685610ae3565b6fffffffffffffffffffffffffffffffff8116608086901b178355610703565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f436c656172206f7574206f6620626f756e64730000000000000000000000000060448201526064015b60405180910390fd5b5050505050565b600061074a6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b905060005b828110156107d1576107bf73829bd824b016326a401d083b33d092293333a8308585848181106107a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135846109039092919063ffffffff16565b806107c981610f45565b91505061074f565b50505050565b60408051808201909152606081526000602082015260006107f783610b1c565b6040805180820190915293845260208401525090919050565b60008061081e866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610872858a8a8787610b95565b915091508382111561089457610889848387610d6e565b610894858385610d7b565b9a9950505050505050505050565b6000806108b0856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff909116906108948488838686610b95565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f42000000000000000000000000000000000000000000000000000000000060448201526064016106fa565b6000610992846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610a2457610a20866109f6600185610f2e565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b5090505b8143821415610a3b57610a38600184610f2e565b90505b8481600189010155438214610a5f57610a5f8785610a5a866001610edd565b610d7b565b5050505050505050505050565b600080610a7a846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1680610ac7576000925050506101ae565b6000610ad8836109f6600185610f2e565b979650505050505050565b60018101835b8381101561070357600082820155600101610ae9565b6fffffffffffffffffffffffffffffffff1660809190911b179055565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610b57929190610e6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b60008082610bff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a65640000000000000000000000000000000000000060448201526064016106fa565b85851115610c0c57600080fd5b828410610c1857600080fd5b6000610c25600185610f2e565b90508460005b828214610cc95760006002610c408585610edd565b610c4b906001610edd565b610c559190610ef5565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610c9757929650919450610d649350505050565b8b821015610cb3578a821015610cab578293505b829450610cc1565b610cbe600184610f2e565b95505b505050610c2b565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c75726500000000000000000000000000000000000060448201526064016106fa565b9195509093505050505b9550959350505050565b81831115610ae357600080fd5b808210610aff57600080fd5b60008060208385031215610d99578182fd5b823567ffffffffffffffff80821115610db0578384fd5b818501915085601f830112610dc3578384fd5b813581811115610dd1578485fd5b8660208260051b8501011115610de5578485fd5b60209290920196919550909350505050565b600060208284031215610e08578081fd5b5035919050565b60008060408385031215610e21578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b83811015610e5f57815187529582019590820190600101610e43565b509495945050505050565b60008382528251815b81811015610e8f57602081860181015185830182015201610e73565b81811115610ea05782602083860101525b50919091016020019392505050565b600060408252610ec26040830185610e30565b8281036020840152610ed48185610e30565b95945050505050565b60008219821115610ef057610ef0610f7e565b500190565b600082610f29577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b600082821015610f4057610f40610f7e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f7757610f77610f7e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212209bceaf5c0128a6fec3ab5a5045fab2c4579ecd7fe44eeb1d6001115ab637dc9964736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockLockingVault.ts b/packages/council-artifacts/src/MockLockingVault.ts new file mode 100644 index 00000000..28a75b1a --- /dev/null +++ b/packages/council-artifacts/src/MockLockingVault.ts @@ -0,0 +1,72 @@ +export const MockLockingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "MockLockingVault", + "sourceName": "contracts/mocks/MockLockingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "delegation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fundedAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "firstDelegation", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610270806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063eed50a3214610046578063f45346dc146100a6578063fc7e286d146100bb575b600080fd5b61007c6100543660046101a1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100b96100b43660046101c2565b6100e9565b005b6100db6100c93660046101a1565b60006020819052908152604090205481565b60405190815260200161009d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120805484929061011e9084906101fd565b909155505073ffffffffffffffffffffffffffffffffffffffff928316600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915550565b803573ffffffffffffffffffffffffffffffffffffffff8116811461019c57600080fd5b919050565b6000602082840312156101b2578081fd5b6101bb82610178565b9392505050565b6000806000606084860312156101d6578182fd5b6101df84610178565b9250602084013591506101f460408501610178565b90509250925092565b60008219821115610235577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b50019056fea264697066735822122036f5cad091144400ffc5c61b17106673e10b044d7422ccb70c7b2ee7a6d8a5de64736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063eed50a3214610046578063f45346dc146100a6578063fc7e286d146100bb575b600080fd5b61007c6100543660046101a1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100b96100b43660046101c2565b6100e9565b005b6100db6100c93660046101a1565b60006020819052908152604090205481565b60405190815260200161009d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120805484929061011e9084906101fd565b909155505073ffffffffffffffffffffffffffffffffffffffff928316600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915550565b803573ffffffffffffffffffffffffffffffffffffffff8116811461019c57600080fd5b919050565b6000602082840312156101b2578081fd5b6101bb82610178565b9392505050565b6000806000606084860312156101d6578182fd5b6101df84610178565b9250602084013591506101f460408501610178565b90509250925092565b60008219821115610235577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b50019056fea264697066735822122036f5cad091144400ffc5c61b17106673e10b044d7422ccb70c7b2ee7a6d8a5de64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockTokenLogic.ts b/packages/council-artifacts/src/MockTokenLogic.ts new file mode 100644 index 00000000..085a3dad --- /dev/null +++ b/packages/council-artifacts/src/MockTokenLogic.ts @@ -0,0 +1,145 @@ +export const MockTokenLogic = { + "_format": "hh-sol-artifact-1", + "contractName": "MockTokenLogic", + "sourceName": "contracts/mocks/MockTokenLogic.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + } + ], + "name": "readStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "data", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "data", + "type": "bytes32" + } + ], + "name": "writeStorage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161089338038061089383398101604081905261002f916100f9565b60006100616040518060400160405280600581526020016437bbb732b960d91b81525061008160201b6103a21760201c565b905061007a82826100dc60201b61041b1790919060201c565b505061016c565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b9050600081846040516020016100bc929190610127565b60408051601f198184030181529190528051602090910120949350505050565b81546001600160a01b0319166001600160a01b0391909116179055565b60006020828403121561010a578081fd5b81516001600160a01b0381168114610120578182fd5b9392505050565b60008382528251815b8181101561014c57602081860181015185830182015201610130565b8181111561015d5782602083860101525b50919091016020019392505050565b6107188061017b6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635b86f5991161005b5780635b86f599146100c357806370a08231146100d6578063a9059cbb146100e9578063e10af4ad146100fc5761007d565b806318160ddd146100825780632cab83351461009c57806340c10f19146100ae575b600080fd5b61008a61010e565b60405190815260200160405180910390f35b61008a6100aa366004610606565b5490565b6100c16100bc3660046105dd565b610129565b005b6100c16100d13660046105dd565b610274565b61008a6100e43660046105bc565b6102f5565b6100c16100f73660046105dd565b610330565b6100c161010a36600461061e565b9055565b60008061011961045d565b9050610123815490565b91505090565b60006101336104a2565b9050610153815473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640160405180910390fd5b60006101f561045d565b905060006102016104e2565b9050838160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102519190610684565b9091555050815461026c6102658683610684565b849061010a565b505050505050565b600061027e61045d565b9050600061028a6104e2565b9050828160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102da9190610684565b909155505081546102ee6102658583610684565b5050505050565b6000806103006104e2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260209190915260409020549150505b919050565b600061033a6104e2565b3360009081526020829052604081208054929350849290919061035e90849061069c565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526020829052604081208054849290610398908490610684565b9091555050505050565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b9050600081846040516020016103dd92919061063f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116179055565b600061049d6040518060400160405280600b81526020017f746f74616c537570706c79000000000000000000000000000000000000000000815250610522565b905090565b600061049d6040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506103a2565b600061049d6040518060400160405280600881526020017f62616c616e63657300000000000000000000000000000000000000000000000081525061055d565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a3209050600081846040516020016103dd92919061063f565b6000807f57f81c1497fd9382c9a7940a80bdc573c8799f1d06648c835389d4f759c45c3a9050600081846040516020016103dd92919061063f565b803573ffffffffffffffffffffffffffffffffffffffff8116811461032b57600080fd5b6000602082840312156105cd578081fd5b6105d682610598565b9392505050565b600080604083850312156105ef578081fd5b6105f883610598565b946020939093013593505050565b600060208284031215610617578081fd5b5035919050565b60008060408385031215610630578182fd5b50508035926020909101359150565b60008382528251815b8181101561066457602081860181015185830182015201610648565b818111156106755782602083860101525b50919091016020019392505050565b60008219821115610697576106976106b3565b500190565b6000828210156106ae576106ae6106b3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f84504d862c140947cf7a92d0e7c2dbd0e6e82346955319e0090cd3bbcc93c2a64736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635b86f5991161005b5780635b86f599146100c357806370a08231146100d6578063a9059cbb146100e9578063e10af4ad146100fc5761007d565b806318160ddd146100825780632cab83351461009c57806340c10f19146100ae575b600080fd5b61008a61010e565b60405190815260200160405180910390f35b61008a6100aa366004610606565b5490565b6100c16100bc3660046105dd565b610129565b005b6100c16100d13660046105dd565b610274565b61008a6100e43660046105bc565b6102f5565b6100c16100f73660046105dd565b610330565b6100c161010a36600461061e565b9055565b60008061011961045d565b9050610123815490565b91505090565b60006101336104a2565b9050610153815473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640160405180910390fd5b60006101f561045d565b905060006102016104e2565b9050838160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102519190610684565b9091555050815461026c6102658683610684565b849061010a565b505050505050565b600061027e61045d565b9050600061028a6104e2565b9050828160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102da9190610684565b909155505081546102ee6102658583610684565b5050505050565b6000806103006104e2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260209190915260409020549150505b919050565b600061033a6104e2565b3360009081526020829052604081208054929350849290919061035e90849061069c565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526020829052604081208054849290610398908490610684565b9091555050505050565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b9050600081846040516020016103dd92919061063f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116179055565b600061049d6040518060400160405280600b81526020017f746f74616c537570706c79000000000000000000000000000000000000000000815250610522565b905090565b600061049d6040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506103a2565b600061049d6040518060400160405280600881526020017f62616c616e63657300000000000000000000000000000000000000000000000081525061055d565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a3209050600081846040516020016103dd92919061063f565b6000807f57f81c1497fd9382c9a7940a80bdc573c8799f1d06648c835389d4f759c45c3a9050600081846040516020016103dd92919061063f565b803573ffffffffffffffffffffffffffffffffffffffff8116811461032b57600080fd5b6000602082840312156105cd578081fd5b6105d682610598565b9392505050565b600080604083850312156105ef578081fd5b6105f883610598565b946020939093013593505050565b600060208284031215610617578081fd5b5035919050565b60008060408385031215610630578182fd5b50508035926020909101359150565b60008382528251815b8181101561066457602081860181015185830182015201610648565b818111156106755782602083860101525b50919091016020019392505050565b60008219821115610697576106976106b3565b500190565b6000828210156106ae576106ae6106b3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f84504d862c140947cf7a92d0e7c2dbd0e6e82346955319e0090cd3bbcc93c2a64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/MockVotingVault.ts b/packages/council-artifacts/src/MockVotingVault.ts new file mode 100644 index 00000000..921ba693 --- /dev/null +++ b/packages/council-artifacts/src/MockVotingVault.ts @@ -0,0 +1,77 @@ +export const MockVotingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "MockVotingVault", + "sourceName": "contracts/mocks/MockVotingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setVotingPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "votingPower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063274b91a914610046578063c07473f61461007f578063e91f3235146100b1575b600080fd5b61007d610054366004610134565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260208190526040902055565b005b61009f61008d366004610113565b60006020819052908152604090205481565b60405190815260200160405180910390f35b61009f6100bf36600461015d565b50505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010e57600080fd5b919050565b600060208284031215610124578081fd5b61012d826100ea565b9392505050565b60008060408385031215610146578081fd5b61014f836100ea565b946020939093013593505050565b60008060008060608587031215610172578182fd5b61017b856100ea565b935060208501359250604085013567ffffffffffffffff8082111561019e578384fd5b818701915087601f8301126101b1578384fd5b8135818111156101bf578485fd5b8860208285010111156101d0578485fd5b9598949750506020019450505056fea26469706673582212202516ed069cd571289426ddea907fd4b2a9d3029ec6984cd26b617edec322691664736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063274b91a914610046578063c07473f61461007f578063e91f3235146100b1575b600080fd5b61007d610054366004610134565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260208190526040902055565b005b61009f61008d366004610113565b60006020819052908152604090205481565b60405190815260200160405180910390f35b61009f6100bf36600461015d565b50505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010e57600080fd5b919050565b600060208284031215610124578081fd5b61012d826100ea565b9392505050565b60008060408385031215610146578081fd5b61014f836100ea565b946020939093013593505050565b60008060008060608587031215610172578182fd5b61017b856100ea565b935060208501359250604085013567ffffffffffffffff8082111561019e578384fd5b818701915087601f8301126101b1578384fd5b8135818111156101bf578485fd5b8860208285010111156101d0578485fd5b9598949750506020019450505056fea26469706673582212202516ed069cd571289426ddea907fd4b2a9d3029ec6984cd26b617edec322691664736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/NonVotingVault.ts b/packages/council-artifacts/src/NonVotingVault.ts new file mode 100644 index 00000000..85bbc575 --- /dev/null +++ b/packages/council-artifacts/src/NonVotingVault.ts @@ -0,0 +1,161 @@ +export const NonVotingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "NonVotingVault", + "sourceName": "contracts/vaults/NonvotingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "contract ILockingVault", + "name": "_lockingVault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockingVault", + "outputs": [ + { + "internalType": "contract ILockingVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523480156200001157600080fd5b50604051620012b8380380620012b8833981016040819052620000349162000583565b600080546001600160a01b0319163317905562000051826200012d565b600280546001600160a01b0319166001600160a01b03831690811790915560408051637e062a3560e11b815290516000929163fc0c546a91600480830192602092919082900301818787803b158015620000aa57600080fd5b505af1158015620000bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e59190620005ea565b606081901b6001600160601b03191660805260025490915062000124906001600160a01b038084169116600019620001a2602090811b6200055317901c565b505050620006c1565b6000546001600160a01b03163314620001805760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b60448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b801580620002305750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b158015620001f357600080fd5b505afa15801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e919062000609565b155b620002a45760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000177565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620002fc9185916200030116565b505050565b60006200035d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620003e260201b6200074d179092919060201c565b905080516000148062000381575080806020019051810190620003819190620005c1565b620002fc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000177565b6060620003f38484600085620003fb565b949350505050565b6060824710156200045e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000177565b600080866001600160a01b031685876040516200047c919062000622565b60006040518083038185875af1925050503d8060008114620004bb576040519150601f19603f3d011682016040523d82523d6000602084013e620004c0565b606091505b509092509050620004d487838387620004df565b979650505050505050565b606083156200055057825162000548576001600160a01b0385163b620005485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000177565b5081620003f3565b620003f38383815115620005675781518083602001fd5b8060405162461bcd60e51b815260040162000177919062000640565b6000806040838503121562000596578182fd5b8251620005a381620006a8565b6020840151909250620005b681620006a8565b809150509250929050565b600060208284031215620005d3578081fd5b81518015158114620005e3578182fd5b9392505050565b600060208284031215620005fc578081fd5b8151620005e381620006a8565b6000602082840312156200061b578081fd5b5051919050565b600082516200063681846020870162000675565b9190910192915050565b60006020825282518060208401526200066181604085016020870162000675565b601f01601f19169190910160400192915050565b60005b838110156200069257818101518382015260200162000678565b83811115620006a2576000848401525b50505050565b6001600160a01b0381168114620006be57600080fd5b50565b60805160601c610bd1620006e76000396000818161019701526102d60152610bd16000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c8063b6a5d7de11610076578063d2a043451161005b578063d2a0434514610172578063fc0c546a14610192578063fe9fbb80146101b9576100a2565b8063b6a5d7de1461012c578063b91816111461013f576100a2565b8062f714ce146100a757806313af4035146100bc57806327c97fa5146100cf5780638da5cb5b146100e2575b600080fd5b6100ba6100b5366004610ad3565b6101cc565b005b6100ba6100ca366004610a7a565b610303565b6100ba6100dd366004610a7a565b6103b1565b6000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ba61013a366004610a7a565b610464565b61016261014d366004610a7a565b60016020526000908152604090205460ff1681565b6040519015158152602001610123565b6002546101029073ffffffffffffffffffffffffffffffffffffffff1681565b6101027f000000000000000000000000000000000000000000000000000000000000000081565b6101626101c7366004610a7a565b610524565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102385760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90602401600060405180830381600087803b1580156102a457600080fd5b505af11580156102b8573d6000803e3d6000fd5b506102ff92505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690508284610764565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461036a5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104185760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b6105218173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b80158061060257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156105c857600080fd5b505afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106009190610abb565b155b6106745760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161022f565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107489084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107ba565b505050565b606061075c84846000856108af565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107489084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016106c6565b600061081c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661074d9092919063ffffffff16565b905080516000148061083d57508080602001905181019061083d9190610a9b565b6107485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161022f565b6060824710156109275760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161022f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516109509190610afe565b60006040518083038185875af1925050503d806000811461098d576040519150601f19603f3d011682016040523d82523d6000602084013e610992565b606091505b50915091506109a3878383876109ae565b979650505050505050565b60608315610a27578251610a205773ffffffffffffffffffffffffffffffffffffffff85163b610a205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022f565b508161075c565b61075c8383815115610a3c5781518083602001fd5b8060405162461bcd60e51b815260040161022f9190610b1a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461054e57600080fd5b600060208284031215610a8b578081fd5b610a9482610a56565b9392505050565b600060208284031215610aac578081fd5b81518015158114610a94578182fd5b600060208284031215610acc578081fd5b5051919050565b60008060408385031215610ae5578081fd5b82359150610af560208401610a56565b90509250929050565b60008251610b10818460208701610b6b565b9190910192915050565b6000602082528251806020840152610b39816040850160208701610b6b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b83811015610b86578181015183820152602001610b6e565b83811115610b95576000848401525b5050505056fea26469706673582212208d9fed9243ec44a69af55d3ab0b460bbfa7fb8d0f1b56758cd9d40bfdf86f4b264736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a25760003560e01c8063b6a5d7de11610076578063d2a043451161005b578063d2a0434514610172578063fc0c546a14610192578063fe9fbb80146101b9576100a2565b8063b6a5d7de1461012c578063b91816111461013f576100a2565b8062f714ce146100a757806313af4035146100bc57806327c97fa5146100cf5780638da5cb5b146100e2575b600080fd5b6100ba6100b5366004610ad3565b6101cc565b005b6100ba6100ca366004610a7a565b610303565b6100ba6100dd366004610a7a565b6103b1565b6000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ba61013a366004610a7a565b610464565b61016261014d366004610a7a565b60016020526000908152604090205460ff1681565b6040519015158152602001610123565b6002546101029073ffffffffffffffffffffffffffffffffffffffff1681565b6101027f000000000000000000000000000000000000000000000000000000000000000081565b6101626101c7366004610a7a565b610524565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102385760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90602401600060405180830381600087803b1580156102a457600080fd5b505af11580156102b8573d6000803e3d6000fd5b506102ff92505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690508284610764565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461036a5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104185760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b6105218173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b80158061060257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156105c857600080fd5b505afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106009190610abb565b155b6106745760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161022f565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107489084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107ba565b505050565b606061075c84846000856108af565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107489084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016106c6565b600061081c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661074d9092919063ffffffff16565b905080516000148061083d57508080602001905181019061083d9190610a9b565b6107485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161022f565b6060824710156109275760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161022f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516109509190610afe565b60006040518083038185875af1925050503d806000811461098d576040519150601f19603f3d011682016040523d82523d6000602084013e610992565b606091505b50915091506109a3878383876109ae565b979650505050505050565b60608315610a27578251610a205773ffffffffffffffffffffffffffffffffffffffff85163b610a205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022f565b508161075c565b61075c8383815115610a3c5781518083602001fd5b8060405162461bcd60e51b815260040161022f9190610b1a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461054e57600080fd5b600060208284031215610a8b578081fd5b610a9482610a56565b9392505050565b600060208284031215610aac578081fd5b81518015158114610a94578182fd5b600060208284031215610acc578081fd5b5051919050565b60008060408385031215610ae5578081fd5b82359150610af560208401610a56565b90509250929050565b60008251610b10818460208701610b6b565b9190910192915050565b6000602082528251806020840152610b39816040850160208701610b6b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b83811015610b86578181015183820152602001610b6e565b83811115610b95576000848401525b5050505056fea26469706673582212208d9fed9243ec44a69af55d3ab0b460bbfa7fb8d0f1b56758cd9d40bfdf86f4b264736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/OptimisticGrants.ts b/packages/council-artifacts/src/OptimisticGrants.ts new file mode 100644 index 00000000..3ecb46cf --- /dev/null +++ b/packages/council-artifacts/src/OptimisticGrants.ts @@ -0,0 +1,144 @@ +export const OptimisticGrants = { + "_format": "hh-sol-artifact-1", + "contractName": "OptimisticGrants", + "sourceName": "contracts/features/OptimisticGrants.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "__governance", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_destination", + "type": "address" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint128", + "name": "_amount", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_expiration", + "type": "uint128" + } + ], + "name": "configureGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "grants", + "outputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "solvency", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516109f03803806109f083398101604081905261002f91610064565b600080546001600160a01b0319166001600160a01b039290921691909117905560601b6001600160601b0319166080526100b5565b60008060408385031215610076578182fd5b82516100818161009d565b60208401519092506100928161009d565b809150509250929050565b6001600160a01b03811681146100b257600080fd5b50565b60805160601c6109086100e860003960008181610163015281816102ff0152818161049401526104fe01526109086000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c8063b6b55f251161005b578063b6b55f25146100c5578063b869cea3146100d8578063d16649761461014b578063fc0c546a1461015e5761007c565b8062f714ce146100815780631e83409a14610096578063773c5049146100a9575b600080fd5b61009461008f366004610818565b6101aa565b005b6100946100a436600461077d565b610381565b6100b260015481565b6040519081526020015b60405180910390f35b6100946100d3366004610800565b6104c3565b6101226100e636600461077d565b6002602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016100bc565b61009461015936600461079e565b6105aa565b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e636500000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015482111561029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742066756e647300000000000000000000000000006044820152606401610227565b81600160008282546102ae919061088c565b90915550506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015b602060405180830381600087803b15801561034457600080fd5b505af1158015610358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037c91906107e0565b505050565b3360009081526002602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421015610420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74206d6174757265000000000000000000000000000000000000000000006044820152606401610227565b336000908152600260205260408082208054929055517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526fffffffffffffffffffffffffffffffff90921660248201819052917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9060440161032a565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561055757600080fd5b505af115801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906107e0565b5080600160008282546105a29190610843565b909155505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461062b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e63650000000000000000000000000000000000000000006044820152606401610227565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409020546fffffffffffffffffffffffffffffffff9081169083168110156106a757610679818461085b565b6fffffffffffffffffffffffffffffffff166001600082825461069c919061088c565b909155506106da9050565b6106b1838261085b565b6fffffffffffffffffffffffffffffffff16600160008282546106d49190610843565b90915550505b5073ffffffffffffffffffffffffffffffffffffffff90921660009081526002602052604090206fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292909116919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075857600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461075857600080fd5b60006020828403121561078e578081fd5b61079782610734565b9392505050565b6000806000606084860312156107b2578182fd5b6107bb84610734565b92506107c96020850161075d565b91506107d76040850161075d565b90509250925092565b6000602082840312156107f1578081fd5b81518015158114610797578182fd5b600060208284031215610811578081fd5b5035919050565b6000806040838503121561082a578182fd5b8235915061083a60208401610734565b90509250929050565b60008219821115610856576108566108a3565b500190565b60006fffffffffffffffffffffffffffffffff83811690831681811015610884576108846108a3565b039392505050565b60008282101561089e5761089e6108a3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220ccab291d2d30e29053f93b57347be56b88fd50381a2a94088f3e67c7141e612a64736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007c5760003560e01c8063b6b55f251161005b578063b6b55f25146100c5578063b869cea3146100d8578063d16649761461014b578063fc0c546a1461015e5761007c565b8062f714ce146100815780631e83409a14610096578063773c5049146100a9575b600080fd5b61009461008f366004610818565b6101aa565b005b6100946100a436600461077d565b610381565b6100b260015481565b6040519081526020015b60405180910390f35b6100946100d3366004610800565b6104c3565b6101226100e636600461077d565b6002602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016100bc565b61009461015936600461079e565b6105aa565b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e636500000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015482111561029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742066756e647300000000000000000000000000006044820152606401610227565b81600160008282546102ae919061088c565b90915550506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015b602060405180830381600087803b15801561034457600080fd5b505af1158015610358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037c91906107e0565b505050565b3360009081526002602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421015610420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74206d6174757265000000000000000000000000000000000000000000006044820152606401610227565b336000908152600260205260408082208054929055517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526fffffffffffffffffffffffffffffffff90921660248201819052917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9060440161032a565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561055757600080fd5b505af115801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906107e0565b5080600160008282546105a29190610843565b909155505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461062b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e63650000000000000000000000000000000000000000006044820152606401610227565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409020546fffffffffffffffffffffffffffffffff9081169083168110156106a757610679818461085b565b6fffffffffffffffffffffffffffffffff166001600082825461069c919061088c565b909155506106da9050565b6106b1838261085b565b6fffffffffffffffffffffffffffffffff16600160008282546106d49190610843565b90915550505b5073ffffffffffffffffffffffffffffffffffffffff90921660009081526002602052604090206fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292909116919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075857600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461075857600080fd5b60006020828403121561078e578081fd5b61079782610734565b9392505050565b6000806000606084860312156107b2578182fd5b6107bb84610734565b92506107c96020850161075d565b91506107d76040850161075d565b90509250925092565b6000602082840312156107f1578081fd5b81518015158114610797578182fd5b600060208284031215610811578081fd5b5035919050565b6000806040838503121561082a578182fd5b8235915061083a60208401610734565b90509250929050565b60008219821115610856576108566108a3565b500190565b60006fffffffffffffffffffffffffffffffff83811690831681811015610884576108846108a3565b039392505050565b60008282101561089e5761089e6108a3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220ccab291d2d30e29053f93b57347be56b88fd50381a2a94088f3e67c7141e612a64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/OptimisticRewards.ts b/packages/council-artifacts/src/OptimisticRewards.ts new file mode 100644 index 00000000..8f0d79ba --- /dev/null +++ b/packages/council-artifacts/src/OptimisticRewards.ts @@ -0,0 +1,383 @@ +export const OptimisticRewards = { + "_format": "hh-sol-artifact-1", + "contractName": "OptimisticRewards", + "sourceName": "contracts/vaults/OptimisticRewards.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_governance", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_startingRoot", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_proposer", + "type": "address" + }, + { + "internalType": "address", + "name": "_revoker", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "contract ILockingVault", + "name": "_lockingVault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "challengePeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "challengeRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "internalType": "uint256", + "name": "totalGrant", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "merkleProof", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "claimAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockingVault", + "outputs": [ + { + "internalType": "contract ILockingVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proposalTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "proposeRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_challengePeriod", + "type": "uint256" + } + ], + "name": "setChallengePeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_proposer", + "type": "address" + } + ], + "name": "setProposer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405262093a806008553480156200001857600080fd5b5060405162001412380380620014128339810160408190526200003b91620001ea565b6000859055606082901b6001600160601b031916608052600280546001600160a01b0319166001600160a01b0383811691821790925560405163095ea7b360e01b8152600481019190915260001960248201528691849184918491849184919083169063095ea7b390604401602060405180830381600087803b158015620000c257600080fd5b505af1158015620000d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fd919062000271565b505060038054336001600160a01b031991821617909155600780549091166001600160a01b038b16179055506200013b935086925062000152915050565b620001468662000176565b505050505050620002b3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6003546001600160a01b03163314620001c85760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008060008060c0878903121562000203578182fd5b865162000210816200029a565b6020880151604089015191975095506200022a816200029a565b60608801519094506200023d816200029a565b608088015190935062000250816200029a565b60a088015190925062000263816200029a565b809150509295509295509295565b60006020828403121562000283578081fd5b8151801515811462000293578182fd5b9392505050565b6001600160a01b0381168114620002b057600080fd5b50565b60805160601c611139620002d960003960008181610345015261040401526111396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80638f54532a116100d8578063c884ef831161008c578063f3f480d911610066578063f3f480d914610337578063fc0c546a14610340578063fe9fbb801461036757610177565b8063c884ef83146102e4578063d2a0434514610304578063e91f32351461032457610177565b8063b6a5d7de116100bd578063b6a5d7de14610296578063b9181611146102a9578063c635f1ee146102dc57610177565b80638f54532a14610263578063a8e4fb901461027657610177565b8063217863b71161012f5780635d475fdd116101145780635d475fdd14610202578063750588cf146102155780638da5cb5b1461021e57610177565b8063217863b7146101e657806327c97fa5146101ef57610177565b806313af40351161016057806313af4035146101a4578063184a0ae9146101b75780631fb4a228146101d357610177565b806309ed28f11461017c5780630a33e8c214610191575b600080fd5b61018f61018a366004610fd7565b61037a565b005b61018f61019f366004610e78565b610488565b61018f6101b2366004610da4565b6105ca565b6101c060065481565b6040519081526020015b60405180910390f35b61018f6101e1366004610da4565b610678565b6101c060005481565b61018f6101fd366004610da4565b610726565b61018f610210366004610e60565b6107d9565b6101c060055481565b60035461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ca565b61018f610271366004610e60565b610845565b60075461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102a4366004610da4565b6108ed565b6102cc6102b7366004610da4565b60046020526000908152604090205460ff1681565b60405190151581526020016101ca565b61018f6109aa565b6101c06102f2366004610da4565b60016020526000908152604090205481565b60025461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101c0610332366004610dbe565b610a0b565b6101c060085481565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b6102cc610375366004610da4565b610b0a565b6103b88585858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b3992505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104809190610e40565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166104f05760405162461bcd60e51b815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b61052e8685858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b3992505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b1580156105aa57600080fd5b505af11580156105be573d6000803e3d6000fd5b50505050505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146106315760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146106df5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461078d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b73ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146108405760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600855565b60075473ffffffffffffffffffffffffffffffffffffffff1633146108ac5760405162461bcd60e51b815260206004820152600c60248201527f4e6f742070726f706f736572000000000000000000000000000000000000000060448201526064016104e7565b600554158015906108be575060065415155b80156108d857506008546006546108d5919061103d565b42115b156108e4576005546000555b60055542600655565b60035473ffffffffffffffffffffffffffffffffffffffff1633146109545760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b6109a78173ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b6109b333610b0a565b6109ff5760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016104e7565b60006005819055600655565b60008080610a1b84860186610eed565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b901b166020820152603481018390529193509150600090605401604051602081830303815290604052805190602001209050610a818260005483610c7a565b610acd5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016104e7565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260016020526040812054610afd9085611055565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff165b919050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260348101839052600090605401604051602081830303815290604052805190602001209050610b998260005483610c7a565b610be55760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016104e7565b336000908152600160205260409020548390610c0290869061103d565b1115610c505760405162461bcd60e51b815260206004820152601060248201527f436c61696d656420746f6f206d7563680000000000000000000000000000000060448201526064016104e7565b3360009081526001602052604081208054869290610c6f90849061103d565b909155505050505050565b600082610c878584610c90565b14949350505050565b600081815b8451811015610cfc57610ce882868381518110610cdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610d04565b915080610cf48161106c565b915050610c95565b509392505050565b6000818310610d20576000828152602084905260409020610d2f565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b3457600080fd5b60008083601f840112610d6b578081fd5b50813567ffffffffffffffff811115610d82578182fd5b6020830191508360208260051b8501011115610d9d57600080fd5b9250929050565b600060208284031215610db5578081fd5b610d2f82610d36565b60008060008060608587031215610dd3578283fd5b610ddc85610d36565b935060208501359250604085013567ffffffffffffffff80821115610dff578384fd5b818701915087601f830112610e12578384fd5b813581811115610e20578485fd5b886020828501011115610e31578485fd5b95989497505060200194505050565b600060208284031215610e51578081fd5b81518015158114610d2f578182fd5b600060208284031215610e71578081fd5b5035919050565b60008060008060008060a08789031215610e90578182fd5b86359550610ea060208801610d36565b945060408701359350606087013567ffffffffffffffff811115610ec2578283fd5b610ece89828a01610d5a565b9094509250610ee1905060808801610d36565b90509295509295509295565b60008060408385031215610eff578182fd5b8235915060208084013567ffffffffffffffff80821115610f1e578384fd5b818601915086601f830112610f31578384fd5b813581811115610f4357610f436110d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f8657610f866110d4565b604052828152858101935084860182860187018b1015610fa4578788fd5b8795505b83861015610fc6578035855260019590950194938601938601610fa8565b508096505050505050509250929050565b600080600080600060808688031215610fee578081fd5b8535945060208601359350604086013567ffffffffffffffff811115611012578182fd5b61101e88828901610d5a565b9094509250611031905060608701610d36565b90509295509295909350565b60008219821115611050576110506110a5565b500190565b600082821015611067576110676110a5565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561109e5761109e6110a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212206e314e251e48082e6f8d08d1caa037797f0491da27d159597a0e3c9bea2aaf7664736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c80638f54532a116100d8578063c884ef831161008c578063f3f480d911610066578063f3f480d914610337578063fc0c546a14610340578063fe9fbb801461036757610177565b8063c884ef83146102e4578063d2a0434514610304578063e91f32351461032457610177565b8063b6a5d7de116100bd578063b6a5d7de14610296578063b9181611146102a9578063c635f1ee146102dc57610177565b80638f54532a14610263578063a8e4fb901461027657610177565b8063217863b71161012f5780635d475fdd116101145780635d475fdd14610202578063750588cf146102155780638da5cb5b1461021e57610177565b8063217863b7146101e657806327c97fa5146101ef57610177565b806313af40351161016057806313af4035146101a4578063184a0ae9146101b75780631fb4a228146101d357610177565b806309ed28f11461017c5780630a33e8c214610191575b600080fd5b61018f61018a366004610fd7565b61037a565b005b61018f61019f366004610e78565b610488565b61018f6101b2366004610da4565b6105ca565b6101c060065481565b6040519081526020015b60405180910390f35b61018f6101e1366004610da4565b610678565b6101c060005481565b61018f6101fd366004610da4565b610726565b61018f610210366004610e60565b6107d9565b6101c060055481565b60035461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ca565b61018f610271366004610e60565b610845565b60075461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102a4366004610da4565b6108ed565b6102cc6102b7366004610da4565b60046020526000908152604090205460ff1681565b60405190151581526020016101ca565b61018f6109aa565b6101c06102f2366004610da4565b60016020526000908152604090205481565b60025461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101c0610332366004610dbe565b610a0b565b6101c060085481565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b6102cc610375366004610da4565b610b0a565b6103b88585858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b3992505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104809190610e40565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166104f05760405162461bcd60e51b815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b61052e8685858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b3992505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b1580156105aa57600080fd5b505af11580156105be573d6000803e3d6000fd5b50505050505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146106315760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146106df5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461078d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b73ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146108405760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600855565b60075473ffffffffffffffffffffffffffffffffffffffff1633146108ac5760405162461bcd60e51b815260206004820152600c60248201527f4e6f742070726f706f736572000000000000000000000000000000000000000060448201526064016104e7565b600554158015906108be575060065415155b80156108d857506008546006546108d5919061103d565b42115b156108e4576005546000555b60055542600655565b60035473ffffffffffffffffffffffffffffffffffffffff1633146109545760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b6109a78173ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b6109b333610b0a565b6109ff5760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016104e7565b60006005819055600655565b60008080610a1b84860186610eed565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b901b166020820152603481018390529193509150600090605401604051602081830303815290604052805190602001209050610a818260005483610c7a565b610acd5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016104e7565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260016020526040812054610afd9085611055565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff165b919050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260348101839052600090605401604051602081830303815290604052805190602001209050610b998260005483610c7a565b610be55760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016104e7565b336000908152600160205260409020548390610c0290869061103d565b1115610c505760405162461bcd60e51b815260206004820152601060248201527f436c61696d656420746f6f206d7563680000000000000000000000000000000060448201526064016104e7565b3360009081526001602052604081208054869290610c6f90849061103d565b909155505050505050565b600082610c878584610c90565b14949350505050565b600081815b8451811015610cfc57610ce882868381518110610cdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610d04565b915080610cf48161106c565b915050610c95565b509392505050565b6000818310610d20576000828152602084905260409020610d2f565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b3457600080fd5b60008083601f840112610d6b578081fd5b50813567ffffffffffffffff811115610d82578182fd5b6020830191508360208260051b8501011115610d9d57600080fd5b9250929050565b600060208284031215610db5578081fd5b610d2f82610d36565b60008060008060608587031215610dd3578283fd5b610ddc85610d36565b935060208501359250604085013567ffffffffffffffff80821115610dff578384fd5b818701915087601f830112610e12578384fd5b813581811115610e20578485fd5b886020828501011115610e31578485fd5b95989497505060200194505050565b600060208284031215610e51578081fd5b81518015158114610d2f578182fd5b600060208284031215610e71578081fd5b5035919050565b60008060008060008060a08789031215610e90578182fd5b86359550610ea060208801610d36565b945060408701359350606087013567ffffffffffffffff811115610ec2578283fd5b610ece89828a01610d5a565b9094509250610ee1905060808801610d36565b90509295509295509295565b60008060408385031215610eff578182fd5b8235915060208084013567ffffffffffffffff80821115610f1e578384fd5b818601915086601f830112610f31578384fd5b813581811115610f4357610f436110d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f8657610f866110d4565b604052828152858101935084860182860187018b1015610fa4578788fd5b8795505b83861015610fc6578035855260019590950194938601938601610fa8565b508096505050505050509250929050565b600080600080600060808688031215610fee578081fd5b8535945060208601359350604086013567ffffffffffffffff811115611012578182fd5b61101e88828901610d5a565b9094509250611031905060608701610d36565b90509295509295909350565b60008219821115611050576110506110a5565b500190565b600082821015611067576110676110a5565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561109e5761109e6110a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212206e314e251e48082e6f8d08d1caa037797f0491da27d159597a0e3c9bea2aaf7664736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/ReadAndWriteAnyStorage.ts b/packages/council-artifacts/src/ReadAndWriteAnyStorage.ts new file mode 100644 index 00000000..7aa8eda6 --- /dev/null +++ b/packages/council-artifacts/src/ReadAndWriteAnyStorage.ts @@ -0,0 +1,48 @@ +export const ReadAndWriteAnyStorage = { + "_format": "hh-sol-artifact-1", + "contractName": "ReadAndWriteAnyStorage", + "sourceName": "contracts/mocks/StorageRead.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + } + ], + "name": "readStorage", + "outputs": [ + { + "internalType": "bytes32", + "name": "data", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slot", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "data", + "type": "bytes32" + } + ], + "name": "writeStorage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060d68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80632cab8335146037578063e10af4ad146058575b600080fd5b604660423660046069565b5490565b60405190815260200160405180910390f35b606760633660046080565b9055565b005b6000602082840312156079578081fd5b5035919050565b600080604083850312156091578081fd5b5050803592602090910135915056fea2646970667358221220871b0b6ba3027b11273872d38a2f32ce3c0336068c4e5a2b654f37587c2f763764736f6c63430008030033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c80632cab8335146037578063e10af4ad146058575b600080fd5b604660423660046069565b5490565b60405190815260200160405180910390f35b606760633660046080565b9055565b005b6000602082840312156079578081fd5b5035919050565b600080604083850312156091578081fd5b5050803592602090910135915056fea2646970667358221220871b0b6ba3027b11273872d38a2f32ce3c0336068c4e5a2b654f37587c2f763764736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/ReentrancyBlock.ts b/packages/council-artifacts/src/ReentrancyBlock.ts new file mode 100644 index 00000000..aeab2d2f --- /dev/null +++ b/packages/council-artifacts/src/ReentrancyBlock.ts @@ -0,0 +1,10 @@ +export const ReentrancyBlock = { + "_format": "hh-sol-artifact-1", + "contractName": "ReentrancyBlock", + "sourceName": "contracts/libraries/ReentrancyBlock.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b96308788cbec6b39dad92b57b204bbc4316b544453ffe356636ef94f64649b664736f6c63430008030033", + "deployedBytecode": "0x6080604052600080fdfea2646970667358221220b96308788cbec6b39dad92b57b204bbc4316b544453ffe356636ef94f64649b664736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Reverter.ts b/packages/council-artifacts/src/Reverter.ts new file mode 100644 index 00000000..291fbae9 --- /dev/null +++ b/packages/council-artifacts/src/Reverter.ts @@ -0,0 +1,18 @@ +export const Reverter = { + "_format": "hh-sol-artifact-1", + "contractName": "Reverter", + "sourceName": "contracts/mocks/Reverter.sol", + "abi": [ + { + "inputs": [], + "name": "fail", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600f57600080fd5b50606b80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063a9cc471814602d575b600080fd5b60336028565b00fea2646970667358221220e86cd5c1c53d8c524aeed297debfcea6c0bc28b83b76d7703c1f3c78aa6cd71a64736f6c63430008030033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063a9cc471814602d575b600080fd5b60336028565b00fea2646970667358221220e86cd5c1c53d8c524aeed297debfcea6c0bc28b83b76d7703c1f3c78aa6cd71a64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/SafeERC20.ts b/packages/council-artifacts/src/SafeERC20.ts new file mode 100644 index 00000000..e49c1293 --- /dev/null +++ b/packages/council-artifacts/src/SafeERC20.ts @@ -0,0 +1,10 @@ +export const SafeERC20 = { + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220699331c9689c3e01f9149e2290aa0294955745b460513fba27cfd977844018e564736f6c63430008030033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220699331c9689c3e01f9149e2290aa0294955745b460513fba27cfd977844018e564736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/SimpleProxy.ts b/packages/council-artifacts/src/SimpleProxy.ts new file mode 100644 index 00000000..6d692e42 --- /dev/null +++ b/packages/council-artifacts/src/SimpleProxy.ts @@ -0,0 +1,83 @@ +export const SimpleProxy = { + "_format": "hh-sol-artifact-1", + "contractName": "SimpleProxy", + "sourceName": "contracts/simpleProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_governance", + "type": "address" + }, + { + "internalType": "address", + "name": "_firstImplementation", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "proxyGovernance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxyImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newGovernance", + "type": "address" + } + ], + "name": "resetProxyOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newImplementation", + "type": "address" + } + ], + "name": "upgradeProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161041938038061041983398101604081905261002f9161007c565b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100ae565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008e578182fd5b61009783610060565b91506100a560208401610060565b90509250929050565b61035c806100bd6000396000f3fe60806040526004361061003f5760003560e01c80630c870f911461009157806374474d28146100e75780638c1e1df014610109578063c01cc4d114610136575b368061004757005b60405181600082378082016040526000805473ffffffffffffffffffffffffffffffffffffffff1690808484845af492505060405190503d806000833e8261008d578082fd5b8082f35b34801561009d57600080fd5b506000546100be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f357600080fd5b506101076101023660046102eb565b610156565b005b34801561011557600080fd5b506001546100be9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561014257600080fd5b506101076101513660046102eb565b610223565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a6564000000000000000000000000000000000000000060448201526064016101d3565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156102fc578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031f578182fd5b939250505056fea2646970667358221220df7fe891b767364480831377ad4dbbe2768d2a0d4327e60287d28a2a1cc010e264736f6c63430008030033", + "deployedBytecode": "0x60806040526004361061003f5760003560e01c80630c870f911461009157806374474d28146100e75780638c1e1df014610109578063c01cc4d114610136575b368061004757005b60405181600082378082016040526000805473ffffffffffffffffffffffffffffffffffffffff1690808484845af492505060405190503d806000833e8261008d578082fd5b8082f35b34801561009d57600080fd5b506000546100be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f357600080fd5b506101076101023660046102eb565b610156565b005b34801561011557600080fd5b506001546100be9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561014257600080fd5b506101076101513660046102eb565b610223565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a6564000000000000000000000000000000000000000060448201526064016101d3565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156102fc578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031f578182fd5b939250505056fea2646970667358221220df7fe891b767364480831377ad4dbbe2768d2a0d4327e60287d28a2a1cc010e264736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Spender.ts b/packages/council-artifacts/src/Spender.ts new file mode 100644 index 00000000..03b847cf --- /dev/null +++ b/packages/council-artifacts/src/Spender.ts @@ -0,0 +1,293 @@ +export const Spender = { + "_format": "hh-sol-artifact-1", + "contractName": "Spender", + "sourceName": "contracts/features/Spender.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_smallSpendLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_mediumSpendLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_highSpendLimit", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "blockExpenditure", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "highSpend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "highSpendLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "mediumSpend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mediumSpendLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "removeToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "limits", + "type": "uint256[]" + } + ], + "name": "setLimits", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "smallSpend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "smallSpendLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b50604051610ed3380380610ed383398101604081905261002f9161010f565b600080546001600160a01b0319163317905561006c856001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6100758661009c565b60609390931b6001600160601b0319166080526003919091556004556005555061018f9050565b6000546001600160a01b031633146100ed5760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008060008060c08789031215610127578182fd5b865161013281610177565b602088015190965061014381610177565b604088015190955061015481610177565b80945050606087015192506080870151915060a087015190509295509295509295565b6001600160a01b038116811461018c57600080fd5b50565b60805160601c610d116101c26000396000818161026a0152818161058a015281816106680152610a4e0152610d116000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639c19fa8111610097578063d6343f1411610066578063d6343f141461023c578063ec36ca8c14610245578063fc0c546a14610265578063fe9fbb801461028c57610100565b80639c19fa81146101da578063b6a5d7de146101e3578063b9181611146101f6578063ce0891d51461022957610100565b806327c97fa5116100d357806327c97fa51461015c57806333fe56761461016f5780635919ffb2146101825780638da5cb5b1461019557610100565b806303e41d20146101055780630d9460a01461011a57806313af40351461012d578063157e664a14610140575b600080fd5b610118610113366004610c44565b61029f565b005b610118610128366004610c44565b61030a565b61011861013b366004610af5565b61036c565b61014960035481565b6040519081526020015b60405180910390f35b61011861016a366004610af5565b61041a565b61011861017d366004610c44565b6104cd565b610118610190366004610b16565b6106e9565b6000546101b59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610153565b61014960045481565b6101186101f1366004610af5565b61082b565b610219610204366004610af5565b60016020526000908152604090205460ff1681565b6040519015158152602001610153565b610118610237366004610c44565b6108eb565b61014960055481565b610149610253366004610c14565b60026020526000908152604090205481565b6101b57f000000000000000000000000000000000000000000000000000000000000000081565b61021961029a366004610af5565b61094d565b6102a83361094d565b6102f95760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064015b60405180910390fd5b610306828260045461097c565b5050565b6103133361094d565b61035f5760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102f0565b610306828260035461097c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104815760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105345760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561061c576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156105e157600080fd5b505afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190610c2c565b91505b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610bf4565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107505760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b8060008151811061078a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600381905550806001815181106107d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516004819055508060028151811061081a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160058190555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108925760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b6108e88173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6108f43361094d565b6109405760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102f0565b610306828260055461097c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b43600090815260026020526040902054816109978286610c6f565b11156109e55760405162461bcd60e51b815260206004820152601460248201527f5370656e64204c696d697420457863656564656400000000000000000000000060448201526064016102f0565b6109ef8185610c6f565b436000908152600260205260409081902091909155517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190610bf4565b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097757600080fd5b600060208284031215610b06578081fd5b610b0f82610ad1565b9392505050565b60006020808385031215610b28578182fd5b823567ffffffffffffffff80821115610b3f578384fd5b818501915085601f830112610b52578384fd5b813581811115610b6457610b64610cac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610ba757610ba7610cac565b604052828152858101935084860182860187018a1015610bc5578788fd5b8795505b83861015610be7578035855260019590950194938601938601610bc9565b5098975050505050505050565b600060208284031215610c05578081fd5b81518015158114610b0f578182fd5b600060208284031215610c25578081fd5b5035919050565b600060208284031215610c3d578081fd5b5051919050565b60008060408385031215610c56578081fd5b82359150610c6660208401610ad1565b90509250929050565b60008219821115610ca7577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122004eb5a03f19781eea96ed8a846e68ec2dfe279abfe9971499221248fd2be483b64736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639c19fa8111610097578063d6343f1411610066578063d6343f141461023c578063ec36ca8c14610245578063fc0c546a14610265578063fe9fbb801461028c57610100565b80639c19fa81146101da578063b6a5d7de146101e3578063b9181611146101f6578063ce0891d51461022957610100565b806327c97fa5116100d357806327c97fa51461015c57806333fe56761461016f5780635919ffb2146101825780638da5cb5b1461019557610100565b806303e41d20146101055780630d9460a01461011a57806313af40351461012d578063157e664a14610140575b600080fd5b610118610113366004610c44565b61029f565b005b610118610128366004610c44565b61030a565b61011861013b366004610af5565b61036c565b61014960035481565b6040519081526020015b60405180910390f35b61011861016a366004610af5565b61041a565b61011861017d366004610c44565b6104cd565b610118610190366004610b16565b6106e9565b6000546101b59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610153565b61014960045481565b6101186101f1366004610af5565b61082b565b610219610204366004610af5565b60016020526000908152604090205460ff1681565b6040519015158152602001610153565b610118610237366004610c44565b6108eb565b61014960055481565b610149610253366004610c14565b60026020526000908152604090205481565b6101b57f000000000000000000000000000000000000000000000000000000000000000081565b61021961029a366004610af5565b61094d565b6102a83361094d565b6102f95760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064015b60405180910390fd5b610306828260045461097c565b5050565b6103133361094d565b61035f5760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102f0565b610306828260035461097c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104815760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105345760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561061c576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156105e157600080fd5b505afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190610c2c565b91505b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610bf4565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107505760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b8060008151811061078a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600381905550806001815181106107d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516004819055508060028151811061081a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160058190555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108925760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b6108e88173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6108f43361094d565b6109405760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102f0565b610306828260055461097c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b43600090815260026020526040902054816109978286610c6f565b11156109e55760405162461bcd60e51b815260206004820152601460248201527f5370656e64204c696d697420457863656564656400000000000000000000000060448201526064016102f0565b6109ef8185610c6f565b436000908152600260205260409081902091909155517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190610bf4565b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097757600080fd5b600060208284031215610b06578081fd5b610b0f82610ad1565b9392505050565b60006020808385031215610b28578182fd5b823567ffffffffffffffff80821115610b3f578384fd5b818501915085601f830112610b52578384fd5b813581811115610b6457610b64610cac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610ba757610ba7610cac565b604052828152858101935084860182860187018a1015610bc5578788fd5b8795505b83861015610be7578035855260019590950194938601938601610bc9565b5098975050505050505050565b600060208284031215610c05578081fd5b81518015158114610b0f578182fd5b600060208284031215610c25578081fd5b5035919050565b600060208284031215610c3d578081fd5b5051919050565b60008060408385031215610c56578081fd5b82359150610c6660208401610ad1565b90509250929050565b60008219821115610ca7577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122004eb5a03f19781eea96ed8a846e68ec2dfe279abfe9971499221248fd2be483b64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Storage.ts b/packages/council-artifacts/src/Storage.ts new file mode 100644 index 00000000..9113d02f --- /dev/null +++ b/packages/council-artifacts/src/Storage.ts @@ -0,0 +1,35 @@ +export const Storage = { + "_format": "hh-sol-artifact-1", + "contractName": "Storage", + "sourceName": "contracts/libraries/Storage.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "typeString", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "getPtr", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6102b061003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806387ec29271461003a575b600080fd5b61004d610048366004610184565b61005f565b60405190815260200160405180910390f35b600080836040516020016100739190610238565b604051602081830303815290604052805190602001209050600081846040516020016100a092919061021e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b600082601f8301126100ef578081fd5b813567ffffffffffffffff8082111561010a5761010a61024b565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156101505761015061024b565b81604052838152866020858801011115610168578485fd5b8360208701602083013792830160200193909352509392505050565b60008060408385031215610196578182fd5b823567ffffffffffffffff808211156101ad578384fd5b6101b9868387016100df565b935060208501359150808211156101ce578283fd5b506101db858286016100df565b9150509250929050565b60008151815b8181101561020557602081850181015186830152016101eb565b818111156102135782828601525b509290920192915050565b600083825261023060208301846101e5565b949350505050565b600061024482846101e5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fdd574028e73d7d54dd0666d1fa26a01150af5440e697fc2590842048e31d3e964736f6c63430008030033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806387ec29271461003a575b600080fd5b61004d610048366004610184565b61005f565b60405190815260200160405180910390f35b600080836040516020016100739190610238565b604051602081830303815290604052805190602001209050600081846040516020016100a092919061021e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b600082601f8301126100ef578081fd5b813567ffffffffffffffff8082111561010a5761010a61024b565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156101505761015061024b565b81604052838152866020858801011115610168578485fd5b8360208701602083013792830160200193909352509392505050565b60008060408385031215610196578182fd5b823567ffffffffffffffff808211156101ad578384fd5b6101b9868387016100df565b935060208501359150808211156101ce578283fd5b506101db858286016100df565b9150509250929050565b60008151815b8181101561020557602081850181015186830152016101eb565b818111156102135782828601525b509290920192915050565b600083825261023060208301846101e5565b949350505050565b600061024482846101e5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fdd574028e73d7d54dd0666d1fa26a01150af5440e697fc2590842048e31d3e964736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/TestCoreVoting.ts b/packages/council-artifacts/src/TestCoreVoting.ts new file mode 100644 index 00000000..8ed31f22 --- /dev/null +++ b/packages/council-artifacts/src/TestCoreVoting.ts @@ -0,0 +1,722 @@ +export const TestCoreVoting = { + "_format": "hh-sol-artifact-1", + "contractName": "TestCoreVoting", + "sourceName": "contracts/mocks/TestCoreVoting.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_timelock", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_baseQuorum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minProposalPower", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_gsc", + "type": "address" + }, + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "created", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "execution", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expiration", + "type": "uint256" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint128", + "name": "votingPower", + "type": "uint128" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "castBallot", + "type": "uint8" + } + ], + "indexed": false, + "internalType": "struct CoreVoting.Vote", + "name": "vote", + "type": "tuple" + } + ], + "name": "Voted", + "type": "event" + }, + { + "inputs": [], + "name": "DAY_IN_BLOCKS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "approvedVaults", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseQuorum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_extraVoteTime", + "type": "uint256" + } + ], + "name": "changeExtraVotingTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "name": "changeVaultStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dummyValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "extraVoteTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "_selector", + "type": "bytes4" + } + ], + "name": "getCustomQuorum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_proposalID", + "type": "uint256" + } + ], + "name": "getProposalData", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "uint128", + "name": "", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "", + "type": "uint128" + }, + { + "internalType": "uint128[3]", + "name": "", + "type": "uint128[3]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "getProposalVotingPower", + "outputs": [ + { + "internalType": "uint128[3]", + "name": "", + "type": "uint128[3]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_vault", + "type": "address" + } + ], + "name": "getVaultStatus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minProposalPower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "extraVaultData", + "type": "bytes[]" + }, + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "lastCall", + "type": "uint256" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "ballot", + "type": "uint8" + } + ], + "name": "proposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposalCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "proposals", + "outputs": [ + { + "internalType": "bytes32", + "name": "proposalHash", + "type": "bytes32" + }, + { + "internalType": "uint128", + "name": "created", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "unlock", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "quorum", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "lastCall", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "quorums", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + } + ], + "name": "setCustomQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + } + ], + "name": "setDefaultQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_lockDuration", + "type": "uint256" + } + ], + "name": "setLockDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minProposalPower", + "type": "uint256" + } + ], + "name": "setMinProposalPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newValue", + "type": "uint256" + } + ], + "name": "updateDummy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "votingVaults", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "extraVaultData", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "ballot", + "type": "uint8" + } + ], + "name": "vote", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "votes", + "outputs": [ + { + "internalType": "uint128", + "name": "votingPower", + "type": "uint128" + }, + { + "internalType": "enum CoreVoting.Ballot", + "name": "castBallot", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052620000136119606003620002e0565b600455620000256119606005620002e0565b6005553480156200003557600080fd5b5060405162002e3f38038062002e3f8339810160408190526200005891620001d0565b600080546001600160a01b0319163317815560038590556006849055859085908590859085905b8151811015620000f757600160096000848481518110620000b057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000ee8162000302565b9150506200007f565b5062000103856200013f565b6200012f826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b505050505050505050506200034c565b6000546001600160a01b03163314620001915760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001cb57600080fd5b919050565b600080600080600060a08688031215620001e8578081fd5b620001f386620001b3565b94506020808701519450604087015193506200021260608801620001b3565b60808801519093506001600160401b03808211156200022f578384fd5b818901915089601f83011262000243578384fd5b81518181111562000258576200025862000336565b8060051b604051601f19603f8301168101818110858211171562000280576200028062000336565b604052828152858101935084860182860187018e10156200029f578788fd5b8795505b83861015620002cc57620002b781620001b3565b855260019590950194938601938601620002a3565b508096505050505050509295509295909350565b6000816000190483118215151615620002fd57620002fd62000320565b500290565b600060001982141562000319576200031962000320565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612ae3806200035c6000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c80637d5709eb1161010f578063bd9c75a5116100a2578063d4b8756711610071578063d4b8756714610546578063da35c6641461054f578063f131e5eb14610558578063fe9fbb8014610561576101e4565b8063bd9c75a5146104ed578063c52ea3db14610500578063ca5f9d0614610520578063d1b6762714610533576101e4565b8063aa35fb51116100de578063aa35fb5114610481578063af7a060c14610494578063b6a5d7de146104b7578063b9181611146104ca576101e4565b80637d5709eb146103bc5780638da5cb5b146103cf5780639f2524ee14610414578063a4c9507714610478576101e4565b806327c97fa5116101875780634eb665af116101565780634eb665af146103695780636e7685301461037c57806370469c26146103a0578063771a5323146103a9576101e4565b806327c97fa51461031d57806333968c6614610330578063341a7b42146103435780634392b99c14610356576101e4565b806313af4035116101c357806313af4035146102cb57806315126a3d146102de578063180d97c1146102f15780631c39c96c14610314576101e4565b806214d11d146101e9578063013cf08b146101fe57806304554443146102b4575b600080fd5b6101fc6101f736600461249a565b61059a565b005b61026861020c36600461249a565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b6102bd60045481565b6040519081526020016102ab565b6101fc6102d936600461225d565b61060b565b6101fc6102ec3660046124ca565b6106b9565b6103046102ff36600461225d565b610c63565b60405190151581526020016102ab565b6102bd60035481565b6101fc61032b36600461225d565b610c92565b6102bd61033e3660046122b1565b610d27565b6101fc610351366004612277565b610d3c565b6101fc6103643660046122e3565b610ddb565b6101fc61037736600461249a565b610e98565b61038f61038a36600461249a565b610f04565b6040516102ab959493929190612820565b6102bd600c5481565b6102bd6103b73660046122b1565b610fe9565b6101fc6103ca36600461249a565b611059565b6000546103ef9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ab565b61046a61042236600461231e565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b6040516102ab929190612896565b6102bd60055481565b6102bd61048f36600461241f565b6110c5565b6103046104a236600461225d565b60096020526000908152604090205460ff1681565b6101fc6104c536600461225d565b6117d3565b6103046104d836600461225d565b60016020526000908152604090205460ff1681565b6101fc6104fb366004612347565b611875565b61051361050e36600461249a565b611e5f565b6040516102ab9190612812565b6101fc61052e36600461249a565b600c55565b6101fc61054136600461249a565b611eeb565b6102bd60065481565b6102bd60075481565b6102bd61196081565b61030461056f36600461225d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106065760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106725760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561070c5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e63790000000000000000000000000000000000000000000060448201526064016105fd565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107a25760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b6564000000000000000000000000000000000000000060448201526064016105fd565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166108265760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c792065786563757465640000000000000000000000000060448201526064016105fd565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106108985760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d70000000000000000060448201526064016105fd565b6000838152600a60209081526040918290205491516108bb918591859101612763565b604051602081830303815290604052805190602001201461091e5760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d617463680000000000000000000000000000000000000060448201526064016105fd565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411610943575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1695509093506109f2925061297b565b6109fc919061297b565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff16119050818015610a555750805b610aa15760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74206578656375746500000000000000000000000000000000000060448201526064016105fd565b60005b8551811015610bc8576000868281518110610acf57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610b0d57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610b2291906125e7565b6000604051808303816000865af19150503d8060008114610b5f576040519150601f19603f3d011682016040523d82523d6000602084013e610b64565b606091505b5050905080610bb55760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c656400000000000000000000000000000000000000000060448201526064016105fd565b5080610bc081612a48565b915050610aa4565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604090205460ff165b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf95760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b6000610d338383610fe9565b90505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610da35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e425760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eff5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600455565b600080600080610f12611f80565b6000868152600a60205260408082208054600182015460028301548451606081019586905292956fffffffffffffffffffffffffffffffff8084169670010000000000000000000000000000000094859004821696949093041693600393840193909284928390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411610f7b579050505050505090509450945094509450945091939590929450565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000851684529091528120548061104b575050600354610d36565b9050610d36565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c05760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff166111355760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f7420657869737400000000000000000060448201526064016105fd565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff164311156111a85760405162461bcd60e51b815260206004820152600760248201527f457870697265640000000000000000000000000000000000000000000000000060448201526064016105fd565b6000805b865181101561147c5760006111c28260016129af565b90505b87518110156112aa578781815181106111ee57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061122c57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156112985760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c74000000000000000000000000000000000060448201526064016105fd565b806112a281612a48565b9150506111c5565b50600960008883815181106112cf57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661134f5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c740000000000000000000000000000000060448201526064016105fd565b86818151811061136f57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff168985815181106113e657634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b815260040161140c93929190612603565b602060405180830381600087803b15801561142657600080fd5b505af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145e91906124b2565b611468908361297b565b91508061147481612a48565b9150506111ac565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156115af57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561152557634e487b7160e01b600052602160045260246000fd5b6003811061154357634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff1661157891906129c7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff1681526020018460028111156115f257634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156116aa57634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a6020526040902081906003018460028111156116e457634e487b7160e01b600052602160045260246000fd5b6003811061170257634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611737919061297b565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916117b09190612866565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461183a5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b6118728173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146118c45760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d61746368000000000000000000000060448201526064016105fd565b846119115760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c00000000000000000000000000000000000060448201526064016105fd565b60008686868660405160200161192a9493929190612653565b60408051601f19818403018152919052805160209091012090506000805b87811015611a895760006119c188888481811061197557634e487b7160e01b600052603260045260246000fd5b905060200281019061198791906128c3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5792505050565b90506000600860008c8c868181106119e957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119fe919061225d565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff000000000000000000000000000000000000000000000000000000008616825290925290205490508015611a625780611a66565b6003545b905083811115611a74578093505b50508080611a8190612a48565b915050611948565b50600554600454611a9a90436129af565b611aa491906129af565b8411611af25760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e647300000000000060448201526064016105fd565b6040518060e00160405280838152602001600143611b1091906129f8565b6fffffffffffffffffffffffffffffffff16815260200160045443611b3591906129af565b6fffffffffffffffffffffffffffffffff16815260200160055460045443611b5d91906129af565b611b6791906129af565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611c29576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611bd45790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611cb49060038084019190611f9e565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611d458d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d3c92508e91508f9050612a0f565b600754876110c5565b90506000600654831115611d5b57600654611d5d565b825b3360009081526001602052604090205490915060ff16611dc75780821015611dc75760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f7765720000000000000060448201526064016105fd565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611dfa91906129af565b600554600454611e0a90436129af565b611e1491906129af565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611e4a91906129af565b90915550505050505050505050505050505050565b611e67611f80565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611e8c575094979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f525760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b60405180606001604052806003906020820280368337509192915050565b60028301918390821561204e5791602002820160005b8382111561201057835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611fb4565b801561204c5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302612010565b505b5061205a92915061205e565b5090565b5b8082111561205a576000815560010161205f565b600061208661208184612957565b612926565b83815290506020808201908360005b868110156121155781358601601f89818301126120b157600080fd5b813567ffffffffffffffff8111156120cb576120cb612a97565b6120dc86601f198484011601612926565b91508082528a868285010111156120f257600080fd5b808684018784013760009082018601528552509282019290820190600101612095565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c8d57600080fd5b60008083601f840112612155578182fd5b50813567ffffffffffffffff81111561216c578182fd5b6020830191508360208260051b850101111561218757600080fd5b9250929050565b600082601f83011261219e578081fd5b813560206121ae61208183612957565b80838252828201915082860187848660051b89010111156121cd578586fd5b855b858110156121f2576121e082612120565b845292840192908401906001016121cf565b5090979650505050505050565b600082601f83011261220f578081fd5b610d3383833560208501612073565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c8d57600080fd5b803560038110610c8d57600080fd5b60006020828403121561226e578081fd5b610d3382612120565b60008060408385031215612289578081fd5b61229283612120565b9150602083013580151581146122a6578182fd5b809150509250929050565b600080604083850312156122c3578182fd5b6122cc83612120565b91506122da6020840161221e565b90509250929050565b6000806000606084860312156122f7578081fd5b61230084612120565b925061230e6020850161221e565b9150604084013590509250925092565b60008060408385031215612330578182fd5b61233983612120565b946020939093013593505050565b60008060008060008060008060008060c08b8d031215612365578586fd5b8a3567ffffffffffffffff8082111561237c578788fd5b6123888e838f01612144565b909c509a5060208d01359150808211156123a0578788fd5b6123ac8e838f01612144565b909a50985060408d01359150808211156123c4578788fd5b6123d08e838f01612144565b909850965060608d01359150808211156123e8578586fd5b506123f58d828e01612144565b90955093505060808b0135915061240e60a08c0161224e565b90509295989b9194979a5092959850565b60008060008060808587031215612434578384fd5b843567ffffffffffffffff8082111561244b578586fd5b6124578883890161218e565b9550602087013591508082111561246c578485fd5b50612479878288016121ff565b9350506040850135915061248f6060860161224e565b905092959194509250565b6000602082840312156124ab578081fd5b5035919050565b6000602082840312156124c3578081fd5b5051919050565b6000806000606084860312156124de578081fd5b83359250602084013567ffffffffffffffff808211156124fc578283fd5b6125088783880161218e565b9350604086013591508082111561251d578283fd5b5061252a868287016121ff565b9150509250925092565b8060005b60038110156125695781516fffffffffffffffffffffffffffffffff16845260209384019390910190600101612538565b50505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526125b1816020860160208601612a1c565b601f01601f19169290920160200192915050565b600381106125e357634e487b7160e01b600052602160045260246000fd5b9052565b600082516125f9818460208701612a1c565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261264a6060830184612599565b95945050505050565b6040808252810184905260008560608301825b878110156126aa576126998261267b85612120565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b602093909301929150600101612666565b506020915083810382850152808582528282019050828660051b83010187855b8881101561275357601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261270c578788fd5b8a01803567ffffffffffffffff811115612724578889fd5b8036038c1315612732578889fd5b61273f85828a850161256f565b9588019594505050908501906001016126ca565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156127b457815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612780565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561280357601f198684030185526127f1838351612599565b948701949250908601906001016127d5565b50909998505050505050505050565b60608101610d368284612534565b8581526fffffffffffffffffffffffffffffffff858116602083015284811660408301528316606082015260e0810161285c6080830184612534565b9695505050505050565b81546fffffffffffffffffffffffffffffffff81168252604082019061105260208401608083901c60ff166125c5565b6fffffffffffffffffffffffffffffffff83168152604081016128bc60208301846125c5565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128f7578283fd5b83018035915067ffffffffffffffff821115612911578283fd5b60200191503681900382131561218757600080fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561294f5761294f612a97565b604052919050565b600067ffffffffffffffff82111561297157612971612a97565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156129a6576129a6612a81565b01949350505050565b600082198211156129c2576129c2612a81565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156129f0576129f0612a81565b039392505050565b600082821015612a0a57612a0a612a81565b500390565b6000610d33368484612073565b60005b83811015612a37578181015183820152602001612a1f565b838111156125695750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a7a57612a7a612a81565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220bee20769a8dff9c5c02d39aecd954e520db74097c2812048fdbbfe77ddd358d064736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e45760003560e01c80637d5709eb1161010f578063bd9c75a5116100a2578063d4b8756711610071578063d4b8756714610546578063da35c6641461054f578063f131e5eb14610558578063fe9fbb8014610561576101e4565b8063bd9c75a5146104ed578063c52ea3db14610500578063ca5f9d0614610520578063d1b6762714610533576101e4565b8063aa35fb51116100de578063aa35fb5114610481578063af7a060c14610494578063b6a5d7de146104b7578063b9181611146104ca576101e4565b80637d5709eb146103bc5780638da5cb5b146103cf5780639f2524ee14610414578063a4c9507714610478576101e4565b806327c97fa5116101875780634eb665af116101565780634eb665af146103695780636e7685301461037c57806370469c26146103a0578063771a5323146103a9576101e4565b806327c97fa51461031d57806333968c6614610330578063341a7b42146103435780634392b99c14610356576101e4565b806313af4035116101c357806313af4035146102cb57806315126a3d146102de578063180d97c1146102f15780631c39c96c14610314576101e4565b806214d11d146101e9578063013cf08b146101fe57806304554443146102b4575b600080fd5b6101fc6101f736600461249a565b61059a565b005b61026861020c36600461249a565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b6102bd60045481565b6040519081526020016102ab565b6101fc6102d936600461225d565b61060b565b6101fc6102ec3660046124ca565b6106b9565b6103046102ff36600461225d565b610c63565b60405190151581526020016102ab565b6102bd60035481565b6101fc61032b36600461225d565b610c92565b6102bd61033e3660046122b1565b610d27565b6101fc610351366004612277565b610d3c565b6101fc6103643660046122e3565b610ddb565b6101fc61037736600461249a565b610e98565b61038f61038a36600461249a565b610f04565b6040516102ab959493929190612820565b6102bd600c5481565b6102bd6103b73660046122b1565b610fe9565b6101fc6103ca36600461249a565b611059565b6000546103ef9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ab565b61046a61042236600461231e565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b6040516102ab929190612896565b6102bd60055481565b6102bd61048f36600461241f565b6110c5565b6103046104a236600461225d565b60096020526000908152604090205460ff1681565b6101fc6104c536600461225d565b6117d3565b6103046104d836600461225d565b60016020526000908152604090205460ff1681565b6101fc6104fb366004612347565b611875565b61051361050e36600461249a565b611e5f565b6040516102ab9190612812565b6101fc61052e36600461249a565b600c55565b6101fc61054136600461249a565b611eeb565b6102bd60065481565b6102bd60075481565b6102bd61196081565b61030461056f36600461225d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106065760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106725760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561070c5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e63790000000000000000000000000000000000000000000060448201526064016105fd565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107a25760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b6564000000000000000000000000000000000000000060448201526064016105fd565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166108265760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c792065786563757465640000000000000000000000000060448201526064016105fd565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106108985760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d70000000000000000060448201526064016105fd565b6000838152600a60209081526040918290205491516108bb918591859101612763565b604051602081830303815290604052805190602001201461091e5760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d617463680000000000000000000000000000000000000060448201526064016105fd565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411610943575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1695509093506109f2925061297b565b6109fc919061297b565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff16119050818015610a555750805b610aa15760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74206578656375746500000000000000000000000000000000000060448201526064016105fd565b60005b8551811015610bc8576000868281518110610acf57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610b0d57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610b2291906125e7565b6000604051808303816000865af19150503d8060008114610b5f576040519150601f19603f3d011682016040523d82523d6000602084013e610b64565b606091505b5050905080610bb55760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c656400000000000000000000000000000000000000000060448201526064016105fd565b5080610bc081612a48565b915050610aa4565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604090205460ff165b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf95760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b6000610d338383610fe9565b90505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610da35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e425760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eff5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600455565b600080600080610f12611f80565b6000868152600a60205260408082208054600182015460028301548451606081019586905292956fffffffffffffffffffffffffffffffff8084169670010000000000000000000000000000000094859004821696949093041693600393840193909284928390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411610f7b579050505050505090509450945094509450945091939590929450565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000851684529091528120548061104b575050600354610d36565b9050610d36565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c05760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff166111355760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f7420657869737400000000000000000060448201526064016105fd565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff164311156111a85760405162461bcd60e51b815260206004820152600760248201527f457870697265640000000000000000000000000000000000000000000000000060448201526064016105fd565b6000805b865181101561147c5760006111c28260016129af565b90505b87518110156112aa578781815181106111ee57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061122c57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156112985760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c74000000000000000000000000000000000060448201526064016105fd565b806112a281612a48565b9150506111c5565b50600960008883815181106112cf57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661134f5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c740000000000000000000000000000000060448201526064016105fd565b86818151811061136f57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff168985815181106113e657634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b815260040161140c93929190612603565b602060405180830381600087803b15801561142657600080fd5b505af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145e91906124b2565b611468908361297b565b91508061147481612a48565b9150506111ac565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156115af57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561152557634e487b7160e01b600052602160045260246000fd5b6003811061154357634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff1661157891906129c7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff1681526020018460028111156115f257634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156116aa57634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a6020526040902081906003018460028111156116e457634e487b7160e01b600052602160045260246000fd5b6003811061170257634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611737919061297b565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916117b09190612866565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461183a5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b6118728173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146118c45760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d61746368000000000000000000000060448201526064016105fd565b846119115760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c00000000000000000000000000000000000060448201526064016105fd565b60008686868660405160200161192a9493929190612653565b60408051601f19818403018152919052805160209091012090506000805b87811015611a895760006119c188888481811061197557634e487b7160e01b600052603260045260246000fd5b905060200281019061198791906128c3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5792505050565b90506000600860008c8c868181106119e957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119fe919061225d565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff000000000000000000000000000000000000000000000000000000008616825290925290205490508015611a625780611a66565b6003545b905083811115611a74578093505b50508080611a8190612a48565b915050611948565b50600554600454611a9a90436129af565b611aa491906129af565b8411611af25760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e647300000000000060448201526064016105fd565b6040518060e00160405280838152602001600143611b1091906129f8565b6fffffffffffffffffffffffffffffffff16815260200160045443611b3591906129af565b6fffffffffffffffffffffffffffffffff16815260200160055460045443611b5d91906129af565b611b6791906129af565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611c29576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611bd45790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611cb49060038084019190611f9e565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611d458d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d3c92508e91508f9050612a0f565b600754876110c5565b90506000600654831115611d5b57600654611d5d565b825b3360009081526001602052604090205490915060ff16611dc75780821015611dc75760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f7765720000000000000060448201526064016105fd565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611dfa91906129af565b600554600454611e0a90436129af565b611e1491906129af565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611e4a91906129af565b90915550505050505050505050505050505050565b611e67611f80565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611e8c575094979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f525760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b60405180606001604052806003906020820280368337509192915050565b60028301918390821561204e5791602002820160005b8382111561201057835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611fb4565b801561204c5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302612010565b505b5061205a92915061205e565b5090565b5b8082111561205a576000815560010161205f565b600061208661208184612957565b612926565b83815290506020808201908360005b868110156121155781358601601f89818301126120b157600080fd5b813567ffffffffffffffff8111156120cb576120cb612a97565b6120dc86601f198484011601612926565b91508082528a868285010111156120f257600080fd5b808684018784013760009082018601528552509282019290820190600101612095565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c8d57600080fd5b60008083601f840112612155578182fd5b50813567ffffffffffffffff81111561216c578182fd5b6020830191508360208260051b850101111561218757600080fd5b9250929050565b600082601f83011261219e578081fd5b813560206121ae61208183612957565b80838252828201915082860187848660051b89010111156121cd578586fd5b855b858110156121f2576121e082612120565b845292840192908401906001016121cf565b5090979650505050505050565b600082601f83011261220f578081fd5b610d3383833560208501612073565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c8d57600080fd5b803560038110610c8d57600080fd5b60006020828403121561226e578081fd5b610d3382612120565b60008060408385031215612289578081fd5b61229283612120565b9150602083013580151581146122a6578182fd5b809150509250929050565b600080604083850312156122c3578182fd5b6122cc83612120565b91506122da6020840161221e565b90509250929050565b6000806000606084860312156122f7578081fd5b61230084612120565b925061230e6020850161221e565b9150604084013590509250925092565b60008060408385031215612330578182fd5b61233983612120565b946020939093013593505050565b60008060008060008060008060008060c08b8d031215612365578586fd5b8a3567ffffffffffffffff8082111561237c578788fd5b6123888e838f01612144565b909c509a5060208d01359150808211156123a0578788fd5b6123ac8e838f01612144565b909a50985060408d01359150808211156123c4578788fd5b6123d08e838f01612144565b909850965060608d01359150808211156123e8578586fd5b506123f58d828e01612144565b90955093505060808b0135915061240e60a08c0161224e565b90509295989b9194979a5092959850565b60008060008060808587031215612434578384fd5b843567ffffffffffffffff8082111561244b578586fd5b6124578883890161218e565b9550602087013591508082111561246c578485fd5b50612479878288016121ff565b9350506040850135915061248f6060860161224e565b905092959194509250565b6000602082840312156124ab578081fd5b5035919050565b6000602082840312156124c3578081fd5b5051919050565b6000806000606084860312156124de578081fd5b83359250602084013567ffffffffffffffff808211156124fc578283fd5b6125088783880161218e565b9350604086013591508082111561251d578283fd5b5061252a868287016121ff565b9150509250925092565b8060005b60038110156125695781516fffffffffffffffffffffffffffffffff16845260209384019390910190600101612538565b50505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526125b1816020860160208601612a1c565b601f01601f19169290920160200192915050565b600381106125e357634e487b7160e01b600052602160045260246000fd5b9052565b600082516125f9818460208701612a1c565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261264a6060830184612599565b95945050505050565b6040808252810184905260008560608301825b878110156126aa576126998261267b85612120565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b602093909301929150600101612666565b506020915083810382850152808582528282019050828660051b83010187855b8881101561275357601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261270c578788fd5b8a01803567ffffffffffffffff811115612724578889fd5b8036038c1315612732578889fd5b61273f85828a850161256f565b9588019594505050908501906001016126ca565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156127b457815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612780565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561280357601f198684030185526127f1838351612599565b948701949250908601906001016127d5565b50909998505050505050505050565b60608101610d368284612534565b8581526fffffffffffffffffffffffffffffffff858116602083015284811660408301528316606082015260e0810161285c6080830184612534565b9695505050505050565b81546fffffffffffffffffffffffffffffffff81168252604082019061105260208401608083901c60ff166125c5565b6fffffffffffffffffffffffffffffffff83168152604081016128bc60208301846125c5565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128f7578283fd5b83018035915067ffffffffffffffff821115612911578283fd5b60200191503681900382131561218757600080fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561294f5761294f612a97565b604052919050565b600067ffffffffffffffff82111561297157612971612a97565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156129a6576129a6612a81565b01949350505050565b600082198211156129c2576129c2612a81565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156129f0576129f0612a81565b039392505050565b600082821015612a0a57612a0a612a81565b500390565b6000610d33368484612073565b60005b83811015612a37578181015183820152602001612a1f565b838111156125695750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a7a57612a7a612a81565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220bee20769a8dff9c5c02d39aecd954e520db74097c2812048fdbbfe77ddd358d064736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/TestTreasury.ts b/packages/council-artifacts/src/TestTreasury.ts new file mode 100644 index 00000000..94fa3781 --- /dev/null +++ b/packages/council-artifacts/src/TestTreasury.ts @@ -0,0 +1,206 @@ +export const TestTreasury = { + "_format": "hh-sol-artifact-1", + "contractName": "TestTreasury", + "sourceName": "contracts/mocks/TestTreasury.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_governance", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dummy", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_callData", + "type": "bytes" + } + ], + "name": "genericCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "sendFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newDummy", + "type": "uint256" + } + ], + "name": "updateDummy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610bc8380380610bc883398101604081905261002f916100c5565b600080546001600160a01b031916331790558061004b81610052565b50506100f3565b6000546001600160a01b031633146100a35760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156100d6578081fd5b81516001600160a01b03811681146100ec578182fd5b9392505050565b610ac6806101026000396000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063ca5f9d061161004e578063ca5f9d0614610229578063e1f21c6714610249578063fe9fbb8014610269576100c7565b80638da5cb5b14610177578063b6a5d7de146101c9578063b9181611146101e9576100c7565b806332e43a11116100a557806332e43a111461010e5780634650c308146101375780638522d1b214610157576100c7565b806313af4035146100cc57806327c97fa5146100ee576100c7565b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e7366004610933565b610289565b005b3480156100fa57600080fd5b506100ec610109366004610933565b610356565b34801561011a57600080fd5b5061012460025481565b6040519081526020015b60405180910390f35b34801561014357600080fd5b506100ec61015236600461098f565b610423565b34801561016357600080fd5b506100ec610172366004610a0d565b610580565b34801561018357600080fd5b506000546101a49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b3480156101d557600080fd5b506100ec6101e4366004610933565b61072a565b3480156101f557600080fd5b50610219610204366004610933565b60016020526000908152604090205460ff1681565b604051901515815260200161012e565b34801561023557600080fd5b506100ec610244366004610a68565b600255565b34801561025557600080fd5b506100ec610264366004610954565b610804565b34801561027557600080fd5b50610219610284366004610933565b6108e0565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104cd929190610a80565b6000604051808303816000865af19150503d806000811461050a576040519150601f19603f3d011682016040523d82523d6000602084013e61050f565b606091505b505090508061057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610306565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610601576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561067c5760405173ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050158015610676573d6000803e3d6000fd5b50610725565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044015b602060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190610a48565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b6108018173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016106d3565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461090a57600080fd5b600060208284031215610944578081fd5b61094d8261090f565b9392505050565b600080600060608486031215610968578182fd5b6109718461090f565b925061097f6020850161090f565b9150604084013590509250925092565b6000806000604084860312156109a3578283fd5b6109ac8461090f565b9250602084013567ffffffffffffffff808211156109c8578384fd5b818601915086601f8301126109db578384fd5b8135818111156109e9578485fd5b8760208285010111156109fa578485fd5b6020830194508093505050509250925092565b600080600060608486031215610a21578283fd5b610a2a8461090f565b925060208401359150610a3f6040850161090f565b90509250925092565b600060208284031215610a59578081fd5b8151801515811461094d578182fd5b600060208284031215610a79578081fd5b5035919050565b600082848337910190815291905056fea2646970667358221220f5cd036d7d1571989579121d0d777d4fc772767caf693e3aaada371ac03a16e664736f6c63430008030033", + "deployedBytecode": "0x6080604052600436106100c05760003560e01c80638da5cb5b11610074578063ca5f9d061161004e578063ca5f9d0614610229578063e1f21c6714610249578063fe9fbb8014610269576100c7565b80638da5cb5b14610177578063b6a5d7de146101c9578063b9181611146101e9576100c7565b806332e43a11116100a557806332e43a111461010e5780634650c308146101375780638522d1b214610157576100c7565b806313af4035146100cc57806327c97fa5146100ee576100c7565b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e7366004610933565b610289565b005b3480156100fa57600080fd5b506100ec610109366004610933565b610356565b34801561011a57600080fd5b5061012460025481565b6040519081526020015b60405180910390f35b34801561014357600080fd5b506100ec61015236600461098f565b610423565b34801561016357600080fd5b506100ec610172366004610a0d565b610580565b34801561018357600080fd5b506000546101a49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b3480156101d557600080fd5b506100ec6101e4366004610933565b61072a565b3480156101f557600080fd5b50610219610204366004610933565b60016020526000908152604090205460ff1681565b604051901515815260200161012e565b34801561023557600080fd5b506100ec610244366004610a68565b600255565b34801561025557600080fd5b506100ec610264366004610954565b610804565b34801561027557600080fd5b50610219610284366004610933565b6108e0565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104cd929190610a80565b6000604051808303816000865af19150503d806000811461050a576040519150601f19603f3d011682016040523d82523d6000602084013e61050f565b606091505b505090508061057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610306565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610601576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561067c5760405173ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050158015610676573d6000803e3d6000fd5b50610725565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044015b602060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190610a48565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b6108018173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016106d3565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461090a57600080fd5b600060208284031215610944578081fd5b61094d8261090f565b9392505050565b600080600060608486031215610968578182fd5b6109718461090f565b925061097f6020850161090f565b9150604084013590509250925092565b6000806000604084860312156109a3578283fd5b6109ac8461090f565b9250602084013567ffffffffffffffff808211156109c8578384fd5b818601915086601f8301126109db578384fd5b8135818111156109e9578485fd5b8760208285010111156109fa578485fd5b6020830194508093505050509250925092565b600080600060608486031215610a21578283fd5b610a2a8461090f565b925060208401359150610a3f6040850161090f565b90509250925092565b600060208284031215610a59578081fd5b8151801515811461094d578182fd5b600060208284031215610a79578081fd5b5035919050565b600082848337910190815291905056fea2646970667358221220f5cd036d7d1571989579121d0d777d4fc772767caf693e3aaada371ac03a16e664736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/TestVestingVault.ts b/packages/council-artifacts/src/TestVestingVault.ts new file mode 100644 index 00000000..f8585ce2 --- /dev/null +++ b/packages/council-artifacts/src/TestVestingVault.ts @@ -0,0 +1,423 @@ +export const TestVestingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "TestVestingVault", + "sourceName": "contracts/mocks/TestVestingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_stale", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [], + "name": "acceptGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "uint128", + "name": "_amount", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_cliff", + "type": "uint128" + }, + { + "internalType": "address", + "name": "_delegatee", + "type": "address" + } + ], + "name": "addGrantAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_multiplier", + "type": "uint256" + } + ], + "name": "changeUnvestedMultiplier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "getGrant", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "allocation", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "withdrawn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "created", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "cliff", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "latestVotingPower", + "type": "uint128" + }, + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256[2]", + "name": "range", + "type": "uint256[2]" + } + ], + "internalType": "struct VestingVaultStorage.Grant", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + }, + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "removeGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "setTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timelock", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unassigned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unvestedMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "updateVotingPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002ea238038062002ea2833981016040819052620000349162000050565b60609190911b6001600160601b03191660805260a0526200008a565b6000806040838503121562000063578182fd5b82516001600160a01b03811681146200007a578283fd5b6020939093015192949293505050565b60805160601c60a051612dbe620000e4600039600081816102a00152611bdc015260008181610308015281816104470152818161074001528181610a5f01528181610b1f01528181610f5601526118ea0152612dbe6000f3fe608060405234801561001057600080fd5b50600436106101765760003560e01c8063747c1255116100d8578063c2c94b881161008c578063e7d2028311610066578063e7d20283146102dd578063e91f3235146102f0578063fc0c546a1461030357610176565b8063c2c94b881461029b578063d0ebdbe7146102c2578063d33219b4146102d557610176565b8063bdacb303116100bd578063bdacb30314610260578063bf31dbf414610273578063c1006f4f1461029357610176565b8063747c12551461023a578063b6b55f251461024d57610176565b8063485cc9551161012f5780635c19a95c116101145780635c19a95c146101fe5780635f389a9d1461021157806373afce6e1461022457610176565b8063485cc955146101e35780634e71d92d146101f657610176565b8063267406cb11610160578063267406cb146101a35780633e0bdaf7146101b6578063481c6a75146101be57610176565b8062f714ce1461017b5780632168034d14610190575b600080fd5b61018e6101893660046129e2565b61032a565b005b61018e61019e3660046129ca565b6104c9565b61018e6101b1366004612840565b6105c3565b61018e610987565b6101c6610c34565b6040516001600160a01b0390911681526020015b60405180910390f35b61018e6101f136600461285a565b610c44565b61018e610e4a565b61018e61020c366004612840565b61109e565b61018e61021f36600461288c565b61139b565b61022c6117eb565b6040519081526020016101da565b61018e610248366004612840565b6117fb565b61018e61025b3660046129ca565b61182a565b61018e61026e366004612840565b61196e565b610286610281366004612840565b611a0f565b6040516101da9190612a6c565b61022c611aee565b61022c7f000000000000000000000000000000000000000000000000000000000000000081565b61018e6102d0366004612840565b611af8565b6101c6611b99565b61022c6102eb3660046128ff565b611ba3565b61022c6102fe366004612928565b611bc5565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b610332611c14565b516001600160a01b0316331461038f5760405162461bcd60e51b815260206004820152600860248201527f216d616e6167657200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610399611c7e565b905082816000015410156103ef5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610386565b828160000160008282546104039190612d13565b90915550506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561048b57600080fd5b505af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c391906129aa565b50505050565b6104d1611cc3565b516001600160a01b031633146105295760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b606481111561057a5760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610386565b6105c06105bb6040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b829055565b50565b6105cb611c14565b516001600160a01b031633146106235760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b600061062d611d89565b6001600160a01b0383811660009081526020928352604080822081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116978301979097526001830154808816838601528190048716606083015260028084015480891660808501529190910490961660a0820152600382015490941660c085015281518083019283905290955091936106fe9392869260e0850192600485019182845b8154815260200190600101908083116106dd57505050505081525050611dc9565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be91906129aa565b5060006107c9611c7e565b83549091506000906107f990849070010000000000000000000000000000000090046001600160801b0316612b1f565b845461080e91906001600160801b0316612d13565b9050808260000160008282546108249190612b1f565b9091555060009050610834611ead565b60038601549091506000906108539083906001600160a01b0316611f00565b6003870154600288015491925061089f916001600160a01b03909116906108979070010000000000000000000000000000000090046001600160801b031684612d13565b849190611f8b565b600386015460028701546001600160a01b038981169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906109029070010000000000000000000000000000000090046001600160801b0316600019612b71565b60405190815260200160405180910390a361091b611d89565b6001600160a01b0397909716600090815260209790975250506040852085815560018101869055600281018690556003810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600481018690556005019490945550505050565b6000610991611d89565b3360009081526020919091526040812080549092506109cf906001600160801b03700100000000000000000000000000000000820481169116612ceb565b6001600160801b0316905060008111610a2a5760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610386565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906129aa565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba391906129aa565b506000610bae61209a565b516040805180820190915281815290915060208101610bcd8484612b1f565b9052610bdf9060048501906002612756565b50610c2f610c216040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611d10565b610c2b8484612b1f565b9055565b505050565b6000610c3e611c14565b51905090565b610c826040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611d10565b5415610cd05760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610386565b610d17610d116040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611d10565b60019055565b610d8b610d586040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b610dff610dcc6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b610e46610e406040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b60649055565b5050565b6000610e54611d89565b3360009081526020918252604080822081516101008101835281546001600160801b03808216835270010000000000000000000000000000000091829004811683880152600184015480821684870152829004811660608401526002808501548083166080860152929092041660a083015260038301546001600160a01b031660c083015283518085019485905260048401805482529397509495610f1e959294889460e0870194939092909190600587019085018083116106dd57505050505081525050611dc9565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda91906129aa565b5081548190839060109061100c90849070010000000000000000000000000000000090046001600160801b0316612af4565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008260040160016002811061106f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01541115611094578060048301600101600082825461108e9190612d13565b90915550505b610e463383612136565b60006110a8611d89565b3360009081526020919091526040902060038101549091506001600160a01b038381169116141561111b5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610386565b6000611125611ead565b60038301549091506000906111449083906001600160a01b0316611f00565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c083015282518084019384905293945060009361120193889260e08501929160048501919082845b8154815260200190600101908083116111e05750505050508152505061232d565b6003850154600286015491925061124d916001600160a01b03909116906112459070010000000000000000000000000000000090046001600160801b031685612d13565b859190611f8b565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906112ae9070010000000000000000000000000000000090046001600160801b0316600019612b71565b60405190815260200160405180910390a360006112cb8487611f00565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e08460405161131291815260200190565b60405180910390a3611330866113288484612b1f565b869190611f8b565b506002840180546001600160801b03928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b6113a3611c14565b516001600160a01b031633146113fb5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b826001600160801b0316826001600160801b03161115801561142f5750826001600160801b0316846001600160801b031611155b61147b5760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610386565b6001600160801b03841661148d574393505b6000611497611c7e565b905060006114a361239e565b9050866001600160801b0316826000015410156115025760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610386565b600061150c611d89565b6001600160a01b038a1660009081526020919091526040902080549091506001600160801b0316156115805760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610386565b6001600160a01b038416156115955783611597565b885b93506000606483600001518a6115ad9190612c29565b6115b79190612b37565b90506040518061010001604052808a6001600160801b0316815260200160006001600160801b03168152602001896001600160801b03168152602001886001600160801b03168152602001876001600160801b03168152602001826001600160801b03168152602001866001600160a01b031681526020016040518060400160405280600081526020016000815250815250611651611d89565b6001600160a01b038c8116600090815260209283526040908190208451938501516001600160801b0394851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e083015161171691600484019190612756565b50905050886001600160801b03168460000160008282546117379190612d13565b9091555060009050611747611ead565b60038401549091506000906117669083906001600160a01b0316611f00565b600385015490915061178e906001600160a01b03166108976001600160801b03861684612b1f565b60038401546040516001600160801b03851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b60006117f5611c7e565b54905090565b6000611805611d89565b6001600160a01b0383166000908152602091909152604090209050610e468282612136565b611832611c14565b516001600160a01b0316331461188a5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b6000611894611c7e565b9050818160000160008282546118aa9190612b1f565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2f91906129aa565b611976611cc3565b516001600160a01b031633146119ce5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b6105c0610dcc6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b611a17612794565b611a1f611d89565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b815481526020019060010190808311611aca5750505050508152505090505b919050565b6000610c3e61239e565b611b00611cc3565b516001600160a01b03163314611b585760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b6105c0610dcc6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b6000610c3e611cc3565b600080611bae611ead565b9050611bbb8185856123eb565b9150505b92915050565b600080611bd0611ead565b9050611c0a8686611c017f000000000000000000000000000000000000000000000000000000000000000043612d13565b84929190612444565b9695505050505050565b604080516020810190915260008152611c616040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b604080516020810190915290546001600160a01b03168152905090565b6000611cbe6040518060400160405280600a81526020017f756e61737369676e656400000000000000000000000000000000000000000000815250611d10565b905090565b604080516020810190915260008152611c616040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320905060008184604051602001611d4b929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6000611cbe6040518060400160405280600681526020017f6772616e747300000000000000000000000000000000000000000000000000008152506124b2565b600081608001516001600160801b0316431080611df2575081604001516001600160801b031643105b15611dff57506000611ae9565b81606001516001600160801b03164310611e345760208201518251611e249190612ceb565b6001600160801b03169050611ae9565b600082604001518360600151611e4a9190612ceb565b6001600160801b031683604001516001600160801b031643611e6c9190612d13565b8451611e8191906001600160801b0316612c58565b611e8b9190612b5d565b905082602001516001600160801b031681611ea69190612d13565b9392505050565b604080518082019091526060815260006020820152611cbe6040518060400160405280600b81526020017f766f74696e67506f7765720000000000000000000000000000000000000000008152506124ed565b600080611f0e846020015190565b6001600160a01b03841660009081526020919091526040902080549091506001600160801b031680611f4557600092505050611bbf565b6000611f8083611f56600185612d13565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115611ff35760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610386565b6000612000846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916001600160801b039091169081156120525761204e86611f56600185612d13565b5090505b814382141561206957612066600184612d13565b90505b848160018901015543821461208d5761208d8785612088866001612b1f565b612526565b5050505050505050505050565b6040805160208101909152600081526120e76040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611d10565b604080516020810190915290548152905090565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b905060008184604051602001611d4b929190612a27565b6000612140611ead565b600383015490915060009061215f9083906001600160a01b0316611f00565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c0830152825180840190935292935060009261222092879160e08401919060048401908282826020028201918154815260200190600101908083116111e05750505050508152505061232d565b60028501549091506000906122529070010000000000000000000000000000000090046001600160801b031683612c77565b9050806122625750505050610e46565b600081131561228c576003850154612287906001600160a01b03166113288386612b1f565b6122b4565b60038501546122b4906001600160a01b03166122aa83600019612b71565b6113289086612d13565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546001600160801b0392831670010000000000000000000000000000000002921691909117905550505050565b60008061233983611dc9565b9050600083602001516001600160801b0316826123569190612b1f565b845161236b91906001600160801b0316612d13565b9050606461237761239e565b516123829083612c58565b61238c9190612b5d565b6123969083612b1f565b949350505050565b6040805160208101909152600081526120e76040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b6000806123f9856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916001600160801b03909116906124368488838686612546565b9a9950505050505050505050565b600080612452866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916001600160801b039091169080612490858a8a8787612546565b9150915083821115612436576124a78483876126eb565b612436858385612526565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c905060008184604051602001611d4b929190612a27565b604080518082019091526060815260006020820152600061250d8361271b565b6040805180820190915293845260208401525090919050565b80821061253257600080fd5b6001600160801b031660809190911b179055565b600080826125965760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610386565b858511156125a357600080fd5b8284106125af57600080fd5b60006125bc600185612d13565b90508460005b82821461266057600060026125d78585612b1f565b6125e2906001612b1f565b6125ec9190612b5d565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b82141561262e579296509194506126e19350505050565b8b82101561264a578a821015612642578293505b829450612658565b612655600184612d13565b95505b5050506125c2565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156126d75760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610386565b9195509093505050505b9550959350505050565b818311156126f857600080fd5b60018101835b83811015612714576000828201556001016126fe565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001611d4b929190612a27565b8260028101928215612784579160200282015b82811115612784578251825591602001919060010190612769565b506127909291506127df565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e081016127da6127f4565b905290565b5b8082111561279057600081556001016127e0565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114611ae957600080fd5b80356001600160801b0381168114611ae957600080fd5b600060208284031215612851578081fd5b611ea682612812565b6000806040838503121561286c578081fd5b61287583612812565b915061288360208401612812565b90509250929050565b60008060008060008060c087890312156128a4578182fd5b6128ad87612812565b95506128bb60208801612829565b94506128c960408801612829565b93506128d760608801612829565b92506128e560808801612829565b91506128f360a08801612812565b90509295509295509295565b60008060408385031215612911578182fd5b61291a83612812565b946020939093013593505050565b6000806000806060858703121561293d578384fd5b61294685612812565b935060208501359250604085013567ffffffffffffffff80821115612969578384fd5b818701915087601f83011261297c578384fd5b81358181111561298a578485fd5b88602082850101111561299b578485fd5b95989497505060200194505050565b6000602082840312156129bb578081fd5b81518015158114611ea6578182fd5b6000602082840312156129db578081fd5b5035919050565b600080604083850312156129f4578182fd5b8235915061288360208401612812565b8060005b60028110156104c3578151845260209384019390910190600101612a08565b60008382528251815b81811015612a4c57602081860181015185830182015201612a30565b81811115612a5d5782602083860101525b50919091016020019392505050565b6000610120820190506001600160801b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c0830151612ada60c08401826001600160a01b03169052565b5060e0830151612aed60e0840182612a04565b5092915050565b60006001600160801b03808316818516808303821115612b1657612b16612d2a565b01949350505050565b60008219821115612b3257612b32612d2a565b500190565b60006001600160801b0380841680612b5157612b51612d59565b92169190910492915050565b600082612b6c57612b6c612d59565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615612bb057612bb0612d2a565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615612bea57612bea612d2a565b858712925087820587128484161615612c0557612c05612d2a565b87850587128184161615612c1b57612c1b612d2a565b505050929093029392505050565b60006001600160801b0380831681851681830481118215151615612c4f57612c4f612d2a565b02949350505050565b6000816000190483118215151615612c7257612c72612d2a565b500290565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615612cb157612cb1612d2a565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615612ce557612ce5612d2a565b50500390565b60006001600160801b0383811690831681811015612d0b57612d0b612d2a565b039392505050565b600082821015612d2557612d25612d2a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212206b747b39aa25048d587783e2dcd6161312c145a2fcdd8f37684913e3f86b275b64736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101765760003560e01c8063747c1255116100d8578063c2c94b881161008c578063e7d2028311610066578063e7d20283146102dd578063e91f3235146102f0578063fc0c546a1461030357610176565b8063c2c94b881461029b578063d0ebdbe7146102c2578063d33219b4146102d557610176565b8063bdacb303116100bd578063bdacb30314610260578063bf31dbf414610273578063c1006f4f1461029357610176565b8063747c12551461023a578063b6b55f251461024d57610176565b8063485cc9551161012f5780635c19a95c116101145780635c19a95c146101fe5780635f389a9d1461021157806373afce6e1461022457610176565b8063485cc955146101e35780634e71d92d146101f657610176565b8063267406cb11610160578063267406cb146101a35780633e0bdaf7146101b6578063481c6a75146101be57610176565b8062f714ce1461017b5780632168034d14610190575b600080fd5b61018e6101893660046129e2565b61032a565b005b61018e61019e3660046129ca565b6104c9565b61018e6101b1366004612840565b6105c3565b61018e610987565b6101c6610c34565b6040516001600160a01b0390911681526020015b60405180910390f35b61018e6101f136600461285a565b610c44565b61018e610e4a565b61018e61020c366004612840565b61109e565b61018e61021f36600461288c565b61139b565b61022c6117eb565b6040519081526020016101da565b61018e610248366004612840565b6117fb565b61018e61025b3660046129ca565b61182a565b61018e61026e366004612840565b61196e565b610286610281366004612840565b611a0f565b6040516101da9190612a6c565b61022c611aee565b61022c7f000000000000000000000000000000000000000000000000000000000000000081565b61018e6102d0366004612840565b611af8565b6101c6611b99565b61022c6102eb3660046128ff565b611ba3565b61022c6102fe366004612928565b611bc5565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b610332611c14565b516001600160a01b0316331461038f5760405162461bcd60e51b815260206004820152600860248201527f216d616e6167657200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610399611c7e565b905082816000015410156103ef5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610386565b828160000160008282546104039190612d13565b90915550506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561048b57600080fd5b505af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c391906129aa565b50505050565b6104d1611cc3565b516001600160a01b031633146105295760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b606481111561057a5760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610386565b6105c06105bb6040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b829055565b50565b6105cb611c14565b516001600160a01b031633146106235760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b600061062d611d89565b6001600160a01b0383811660009081526020928352604080822081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116978301979097526001830154808816838601528190048716606083015260028084015480891660808501529190910490961660a0820152600382015490941660c085015281518083019283905290955091936106fe9392869260e0850192600485019182845b8154815260200190600101908083116106dd57505050505081525050611dc9565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be91906129aa565b5060006107c9611c7e565b83549091506000906107f990849070010000000000000000000000000000000090046001600160801b0316612b1f565b845461080e91906001600160801b0316612d13565b9050808260000160008282546108249190612b1f565b9091555060009050610834611ead565b60038601549091506000906108539083906001600160a01b0316611f00565b6003870154600288015491925061089f916001600160a01b03909116906108979070010000000000000000000000000000000090046001600160801b031684612d13565b849190611f8b565b600386015460028701546001600160a01b038981169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906109029070010000000000000000000000000000000090046001600160801b0316600019612b71565b60405190815260200160405180910390a361091b611d89565b6001600160a01b0397909716600090815260209790975250506040852085815560018101869055600281018690556003810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600481018690556005019490945550505050565b6000610991611d89565b3360009081526020919091526040812080549092506109cf906001600160801b03700100000000000000000000000000000000820481169116612ceb565b6001600160801b0316905060008111610a2a5760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610386565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906129aa565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba391906129aa565b506000610bae61209a565b516040805180820190915281815290915060208101610bcd8484612b1f565b9052610bdf9060048501906002612756565b50610c2f610c216040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611d10565b610c2b8484612b1f565b9055565b505050565b6000610c3e611c14565b51905090565b610c826040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611d10565b5415610cd05760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610386565b610d17610d116040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611d10565b60019055565b610d8b610d586040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b610dff610dcc6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b610e46610e406040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b60649055565b5050565b6000610e54611d89565b3360009081526020918252604080822081516101008101835281546001600160801b03808216835270010000000000000000000000000000000091829004811683880152600184015480821684870152829004811660608401526002808501548083166080860152929092041660a083015260038301546001600160a01b031660c083015283518085019485905260048401805482529397509495610f1e959294889460e0870194939092909190600587019085018083116106dd57505050505081525050611dc9565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda91906129aa565b5081548190839060109061100c90849070010000000000000000000000000000000090046001600160801b0316612af4565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008260040160016002811061106f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01541115611094578060048301600101600082825461108e9190612d13565b90915550505b610e463383612136565b60006110a8611d89565b3360009081526020919091526040902060038101549091506001600160a01b038381169116141561111b5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610386565b6000611125611ead565b60038301549091506000906111449083906001600160a01b0316611f00565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c083015282518084019384905293945060009361120193889260e08501929160048501919082845b8154815260200190600101908083116111e05750505050508152505061232d565b6003850154600286015491925061124d916001600160a01b03909116906112459070010000000000000000000000000000000090046001600160801b031685612d13565b859190611f8b565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906112ae9070010000000000000000000000000000000090046001600160801b0316600019612b71565b60405190815260200160405180910390a360006112cb8487611f00565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e08460405161131291815260200190565b60405180910390a3611330866113288484612b1f565b869190611f8b565b506002840180546001600160801b03928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b6113a3611c14565b516001600160a01b031633146113fb5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b826001600160801b0316826001600160801b03161115801561142f5750826001600160801b0316846001600160801b031611155b61147b5760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610386565b6001600160801b03841661148d574393505b6000611497611c7e565b905060006114a361239e565b9050866001600160801b0316826000015410156115025760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610386565b600061150c611d89565b6001600160a01b038a1660009081526020919091526040902080549091506001600160801b0316156115805760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610386565b6001600160a01b038416156115955783611597565b885b93506000606483600001518a6115ad9190612c29565b6115b79190612b37565b90506040518061010001604052808a6001600160801b0316815260200160006001600160801b03168152602001896001600160801b03168152602001886001600160801b03168152602001876001600160801b03168152602001826001600160801b03168152602001866001600160a01b031681526020016040518060400160405280600081526020016000815250815250611651611d89565b6001600160a01b038c8116600090815260209283526040908190208451938501516001600160801b0394851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e083015161171691600484019190612756565b50905050886001600160801b03168460000160008282546117379190612d13565b9091555060009050611747611ead565b60038401549091506000906117669083906001600160a01b0316611f00565b600385015490915061178e906001600160a01b03166108976001600160801b03861684612b1f565b60038401546040516001600160801b03851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b60006117f5611c7e565b54905090565b6000611805611d89565b6001600160a01b0383166000908152602091909152604090209050610e468282612136565b611832611c14565b516001600160a01b0316331461188a5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b6000611894611c7e565b9050818160000160008282546118aa9190612b1f565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2f91906129aa565b611976611cc3565b516001600160a01b031633146119ce5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b6105c0610dcc6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b611a17612794565b611a1f611d89565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b815481526020019060010190808311611aca5750505050508152505090505b919050565b6000610c3e61239e565b611b00611cc3565b516001600160a01b03163314611b585760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b6105c0610dcc6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b6000610c3e611cc3565b600080611bae611ead565b9050611bbb8185856123eb565b9150505b92915050565b600080611bd0611ead565b9050611c0a8686611c017f000000000000000000000000000000000000000000000000000000000000000043612d13565b84929190612444565b9695505050505050565b604080516020810190915260008152611c616040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b604080516020810190915290546001600160a01b03168152905090565b6000611cbe6040518060400160405280600a81526020017f756e61737369676e656400000000000000000000000000000000000000000000815250611d10565b905090565b604080516020810190915260008152611c616040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320905060008184604051602001611d4b929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6000611cbe6040518060400160405280600681526020017f6772616e747300000000000000000000000000000000000000000000000000008152506124b2565b600081608001516001600160801b0316431080611df2575081604001516001600160801b031643105b15611dff57506000611ae9565b81606001516001600160801b03164310611e345760208201518251611e249190612ceb565b6001600160801b03169050611ae9565b600082604001518360600151611e4a9190612ceb565b6001600160801b031683604001516001600160801b031643611e6c9190612d13565b8451611e8191906001600160801b0316612c58565b611e8b9190612b5d565b905082602001516001600160801b031681611ea69190612d13565b9392505050565b604080518082019091526060815260006020820152611cbe6040518060400160405280600b81526020017f766f74696e67506f7765720000000000000000000000000000000000000000008152506124ed565b600080611f0e846020015190565b6001600160a01b03841660009081526020919091526040902080549091506001600160801b031680611f4557600092505050611bbf565b6000611f8083611f56600185612d13565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115611ff35760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610386565b6000612000846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916001600160801b039091169081156120525761204e86611f56600185612d13565b5090505b814382141561206957612066600184612d13565b90505b848160018901015543821461208d5761208d8785612088866001612b1f565b612526565b5050505050505050505050565b6040805160208101909152600081526120e76040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611d10565b604080516020810190915290548152905090565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b905060008184604051602001611d4b929190612a27565b6000612140611ead565b600383015490915060009061215f9083906001600160a01b0316611f00565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c0830152825180840190935292935060009261222092879160e08401919060048401908282826020028201918154815260200190600101908083116111e05750505050508152505061232d565b60028501549091506000906122529070010000000000000000000000000000000090046001600160801b031683612c77565b9050806122625750505050610e46565b600081131561228c576003850154612287906001600160a01b03166113288386612b1f565b6122b4565b60038501546122b4906001600160a01b03166122aa83600019612b71565b6113289086612d13565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546001600160801b0392831670010000000000000000000000000000000002921691909117905550505050565b60008061233983611dc9565b9050600083602001516001600160801b0316826123569190612b1f565b845161236b91906001600160801b0316612d13565b9050606461237761239e565b516123829083612c58565b61238c9190612b5d565b6123969083612b1f565b949350505050565b6040805160208101909152600081526120e76040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b6000806123f9856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916001600160801b03909116906124368488838686612546565b9a9950505050505050505050565b600080612452866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916001600160801b039091169080612490858a8a8787612546565b9150915083821115612436576124a78483876126eb565b612436858385612526565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c905060008184604051602001611d4b929190612a27565b604080518082019091526060815260006020820152600061250d8361271b565b6040805180820190915293845260208401525090919050565b80821061253257600080fd5b6001600160801b031660809190911b179055565b600080826125965760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610386565b858511156125a357600080fd5b8284106125af57600080fd5b60006125bc600185612d13565b90508460005b82821461266057600060026125d78585612b1f565b6125e2906001612b1f565b6125ec9190612b5d565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b82141561262e579296509194506126e19350505050565b8b82101561264a578a821015612642578293505b829450612658565b612655600184612d13565b95505b5050506125c2565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156126d75760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610386565b9195509093505050505b9550959350505050565b818311156126f857600080fd5b60018101835b83811015612714576000828201556001016126fe565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001611d4b929190612a27565b8260028101928215612784579160200282015b82811115612784578251825591602001919060010190612769565b506127909291506127df565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e081016127da6127f4565b905290565b5b8082111561279057600081556001016127e0565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114611ae957600080fd5b80356001600160801b0381168114611ae957600080fd5b600060208284031215612851578081fd5b611ea682612812565b6000806040838503121561286c578081fd5b61287583612812565b915061288360208401612812565b90509250929050565b60008060008060008060c087890312156128a4578182fd5b6128ad87612812565b95506128bb60208801612829565b94506128c960408801612829565b93506128d760608801612829565b92506128e560808801612829565b91506128f360a08801612812565b90509295509295509295565b60008060408385031215612911578182fd5b61291a83612812565b946020939093013593505050565b6000806000806060858703121561293d578384fd5b61294685612812565b935060208501359250604085013567ffffffffffffffff80821115612969578384fd5b818701915087601f83011261297c578384fd5b81358181111561298a578485fd5b88602082850101111561299b578485fd5b95989497505060200194505050565b6000602082840312156129bb578081fd5b81518015158114611ea6578182fd5b6000602082840312156129db578081fd5b5035919050565b600080604083850312156129f4578182fd5b8235915061288360208401612812565b8060005b60028110156104c3578151845260209384019390910190600101612a08565b60008382528251815b81811015612a4c57602081860181015185830182015201612a30565b81811115612a5d5782602083860101525b50919091016020019392505050565b6000610120820190506001600160801b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c0830151612ada60c08401826001600160a01b03169052565b5060e0830151612aed60e0840182612a04565b5092915050565b60006001600160801b03808316818516808303821115612b1657612b16612d2a565b01949350505050565b60008219821115612b3257612b32612d2a565b500190565b60006001600160801b0380841680612b5157612b51612d59565b92169190910492915050565b600082612b6c57612b6c612d59565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615612bb057612bb0612d2a565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615612bea57612bea612d2a565b858712925087820587128484161615612c0557612c05612d2a565b87850587128184161615612c1b57612c1b612d2a565b505050929093029392505050565b60006001600160801b0380831681851681830481118215151615612c4f57612c4f612d2a565b02949350505050565b6000816000190483118215151615612c7257612c72612d2a565b500290565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615612cb157612cb1612d2a565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615612ce557612ce5612d2a565b50500390565b60006001600160801b0383811690831681811015612d0b57612d0b612d2a565b039392505050565b600082821015612d2557612d25612d2a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212206b747b39aa25048d587783e2dcd6161312c145a2fcdd8f37684913e3f86b275b64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Timelock.ts b/packages/council-artifacts/src/Timelock.ts new file mode 100644 index 00000000..333b0950 --- /dev/null +++ b/packages/council-artifacts/src/Timelock.ts @@ -0,0 +1,248 @@ +export const Timelock = { + "_format": "hh-sol-artifact-1", + "contractName": "Timelock", + "sourceName": "contracts/features/Timelock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_waitTime", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_governance", + "type": "address" + }, + { + "internalType": "address", + "name": "_gsc", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "callTimestamps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timeValue", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "callHash", + "type": "bytes32" + } + ], + "name": "increaseTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "callHash", + "type": "bytes32" + } + ], + "name": "registerCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_waitTime", + "type": "uint256" + } + ], + "name": "setWaitTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "callHash", + "type": "bytes32" + } + ], + "name": "stopCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "timeIncreases", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "waitTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516110eb3803806110eb83398101604081905261002f91610111565b600080546001600160a01b0319163317905561006c816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600383905561007a82610082565b50505061014c565b6000546001600160a01b031633146100d35760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b038116811461010c57600080fd5b919050565b600080600060608486031215610125578283fd5b83519250610135602085016100f5565b9150610143604085016100f5565b90509250925092565b610f908061015b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063c8d18a451161008c578063d8e4677511610066578063d8e4677514610217578063df351aaf1461023a578063e4d532661461024d578063fe9fbb8014610260576100ea565b8063c8d18a45146101cd578063ccca123b146101e0578063d7bcb566146101f7576100ea565b806388b49b83116100c857806388b49b831461012a5780638da5cb5b1461013d578063b6a5d7de14610187578063b91816111461019a576100ea565b806313af4035146100ef57806327c97fa514610104578063821127d414610117575b600080fd5b6101026100fd366004610bc3565b610273565b005b610102610112366004610bc3565b610326565b610102610125366004610cea565b6103bb565b610102610138366004610cd2565b61052e565b60005461015d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610102610195366004610bc3565b610604565b6101bd6101a8366004610bc3565b60016020526000908152604090205460ff1681565b604051901515815260200161017e565b6101026101db366004610be4565b6106a6565b6101e960035481565b60405190815260200161017e565b6101e9610205366004610cd2565b60046020526000908152604090205481565b6101bd610225366004610cd2565b60056020526000908152604090205460ff1681565b610102610248366004610cd2565b6109eb565b61010261025b366004610cd2565b610a3f565b6101bd61026e366004610bc3565b610b26565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102df5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461038d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b6103c433610b26565b6104105760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102d6565b60008181526005602052604090205460ff161561046f5760405162461bcd60e51b815260206004820152601e60248201527f76616c75652063616e206f6e6c79206265206368616e676564206f6e6365000060448201526064016102d6565b6000818152600460205260409020546104ef5760405162461bcd60e51b8152602060048201526024808201527f6d7573742068617665206265656e2070726576696f75736c792072656769737460448201527f657265640000000000000000000000000000000000000000000000000000000060648201526084016102d6565b6000818152600460205260408120805484929061050d908490610eab565b90915550506000908152600560205260409020805460ff1916600117905550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105955760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b600081815260046020526040902054156105f15760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016102d6565b6000908152600460205260409020429055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461066b5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b6106a38173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b60025460ff16156106f95760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e63790000000000000000000000000000000000000000000060448201526064016102d6565b6002805460ff1916600117905560405160009061071e90859085908590602001610d45565b60408051601f198184030181529181528151602092830120600081815260049093529120549091506107925760405162461bcd60e51b815260206004820152601d60248201527f63616c6c20686173206e6f74206265656e20696e697469616c697a656400000060448201526064016102d6565b60035460008281526004602052604090205442916107af91610eab565b106107fc5760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682074696d65206861732070617373656400000000000060448201526064016102d6565b8351821461084c5760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420666f726d617474696e67000000000000000000000000000060448201526064016102d6565b60005b84518110156109b6576000858281518110610893577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168585848181106108ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906108fc9190610e48565b60405161090a929190610d35565b6000604051808303816000865af19150503d8060008114610947576040519150601f19603f3d011682016040523d82523d6000602084013e61094c565b606091505b50909150506001811515146109a35760405162461bcd60e51b815260206004820152600d60248201527f63616c6c2072657665727465640000000000000000000000000000000000000060448201526064016102d6565b50806109ae81610ec3565b91505061084f565b50600090815260046020908152604080832083905560059091529020805460ff19908116909155600280549091169055505050565b333014610a3a5760405162461bcd60e51b815260206004820152601560248201527f636f6e7472616374206d7573742062652073656c66000000000000000000000060448201526064016102d6565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aa65760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b600081815260046020526040902054610b015760405162461bcd60e51b815260206004820152601560248201527f4e6f2063616c6c20746f2062652072656d6f766564000000000000000000000060448201526064016102d6565b600090815260046020908152604080832083905560059091529020805460ff19169055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5057600080fd5b60008083601f840112610b8a578081fd5b50813567ffffffffffffffff811115610ba1578182fd5b6020830191508360208260051b8501011115610bbc57600080fd5b9250929050565b600060208284031215610bd4578081fd5b610bdd82610b55565b9392505050565b600080600060408486031215610bf8578182fd5b833567ffffffffffffffff80821115610c0f578384fd5b818601915086601f830112610c22578384fd5b8135602082821115610c3657610c36610f2b565b8160051b604051601f19603f83011681018181108682111715610c5b57610c5b610f2b565b60405283815282810186840183880185018d1015610c7757898afd5b8997505b85881015610ca057610c8c81610b55565b825260019790970196908401908401610c7b565b50909850505087013592505080821115610cb8578384fd5b50610cc586828701610b79565b9497909650939450505050565b600060208284031215610ce3578081fd5b5035919050565b60008060408385031215610cfc578182fd5b50508035926020909101359150565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b604080825284519082018190526000906020906060840190828801845b82811015610d9457815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610d62565b50505083810382850152848152818101600586901b8201830187855b88811015610e3957601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112610df2578788fd5b8a01803567ffffffffffffffff811115610e0a578889fd5b8036038c1315610e18578889fd5b610e2585828a8501610d0b565b958801959450505090850190600101610db0565b50909998505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e7c578283fd5b83018035915067ffffffffffffffff821115610e96578283fd5b602001915036819003821315610bbc57600080fd5b60008219821115610ebe57610ebe610efc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ef557610ef5610efc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220da1a101af37c223740adb0dfb67990886d09d93a0b2f9efcf1d79b292d4f265764736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063c8d18a451161008c578063d8e4677511610066578063d8e4677514610217578063df351aaf1461023a578063e4d532661461024d578063fe9fbb8014610260576100ea565b8063c8d18a45146101cd578063ccca123b146101e0578063d7bcb566146101f7576100ea565b806388b49b83116100c857806388b49b831461012a5780638da5cb5b1461013d578063b6a5d7de14610187578063b91816111461019a576100ea565b806313af4035146100ef57806327c97fa514610104578063821127d414610117575b600080fd5b6101026100fd366004610bc3565b610273565b005b610102610112366004610bc3565b610326565b610102610125366004610cea565b6103bb565b610102610138366004610cd2565b61052e565b60005461015d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610102610195366004610bc3565b610604565b6101bd6101a8366004610bc3565b60016020526000908152604090205460ff1681565b604051901515815260200161017e565b6101026101db366004610be4565b6106a6565b6101e960035481565b60405190815260200161017e565b6101e9610205366004610cd2565b60046020526000908152604090205481565b6101bd610225366004610cd2565b60056020526000908152604090205460ff1681565b610102610248366004610cd2565b6109eb565b61010261025b366004610cd2565b610a3f565b6101bd61026e366004610bc3565b610b26565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102df5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461038d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b6103c433610b26565b6104105760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102d6565b60008181526005602052604090205460ff161561046f5760405162461bcd60e51b815260206004820152601e60248201527f76616c75652063616e206f6e6c79206265206368616e676564206f6e6365000060448201526064016102d6565b6000818152600460205260409020546104ef5760405162461bcd60e51b8152602060048201526024808201527f6d7573742068617665206265656e2070726576696f75736c792072656769737460448201527f657265640000000000000000000000000000000000000000000000000000000060648201526084016102d6565b6000818152600460205260408120805484929061050d908490610eab565b90915550506000908152600560205260409020805460ff1916600117905550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105955760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b600081815260046020526040902054156105f15760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016102d6565b6000908152600460205260409020429055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461066b5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b6106a38173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b60025460ff16156106f95760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e63790000000000000000000000000000000000000000000060448201526064016102d6565b6002805460ff1916600117905560405160009061071e90859085908590602001610d45565b60408051601f198184030181529181528151602092830120600081815260049093529120549091506107925760405162461bcd60e51b815260206004820152601d60248201527f63616c6c20686173206e6f74206265656e20696e697469616c697a656400000060448201526064016102d6565b60035460008281526004602052604090205442916107af91610eab565b106107fc5760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682074696d65206861732070617373656400000000000060448201526064016102d6565b8351821461084c5760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420666f726d617474696e67000000000000000000000000000060448201526064016102d6565b60005b84518110156109b6576000858281518110610893577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168585848181106108ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906108fc9190610e48565b60405161090a929190610d35565b6000604051808303816000865af19150503d8060008114610947576040519150601f19603f3d011682016040523d82523d6000602084013e61094c565b606091505b50909150506001811515146109a35760405162461bcd60e51b815260206004820152600d60248201527f63616c6c2072657665727465640000000000000000000000000000000000000060448201526064016102d6565b50806109ae81610ec3565b91505061084f565b50600090815260046020908152604080832083905560059091529020805460ff19908116909155600280549091169055505050565b333014610a3a5760405162461bcd60e51b815260206004820152601560248201527f636f6e7472616374206d7573742062652073656c66000000000000000000000060448201526064016102d6565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aa65760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b600081815260046020526040902054610b015760405162461bcd60e51b815260206004820152601560248201527f4e6f2063616c6c20746f2062652072656d6f766564000000000000000000000060448201526064016102d6565b600090815260046020908152604080832083905560059091529020805460ff19169055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5057600080fd5b60008083601f840112610b8a578081fd5b50813567ffffffffffffffff811115610ba1578182fd5b6020830191508360208260051b8501011115610bbc57600080fd5b9250929050565b600060208284031215610bd4578081fd5b610bdd82610b55565b9392505050565b600080600060408486031215610bf8578182fd5b833567ffffffffffffffff80821115610c0f578384fd5b818601915086601f830112610c22578384fd5b8135602082821115610c3657610c36610f2b565b8160051b604051601f19603f83011681018181108682111715610c5b57610c5b610f2b565b60405283815282810186840183880185018d1015610c7757898afd5b8997505b85881015610ca057610c8c81610b55565b825260019790970196908401908401610c7b565b50909850505087013592505080821115610cb8578384fd5b50610cc586828701610b79565b9497909650939450505050565b600060208284031215610ce3578081fd5b5035919050565b60008060408385031215610cfc578182fd5b50508035926020909101359150565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b604080825284519082018190526000906020906060840190828801845b82811015610d9457815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610d62565b50505083810382850152848152818101600586901b8201830187855b88811015610e3957601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112610df2578788fd5b8a01803567ffffffffffffffff811115610e0a578889fd5b8036038c1315610e18578889fd5b610e2585828a8501610d0b565b958801959450505090850190600101610db0565b50909998505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e7c578283fd5b83018035915067ffffffffffffffff821115610e96578283fd5b602001915036819003821315610bbc57600080fd5b60008219821115610ebe57610ebe610efc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ef557610ef5610efc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220da1a101af37c223740adb0dfb67990886d09d93a0b2f9efcf1d79b292d4f265764736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/Treasury.ts b/packages/council-artifacts/src/Treasury.ts new file mode 100644 index 00000000..07531708 --- /dev/null +++ b/packages/council-artifacts/src/Treasury.ts @@ -0,0 +1,180 @@ +export const Treasury = { + "_format": "hh-sol-artifact-1", + "contractName": "Treasury", + "sourceName": "contracts/features/Treasury.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "__governance", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_callData", + "type": "bytes" + } + ], + "name": "genericCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "sendFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610b44380380610b4483398101604081905261002f916100c3565b600080546001600160a01b0319163317905561004a81610050565b506100f1565b6000546001600160a01b031633146100a15760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156100d4578081fd5b81516001600160a01b03811681146100ea578182fd5b9392505050565b610a44806101006000396000f3fe60806040526004361061009a5760003560e01c80638da5cb5b11610069578063b91816111161004e578063b91816111461019f578063e1f21c67146101df578063fe9fbb80146101ff576100a1565b80638da5cb5b14610128578063b6a5d7de1461017f576100a1565b806313af4035146100a657806327c97fa5146100c85780634650c308146100e85780638522d1b214610108576100a1565b366100a157005b600080fd5b3480156100b257600080fd5b506100c66100c13660046108c9565b61021f565b005b3480156100d457600080fd5b506100c66100e33660046108c9565b6102ec565b3480156100f457600080fd5b506100c6610103366004610925565b6103b9565b34801561011457600080fd5b506100c66101233660046109a3565b610516565b34801561013457600080fd5b506000546101559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018b57600080fd5b506100c661019a3660046108c9565b6106c0565b3480156101ab57600080fd5b506101cf6101ba3660046108c9565b60016020526000908152604090205460ff1681565b6040519015158152602001610176565b3480156101eb57600080fd5b506100c66101fa3660046108ea565b61079a565b34801561020b57600080fd5b506101cf61021a3660046108c9565b610876565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461036d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461043a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104639291906109fe565b6000604051808303816000865af19150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5050905080610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616c6c206661696c6564000000000000000000000000000000000000000000604482015260640161029c565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156106125760405173ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f1935050505015801561060c573d6000803e3d6000fd5b506106bb565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044015b602060405180830381600087803b15801561068357600080fd5b505af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051091906109de565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b6107978173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b390604401610669565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a057600080fd5b6000602082840312156108da578081fd5b6108e3826108a5565b9392505050565b6000806000606084860312156108fe578182fd5b610907846108a5565b9250610915602085016108a5565b9150604084013590509250925092565b600080600060408486031215610939578283fd5b610942846108a5565b9250602084013567ffffffffffffffff8082111561095e578384fd5b818601915086601f830112610971578384fd5b81358181111561097f578485fd5b876020828501011115610990578485fd5b6020830194508093505050509250925092565b6000806000606084860312156109b7578283fd5b6109c0846108a5565b9250602084013591506109d5604085016108a5565b90509250925092565b6000602082840312156109ef578081fd5b815180151581146108e3578182fd5b600082848337910190815291905056fea26469706673582212201040707a315ef7791aa6ec5d8865b0891653213ada17d49570deca6b4d0dc80164736f6c63430008030033", + "deployedBytecode": "0x60806040526004361061009a5760003560e01c80638da5cb5b11610069578063b91816111161004e578063b91816111461019f578063e1f21c67146101df578063fe9fbb80146101ff576100a1565b80638da5cb5b14610128578063b6a5d7de1461017f576100a1565b806313af4035146100a657806327c97fa5146100c85780634650c308146100e85780638522d1b214610108576100a1565b366100a157005b600080fd5b3480156100b257600080fd5b506100c66100c13660046108c9565b61021f565b005b3480156100d457600080fd5b506100c66100e33660046108c9565b6102ec565b3480156100f457600080fd5b506100c6610103366004610925565b6103b9565b34801561011457600080fd5b506100c66101233660046109a3565b610516565b34801561013457600080fd5b506000546101559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018b57600080fd5b506100c661019a3660046108c9565b6106c0565b3480156101ab57600080fd5b506101cf6101ba3660046108c9565b60016020526000908152604090205460ff1681565b6040519015158152602001610176565b3480156101eb57600080fd5b506100c66101fa3660046108ea565b61079a565b34801561020b57600080fd5b506101cf61021a3660046108c9565b610876565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461036d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461043a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104639291906109fe565b6000604051808303816000865af19150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5050905080610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616c6c206661696c6564000000000000000000000000000000000000000000604482015260640161029c565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156106125760405173ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f1935050505015801561060c573d6000803e3d6000fd5b506106bb565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044015b602060405180830381600087803b15801561068357600080fd5b505af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051091906109de565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b6107978173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b390604401610669565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a057600080fd5b6000602082840312156108da578081fd5b6108e3826108a5565b9392505050565b6000806000606084860312156108fe578182fd5b610907846108a5565b9250610915602085016108a5565b9150604084013590509250925092565b600080600060408486031215610939578283fd5b610942846108a5565b9250602084013567ffffffffffffffff8082111561095e578384fd5b818601915086601f830112610971578384fd5b81358181111561097f578485fd5b876020828501011115610990578485fd5b6020830194508093505050509250925092565b6000806000606084860312156109b7578283fd5b6109c0846108a5565b9250602084013591506109d5604085016108a5565b90509250925092565b6000602082840312156109ef578081fd5b815180151581146108e3578182fd5b600082848337910190815291905056fea26469706673582212201040707a315ef7791aa6ec5d8865b0891653213ada17d49570deca6b4d0dc80164736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/VestingVault.ts b/packages/council-artifacts/src/VestingVault.ts new file mode 100644 index 00000000..d54aeb38 --- /dev/null +++ b/packages/council-artifacts/src/VestingVault.ts @@ -0,0 +1,410 @@ +export const VestingVault = { + "_format": "hh-sol-artifact-1", + "contractName": "VestingVault", + "sourceName": "contracts/vaults/VestingVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_stale", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "VoteChange", + "type": "event" + }, + { + "inputs": [], + "name": "acceptGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "uint128", + "name": "_amount", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_cliff", + "type": "uint128" + }, + { + "internalType": "address", + "name": "_delegatee", + "type": "address" + } + ], + "name": "addGrantAndDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_multiplier", + "type": "uint256" + } + ], + "name": "changeUnvestedMultiplier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "getGrant", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "allocation", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "withdrawn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "created", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "expiration", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "cliff", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "latestVotingPower", + "type": "uint128" + }, + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256[2]", + "name": "range", + "type": "uint256[2]" + } + ], + "internalType": "struct VestingVaultStorage.Grant", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + }, + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "queryVotePower", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "queryVotePowerView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "removeGrant", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager_", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "timelock_", + "type": "address" + } + ], + "name": "setTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "staleBlockLag", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timelock", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unvestedMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_who", + "type": "address" + } + ], + "name": "updateVotingPower", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002e7f38038062002e7f833981016040819052620000349162000050565b60609190911b6001600160601b03191660805260a0526200008a565b6000806040838503121562000063578182fd5b82516001600160a01b03811681146200007a578283fd5b6020939093015192949293505050565b60805160601c60a051612d9b620000e46000396000818161028d0152611bb90152600081816102f5015281816104340152818161072d01528181610a4c01528181610b0c01528181610f4301526118c70152612d9b6000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c8063b6b55f25116100cd578063d0ebdbe711610081578063e7d2028311610066578063e7d20283146102ca578063e91f3235146102dd578063fc0c546a146102f05761016b565b8063d0ebdbe7146102af578063d33219b4146102c25761016b565b8063bf31dbf4116100b2578063bf31dbf414610252578063c1006f4f14610272578063c2c94b88146102885761016b565b8063b6b55f251461022c578063bdacb3031461023f5761016b565b8063485cc955116101245780635c19a95c116101095780635c19a95c146101f35780635f389a9d14610206578063747c1255146102195761016b565b8063485cc955146101d85780634e71d92d146101eb5761016b565b8063267406cb11610155578063267406cb146101985780633e0bdaf7146101ab578063481c6a75146101b35761016b565b8062f714ce146101705780632168034d14610185575b600080fd5b61018361017e3660046129bf565b610317565b005b6101836101933660046129a7565b6104b6565b6101836101a636600461281d565b6105b0565b610183610974565b6101bb610c21565b6040516001600160a01b0390911681526020015b60405180910390f35b6101836101e6366004612837565b610c31565b610183610e37565b61018361020136600461281d565b61108b565b610183610214366004612869565b611388565b61018361022736600461281d565b6117d8565b61018361023a3660046129a7565b611807565b61018361024d36600461281d565b61194b565b61026561026036600461281d565b6119ec565b6040516101cf9190612a49565b61027a611acb565b6040519081526020016101cf565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b6101836102bd36600461281d565b611ad5565b6101bb611b76565b61027a6102d83660046128dc565b611b80565b61027a6102eb366004612905565b611ba2565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b61031f611bf1565b516001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152600860248201527f216d616e6167657200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610386611c5b565b905082816000015410156103dc5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610373565b828160000160008282546103f09190612cf0565b90915550506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612987565b50505050565b6104be611ca0565b516001600160a01b031633146105165760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b60648111156105675760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610373565b6105ad6105a86040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b829055565b50565b6105b8611bf1565b516001600160a01b031633146106105760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b600061061a611d66565b6001600160a01b0383811660009081526020928352604080822081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116978301979097526001830154808816838601528190048716606083015260028084015480891660808501529190910490961660a0820152600382015490941660c085015281518083019283905290955091936106eb9392869260e0850192600485019182845b8154815260200190600101908083116106ca57505050505081525050611da6565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612987565b5060006107b6611c5b565b83549091506000906107e690849070010000000000000000000000000000000090046001600160801b0316612afc565b84546107fb91906001600160801b0316612cf0565b9050808260000160008282546108119190612afc565b9091555060009050610821611e8a565b60038601549091506000906108409083906001600160a01b0316611edd565b6003870154600288015491925061088c916001600160a01b03909116906108849070010000000000000000000000000000000090046001600160801b031684612cf0565b849190611f68565b600386015460028701546001600160a01b038981169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906108ef9070010000000000000000000000000000000090046001600160801b0316600019612b4e565b60405190815260200160405180910390a3610908611d66565b6001600160a01b0397909716600090815260209790975250506040852085815560018101869055600281018690556003810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600481018690556005019490945550505050565b600061097e611d66565b3360009081526020919091526040812080549092506109bc906001600160801b03700100000000000000000000000000000000820481169116612cc8565b6001600160801b0316905060008111610a175760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610373565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190612987565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015610b5857600080fd5b505af1158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612987565b506000610b9b612077565b516040805180820190915281815290915060208101610bba8484612afc565b9052610bcc9060048501906002612733565b50610c1c610c0e6040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611ced565b610c188484612afc565b9055565b505050565b6000610c2b611bf1565b51905090565b610c6f6040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611ced565b5415610cbd5760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610373565b610d04610cfe6040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611ced565b60019055565b610d78610d456040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b610dec610db96040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b610e33610e2d6040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b60649055565b5050565b6000610e41611d66565b3360009081526020918252604080822081516101008101835281546001600160801b03808216835270010000000000000000000000000000000091829004811683880152600184015480821684870152829004811660608401526002808501548083166080860152929092041660a083015260038301546001600160a01b031660c083015283518085019485905260048401805482529397509495610f0b959294889460e0870194939092909190600587019085018083116106ca57505050505081525050611da6565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc79190612987565b50815481908390601090610ff990849070010000000000000000000000000000000090046001600160801b0316612ad1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008260040160016002811061105c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01541115611081578060048301600101600082825461107b9190612cf0565b90915550505b610e333383612113565b6000611095611d66565b3360009081526020919091526040902060038101549091506001600160a01b03838116911614156111085760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610373565b6000611112611e8a565b60038301549091506000906111319083906001600160a01b0316611edd565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c08301528251808401938490529394506000936111ee93889260e08501929160048501919082845b8154815260200190600101908083116111cd5750505050508152505061230a565b6003850154600286015491925061123a916001600160a01b03909116906112329070010000000000000000000000000000000090046001600160801b031685612cf0565b859190611f68565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09061129b9070010000000000000000000000000000000090046001600160801b0316600019612b4e565b60405190815260200160405180910390a360006112b88487611edd565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0846040516112ff91815260200190565b60405180910390a361131d866113158484612afc565b869190611f68565b506002840180546001600160801b03928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b611390611bf1565b516001600160a01b031633146113e85760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b826001600160801b0316826001600160801b03161115801561141c5750826001600160801b0316846001600160801b031611155b6114685760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610373565b6001600160801b03841661147a574393505b6000611484611c5b565b9050600061149061237b565b9050866001600160801b0316826000015410156114ef5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610373565b60006114f9611d66565b6001600160a01b038a1660009081526020919091526040902080549091506001600160801b03161561156d5760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610373565b6001600160a01b038416156115825783611584565b885b93506000606483600001518a61159a9190612c06565b6115a49190612b14565b90506040518061010001604052808a6001600160801b0316815260200160006001600160801b03168152602001896001600160801b03168152602001886001600160801b03168152602001876001600160801b03168152602001826001600160801b03168152602001866001600160a01b03168152602001604051806040016040528060008152602001600081525081525061163e611d66565b6001600160a01b038c8116600090815260209283526040908190208451938501516001600160801b0394851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e083015161170391600484019190612733565b50905050886001600160801b03168460000160008282546117249190612cf0565b9091555060009050611734611e8a565b60038401549091506000906117539083906001600160a01b0316611edd565b600385015490915061177b906001600160a01b03166108846001600160801b03861684612afc565b60038401546040516001600160801b03851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b60006117e2611d66565b6001600160a01b0383166000908152602091909152604090209050610e338282612113565b61180f611bf1565b516001600160a01b031633146118675760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b6000611871611c5b565b9050818160000160008282546118879190612afc565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561191357600080fd5b505af1158015611927573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612987565b611953611ca0565b516001600160a01b031633146119ab5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b6105ad610db96040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b6119f4612771565b6119fc611d66565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b815481526020019060010190808311611aa75750505050508152505090505b919050565b6000610c2b61237b565b611add611ca0565b516001600160a01b03163314611b355760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b6105ad610db96040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b6000610c2b611ca0565b600080611b8b611e8a565b9050611b988185856123c8565b9150505b92915050565b600080611bad611e8a565b9050611be78686611bde7f000000000000000000000000000000000000000000000000000000000000000043612cf0565b84929190612421565b9695505050505050565b604080516020810190915260008152611c3e6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b604080516020810190915290546001600160a01b03168152905090565b6000611c9b6040518060400160405280600a81526020017f756e61737369676e656400000000000000000000000000000000000000000000815250611ced565b905090565b604080516020810190915260008152611c3e6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320905060008184604051602001611d28929190612a04565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6000611c9b6040518060400160405280600681526020017f6772616e7473000000000000000000000000000000000000000000000000000081525061248f565b600081608001516001600160801b0316431080611dcf575081604001516001600160801b031643105b15611ddc57506000611ac6565b81606001516001600160801b03164310611e115760208201518251611e019190612cc8565b6001600160801b03169050611ac6565b600082604001518360600151611e279190612cc8565b6001600160801b031683604001516001600160801b031643611e499190612cf0565b8451611e5e91906001600160801b0316612c35565b611e689190612b3a565b905082602001516001600160801b031681611e839190612cf0565b9392505050565b604080518082019091526060815260006020820152611c9b6040518060400160405280600b81526020017f766f74696e67506f7765720000000000000000000000000000000000000000008152506124ca565b600080611eeb846020015190565b6001600160a01b03841660009081526020919091526040902080549091506001600160801b031680611f2257600092505050611b9c565b6000611f5d83611f33600185612cf0565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115611fd05760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610373565b6000611fdd846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916001600160801b0390911690811561202f5761202b86611f33600185612cf0565b5090505b814382141561204657612043600184612cf0565b90505b848160018901015543821461206a5761206a8785612065866001612afc565b612503565b5050505050505050505050565b6040805160208101909152600081526120c46040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611ced565b604080516020810190915290548152905090565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b905060008184604051602001611d28929190612a04565b600061211d611e8a565b600383015490915060009061213c9083906001600160a01b0316611edd565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c083015282518084019093529293506000926121fd92879160e08401919060048401908282826020028201918154815260200190600101908083116111cd5750505050508152505061230a565b600285015490915060009061222f9070010000000000000000000000000000000090046001600160801b031683612c54565b90508061223f5750505050610e33565b6000811315612269576003850154612264906001600160a01b03166113158386612afc565b612291565b6003850154612291906001600160a01b031661228783600019612b4e565b6113159086612cf0565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546001600160801b0392831670010000000000000000000000000000000002921691909117905550505050565b60008061231683611da6565b9050600083602001516001600160801b0316826123339190612afc565b845161234891906001600160801b0316612cf0565b9050606461235461237b565b5161235f9083612c35565b6123699190612b3a565b6123739083612afc565b949350505050565b6040805160208101909152600081526120c46040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b6000806123d6856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916001600160801b03909116906124138488838686612523565b9a9950505050505050505050565b60008061242f866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916001600160801b03909116908061246d858a8a8787612523565b9150915083821115612413576124848483876126c8565b612413858385612503565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c905060008184604051602001611d28929190612a04565b60408051808201909152606081526000602082015260006124ea836126f8565b6040805180820190915293845260208401525090919050565b80821061250f57600080fd5b6001600160801b031660809190911b179055565b600080826125735760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610373565b8585111561258057600080fd5b82841061258c57600080fd5b6000612599600185612cf0565b90508460005b82821461263d57600060026125b48585612afc565b6125bf906001612afc565b6125c99190612b3a565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b82141561260b579296509194506126be9350505050565b8b821015612627578a82101561261f578293505b829450612635565b612632600184612cf0565b95505b50505061259f565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156126b45760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610373565b9195509093505050505b9550959350505050565b818311156126d557600080fd5b60018101835b838110156126f1576000828201556001016126db565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001611d28929190612a04565b8260028101928215612761579160200282015b82811115612761578251825591602001919060010190612746565b5061276d9291506127bc565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e081016127b76127d1565b905290565b5b8082111561276d57600081556001016127bd565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114611ac657600080fd5b80356001600160801b0381168114611ac657600080fd5b60006020828403121561282e578081fd5b611e83826127ef565b60008060408385031215612849578081fd5b612852836127ef565b9150612860602084016127ef565b90509250929050565b60008060008060008060c08789031215612881578182fd5b61288a876127ef565b955061289860208801612806565b94506128a660408801612806565b93506128b460608801612806565b92506128c260808801612806565b91506128d060a088016127ef565b90509295509295509295565b600080604083850312156128ee578182fd5b6128f7836127ef565b946020939093013593505050565b6000806000806060858703121561291a578384fd5b612923856127ef565b935060208501359250604085013567ffffffffffffffff80821115612946578384fd5b818701915087601f830112612959578384fd5b813581811115612967578485fd5b886020828501011115612978578485fd5b95989497505060200194505050565b600060208284031215612998578081fd5b81518015158114611e83578182fd5b6000602082840312156129b8578081fd5b5035919050565b600080604083850312156129d1578182fd5b82359150612860602084016127ef565b8060005b60028110156104b05781518452602093840193909101906001016129e5565b60008382528251815b81811015612a2957602081860181015185830182015201612a0d565b81811115612a3a5782602083860101525b50919091016020019392505050565b6000610120820190506001600160801b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c0830151612ab760c08401826001600160a01b03169052565b5060e0830151612aca60e08401826129e1565b5092915050565b60006001600160801b03808316818516808303821115612af357612af3612d07565b01949350505050565b60008219821115612b0f57612b0f612d07565b500190565b60006001600160801b0380841680612b2e57612b2e612d36565b92169190910492915050565b600082612b4957612b49612d36565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615612b8d57612b8d612d07565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615612bc757612bc7612d07565b858712925087820587128484161615612be257612be2612d07565b87850587128184161615612bf857612bf8612d07565b505050929093029392505050565b60006001600160801b0380831681851681830481118215151615612c2c57612c2c612d07565b02949350505050565b6000816000190483118215151615612c4f57612c4f612d07565b500290565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615612c8e57612c8e612d07565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615612cc257612cc2612d07565b50500390565b60006001600160801b0383811690831681811015612ce857612ce8612d07565b039392505050565b600082821015612d0257612d02612d07565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220ab4b53fc806b57dc5e94055ae34c5ad9fef6e0260032592719959276cf204a4064736f6c63430008030033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016b5760003560e01c8063b6b55f25116100cd578063d0ebdbe711610081578063e7d2028311610066578063e7d20283146102ca578063e91f3235146102dd578063fc0c546a146102f05761016b565b8063d0ebdbe7146102af578063d33219b4146102c25761016b565b8063bf31dbf4116100b2578063bf31dbf414610252578063c1006f4f14610272578063c2c94b88146102885761016b565b8063b6b55f251461022c578063bdacb3031461023f5761016b565b8063485cc955116101245780635c19a95c116101095780635c19a95c146101f35780635f389a9d14610206578063747c1255146102195761016b565b8063485cc955146101d85780634e71d92d146101eb5761016b565b8063267406cb11610155578063267406cb146101985780633e0bdaf7146101ab578063481c6a75146101b35761016b565b8062f714ce146101705780632168034d14610185575b600080fd5b61018361017e3660046129bf565b610317565b005b6101836101933660046129a7565b6104b6565b6101836101a636600461281d565b6105b0565b610183610974565b6101bb610c21565b6040516001600160a01b0390911681526020015b60405180910390f35b6101836101e6366004612837565b610c31565b610183610e37565b61018361020136600461281d565b61108b565b610183610214366004612869565b611388565b61018361022736600461281d565b6117d8565b61018361023a3660046129a7565b611807565b61018361024d36600461281d565b61194b565b61026561026036600461281d565b6119ec565b6040516101cf9190612a49565b61027a611acb565b6040519081526020016101cf565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b6101836102bd36600461281d565b611ad5565b6101bb611b76565b61027a6102d83660046128dc565b611b80565b61027a6102eb366004612905565b611ba2565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b61031f611bf1565b516001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152600860248201527f216d616e6167657200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610386611c5b565b905082816000015410156103dc5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610373565b828160000160008282546103f09190612cf0565b90915550506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612987565b50505050565b6104be611ca0565b516001600160a01b031633146105165760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b60648111156105675760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610373565b6105ad6105a86040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b829055565b50565b6105b8611bf1565b516001600160a01b031633146106105760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b600061061a611d66565b6001600160a01b0383811660009081526020928352604080822081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116978301979097526001830154808816838601528190048716606083015260028084015480891660808501529190910490961660a0820152600382015490941660c085015281518083019283905290955091936106eb9392869260e0850192600485019182845b8154815260200190600101908083116106ca57505050505081525050611da6565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612987565b5060006107b6611c5b565b83549091506000906107e690849070010000000000000000000000000000000090046001600160801b0316612afc565b84546107fb91906001600160801b0316612cf0565b9050808260000160008282546108119190612afc565b9091555060009050610821611e8a565b60038601549091506000906108409083906001600160a01b0316611edd565b6003870154600288015491925061088c916001600160a01b03909116906108849070010000000000000000000000000000000090046001600160801b031684612cf0565b849190611f68565b600386015460028701546001600160a01b038981169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906108ef9070010000000000000000000000000000000090046001600160801b0316600019612b4e565b60405190815260200160405180910390a3610908611d66565b6001600160a01b0397909716600090815260209790975250506040852085815560018101869055600281018690556003810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600481018690556005019490945550505050565b600061097e611d66565b3360009081526020919091526040812080549092506109bc906001600160801b03700100000000000000000000000000000000820481169116612cc8565b6001600160801b0316905060008111610a175760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610373565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190612987565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015610b5857600080fd5b505af1158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612987565b506000610b9b612077565b516040805180820190915281815290915060208101610bba8484612afc565b9052610bcc9060048501906002612733565b50610c1c610c0e6040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611ced565b610c188484612afc565b9055565b505050565b6000610c2b611bf1565b51905090565b610c6f6040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611ced565b5415610cbd5760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610373565b610d04610cfe6040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611ced565b60019055565b610d78610d456040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b610dec610db96040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b610e33610e2d6040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b60649055565b5050565b6000610e41611d66565b3360009081526020918252604080822081516101008101835281546001600160801b03808216835270010000000000000000000000000000000091829004811683880152600184015480821684870152829004811660608401526002808501548083166080860152929092041660a083015260038301546001600160a01b031660c083015283518085019485905260048401805482529397509495610f0b959294889460e0870194939092909190600587019085018083116106ca57505050505081525050611da6565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc79190612987565b50815481908390601090610ff990849070010000000000000000000000000000000090046001600160801b0316612ad1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008260040160016002811061105c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01541115611081578060048301600101600082825461107b9190612cf0565b90915550505b610e333383612113565b6000611095611d66565b3360009081526020919091526040902060038101549091506001600160a01b03838116911614156111085760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610373565b6000611112611e8a565b60038301549091506000906111319083906001600160a01b0316611edd565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c08301528251808401938490529394506000936111ee93889260e08501929160048501919082845b8154815260200190600101908083116111cd5750505050508152505061230a565b6003850154600286015491925061123a916001600160a01b03909116906112329070010000000000000000000000000000000090046001600160801b031685612cf0565b859190611f68565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09061129b9070010000000000000000000000000000000090046001600160801b0316600019612b4e565b60405190815260200160405180910390a360006112b88487611edd565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0846040516112ff91815260200190565b60405180910390a361131d866113158484612afc565b869190611f68565b506002840180546001600160801b03928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b611390611bf1565b516001600160a01b031633146113e85760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b826001600160801b0316826001600160801b03161115801561141c5750826001600160801b0316846001600160801b031611155b6114685760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610373565b6001600160801b03841661147a574393505b6000611484611c5b565b9050600061149061237b565b9050866001600160801b0316826000015410156114ef5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610373565b60006114f9611d66565b6001600160a01b038a1660009081526020919091526040902080549091506001600160801b03161561156d5760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610373565b6001600160a01b038416156115825783611584565b885b93506000606483600001518a61159a9190612c06565b6115a49190612b14565b90506040518061010001604052808a6001600160801b0316815260200160006001600160801b03168152602001896001600160801b03168152602001886001600160801b03168152602001876001600160801b03168152602001826001600160801b03168152602001866001600160a01b03168152602001604051806040016040528060008152602001600081525081525061163e611d66565b6001600160a01b038c8116600090815260209283526040908190208451938501516001600160801b0394851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e083015161170391600484019190612733565b50905050886001600160801b03168460000160008282546117249190612cf0565b9091555060009050611734611e8a565b60038401549091506000906117539083906001600160a01b0316611edd565b600385015490915061177b906001600160a01b03166108846001600160801b03861684612afc565b60038401546040516001600160801b03851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b60006117e2611d66565b6001600160a01b0383166000908152602091909152604090209050610e338282612113565b61180f611bf1565b516001600160a01b031633146118675760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b6000611871611c5b565b9050818160000160008282546118879190612afc565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561191357600080fd5b505af1158015611927573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612987565b611953611ca0565b516001600160a01b031633146119ab5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b6105ad610db96040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b6119f4612771565b6119fc611d66565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b815481526020019060010190808311611aa75750505050508152505090505b919050565b6000610c2b61237b565b611add611ca0565b516001600160a01b03163314611b355760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b6105ad610db96040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b6000610c2b611ca0565b600080611b8b611e8a565b9050611b988185856123c8565b9150505b92915050565b600080611bad611e8a565b9050611be78686611bde7f000000000000000000000000000000000000000000000000000000000000000043612cf0565b84929190612421565b9695505050505050565b604080516020810190915260008152611c3e6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b604080516020810190915290546001600160a01b03168152905090565b6000611c9b6040518060400160405280600a81526020017f756e61737369676e656400000000000000000000000000000000000000000000815250611ced565b905090565b604080516020810190915260008152611c3e6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320905060008184604051602001611d28929190612a04565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6000611c9b6040518060400160405280600681526020017f6772616e7473000000000000000000000000000000000000000000000000000081525061248f565b600081608001516001600160801b0316431080611dcf575081604001516001600160801b031643105b15611ddc57506000611ac6565b81606001516001600160801b03164310611e115760208201518251611e019190612cc8565b6001600160801b03169050611ac6565b600082604001518360600151611e279190612cc8565b6001600160801b031683604001516001600160801b031643611e499190612cf0565b8451611e5e91906001600160801b0316612c35565b611e689190612b3a565b905082602001516001600160801b031681611e839190612cf0565b9392505050565b604080518082019091526060815260006020820152611c9b6040518060400160405280600b81526020017f766f74696e67506f7765720000000000000000000000000000000000000000008152506124ca565b600080611eeb846020015190565b6001600160a01b03841660009081526020919091526040902080549091506001600160801b031680611f2257600092505050611b9c565b6000611f5d83611f33600185612cf0565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115611fd05760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610373565b6000611fdd846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916001600160801b0390911690811561202f5761202b86611f33600185612cf0565b5090505b814382141561204657612043600184612cf0565b90505b848160018901015543821461206a5761206a8785612065866001612afc565b612503565b5050505050505050505050565b6040805160208101909152600081526120c46040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611ced565b604080516020810190915290548152905090565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b905060008184604051602001611d28929190612a04565b600061211d611e8a565b600383015490915060009061213c9083906001600160a01b0316611edd565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c083015282518084019093529293506000926121fd92879160e08401919060048401908282826020028201918154815260200190600101908083116111cd5750505050508152505061230a565b600285015490915060009061222f9070010000000000000000000000000000000090046001600160801b031683612c54565b90508061223f5750505050610e33565b6000811315612269576003850154612264906001600160a01b03166113158386612afc565b612291565b6003850154612291906001600160a01b031661228783600019612b4e565b6113159086612cf0565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546001600160801b0392831670010000000000000000000000000000000002921691909117905550505050565b60008061231683611da6565b9050600083602001516001600160801b0316826123339190612afc565b845161234891906001600160801b0316612cf0565b9050606461235461237b565b5161235f9083612c35565b6123699190612b3a565b6123739083612afc565b949350505050565b6040805160208101909152600081526120c46040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b6000806123d6856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916001600160801b03909116906124138488838686612523565b9a9950505050505050505050565b60008061242f866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916001600160801b03909116908061246d858a8a8787612523565b9150915083821115612413576124848483876126c8565b612413858385612503565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c905060008184604051602001611d28929190612a04565b60408051808201909152606081526000602082015260006124ea836126f8565b6040805180820190915293845260208401525090919050565b80821061250f57600080fd5b6001600160801b031660809190911b179055565b600080826125735760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610373565b8585111561258057600080fd5b82841061258c57600080fd5b6000612599600185612cf0565b90508460005b82821461263d57600060026125b48585612afc565b6125bf906001612afc565b6125c99190612b3a565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b82141561260b579296509194506126be9350505050565b8b821015612627578a82101561261f578293505b829450612635565b612632600184612cf0565b95505b50505061259f565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156126b45760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610373565b9195509093505050505b9550959350505050565b818311156126d557600080fd5b60018101835b838110156126f1576000828201556001016126db565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001611d28929190612a04565b8260028101928215612761579160200282015b82811115612761578251825591602001919060010190612746565b5061276d9291506127bc565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e081016127b76127d1565b905290565b5b8082111561276d57600081556001016127bd565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114611ac657600080fd5b80356001600160801b0381168114611ac657600080fd5b60006020828403121561282e578081fd5b611e83826127ef565b60008060408385031215612849578081fd5b612852836127ef565b9150612860602084016127ef565b90509250929050565b60008060008060008060c08789031215612881578182fd5b61288a876127ef565b955061289860208801612806565b94506128a660408801612806565b93506128b460608801612806565b92506128c260808801612806565b91506128d060a088016127ef565b90509295509295509295565b600080604083850312156128ee578182fd5b6128f7836127ef565b946020939093013593505050565b6000806000806060858703121561291a578384fd5b612923856127ef565b935060208501359250604085013567ffffffffffffffff80821115612946578384fd5b818701915087601f830112612959578384fd5b813581811115612967578485fd5b886020828501011115612978578485fd5b95989497505060200194505050565b600060208284031215612998578081fd5b81518015158114611e83578182fd5b6000602082840312156129b8578081fd5b5035919050565b600080604083850312156129d1578182fd5b82359150612860602084016127ef565b8060005b60028110156104b05781518452602093840193909101906001016129e5565b60008382528251815b81811015612a2957602081860181015185830182015201612a0d565b81811115612a3a5782602083860101525b50919091016020019392505050565b6000610120820190506001600160801b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c0830151612ab760c08401826001600160a01b03169052565b5060e0830151612aca60e08401826129e1565b5092915050565b60006001600160801b03808316818516808303821115612af357612af3612d07565b01949350505050565b60008219821115612b0f57612b0f612d07565b500190565b60006001600160801b0380841680612b2e57612b2e612d36565b92169190910492915050565b600082612b4957612b49612d36565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615612b8d57612b8d612d07565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615612bc757612bc7612d07565b858712925087820587128484161615612be257612be2612d07565b87850587128184161615612bf857612bf8612d07565b505050929093029392505050565b60006001600160801b0380831681851681830481118215151615612c2c57612c2c612d07565b02949350505050565b6000816000190483118215151615612c4f57612c4f612d07565b500290565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615612c8e57612c8e612d07565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615612cc257612cc2612d07565b50500390565b60006001600160801b0383811690831681811015612ce857612ce8612d07565b039392505050565b600082821015612d0257612d02612d07565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220ab4b53fc806b57dc5e94055ae34c5ad9fef6e0260032592719959276cf204a4064736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/src/VestingVaultStorage.ts b/packages/council-artifacts/src/VestingVaultStorage.ts new file mode 100644 index 00000000..115c629d --- /dev/null +++ b/packages/council-artifacts/src/VestingVaultStorage.ts @@ -0,0 +1,10 @@ +export const VestingVaultStorage = { + "_format": "hh-sol-artifact-1", + "contractName": "VestingVaultStorage", + "sourceName": "contracts/libraries/VestingVaultStorage.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6e8f1f53469e1b12f0a8477076e3c2ec59ccadf5c6e6bec576e27021f12bcbf64736f6c63430008030033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6e8f1f53469e1b12f0a8477076e3c2ec59ccadf5c6e6bec576e27021f12bcbf64736f6c63430008030033", + "linkReferences": {}, + "deployedLinkReferences": {} +} as const; diff --git a/packages/council-artifacts/tsconfig.json b/packages/council-artifacts/tsconfig.json new file mode 100644 index 00000000..2c096f70 --- /dev/null +++ b/packages/council-artifacts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@council/tsconfig/base.json", + "include": ["src"], + "exclude": ["node_modules"], + "compilerOptions": { + "module": "ESNext", + "outDir": "dist", + "target": "ESNext", + }, +} diff --git a/packages/council-cli/.eslintrc b/packages/council-cli/.eslintrc index c224a7c2..469fbb2f 100644 --- a/packages/council-cli/.eslintrc +++ b/packages/council-cli/.eslintrc @@ -1,3 +1,8 @@ { - "extends": ["@council/eslint-config"] + "extends": ["@council/eslint-config"], + "rules": { + "turbo/no-undeclared-env-vars": "warn", + "no-console": "off", + "no-restricted-imports": "off", + }, } diff --git a/packages/council-cli/.prettierignore b/packages/council-cli/.prettierignore deleted file mode 100644 index 53c37a16..00000000 --- a/packages/council-cli/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -dist \ No newline at end of file diff --git a/packages/council-cli/.prettierrc.js b/packages/council-cli/.prettierrc.js deleted file mode 100644 index 63336b33..00000000 --- a/packages/council-cli/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), - plugins: [require("prettier-plugin-organize-imports")], -}; diff --git a/packages/council-cli/CHANGELOG.md b/packages/council-cli/CHANGELOG.md new file mode 100644 index 00000000..d91d1d3e --- /dev/null +++ b/packages/council-cli/CHANGELOG.md @@ -0,0 +1,33 @@ +# @delvtech/council-cli + +## 0.0.4 + +### Patch Changes + +- 1c28998: Fix dotenv parsing + +## 0.0.3 + +### Patch Changes + +- a5ed20e: Make Hardhat a peer dependency and add more error handling +- Updated dependencies [a5ed20e] + - @delvtech/council-artifacts@0.0.3 + - @delvtech/council-viem@0.0.3 + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [5ab0981] + - @delvtech/council-artifacts@0.0.2 + - @delvtech/council-viem@0.0.2 + +## 0.0.1 + +### Patch Changes + +- abebf3c: Initial release 🚀 +- Updated dependencies [abebf3c] + - @delvtech/council-artifacts@0.0.1 + - @delvtech/council-viem@0.0.1 diff --git a/packages/council-cli/hardhat.config.cjs b/packages/council-cli/hardhat.config.cjs new file mode 100644 index 00000000..b86b01ec --- /dev/null +++ b/packages/council-cli/hardhat.config.cjs @@ -0,0 +1,16 @@ +module.exports = { + defaultNetwork: "hardhat", + solidity: { + compilers: [ + { + version: "0.8.3", + settings: { + optimizer: { + enabled: true, + runs: 7500, + }, + }, + }, + ], + }, +}; diff --git a/packages/council-cli/merkle-rewards/sample-accounts.json b/packages/council-cli/merkle-rewards/sample-accounts.json new file mode 100644 index 00000000..0b44e00a --- /dev/null +++ b/packages/council-cli/merkle-rewards/sample-accounts.json @@ -0,0 +1,82 @@ +[ + { + "address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "amount": "100.000000000000000000" + }, + { + "address": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "amount": "100.000000000000000000" + }, + { + "address": "0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc", + "amount": "100.000000000000000000" + }, + { + "address": "0x90f79bf6eb2c4f870365e785982e1f101e93b906", + "amount": "100.000000000000000000" + }, + { + "address": "0x15d34aaf54267db7d7c367839aaf71a00a2c6a65", + "amount": "100.000000000000000000" + }, + { + "address": "0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc", + "amount": "100.000000000000000000" + }, + { + "address": "0x976ea74026e726554db657fa54763abd0c3a0aa9", + "amount": "100.000000000000000000" + }, + { + "address": "0x14dc79964da2c08b23698b3d3cc7ca32193d9955", + "amount": "100.000000000000000000" + }, + { + "address": "0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f", + "amount": "100.000000000000000000" + }, + { + "address": "0xa0ee7a142d267c1f36714e4a8f75612f20a79720", + "amount": "100.000000000000000000" + }, + { + "address": "0xbcd4042de499d14e55001ccbb24a551f3b954096", + "amount": "100.000000000000000000" + }, + { + "address": "0x71be63f3384f5fb98995898a86b02fb2426c5788", + "amount": "100.000000000000000000" + }, + { + "address": "0xfabb0ac9d68b0b445fb7357272ff202c5651694a", + "amount": "100.000000000000000000" + }, + { + "address": "0x1cbd3b2770909d4e10f157cabc84c7264073c9ec", + "amount": "100.000000000000000000" + }, + { + "address": "0xdf3e18d64bc6a983f673ab319ccae4f1a57c7097", + "amount": "100.000000000000000000" + }, + { + "address": "0xcd3b766ccdd6ae721141f452c550ca635964ce71", + "amount": "100.000000000000000000" + }, + { + "address": "0x2546bcd3c84621e976d8185a91a922ae77ecec30", + "amount": "100.000000000000000000" + }, + { + "address": "0xbda5747bfd65f08deb54cb465eb87d40e51b197e", + "amount": "100.000000000000000000" + }, + { + "address": "0xdd2fd4581271e230360230f9337d5c0430bf44c0", + "amount": "100.000000000000000000" + }, + { + "address": "0x8626f6940e2eb28930efb4cef49b2d1f2c9c1199", + "amount": "100.000000000000000000" + } +] diff --git a/packages/council-cli/merkle-rewards/sample-merkle-rewards-tree.json b/packages/council-cli/merkle-rewards/sample-merkle-rewards-tree.json new file mode 100644 index 00000000..d0fb7f46 --- /dev/null +++ b/packages/council-cli/merkle-rewards/sample-merkle-rewards-tree.json @@ -0,0 +1,199 @@ +{ + "root": "0xbd5a53187c4b15fcfb5288c353f31209cf547bc07df38f8add978643ca88b3a6", + "rewardsTotal": "2000.000000000000000000", + "uniqueAccountsTotal": 20, + "accounts": { + "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266": { + "amount": "100.000000000000000000", + "proof": [ + "0xb744c83281c8c4e19fd76aa9822f709c68558891ccff788560f3873aab6b19b3", + "0x59b10379e7370dd4868dbb6e31a210b3379278d34f050d183314e59e616790e2", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x70997970c51812dc3a010c7d01b50e0d17dc79c8": { + "amount": "100.000000000000000000", + "proof": [ + "0x271e61abd8219c77862fda17c0c094302fa9884962394db34da950745db9fbbb", + "0x59b10379e7370dd4868dbb6e31a210b3379278d34f050d183314e59e616790e2", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc": { + "amount": "100.000000000000000000", + "proof": [ + "0x259b98d749bca4a7d88fb6d07e639aad4a3f8b7d12f690ce0e60d427bb3ebcae", + "0x3f87550f26a9aab6c876c43bfdd868b17998d6149fc17d88db2e8c900e170f2e", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x90f79bf6eb2c4f870365e785982e1f101e93b906": { + "amount": "100.000000000000000000", + "proof": [ + "0x0b4c05bfeaff696a6005ca9096af2535d85c4ea6adf929f186c5765844f99f2f", + "0x3f87550f26a9aab6c876c43bfdd868b17998d6149fc17d88db2e8c900e170f2e", + "0xfe5272f0696982be8b40e82cf917505c632bb6eb069686b36f1234150f44c1c6", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x15d34aaf54267db7d7c367839aaf71a00a2c6a65": { + "amount": "100.000000000000000000", + "proof": [ + "0x31a86e2cb84e9b9bd4d2dab3b7229f0ca1c502125660a4437684eed20c038dfb", + "0xa3c3bd48b4d1ac0ab86203fe7990f3a1960550994c1c700596a4f2d6803067cc", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc": { + "amount": "100.000000000000000000", + "proof": [ + "0x237d3a47770a3265ae98e7c870ce112e5e53b0cec3c538cae793f0a6d7d7748d", + "0xa3c3bd48b4d1ac0ab86203fe7990f3a1960550994c1c700596a4f2d6803067cc", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x976ea74026e726554db657fa54763abd0c3a0aa9": { + "amount": "100.000000000000000000", + "proof": [ + "0x2bae99146855be76d9c08230ff2c83e4ce0831ed88361a397ab84f7d29b8d41f", + "0xb7285d5f39aba557c414b195e94954bc04c2b8553679b854db4de3c268b2d53e", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x14dc79964da2c08b23698b3d3cc7ca32193d9955": { + "amount": "100.000000000000000000", + "proof": [ + "0x6545c1b0851437146349911f98785b64a69871c3c18882cb762e45c605a8afc0", + "0xb7285d5f39aba557c414b195e94954bc04c2b8553679b854db4de3c268b2d53e", + "0x8e92177c103084837240d5142baedc9944b108fb970e4dd893b7e39d3395b69f", + "0xc8badbe10e05edb5c9cc1cc1985476c3a696a29d6c9cae17e68321e37aca99e7", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f": { + "amount": "100.000000000000000000", + "proof": [ + "0xa84bf1e8b6a30abc143d45ddc2a160f04396c3e759b3e5064d446b1c88093f16", + "0x8805a4a9ce1a9948c551433fe184d44a683385ab622b00458bad6483d4f985a1", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xa0ee7a142d267c1f36714e4a8f75612f20a79720": { + "amount": "100.000000000000000000", + "proof": [ + "0x0abb0359915327508657e3e644da7e117520e27b152e2b0e2be006dd9e94314f", + "0x8805a4a9ce1a9948c551433fe184d44a683385ab622b00458bad6483d4f985a1", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xbcd4042de499d14e55001ccbb24a551f3b954096": { + "amount": "100.000000000000000000", + "proof": [ + "0xce4015e9cf00d9cfc071e0098f7c3fbc17d4bd35a69ec78de7c7fdac00ad0ea3", + "0x6c3be16698f5e88eb8687e4a70728a3a98c60e39bcc4bd75c1f9fc210bde66f0", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x71be63f3384f5fb98995898a86b02fb2426c5788": { + "amount": "100.000000000000000000", + "proof": [ + "0xb20fafca7288bded45466edbfc94390ff7802fe0b0fd9ec0b9f182a8454a43f7", + "0x6c3be16698f5e88eb8687e4a70728a3a98c60e39bcc4bd75c1f9fc210bde66f0", + "0x3b0615aaf0e9b2f01348eade27e6aaa8880fff9a3b1688ebafc851cdcb8d6219", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xfabb0ac9d68b0b445fb7357272ff202c5651694a": { + "amount": "100.000000000000000000", + "proof": [ + "0xf6aac97d74332159b0b4e8e1fbd2881ce08f71cb306eb13be7a7b0708efac90f", + "0xc0a50eb1738aae75031d5226193a5bf9873dbe276d619236d29ba1bac75bb5eb", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x1cbd3b2770909d4e10f157cabc84c7264073c9ec": { + "amount": "100.000000000000000000", + "proof": [ + "0x0ea60014f6c391bcb7acf81f90fa59fa625e792024fb15ee4536e6e6c7607e20", + "0xc0a50eb1738aae75031d5226193a5bf9873dbe276d619236d29ba1bac75bb5eb", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xdf3e18d64bc6a983f673ab319ccae4f1a57c7097": { + "amount": "100.000000000000000000", + "proof": [ + "0xe629ddd09f5eabec1773b2fee1f68f0f3d08b2e1ebc0f7eac50e10c993539bba", + "0x530987fb6803a593073348ece7a6c87ff0379bcd265ad084db3a8644ad8c5ea8", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0xcd3b766ccdd6ae721141f452c550ca635964ce71": { + "amount": "100.000000000000000000", + "proof": [ + "0x6e0274f5c91b03c2cc6f3ee4dc94936c4f4e92dbbb890a353a733915a099a1a8", + "0x530987fb6803a593073348ece7a6c87ff0379bcd265ad084db3a8644ad8c5ea8", + "0x84491e941c3e589732a43f0f426befc0cdc6c5445f3c3d8306ee5213e949d98e", + "0x2539f8dd0997fbadd41e12b434e02f859a466f9d9dac0ef99ba6b88148779ad9", + "0x0282aaece03cbe80e2de11bc0a0abc93e59e19db24dcdb430a72ff396a2635e2" + ] + }, + "0x2546bcd3c84621e976d8185a91a922ae77ecec30": { + "amount": "100.000000000000000000", + "proof": [ + "0x3bc5233828d3fb84582db0271c758aa8e09050550e7cde2a55c210d7535a5cb5", + "0xede3212e5f959a0d3080ed9a06d22601ffcf9583aede2a7c94a10d94489b1332", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + }, + "0xbda5747bfd65f08deb54cb465eb87d40e51b197e": { + "amount": "100.000000000000000000", + "proof": [ + "0xed48d896b00e8d894c9ce329b527896ed364777d55a9f9e78af38d3d4f75d903", + "0xede3212e5f959a0d3080ed9a06d22601ffcf9583aede2a7c94a10d94489b1332", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + }, + "0xdd2fd4581271e230360230f9337d5c0430bf44c0": { + "amount": "100.000000000000000000", + "proof": [ + "0x7813edc1f65098212e488eab9fab15e2d8858c7bb38e1171706625fbc53cb80d", + "0xaee707d758296030a5c420cd2881cd514e90d7848b358daed594f16940ebaf00", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + }, + "0x8626f6940e2eb28930efb4cef49b2d1f2c9c1199": { + "amount": "100.000000000000000000", + "proof": [ + "0x59334dc98ed57a649c67ea1dc91886fd4a7ad58ef586e77b1b2cad24c6233cee", + "0xaee707d758296030a5c420cd2881cd514e90d7848b358daed594f16940ebaf00", + "0x538c33edc1a8faf2b292a7bcbc1ee08d818b7d328ac96ecf88c2b33b620cedd1" + ] + } + } +} diff --git a/packages/council-cli/package.json b/packages/council-cli/package.json index eef14d7d..8fddd615 100644 --- a/packages/council-cli/package.json +++ b/packages/council-cli/package.json @@ -1,62 +1,59 @@ { - "name": "@council/cli", - "version": "0.0.1", + "name": "@delvtech/council-cli", + "version": "0.0.4", "license": "MIT", - "source": "src/council.ts", - "main": "dist/index.js", + "type": "module", + "main": "dist/council.js", + "bin": { + "council": "dist/council.js" + }, "files": [ "dist" ], - "bin": { - "council": "dist/index.js" + "scripts": { + "council": "node dist/council.js", + "dev": "NODE_ENV=development tesm-node src/council.ts", + "prod": "tesm-node src/council.ts", + "build": "rimraf dist && tsc", + "watch": "tsc --watch" }, - "alias": { - "src": "./src" + "peerDependencies": { + "viem": ">=2", + "hardhat": ">=2" }, - "scripts": { - "council": "ts-node -r dotenv/config -r tsconfig-paths/register --files src/council", - "build": "tsup", - "docs": "typedoc", - "watch:docs": "typedoc --watch" + "peerDependenciesMeta": { + "hardhat": { + "optional": true + } }, "dependencies": { - "@council/deploy": "*", - "@council/sdk": "*", - "@council/typechain": "*", + "@delvtech/council-artifacts": "^0.0.3", + "@delvtech/council-viem": "^0.0.3", "ajv": "^8.12.0", - "cfonts": "^3.1.1", + "cfonts": "^3.2.0", "cli-table": "^0.3.11", + "clide-js": "^0.1.3", + "clide-plugin-command-menu": "^0.0.7", "colors": "^1.4.0", - "ganache": "^7.8.0", + "dotenv": "^16.4.5", "json-schema-typed": "^8.0.1", - "node-fetch-native": "^1.1.1", - "prompts": "^2.4.2", - "signale": "^1.4.0", - "viem": "^0.3.26", - "yargs": "^17.7.1" + "merkletreejs": "^0.3.11", + "node-fetch-native": "^1.6.2", + "signale": "^1.4.0" }, "devDependencies": { "@council/eslint-config": "*", - "@council/prettier-config": "*", "@council/tsconfig": "*", - "@types/cli-table": "^0.3.1", - "@types/node": "^18.16.1", - "@types/prompts": "^2.4.4", - "@types/signale": "^1.4.4", - "@types/yargs": "^17.0.24", - "dotenv": "^16.0.3", - "ethers": "^5.7.2", - "nodemon": "^2.0.20", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-node": "^10.9.1", - "tsconfig-paths": "^4.1.0", - "tsup": "^6.7.0", - "typedoc": "^0.23.24", - "typedoc-plugin-markdown": "^3.14.0", - "typescript": "^4.7.4" - }, - "peerDependencies": { - "ethers": ">=5.6" + "@types/cli-table": "^0.3.4", + "@types/node": "^20.11.19", + "@types/prompts": "^2.4.9", + "@types/signale": "^1.4.7", + "hardhat": "^2.20.1", + "rimraf": "^5.0.5", + "tesm-node": "^1.3.1", + "ts-node": "^10.9.2", + "typescript": "^5.3.3", + "viem": "^2.7.12" }, "publishConfig": { "access": "public" diff --git a/packages/council-cli/src/commands/config.ts b/packages/council-cli/src/commands/config.ts index 96ceb251..590c5fcc 100644 --- a/packages/council-cli/src/commands/config.ts +++ b/packages/council-cli/src/commands/config.ts @@ -1,24 +1,6 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; +import { command, passThroughCommand } from "clide-js"; -const commandDir = "./config"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "config [action]", - describe: "Manage configuration options for the Council CLI", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a config action", - }), +export default command({ + ...passThroughCommand, + description: "Manage configuration options for the Council CLI", }); diff --git a/packages/council-cli/src/commands/config/delete.ts b/packages/council-cli/src/commands/config/delete.ts deleted file mode 100644 index 327df24d..00000000 --- a/packages/council-cli/src/commands/config/delete.ts +++ /dev/null @@ -1,25 +0,0 @@ -import signale from "signale"; -import { config, CouncilClIConfig } from "src/config"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { ArgumentsCamelCase } from "yargs"; - -export const { command, describe, handler } = createCommandModule({ - command: "delete [settings...]", - describe: "Delete a setting", - - handler: async ( - // TODO: parse command for arg types - args: ArgumentsCamelCase<{ - settings?: string[]; - }>, - ) => { - const settings = await requiredArray(args.settings, { - name: "settings", - message: "Enter setting names", - }); - - config.delete(...(settings as (keyof CouncilClIConfig)[])); - signale.success(`Deleted settings: ${settings.join(", ")}`); - }, -}); diff --git a/packages/council-cli/src/commands/config/delete/[...settings].ts b/packages/council-cli/src/commands/config/delete/[...settings].ts new file mode 100644 index 00000000..d9d4a762 --- /dev/null +++ b/packages/council-cli/src/commands/config/delete/[...settings].ts @@ -0,0 +1,14 @@ +import { command } from "clide-js"; +import signale from "signale"; +import { config, CouncilCliConfig } from "../../../config.js"; + +export default command({ + description: "Delete a setting", + handler: ({ params }) => { + const { settings } = params as { + settings: (keyof CouncilCliConfig)[]; + }; + config.delete(...settings); + signale.success(`Deleted settings: ${settings.join(", ")}`); + }, +}); diff --git a/packages/council-cli/src/commands/config/get.ts b/packages/council-cli/src/commands/config/get.ts deleted file mode 100644 index 36ecd628..00000000 --- a/packages/council-cli/src/commands/config/get.ts +++ /dev/null @@ -1,24 +0,0 @@ -import signale from "signale"; -import { config, CouncilClIConfig } from "src/config"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { ArgumentsCamelCase } from "yargs"; - -export const { command, describe, handler } = createCommandModule({ - command: "get [setting]", - describe: "Get a setting", - - handler: async ( - args: ArgumentsCamelCase<{ - setting?: string; - }>, - ) => { - const setting = await requiredString(args.setting, { - name: "setting", - message: "Enter setting name", - }); - - const value = config.get(setting as keyof CouncilClIConfig); - signale.info(value); - }, -}); diff --git a/packages/council-cli/src/commands/config/get/[setting].ts b/packages/council-cli/src/commands/config/get/[setting].ts new file mode 100644 index 00000000..6a9ac041 --- /dev/null +++ b/packages/council-cli/src/commands/config/get/[setting].ts @@ -0,0 +1,15 @@ +import { command } from "clide-js"; +import signale from "signale"; +import { CouncilCliConfig, config } from "../../../config.js"; + +export default command({ + description: "Get a setting", + handler: ({ params, next }) => { + const { setting } = params as { + setting: keyof CouncilCliConfig; + }; + const value = config.get(setting as keyof CouncilCliConfig); + signale.info(value); + next(value); + }, +}); diff --git a/packages/council-cli/src/commands/config/inspect.ts b/packages/council-cli/src/commands/config/inspect.ts index 8fdab69d..eae08367 100644 --- a/packages/council-cli/src/commands/config/inspect.ts +++ b/packages/council-cli/src/commands/config/inspect.ts @@ -1,14 +1,15 @@ import Table from "cli-table"; -import { config } from "src/config"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { command } from "clide-js"; +import { config } from "../../config.js"; -export const { command, describe, handler } = createCommandModule({ - command: "inspect", - describe: "Print all settings out as a table", - - handler: async () => { +export default command({ + description: "Print all settings out as a table", + handler: () => { + const data = config.data; const table = new Table({ - rows: Object.entries(config.data), + rows: Object.entries(data).filter( + ([_, value]: unknown[]) => value !== undefined, + ), }); console.log(table.toString()); }, diff --git a/packages/council-cli/src/commands/config/reset.ts b/packages/council-cli/src/commands/config/reset.ts index f59c6527..11118c13 100644 --- a/packages/council-cli/src/commands/config/reset.ts +++ b/packages/council-cli/src/commands/config/reset.ts @@ -1,11 +1,7 @@ -import { config } from "src/config"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { command } from "clide-js"; +import { config } from "../../config.js"; -export const { command, describe, handler } = createCommandModule({ - command: "reset", - describe: "Reset settings to default", - - handler: async () => { - config.reset(); - }, +export default command({ + description: "Reset settings to default", + handler: () => config.reset(), }); diff --git a/packages/council-cli/src/commands/config/rm.ts b/packages/council-cli/src/commands/config/rm.ts new file mode 100644 index 00000000..a8b8136d --- /dev/null +++ b/packages/council-cli/src/commands/config/rm.ts @@ -0,0 +1,7 @@ +import { command } from "clide-js"; +import { config } from "../../config.js"; + +export default command({ + description: "Remove the configuration file", + handler: () => config.rm(), +}); diff --git a/packages/council-cli/src/commands/config/set.ts b/packages/council-cli/src/commands/config/set.ts index 453863b6..e4063200 100644 --- a/packages/council-cli/src/commands/config/set.ts +++ b/packages/council-cli/src/commands/config/set.ts @@ -1,28 +1,6 @@ -import { config, CouncilClIConfig } from "src/config"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { ArgumentsCamelCase } from "yargs"; +import { command, passThroughCommand } from "clide-js"; -export const { command, describe, handler } = createCommandModule({ - command: "set [setting] [value]", - describe: "Set a setting", - - handler: async ( - args: ArgumentsCamelCase<{ - setting?: string; - value?: string; - }>, - ) => { - const setting = await requiredString(args.setting, { - name: "setting", - message: "Enter setting name", - }); - - const value = await requiredString(args.value, { - name: "value", - message: "Enter value", - }); - - config.set(setting as keyof CouncilClIConfig, value); - }, +export default command({ + ...passThroughCommand, + description: "Set a configuration value", }); diff --git a/packages/council-cli/src/commands/config/set/[setting].ts b/packages/council-cli/src/commands/config/set/[setting].ts new file mode 100644 index 00000000..7f339ebd --- /dev/null +++ b/packages/council-cli/src/commands/config/set/[setting].ts @@ -0,0 +1,8 @@ +import { command, passThroughCommand } from "clide-js"; + +export default command({ + ...passThroughCommand, + description: `The setting to change. Possible values are: + - 'rpc-url' to set the rpc url +`, +}); diff --git a/packages/council-cli/src/commands/config/set/[setting]/[value].ts b/packages/council-cli/src/commands/config/set/[setting]/[value].ts new file mode 100644 index 00000000..8fb9a574 --- /dev/null +++ b/packages/council-cli/src/commands/config/set/[setting]/[value].ts @@ -0,0 +1,13 @@ +import { command } from "clide-js"; +import { CouncilCliConfig, config } from "../../../../config.js"; + +export default command({ + description: "The value to set", + handler: ({ params }) => { + const { setting, value } = params as { + setting: keyof CouncilCliConfig; + value: string; + }; + config.set(setting, value); + }, +}); diff --git a/packages/council-cli/src/commands/core-voting.ts b/packages/council-cli/src/commands/core-voting.ts new file mode 100644 index 00000000..1be6360a --- /dev/null +++ b/packages/council-cli/src/commands/core-voting.ts @@ -0,0 +1,6 @@ +import { command, passThroughCommand } from "clide-js"; + +export default command({ + ...passThroughCommand, + description: "Interact with a CoreVoting contract", +}); diff --git a/packages/council-cli/src/commands/core-voting/change-vault-status.ts b/packages/council-cli/src/commands/core-voting/change-vault-status.ts new file mode 100644 index 00000000..8c128703 --- /dev/null +++ b/packages/council-cli/src/commands/core-voting/change-vault-status.ts @@ -0,0 +1,74 @@ +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, createWalletClient, http } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; + +export default command({ + description: "Change a vault's status in a CoreVoting contract.", + + options: { + address: { + describe: "The CoreVoting contract address", + type: "string", + required: true, + }, + vault: { + describe: "The vault address", + type: "string", + required: true, + }, + valid: { + alias: ["is-valid", "approved"], + describe: "Whether or not the vault is valid", + type: "boolean", + default: true, + required: true, + }, + ...writeOptions, + }, + + handler: async ({ options, context, next }) => { + const { + account: signerAccount, + chain, + rpcUrl, + } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter Core Voting address", + }); + + const vault = await options.vault({ + prompt: "Enter Vault address", + }); + + const isValid = await options.valid({ + prompt: "Is the vault valid/approved?", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ chain, transport }); + const walletClient = createWalletClient({ + transport, + chain, + account: signerAccount, + }); + + const coreVoting = new ReadWriteCouncil({ + publicClient, + walletClient, + }).coreVoting({ address: address as `0x${string}` }); + + const hash = await coreVoting.changeVaultStatus({ + vault: vault as `0x${string}`, + isValid, + }); + + signale.success(hash); + next(hash); + }, +}); diff --git a/packages/council-cli/src/commands/deploy.ts b/packages/council-cli/src/commands/deploy.ts index 0162821d..c78a4c4e 100644 --- a/packages/council-cli/src/commands/deploy.ts +++ b/packages/council-cli/src/commands/deploy.ts @@ -1,24 +1,14 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { command } from "clide-js"; import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./deploy"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "deploy [contract]", - describe: "Deploy a contract or combination of contracts", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); + getWriteOptions, + writeOptions, +} from "../reusable-options/writeOptions.js"; + +export default command({ + description: "Deploy a contract or combination of contracts", + requiresSubcommand: true, + options: writeOptions, + handler: async ({ options, context, next }) => { + return next(await getWriteOptions(options, context)); }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "What do you want to deploy?", - }), }); diff --git a/packages/council-cli/src/commands/deploy/airdrop.ts b/packages/council-cli/src/commands/deploy/airdrop.ts index 6bf47c0e..46ae810e 100644 --- a/packages/council-cli/src/commands/deploy/airdrop.ts +++ b/packages/council-cli/src/commands/deploy/airdrop.ts @@ -1,107 +1,90 @@ -import { Airdrop__factory } from "@council/typechain"; +import { Airdrop } from "@delvtech/council-artifacts/Airdrop"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "airdrop [OPTIONS]", - aliases: ["Airdrop"], - describe: "Deploy an Airdrop contract", +export default command({ + description: "Deploy an Airdrop contract", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner", "governance"], - describe: "The contract owner's address (e.g., a Timelock contract)", - type: "string", - }, - r: { - alias: ["root", "merkle-root", "merkleRoot"], - describe: "The merkle root of the airdrop", - type: "string", - }, - t: { - alias: ["token"], - describe: "The address of the ERC20 token contract", - type: "string", - }, - v: { - alias: ["locking-vault", "lockingVault"], - describe: - "The address of the locking vault contract that will be used when calling OptimisticRewards.claimAndDelegate()", - type: "string", - }, - e: { - alias: ["expiration"], - describe: - "The expiration timestamp (in seconds) after which the funds can be reclaimed by the owner", - type: "number", - }, - c: chainOption, - u: rpcUrlOption, - w: walletKeyOption, - }); + options: { + owner: { + alias: ["governance"], + description: "The contract owner's address (e.g., a Timelock contract)", + type: "string", }, + root: { + alias: ["merkle-root"], + description: "The merkle root of the airdrop", + type: "string", + required: true, + }, + token: { + description: "The address of the ERC20 token contract", + type: "string", + required: true, + }, + vault: { + alias: ["locking-vault"], + description: + "The address of the locking vault contract that will be used when calling OptimisticRewards.claimAndDelegate()", + type: "string", + required: true, + }, + expiration: { + description: + "The expiration timestamp (in seconds) after which the funds can be reclaimed by the owner", + type: "number", + required: true, + }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const root = await requiredString(args.root, { - name: "root", - message: "Enter merkle root", - }); + const owner = (await options.owner()) || account.address; - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); + const root = await options.root({ + prompt: "Enter merkle root", + }); - const lockingVault = await requiredString(args.lockingVault, { - name: "lockingVault", - message: "Enter locking vault address", - }); + const token = await options.token({ + prompt: "Enter token address", + }); - const expiration = await requiredNumber(args.expiration, { - name: "expiration", - message: "Enter expiration timestamp (in seconds)", - }); + const lockingVault = await options.lockingVault({ + prompt: "Enter locking vault address", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const expiration = await options.expiration({ + prompt: "Enter expiration timestamp (in seconds)", + }); - signale.pending("Deploying Airdrop..."); + signale.pending("Deploying Airdrop..."); - const { address } = await deployAirDrop({ - owner, - merkleRoot: root, - token, - expiration, - lockingVault, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`Airdrop deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployAirDrop({ + owner, + merkleRoot: root, + token, + expiration, + lockingVault, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`Airdrop deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`Airdrop deployed @ ${address}`); - }, - }); + signale.success(`Airdrop deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployAirDropOptions { owner: string; @@ -127,9 +110,15 @@ export async function deployAirDrop({ onSubmitted, }: DeployAirDropOptions): Promise { return deployContract({ - abi: Airdrop__factory.abi, - args: [owner, merkleRoot, token, expiration, lockingVault], - bytecode: Airdrop__factory.bytecode, + abi: Airdrop.abi, + args: [ + owner as `0x${string}`, + merkleRoot as `0x${string}`, + token as `0x${string}`, + BigInt(expiration), + lockingVault as `0x${string}`, + ], + bytecode: Airdrop.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/core-voting.ts b/packages/council-cli/src/commands/deploy/core-voting.ts index 3c9a0cc2..cc043318 100644 --- a/packages/council-cli/src/commands/deploy/core-voting.ts +++ b/packages/council-cli/src/commands/deploy/core-voting.ts @@ -1,123 +1,96 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount, parseUnits } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "core-voting [OPTIONS]", - aliases: ["CoreVoting"], - describe: "Deploy a CoreVoting contract", +export default command({ + description: "Deploy a CoreVoting contract", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner", "timelock"], - describe: "The contract owner's address (e.g., a Timelock contract)", - type: "string", - }, - q: { - alias: ["quorum", "base-quorum", "baseQuorum"], - describe: "The default quorum for proposals", - type: "string", - }, - m: { - alias: ["min-power", "min-proposal-power", "minProposalPower"], - describe: "The minimum voting power required to create a proposal", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision to use. The quorum and power options will be multiplied by (10 ** decimals). For example, if quorum is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - g: { - alias: ["gsc"], - describe: "The address of the Governance Steering Committee contract", - type: "string", - }, - v: { - alias: ["vaults", "voting-vaults", "votingVaults"], - describe: "The addresses of the approved voting vaults", - type: "array", - string: true, - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + owner: { + alias: ["timelock"], + description: "The contract owner's address (e.g., a Timelock contract)", + type: "string", }, + quorum: { + alias: ["base-quorum"], + description: "The default quorum for proposals", + type: "string", + required: true, + }, + "min-power": { + alias: ["min-proposal-power"], + description: "The minimum voting power required to create a proposal", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision to use. The quorum and power options will be multiplied by (10 ** decimals). For example, if quorum is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + gsc: { + description: "The address of the Governance Steering Committee contract", + type: "string", + }, + vaults: { + alias: ["voting-vaults"], + description: "The addresses of the approved voting vaults", + type: "array", + default: [], + }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const quorum = await requiredNumberString(args.quorum, { - name: "quorum", - message: "Enter default quorum", - }); + const owner = (await options.owner()) || account.address; - const minPower = await requiredNumberString(args.minPower, { - name: "min-power", - message: "Enter minimum proposal power", - }); + const quorum = await options.quorum({ + prompt: "Enter default quorum", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const minPower = await options.minPower({ + prompt: "Enter minimum proposal power", + }); - const gsc = await requiredString(args.gsc, { - name: "gsc", - message: "Enter GSC address", - }); + const decimals = await options.decimals(); - const vaults = await requiredArray(args.vaults, { - name: "vaults", - message: "Enter approved voting vaults", - validate: () => true, - }); + const gsc = (await options.gsc()) || owner; - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const maybeVaults = await options.vaults({ + prompt: "Enter approved voting vaults", + }); + const vaults = maybeVaults?.filter((v) => !!v) || []; - signale.pending("Deploying CoreVoting..."); + signale.pending("Deploying CoreVoting..."); - const { address } = await deployCoreVoting({ - owner, - quorum, - minPower, - decimals, - gsc, - vaults, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`CoreVoting deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployCoreVoting({ + owner, + quorum, + minPower, + decimals, + gsc, + vaults, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`CoreVoting deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`CoreVoting deployed @ ${address}`); - }, - }); + signale.success(`CoreVoting deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployCoreVotingOptions { quorum: string; @@ -145,15 +118,15 @@ export async function deployCoreVoting({ onSubmitted, }: DeployCoreVotingOptions): Promise { return await deployContract({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, args: [ - owner, - parseBigInt(quorum, decimals), - parseBigInt(minPower, decimals), - gsc, - vaults, + owner as `0x${string}`, + parseUnits(quorum, decimals), + parseUnits(minPower, decimals), + gsc as `0x${string}`, + vaults as `0x${string}`[], ], - bytecode: CoreVoting__factory.bytecode, + bytecode: CoreVoting.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/default.ts b/packages/council-cli/src/commands/deploy/default.ts index d4db1602..0883292e 100644 --- a/packages/council-cli/src/commands/deploy/default.ts +++ b/packages/council-cli/src/commands/deploy/default.ts @@ -1,43 +1,27 @@ -import { - CoreVoting__factory, - GSCVault__factory, - MockERC20__factory, - Timelock__factory, -} from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; import colors from "colors"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { stringifyBigInts } from "src/utils/bigint/stringifyBigInts"; -import { - DAY_IN_BLOCKS, - DAY_IN_SECONDS, - ZERO_ADDRESS, -} from "src/utils/constants"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - Address, - createPublicClient, - createWalletClient, - Hex, - http, -} from "viem"; -import { privateKeyToAccount } from "viem/accounts"; -import { deployCoreVoting } from "./core-voting"; -import { deployGSCVault } from "./gsc-vault"; -import { deployLockingVault } from "./locking-vault"; -import { deployMockERC20 } from "./mock-erc20"; -import { deploySimpleProxy } from "./simple-proxy"; -import { deployTimelock } from "./timelock"; -import { deployTreasury } from "./treasury"; +import { Address, createPublicClient, createWalletClient, http } from "viem"; import { ContractInfo, DEFAULT_DEPLOYMENTS_DIR, getDeploymentStore, -} from "./utils/deploymentStore"; +} from "../../deploymentStore.js"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { DAY_IN_BLOCKS, DAY_IN_SECONDS } from "../../utils/constants.js"; +import { DeployedContract } from "../../utils/deployContract.js"; +import { stringifyBigInts } from "../../utils/stringifyBigInts.js"; +import { mine } from "../server/mine.js"; +import deployCoreVotingCommand from "./core-voting.js"; +import deployGscVaultCommand from "./gsc-vault.js"; +import deployLockingVaultCommand from "./locking-vault.js"; +import deployMockErc20Command from "./mock-erc20.js"; +import deploySimpleProxyCommand from "./simple-proxy.js"; +import deployTimelockCommand from "./timelock.js"; +import deployTreasuryCommand from "./treasury.js"; const defaults = { tokenAddress: process.env.VOTING_TOKEN_ADDRESS, @@ -51,9 +35,11 @@ const defaults = { extraVotingBlocks: process.env.EXTRA_VOTING_BLOCKS ? +process.env.EXTRA_VOTING_BLOCKS : undefined, - timelockWaitTime: +(process.env.TIMELOCK_WAIT_TIME || DAY_IN_SECONDS * 3), + timelockWaitTime: process.env.TIMELOCK_WAIT_TIME + ? +process.env.TIMELOCK_WAIT_TIME + : DAY_IN_SECONDS * 3n, treasuryAddress: process.env.TREASURY_ADDRESS, - staleBlockLag: DAY_IN_BLOCKS * 28, + staleBlockLag: DAY_IN_BLOCKS * 28n, gscQuorum: process.env.GSC_QUORUM || "3", gscLockDuration: process.env.GSC_LOCK_DURATION ? +process.env.GSC_LOCK_DURATION @@ -69,138 +55,132 @@ const defaults = { name: "default", }; -export const { command, describe, builder, handler } = createCommandModule({ - command: "default [OPTIONS]", - describe: +export default command({ + description: "Deploy a default version of Council which includes 2 CoreVoting contracts - 1 for general voting with power from a LockingVault deployed behind a SimpleProxy contract, and another for GSC voting with membership in a GSCVault. Also deployed will be a Timelock, Treasury, and if no voting token address is provided, a mock voting token.", - builder: (yargs) => { - const result = yargs.options({ - "token-address": { - describe: "The address of the token used for voting.", - type: "string", - default: defaults.tokenAddress, - }, - "token-name": { - describe: - "The name of the mock token to be deployed for voting if no token address is provided.", - type: "string", - default: defaults.tokenName, - }, - "token-symbol": { - describe: - "The symbol of the mock token to be deployed for voting if no token address is provided.", - type: "string", - default: defaults.tokenSymbol, - }, - "base-quorum": { - describe: - "The minimum voting power required for a proposal to pass. Will be scaled by 10 ** token.decimals.", - type: "string", - default: defaults.baseQuorum, - }, - "min-proposal-power": { - describe: - "The minimum voting power required to create a proposal. Will be scaled by 10 ** token.decimals.", - type: "string", - default: defaults.minProposalPower, - }, - "lock-duration": { - describe: - "The number of blocks a proposal must wait before it can be executed.", - type: "number", - default: defaults.lockDuration, - }, - "extra-voting-blocks": { - describe: - "The number of blocks for which a proposal can still be voted on after it's unlocked.", - type: "number", - default: defaults.extraVotingBlocks, - }, - "timelock-wait-time": { - describe: - "The amount of time (in seconds) a proposal must wait in the timelock before it can be executed.", - type: "number", - default: defaults.timelockWaitTime, - }, - "treasury-address": { - describe: "The address of the treasury contract.", - type: "string", - default: defaults.treasuryAddress, - }, - "stale-block-lag": { - describe: - "The number of blocks before the delegation history is forgotten. Voting power can't be used on proposals that are older than the stale block lag.", - type: "number", - default: defaults.staleBlockLag, - }, - "gsc-quorum": { - describe: - "The minimum voting power required for a GSC proposal to pass.", - type: "string", - default: defaults.gscQuorum, - }, - "gsc-lock-duration": { - describe: - "The number of blocks a GSC proposal must wait before it can be executed.", - type: "number", - default: defaults.gscLockDuration, - }, - "gsc-extra-voting-blocks": { - describe: - "The number of blocks for which a GSC proposal can still be voted on after it's unlocked.", - type: "number", - default: defaults.gscExtraVotingBlocks, - }, - "gsc-voting-power-bound": { - describe: - "The minimum voting power required to become a member of the GSC. Will be scaled by 10 ** token.decimals.", - type: "string", - default: defaults.gscVotingPowerBound, - }, - "gsc-idle-duration": { - describe: - "The amount of time (in seconds) a new GSC member must wait after joining before they can vote.", - type: "number", - default: defaults.gscIdleDuration, - }, - o: { - alias: ["out-dir"], - describe: - "The directory to write the contract addresses to; relative to the current working directory.", - type: "string", - default: defaults.outDir, - }, - n: { - alias: ["name"], - describe: "The name of the deployment.", - type: "string", - default: defaults.name, - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); - return result; + options: { + "token-address": { + description: "The address of the token used for voting.", + type: "string", + default: defaults.tokenAddress, + }, + "token-name": { + description: + "The name of the mock token to be deployed for voting if no token address is provided.", + type: "string", + default: defaults.tokenName, + }, + "token-symbol": { + description: + "The symbol of the mock token to be deployed for voting if no token address is provided.", + type: "string", + default: defaults.tokenSymbol, + }, + "base-quorum": { + description: + "The minimum voting power required for a proposal to pass. Will be scaled by 10 ** token.decimals.", + type: "string", + default: defaults.baseQuorum, + required: true, + }, + "min-proposal-power": { + description: + "The minimum voting power required to create a proposal. Will be scaled by 10 ** token.decimals.", + type: "string", + default: defaults.minProposalPower, + required: true, + }, + "lock-duration": { + description: + "The number of blocks a proposal must wait before it can be executed.", + type: "number", + default: defaults.lockDuration, + }, + "extra-voting-blocks": { + description: + "The number of blocks for which a proposal can still be voted on after it's unlocked.", + type: "number", + default: defaults.extraVotingBlocks, + }, + "timelock-wait-time": { + description: + "The amount of time (in seconds) a proposal must wait in the timelock before it can be executed.", + type: "number", + default: Number(defaults.timelockWaitTime), + required: true, + }, + "treasury-address": { + description: "The address of the treasury contract.", + type: "string", + default: defaults.treasuryAddress, + }, + "stale-block-lag": { + description: + "The number of blocks before the delegation history is forgotten. Voting power can't be used on proposals that are older than the stale block lag.", + type: "number", + default: Number(defaults.staleBlockLag), + required: true, + }, + "gsc-quorum": { + description: + "The minimum voting power required for a GSC proposal to pass.", + type: "string", + default: defaults.gscQuorum, + required: true, + }, + "gsc-lock-duration": { + description: + "The number of blocks a GSC proposal must wait before it can be executed.", + type: "number", + default: defaults.gscLockDuration, + }, + "gsc-extra-voting-blocks": { + description: + "The number of blocks for which a GSC proposal can still be voted on after it's unlocked.", + type: "number", + default: defaults.gscExtraVotingBlocks, + }, + "gsc-voting-power-bound": { + description: + "The minimum voting power required to become a member of the GSC. Will be scaled by 10 ** token.decimals.", + type: "string", + default: defaults.gscVotingPowerBound, + required: true, + }, + "gsc-idle-duration": { + description: + "The amount of time (in seconds) a new GSC member must wait after joining before they can vote.", + type: "number", + default: defaults.gscIdleDuration, + }, + out: { + alias: ["out-dir"], + description: + "The directory to write the contract addresses to; relative to the current working directory.", + type: "string", + default: defaults.outDir, + }, + name: { + description: "The name of the deployment.", + type: "string", + default: defaults.name, + }, }, - handler: async (args) => { - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - - const account = privateKeyToAccount(walletKey as Hex); + handler: async ({ data, options, fork, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; const publicClient = createPublicClient({ transport: http(rpcUrl), chain, }); - const walletClient = createWalletClient({ account, transport: http(rpcUrl), chain, }); + const council = new ReadWriteCouncil({ publicClient, walletClient }); const contractInfos: ContractInfo[] = []; @@ -210,13 +190,10 @@ export const { command, describe, builder, handler } = createCommandModule({ // 1. Voting Token // ========================================================================= - let votingTokenAddress = await requiredString(args.tokenAddress, { - name: "token-address", - message: `Enter voting token address ${colors.dim( + let votingTokenAddress = await options.tokenAddress({ + prompt: `Enter voting token address ${colors.dim( "(leave blank to deploy a mock voting token)", )}`, - initial: defaults.tokenAddress, - validate: () => true, }); // Used to scale voting power to match the token's decimals @@ -226,17 +203,9 @@ export const { command, describe, builder, handler } = createCommandModule({ if (votingTokenAddress) { signale.pending("Fetching data from voting token..."); - const tokenName = (await publicClient.readContract({ - abi: MockERC20__factory.abi, - address: votingTokenAddress as Address, - functionName: "name", - })) as string; - - decimals = (await publicClient.readContract({ - abi: MockERC20__factory.abi, - address: votingTokenAddress as Address, - functionName: "decimals", - })) as number; + const token = council.token(votingTokenAddress as `0x${string}`); + const tokenName = await token.getName(); + decimals = await token.getDecimals(); signale.success(`Data successfully fetched from voting token`); @@ -248,119 +217,88 @@ export const { command, describe, builder, handler } = createCommandModule({ // Deploy a mock voting token if no voting token address was provided if (!votingTokenAddress) { - const tokenName = await requiredString(args.tokenName, { - name: "token-name", - message: "Enter voting token name", - initial: defaults.tokenName, + const tokenName = await options.tokenName({ + prompt: "Enter voting token name", }); - const tokenSymbol = await requiredString(args.tokenSymbol, { - name: "token-symbol", - message: "Enter voting token symbol", - initial: defaults.tokenSymbol, + const tokenSymbol = await options.tokenSymbol({ + prompt: "Enter voting token symbol", }); - signale.pending("Deploying MockERC20..."); - - const mockERC20 = await deployMockERC20({ - tokenName, - tokenSymbol, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`MockERC20 deployment tx submitted: ${hash}`); + const tokenDeployData: DeployedContract = await fork({ + commands: [deployMockErc20Command], + optionValues: { + name: tokenName, + symbol: tokenSymbol, }, }); - - signale.success(`MockERC20 deployed @ ${mockERC20.address}`); - votingTokenAddress = mockERC20.address; - contractInfos.push({ name: tokenName, - ...mockERC20, + ...tokenDeployData, }); + votingTokenAddress = tokenDeployData.address; } // ========================================================================= // 2. GSC CoreVoting // ========================================================================= - const gscQuorum = await requiredString(args.gscQuorum, { - name: "gsc-quorum", - message: "Enter GSC quorum", - initial: defaults.gscQuorum, - }); - - signale.pending("Deploying GSC CoreVoting..."); - - const gscCoreVoting = await deployCoreVoting({ - quorum: gscQuorum, - // As long as you're a member, you can create a proposal - minPower: "1", - // All members get 1 vote - decimals: 0, - // There is no GSC for the GSC - gsc: ZERO_ADDRESS, - // The GSC vault depends on the regular CoreVoting contract being deployed - // first so we'll approve it later - vaults: [], - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`GSC CoreVoting deployment tx submitted: ${hash}`); - }, + const gscQuorum = await options.gscQuorum({ + prompt: "Enter GSC quorum", }); - signale.success(`GSC CoreVoting deployed @ ${gscCoreVoting.address}`); - + const gscCoreVotingDeployData: DeployedContract = await fork({ + commands: [deployCoreVotingCommand], + optionValues: { + owner: account.address, + quorum: gscQuorum, + minPower: gscQuorum, + decimals, + }, + }); contractInfos.push({ name: "GSCCoreVoting", - ...gscCoreVoting, + ...gscCoreVotingDeployData, }); + const gscCoreVoting = council.coreVoting({ + address: gscCoreVotingDeployData.address, + }); + const gscLockDuration = await options.gscLockDuration(); + // Set the GSC CoreVoting lock duration if provided - if (args.gscLockDuration) { + if (gscLockDuration) { signale.pending( - `Setting GSC CoreVoting lock duration to ${args.gscLockDuration}...`, + `Setting GSC CoreVoting lock duration to ${gscLockDuration}...`, ); - const hash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: gscCoreVoting.address as Address, - functionName: "setLockDuration", - args: [args.gscLockDuration], + const hash = await gscCoreVoting.setLockDuration({ + blocks: BigInt(gscLockDuration), }); signale.pending(`GSC CoreVoting lock duration tx submitted: ${hash}`); - await publicClient.waitForTransactionReceipt({ hash }); - signale.success( - `Successfully set GSC CoreVoting lock duration to ${args.gscLockDuration}`, + `Successfully set GSC CoreVoting lock duration to ${gscLockDuration}`, ); } + const gscExtraVotingBlocks = await options.gscExtraVotingBlocks(); + // Set the GSC CoreVoting extra voting time if provided - if (args.gscExtraVotingBlocks) { + if (gscExtraVotingBlocks) { signale.pending( - `Setting GSC CoreVoting extra voting time to ${args.gscExtraVotingBlocks}...`, + `Setting GSC CoreVoting extra voting time to ${gscExtraVotingBlocks}...`, ); - const hash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: gscCoreVoting.address as Address, - functionName: "changeExtraVotingTime", - args: [args.gscExtraVotingBlocks], + const hash = await gscCoreVoting.changeExtraVotingTime({ + extraVoteBlocks: BigInt(gscExtraVotingBlocks), }); signale.pending(`GSC CoreVoting extra voting time tx submitted: ${hash}`); - await publicClient.waitForTransactionReceipt({ hash }); - signale.success( - `Successfully set GSC CoreVoting extra voting time to ${args.gscExtraVotingBlocks}`, + `Successfully set GSC CoreVoting extra voting time to ${gscExtraVotingBlocks}`, ); } @@ -368,64 +306,42 @@ export const { command, describe, builder, handler } = createCommandModule({ // 3. Timelock // ========================================================================= - const timelockWaitTime = await requiredNumber(args.timelockWaitTime, { - name: "timelock-wait-time", - message: `Enter timelock wait time ${colors.dim("(in seconds)")}`, - initial: defaults.timelockWaitTime, + const timelockWaitTime = await options.timelockWaitTime({ + prompt: `Enter timelock wait time ${colors.dim("(in seconds)")}`, }); - signale.pending("Deploying Timelock..."); - - const timelock = await deployTimelock({ - waitTime: timelockWaitTime, - gsc: gscCoreVoting.address, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`Timelock deployment tx submitted: ${hash}`); + const timelockDeployData: DeployedContract = await fork({ + commands: [deployTimelockCommand], + optionValues: { + waitTime: timelockWaitTime, + gsc: gscCoreVotingDeployData.address, }, }); - - signale.success(`Timelock deployed @ ${timelock.address}`); - contractInfos.push({ name: "Timelock", - ...timelock, + ...timelockDeployData, }); // ========================================================================= // 4. Treasury // ========================================================================= - let treasuryAddress = await requiredString(args.treasuryAddress, { - name: "treasury-address", - message: `Enter Treasury address ${colors.dim( + const treasuryAddress = await options.treasuryAddress({ + prompt: `Enter Treasury address ${colors.dim( "(leave blank to deploy a new one)", )}`, - initial: defaults.treasuryAddress, - validate: () => true, }); if (!treasuryAddress) { - signale.pending("Deploying Treasury..."); - - const treasury = await deployTreasury({ - owner: timelock.address, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`Treasury deployment tx submitted: ${hash}`); + const treasuryDeployData: DeployedContract = await fork({ + commands: [deployTreasuryCommand], + optionValues: { + owner: timelockDeployData.address, }, }); - - signale.success(`Treasury deployed @ ${treasury.address}`); - treasuryAddress = treasury.address; - contractInfos.push({ name: "Treasury", - ...treasury, + ...treasuryDeployData, }); } @@ -433,128 +349,111 @@ export const { command, describe, builder, handler } = createCommandModule({ // 5. Voting Vaults // ========================================================================= - const staleBlockLag = await requiredNumber(args.staleBlockLag, { - name: "stale-block-lag", - message: "Enter stale block lag", - initial: defaults.staleBlockLag, + const staleBlockLag = await options.staleBlockLag({ + prompt: "Enter stale block lag", }); - signale.pending("Deploying LockingVault..."); + if (chain.id === 31337) { + const blocksToMine = staleBlockLag * 2; + // Calling queryVotePower on a voting vault that has a stale block lag larger + // than the current block height will result in an error. To avoid this, we + // we fast forward the block height by the stale block lag. + signale.pending( + `Fast forwarding block height by ${blocksToMine} blocks...`, + ); - const lockingVault = await deployLockingVault({ - token: votingTokenAddress, - staleBlockLag, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`LockingVault deployment tx submitted: ${hash}`); - }, - }); + const blockNumber = await mine({ + blocks: blocksToMine, + client: publicClient, + }); - signale.success(`LockingVault deployed @ ${lockingVault.address}`); + signale.success( + `Successfully fast forwarded block height to ${blockNumber}`, + ); + } + const lockingVaultDeployData: DeployedContract = await fork({ + commands: [deployLockingVaultCommand], + optionValues: { + token: votingTokenAddress, + staleBlockLag, + }, + }); contractInfos.push({ name: "LockingVault", - ...lockingVault, + ...lockingVaultDeployData, }); - signale.pending("Deploying LockingVault SimpleProxy..."); - - const lockingVaultProxy = await deploySimpleProxy({ - owner: timelock.address, - implementation: lockingVault.address, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending( - `LockingVault SimpleProxy deployment tx submitted: ${hash}`, - ); + const lockVaultProxyDeployData: DeployedContract = await fork({ + commands: [deploySimpleProxyCommand], + optionValues: { + owner: timelockDeployData.address, + implementation: lockingVaultDeployData.address, }, }); - signale.success( - `LockingVault SimpleProxy deployed @ ${lockingVaultProxy.address}`, - ); - contractInfos.push({ name: "LockingVaultProxy", - ...lockingVaultProxy, + ...lockVaultProxyDeployData, }); // ========================================================================= // 6. CoreVoting // ========================================================================= - const baseQuorum = await requiredString(args.baseQuorum, { - name: "base-quorum", - message: "Enter base quorum", - initial: defaults.baseQuorum, + const baseQuorum = await options.baseQuorum({ + prompt: "Enter base quorum", }); - const minProposalPower = await requiredString(args.minProposalPower, { - name: "min-proposal-power", - message: "Enter minimum proposal power", - initial: defaults.minProposalPower, + const minProposalPower = await options.minProposalPower({ + prompt: "Enter minimum proposal power", }); - signale.pending("Deploying CoreVoting..."); - - const coreVoting = await deployCoreVoting({ - quorum: baseQuorum, - minPower: minProposalPower, - decimals, - gsc: gscCoreVoting.address, - vaults: [lockingVaultProxy.address], - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`CoreVoting deployment tx submitted: ${hash}`); + const coreVotingDeployData: DeployedContract = await fork({ + commands: [deployCoreVotingCommand], + optionValues: { + quorum: baseQuorum, + minPower: minProposalPower, + decimals, + gsc: gscCoreVotingDeployData.address, + vaults: [lockVaultProxyDeployData.address], }, }); - - signale.success(`CoreVoting deployed @ ${coreVoting.address}`); - contractInfos.push({ name: "CoreVoting", - ...coreVoting, + ...coreVotingDeployData, + }); + + const coreVoting = council.coreVoting({ + address: coreVotingDeployData.address, }); + const lockDuration = await options.lockDuration(); // Set the CoreVoting lock duration if provided - if (args.lockDuration) { - signale.pending( - `Setting CoreVoting lock duration to ${args.lockDuration}...`, - ); + if (lockDuration) { + signale.pending(`Setting CoreVoting lock duration to ${lockDuration}...`); - const hash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: coreVoting.address as Address, - functionName: "setLockDuration", - args: [args.lockDuration], + const hash = await coreVoting.setLockDuration({ + blocks: BigInt(lockDuration), }); signale.pending(`CoreVoting lock duration tx submitted: ${hash}`); - await publicClient.waitForTransactionReceipt({ hash }); - signale.success( - `Successfully set CoreVoting lock duration to ${args.lockDuration}`, + `Successfully set CoreVoting lock duration to ${lockDuration}`, ); } + const extraVotingBlocks = await options.extraVotingBlocks(); + // Set the CoreVoting extra voting time if provided - if (args.extraVotingBlocks) { + if (extraVotingBlocks) { signale.pending( - `Setting CoreVoting extra voting time to ${args.extraVotingBlocks}...`, + `Setting CoreVoting extra voting time to ${extraVotingBlocks}...`, ); - const hash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: coreVoting.address as Address, - functionName: "changeExtraVotingTime", - args: [args.extraVotingBlocks], + const hash = await coreVoting.changeExtraVotingTime({ + extraVoteBlocks: BigInt(extraVotingBlocks), }); signale.pending(`CoreVoting extra voting time tx submitted: ${hash}`); @@ -562,7 +461,7 @@ export const { command, describe, builder, handler } = createCommandModule({ await publicClient.waitForTransactionReceipt({ hash }); signale.success( - `Successfully set CoreVoting extra voting time to ${args.extraVotingBlocks}`, + `Successfully set CoreVoting extra voting time to ${extraVotingBlocks}`, ); } @@ -570,70 +469,54 @@ export const { command, describe, builder, handler } = createCommandModule({ // 6. GSCVault // ========================================================================= - const gscVotingPowerBound = await requiredString(args.gscVotingPowerBound, { - name: "gsc-voting-power-bound", - message: "Enter GSC voting power bound", - initial: defaults.gscVotingPowerBound, + const gscVotingPowerBound = await options.gscVotingPowerBound({ + prompt: "Enter GSC voting power bound", }); - signale.pending("Deploying GSCVault..."); - - const gscVault = await deployGSCVault({ - coreVoting: coreVoting.address, - votingPowerBound: gscVotingPowerBound, - decimals, - owner: timelock.address, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`GSCVault deployment tx submitted: ${hash}`); + const gscVaultDeployData: DeployedContract = await fork({ + commands: [deployGscVaultCommand], + optionValues: { + coreVoting: coreVotingDeployData.address, + votingPowerBound: gscVotingPowerBound, + decimals, + owner: timelockDeployData.address, }, }); - - signale.success(`GSCVault deployed @ ${gscVault.address}`); - contractInfos.push({ name: "GSCVault", - ...gscVault, + ...gscVaultDeployData, }); + const gscIdleDuration = await options.gscIdleDuration(); + // Set the GSCVault idle duration if provided - if (args.gscIdleDuration) { + if (gscIdleDuration) { signale.pending( - `Setting GSCVault idle duration to ${args.gscIdleDuration}...`, + `Setting GSCVault idle duration to ${gscIdleDuration}...`, ); - const hash = await walletClient.writeContract({ - abi: GSCVault__factory.abi, - address: gscVault.address as Address, - functionName: "setIdleDuration", - args: [args.gscIdleDuration], + const gscVault = council.gscVault(gscCoreVotingDeployData.address); + const hash = await gscVault.setIdleDuration({ + duration: BigInt(gscIdleDuration), }); signale.pending(`GSCVault idle duration tx submitted: ${hash}`); - await publicClient.waitForTransactionReceipt({ hash }); - signale.success( - `Successfully set GSCVault idle duration to ${args.gscIdleDuration}`, + `Successfully set GSCVault idle duration to ${gscIdleDuration}`, ); } // Approve the GSCVault to be used by the GSC CoreVoting contract signale.pending("Changing GSCVault status in GSC CoreVoting"); - const gscVaultStatusHash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: gscCoreVoting.address as Address, - functionName: "changeVaultStatus", - args: [gscVault.address, true], + const gscVaultStatusHash = await coreVoting.changeVaultStatus({ + vault: gscVaultDeployData.address, + isValid: true, }); signale.pending(`GSCVault status tx submitted: ${gscVaultStatusHash}`); - await publicClient.waitForTransactionReceipt({ hash: gscVaultStatusHash }); - signale.success("Successfully changed GSCVault status in GSC CoreVoting"); // ========================================================================= @@ -643,68 +526,57 @@ export const { command, describe, builder, handler } = createCommandModule({ signale.pending("Setting GSC CoreVoting owner to Timelock..."); const gscCoreVotingOwnerHash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: gscCoreVoting.address as Address, + abi: CoreVoting.abi, + address: gscCoreVotingDeployData.address as Address, functionName: "setOwner", - args: [timelock.address], + args: [timelockDeployData.address], }); signale.pending( `GSC CoreVoting owner tx submitted: ${gscCoreVotingOwnerHash}`, ); - await publicClient.waitForTransactionReceipt({ hash: gscCoreVotingOwnerHash, }); - signale.success("Successfully set GSC CoreVoting owner to Timelock"); signale.pending("Setting CoreVoting owner to Timelock..."); const coreVotingOwnerHash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, address: coreVoting.address as Address, functionName: "setOwner", - args: [timelock.address], + args: [timelockDeployData.address], }); signale.pending(`CoreVoting owner tx submitted: ${coreVotingOwnerHash}`); - await publicClient.waitForTransactionReceipt({ hash: coreVotingOwnerHash }); signale.success("Successfully set CoreVoting owner to Timelock"); - signale.pending("Setting Timelock owner to CoreVoting..."); const timelockOwnerHash = await walletClient.writeContract({ - abi: Timelock__factory.abi, - address: timelock.address as Address, + abi: Timelock.abi, + address: timelockDeployData.address, functionName: "setOwner", args: [coreVoting.address], }); signale.pending(`Timelock owner tx submitted: ${timelockOwnerHash}`); - await publicClient.waitForTransactionReceipt({ hash: timelockOwnerHash }); - signale.success("Successfully set Timelock owner to CoreVoting"); // ========================================================================= // 8. Save the addresses // ========================================================================= - const deploymentName = await requiredString(args.name, { - name: "name", - message: "Enter deployment name", - initial: defaults.name, + const deploymentName = await options.name({ + prompt: "Enter deployment name", }); - const outDir = await requiredString(args.outDir, { - name: "out-dir", - message: "Enter output directory", - initial: defaults.outDir, + const outDir = await options.outDir({ + prompt: "Enter output directory", }); const store = getDeploymentStore(deploymentName, chain.id, outDir); - await store.set({ name: deploymentName, chainId: chain.id, @@ -729,5 +601,7 @@ export const { command, describe, builder, handler } = createCommandModule({ console.log(`${contractInfo.name}: ${contractInfo.address}`); }); console.log(colors.dim(`${"=".repeat(80)}`)); + + next(contractInfos); }, }); diff --git a/packages/council-cli/src/commands/deploy/gsc-vault.ts b/packages/council-cli/src/commands/deploy/gsc-vault.ts index 6b3fa84c..abc46822 100644 --- a/packages/council-cli/src/commands/deploy/gsc-vault.ts +++ b/packages/council-cli/src/commands/deploy/gsc-vault.ts @@ -1,98 +1,75 @@ -import { GSCVault__factory } from "@council/typechain"; +import { GSCVault } from "@delvtech/council-artifacts/GSCVault"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { WriteOptions } from "src/reusable-options/writeOptions.js"; +import { PrivateKeyAccount, parseUnits } from "viem"; import { Chain } from "viem/chains"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "gsc-vault [OPTIONS]", - aliases: ["GSCVault"], - describe: "Deploy a GSCVault contract", +export default command({ + description: "Deploy a GSCVault contract", - builder: (yargs) => { - return yargs.options({ - c: { - alias: ["core-voting", "coreVoting"], - describe: "The address of the CoreVoting contract", - type: "string", - }, - b: { - alias: ["bound", "voting-power-bound", "votingPowerBound"], - describe: "The minimum voting power required to become a member", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision to use. The bound option will be multiplied by (10 ** decimals). For example, if bound is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - o: { - alias: ["owner"], - describe: "The owner of the contract (e.g., a Timelock contract)", - type: "string", - }, - n: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + "core-voting": { + description: "The address of the CoreVoting contract", + type: "string", + required: true, }, + bound: { + alias: ["voting-power-bound"], + description: "The minimum voting power required to become a member", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision to use. The bound option will be multiplied by (10 ** decimals). For example, if bound is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + owner: { + description: "The owner of the contract (e.g., a Timelock contract)", + type: "string", + }, + }, - handler: async (args) => { - const coreVoting = await requiredString(args.coreVoting, { - name: "core-voting", - message: "Enter CoreVoting address", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const bound = await requiredNumberString(args.bound, { - name: "bound", - message: "Enter voting power bound", - }); + const coreVoting = await options.coreVoting({ + prompt: "Enter CoreVoting address", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const bound = await options.bound({ + prompt: "Enter voting power bound", + }); - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); + const decimals = await options.decimals(); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const owner = (await options.owner()) || account.address; - signale.pending("Deploying GSCVault..."); + signale.pending("Deploying GSCVault..."); - const { address } = await deployGSCVault({ - coreVoting, - votingPowerBound: bound, - decimals, - owner, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`GSCVault deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployGSCVault({ + coreVoting, + votingPowerBound: bound, + decimals, + owner, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`GSCVault deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`GSCVault deployed @ ${address}`); - }, - }); + signale.success(`GSCVault deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployGSCVaultOptions { coreVoting: string; @@ -116,9 +93,13 @@ export async function deployGSCVault({ onSubmitted, }: DeployGSCVaultOptions): Promise { return await deployContract({ - abi: GSCVault__factory.abi, - args: [coreVoting, parseBigInt(votingPowerBound, decimals), owner], - bytecode: GSCVault__factory.bytecode, + abi: GSCVault.abi, + args: [ + coreVoting as `0x${string}`, + parseUnits(votingPowerBound, decimals), + owner as `0x${string}`, + ], + bytecode: GSCVault.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/locking-vault.ts b/packages/council-cli/src/commands/deploy/locking-vault.ts index 3e26746d..bca00fc4 100644 --- a/packages/council-cli/src/commands/deploy/locking-vault.ts +++ b/packages/council-cli/src/commands/deploy/locking-vault.ts @@ -1,73 +1,60 @@ -import { LockingVault__factory } from "@council/typechain"; +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "locking-vault [OPTIONS]", - aliases: ["LockingVault"], - describe: "Deploy a LockingVault contract", +export default command({ + description: "Deploy a LockingVault contract", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["token"], - describe: "The address of the ERC20 token contract", - type: "string", - }, - l: { - alias: ["lag", "stale-block-lag", "staleBlockLag"], - describe: - "The number of blocks before the delegation history is forgotten", - type: "number", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + token: { + description: "The address of the ERC20 token contract", + type: "string", + required: true, }, + lag: { + alias: ["stale-block-lag"], + description: + "The number of blocks before the delegation history is forgotten", + type: "number", + required: true, + }, + }, - handler: async (args) => { - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const lag = await requiredNumber(args.lag, { - name: "lag", - message: "Enter stale block lag", - }); + const token = await options.token({ + prompt: "Enter token address", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const lag = await options.lag({ + prompt: "Enter stale block lag", + }); - signale.pending("Deploying LockingVault..."); + signale.pending("Deploying LockingVault..."); - const { address } = await deployLockingVault({ - token, - staleBlockLag: lag, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`LockingVault deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployLockingVault({ + token, + staleBlockLag: lag, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`LockingVault deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`LockingVault deployed @ ${address}`); - }, - }); + signale.success(`LockingVault deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployLockingVaultOptions { token: string; @@ -87,9 +74,9 @@ export async function deployLockingVault({ onSubmitted, }: DeployLockingVaultOptions): Promise { return await deployContract({ - abi: LockingVault__factory.abi, - args: [token, staleBlockLag], - bytecode: LockingVault__factory.bytecode, + abi: LockingVault.abi, + args: [token as `0x${string}`, BigInt(staleBlockLag)], + bytecode: LockingVault.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/mock-erc20.ts b/packages/council-cli/src/commands/deploy/mock-erc20.ts index ba4913e0..9da7c379 100644 --- a/packages/council-cli/src/commands/deploy/mock-erc20.ts +++ b/packages/council-cli/src/commands/deploy/mock-erc20.ts @@ -1,71 +1,58 @@ -import { MockERC20__factory } from "@council/typechain"; +import { MockERC20 } from "@delvtech/council-artifacts/MockERC20"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { WriteOptions } from "src/reusable-options/writeOptions.js"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "mock-erc20 [OPTIONS]", - aliases: ["MockERC20"], - describe: "Deploy a MockERC20 contract for use as a mock voting token", +export default command({ + description: "Deploy a MockERC20 contract for use as a mock voting token", - builder: (yargs) => { - return yargs.options({ - n: { - alias: ["name"], - describe: "The name of the token", - type: "string", - }, - s: { - alias: ["symbol"], - describe: "The symbol of the token", - type: "string", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + name: { + description: "The name of the token", + type: "string", + required: true, }, + symbol: { + description: "The symbol of the token", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const name = await requiredString(args.name, { - name: "name", - message: "Enter token name", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const symbol = await requiredString(args.symbol, { - name: "symbol", - message: "Enter token symbol", - }); + const name = await options.name({ + prompt: "Enter token name", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const symbol = await options.symbol({ + prompt: "Enter token symbol", + }); - signale.pending("Deploying MockERC20..."); + signale.pending("Deploying MockERC20..."); - const { address } = await deployMockERC20({ - tokenName: name, - tokenSymbol: symbol, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`MockERC20 deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployMockERC20({ + tokenName: name, + tokenSymbol: symbol, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`MockERC20 deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`MockERC20 deployed @ ${address}`); - }, - }); + signale.success(`MockERC20 deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployMockERC20Options { tokenName: string; @@ -85,9 +72,9 @@ export async function deployMockERC20({ onSubmitted, }: DeployMockERC20Options): Promise { return await deployContract({ - abi: MockERC20__factory.abi, + abi: MockERC20.abi, args: [tokenName, tokenSymbol, account.address], - bytecode: MockERC20__factory.bytecode, + bytecode: MockERC20.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/optimistic-grants.ts b/packages/council-cli/src/commands/deploy/optimistic-grants.ts index 75289082..62aaaba4 100644 --- a/packages/council-cli/src/commands/deploy/optimistic-grants.ts +++ b/packages/council-cli/src/commands/deploy/optimistic-grants.ts @@ -1,74 +1,58 @@ -import { OptimisticGrants__factory } from "@council/typechain"; +import { OptimisticGrants } from "@delvtech/council-artifacts/OptimisticGrants"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { WriteOptions } from "src/reusable-options/writeOptions.js"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "optimistic-grants [OPTIONS]", - aliases: ["OptimisticGrants"], - describe: "Deploy an OptimisticGrants contract", +export default command({ + description: "Deploy an OptimisticGrants contract", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["token"], - describe: "The address of the ERC20 token to distribute", - type: "string", - }, - g: { - alias: ["governance"], - describe: - "The governance contract's address for ACL (e.g., a Timelock contract)", - type: "string", - }, - c: chainOption, - u: rpcUrlOption, - w: walletKeyOption, - }); + options: { + token: { + description: "The address of the ERC20 token to distribute", + type: "string", + required: true, }, + governance: { + description: + "The governance contract's address for ACL (e.g., a Timelock contract)", + type: "string", + required: true, + }, + }, + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - handler: async (args) => { - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); - - const governance = await requiredString(args.governance, { - name: "governance", - message: "Enter governance address (e.g., a Timelock contract)", - }); + const token = await options.token({ + prompt: "Enter token address", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const governance = await options.governance({ + prompt: "Enter governance address (e.g., a Timelock contract)", + }); - signale.pending("Deploying OptimisticGrants..."); + signale.pending("Deploying OptimisticGrants..."); - const { address } = await deployOptimisticGrants({ - token, - governance, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending( - `OptimisticGrants deployment tx submitted: ${txHash}`, - ); - }, - }); + const deployData = await deployOptimisticGrants({ + token, + governance, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`OptimisticGrants deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`OptimisticGrants deployed @ ${address}`); - }, - }); + signale.success(`OptimisticGrants deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployOptimisticGrantsOptions { token: string; @@ -88,9 +72,9 @@ export async function deployOptimisticGrants({ onSubmitted, }: DeployOptimisticGrantsOptions): Promise { return deployContract({ - abi: OptimisticGrants__factory.abi, - args: [token, governance], - bytecode: OptimisticGrants__factory.bytecode, + abi: OptimisticGrants.abi, + args: [token as `0x${string}`, governance as `0x${string}`], + bytecode: OptimisticGrants.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/optimistic-rewards.ts b/packages/council-cli/src/commands/deploy/optimistic-rewards.ts index 7819ecde..9fbb93b3 100644 --- a/packages/council-cli/src/commands/deploy/optimistic-rewards.ts +++ b/packages/council-cli/src/commands/deploy/optimistic-rewards.ts @@ -1,118 +1,93 @@ -import { OptimisticRewards__factory } from "@council/typechain"; +import { OptimisticRewards } from "@delvtech/council-artifacts/OptimisticRewards"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "optimistic-rewards [OPTIONS]", - aliases: ["OptimisticRewards"], - describe: "Deploy a OptimisticRewards contract", +export default command({ + description: "Deploy a OptimisticRewards contract", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner", "governance"], - describe: "The contract owner's address (e.g., a Timelock contract)", - type: "string", - }, - r: { - alias: ["root", "starting-root", "startingRoot"], - describe: "The starting merkle root", - type: "string", - }, - p: { - alias: ["proposer"], - describe: "The address that can propose new roots", - type: "string", - }, - c: { - alias: ["revoker", "challenger"], - describe: "The address that can remove proposed reward roots", - type: "string", - }, - t: { - alias: ["token"], - describe: "The address of the ERC20 token to distribute", - type: "string", - }, - v: { - alias: ["locking-vault", "lockingVault"], - describe: - "The address of the locking vault contract that will be used when calling Airdrop.claimAndDelegate()", - type: "string", - }, - n: chainOption, - u: rpcUrlOption, - w: walletKeyOption, - }); + options: { + owner: { + alias: ["governance"], + description: "The contract owner's address (e.g., a Timelock contract)", + type: "string", }, + root: { + alias: ["starting-root"], + description: "The starting merkle root", + type: "string", + required: true, + }, + proposer: { + description: "The address that can propose new roots", + type: "string", + }, + revoker: { + alias: ["challenger"], + description: "The address that can remove proposed reward roots", + type: "string", + }, + token: { + description: "The address of the ERC20 token to distribute", + type: "string", + required: true, + }, + "locking-vault": { + description: + "The address of the locking vault contract that will be used when calling Airdrop.claimAndDelegate()", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const root = await requiredString(args.root, { - name: "root", - message: "Enter starting root", - }); + const owner = (await options.owner()) || account.address; - const proposer = await requiredString(args.proposer, { - name: "proposer", - message: "Enter proposer address", - }); + const root = await options.root({ + prompt: "Enter starting root", + }); - const revoker = await requiredString(args.revoker, { - name: "revoker", - message: "Enter revoker address", - }); + const proposer = (await options.proposer()) || owner; - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); + const revoker = (await options.revoker()) || owner; - const lockingVault = await requiredString(args.lockingVault, { - name: "lockingVault", - message: "Enter locking vault address", - }); + const token = await options.token({ + prompt: "Enter token address", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const lockingVault = await options.lockingVault({ + prompt: "Enter locking vault address", + }); - signale.pending("Deploying OptimisticRewards..."); + signale.pending("Deploying OptimisticRewards..."); - const { address } = await deployOptimisticRewards({ - owner, - startingRoot: root, - proposer, - revoker, - token, - lockingVault, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending( - `OptimisticRewards deployment tx submitted: ${txHash}`, - ); - }, - }); + const deployData = await deployOptimisticRewards({ + owner, + startingRoot: root, + proposer, + revoker, + token, + lockingVault, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`OptimisticRewards deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`OptimisticRewards deployed @ ${address}`); - }, - }); + signale.success(`OptimisticRewards deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployOptimisticRewardsOptions { owner: string; @@ -140,9 +115,16 @@ export async function deployOptimisticRewards({ onSubmitted, }: DeployOptimisticRewardsOptions): Promise { return deployContract({ - abi: OptimisticRewards__factory.abi, - args: [owner, startingRoot, proposer, revoker, token, lockingVault], - bytecode: OptimisticRewards__factory.bytecode, + abi: OptimisticRewards.abi, + args: [ + owner as `0x${string}`, + startingRoot as `0x${string}`, + proposer as `0x${string}`, + revoker as `0x${string}`, + token as `0x${string}`, + lockingVault as `0x${string}`, + ], + bytecode: OptimisticRewards.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/simple-proxy.ts b/packages/council-cli/src/commands/deploy/simple-proxy.ts index 6b6765b1..2bb28ddd 100644 --- a/packages/council-cli/src/commands/deploy/simple-proxy.ts +++ b/packages/council-cli/src/commands/deploy/simple-proxy.ts @@ -1,75 +1,55 @@ -import { SimpleProxy__factory } from "@council/typechain"; +import { SimpleProxy } from "@delvtech/council-artifacts/SimpleProxy"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "simple-proxy [OPTIONS]", - aliases: ["SimpleProxy"], - describe: "Deploy a SimpleProxy contract", +export default command({ + description: "Deploy a SimpleProxy contract", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner"], - describe: "The contract owner's address (e.g., a Timelock contract)", - type: "string", - }, - i: { - alias: [ - "implementation", - "first-implementation", - "firstImplementation", - ], - describe: "The address that calls to the proxy will be forwarded to", - type: "string", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + owner: { + describe: "The contract owner's address (e.g., a Timelock contract)", + type: "string", }, + implementation: { + alias: ["first-implementation"], + describe: "The address that calls to the proxy will be forwarded to", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); - - const implementation = await requiredString(args.implementation, { - name: "implementation", - message: "Enter implementation address", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; + const owner = (await options.owner()) || account.address; - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const implementation = await options.implementation({ + prompt: "Enter implementation address", + }); - signale.pending("Deploying SimpleProxy..."); + signale.pending("Deploying SimpleProxy..."); - const { address } = await deploySimpleProxy({ - owner, - implementation, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`SimpleProxy deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deploySimpleProxy({ + owner, + implementation, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`SimpleProxy deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`SimpleProxy deployed @ ${address}`); - }, - }); + signale.success(`SimpleProxy deployed @ ${deployData.address}`); + return next(deployData); + }, +}); export interface DeploySimpleProxyOptions { owner: string; @@ -89,9 +69,9 @@ export async function deploySimpleProxy({ onSubmitted, }: DeploySimpleProxyOptions): Promise { return await deployContract({ - abi: SimpleProxy__factory.abi, - args: [owner, implementation], - bytecode: SimpleProxy__factory.bytecode, + abi: SimpleProxy.abi, + args: [owner as `0x${string}`, implementation as `0x${string}`], + bytecode: SimpleProxy.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/simple.ts b/packages/council-cli/src/commands/deploy/simple.ts index 8b5036fd..5f5cc710 100644 --- a/packages/council-cli/src/commands/deploy/simple.ts +++ b/packages/council-cli/src/commands/deploy/simple.ts @@ -1,33 +1,25 @@ -import { CoreVoting__factory, MockERC20__factory } from "@council/typechain"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; import colors from "colors"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { stringifyBigInts } from "src/utils/bigint/stringifyBigInts"; -import { DAY_IN_BLOCKS, DAY_IN_SECONDS } from "src/utils/constants"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { mine } from "src/utils/mine"; -import { - Address, - createPublicClient, - createWalletClient, - Hex, - http, -} from "viem"; -import { privateKeyToAccount } from "viem/accounts"; -import { deployCoreVoting } from "./core-voting"; -import { deployLockingVault } from "./locking-vault"; -import { deployMockERC20 } from "./mock-erc20"; -import { deploySimpleProxy } from "./simple-proxy"; -import { deployTreasury } from "./treasury"; +import { createPublicClient, createWalletClient, http } from "viem"; +import { foundry, hardhat, localhost } from "viem/chains"; import { ContractInfo, DEFAULT_DEPLOYMENTS_DIR, getDeploymentStore, -} from "./utils/deploymentStore"; +} from "../../deploymentStore.js"; +import { freshDeployOption } from "../../reusable-options/deploy/fresh-deploy.js"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { DAY_IN_BLOCKS } from "../../utils/constants.js"; +import { DeployedContract } from "../../utils/deployContract.js"; +import { stringifyBigInts } from "../../utils/stringifyBigInts.js"; +import { mine } from "../server/mine.js"; +import deployCoreVotingCommand from "./core-voting.js"; +import deployLockingVaultCommand from "./locking-vault.js"; +import deployMockErc20Command from "./mock-erc20.js"; +import deploySimpleProxyCommand from "./simple-proxy.js"; +import deployTreasury from "./treasury.js"; const defaults = { tokenAddress: process.env.VOTING_TOKEN_ADDRESS, @@ -41,122 +33,104 @@ const defaults = { extraVotingBlocks: process.env.EXTRA_VOTING_BLOCKS ? +process.env.EXTRA_VOTING_BLOCKS : undefined, - timelockWaitTime: +(process.env.TIMELOCK_WAIT_TIME || DAY_IN_SECONDS * 3), treasuryAddress: process.env.TREASURY_ADDRESS, - staleBlockLag: DAY_IN_BLOCKS * 28, - gscQuorum: process.env.GSC_QUORUM || "3", - gscLockDuration: process.env.GSC_LOCK_DURATION - ? +process.env.GSC_LOCK_DURATION - : undefined, - gscExtraVotingBlocks: process.env.GSC_EXTRA_VOTING_BLOCKS - ? +process.env.GSC_EXTRA_VOTING_BLOCKS - : undefined, - gscVotingPowerBound: process.env.GSC_VOTING_POWER_BOUND || "100000", - gscIdleDuration: process.env.GSC_IDLE_DURATION - ? +process.env.GSC_IDLE_DURATION - : undefined, + staleBlockLag: DAY_IN_BLOCKS * 28n, outDir: DEFAULT_DEPLOYMENTS_DIR, name: "simple", }; -export const { command, describe, builder, handler } = createCommandModule({ - command: "simple [OPTIONS]", - describe: +export default command({ + description: "Deploy a simple version of Council which includes 1 CoreVoting contract for general voting with power from a LockingVault deployed behind a SimpleProxy contract. Also deployed will be a Treasury, and if no voting token address is provided, a mock voting token.", - builder: (yargs) => { - const result = yargs.options({ - "token-address": { - describe: "The address of the token used for voting.", - type: "string", - default: defaults.tokenAddress, - }, - "token-name": { - describe: - "The name of the mock token to be deployed for voting if no token address is provided.", - type: "string", - default: defaults.tokenName, - }, - "token-symbol": { - describe: - "The symbol of the mock token to be deployed for voting if no token address is provided.", - type: "string", - default: defaults.tokenSymbol, - }, - "base-quorum": { - describe: - "The minimum voting power required for a proposal to pass. Will be scaled by 10 ** token.decimals.", - type: "string", - default: defaults.baseQuorum, - }, - "min-proposal-power": { - describe: - "The minimum voting power required to create a proposal. Will be scaled by 10 ** token.decimals.", - type: "string", - default: defaults.minProposalPower, - }, - "lock-duration": { - describe: - "The number of blocks a proposal must wait before it can be executed.", - type: "number", - default: defaults.lockDuration, - }, - "extra-voting-blocks": { - describe: - "The number of blocks for which a proposal can still be voted on after it's unlocked.", - type: "number", - default: defaults.extraVotingBlocks, - }, - "treasury-address": { - describe: "The address of the treasury contract.", - type: "string", - default: defaults.treasuryAddress, - }, - "stale-block-lag": { - describe: - "The number of blocks before the delegation history is forgotten. Voting power can't be used on proposals that are older than the stale block lag.", - type: "number", - default: defaults.staleBlockLag, - }, - o: { - alias: ["out-dir"], - describe: - "The directory to write the contract addresses to; relative to the current working directory.", - type: "string", - default: defaults.outDir, - }, - n: { - alias: ["name"], - describe: "The name of the deployment.", - type: "string", - default: defaults.name, - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); - return result; + options: { + fresh: freshDeployOption, + "token-address": { + description: "The address of the token used for voting.", + type: "string", + default: defaults.tokenAddress, + }, + "token-name": { + description: + "The name of the mock token to be deployed for voting if no token address is provided.", + type: "string", + default: defaults.tokenName, + }, + "token-symbol": { + description: + "The symbol of the mock token to be deployed for voting if no token address is provided.", + type: "string", + default: defaults.tokenSymbol, + }, + "base-quorum": { + description: + "The minimum voting power required for a proposal to pass. Will be scaled by 10 ** token.decimals.", + type: "string", + default: defaults.baseQuorum, + required: true, + }, + "min-proposal-power": { + description: + "The minimum voting power required to create a proposal. Will be scaled by 10 ** token.decimals.", + type: "string", + default: defaults.minProposalPower, + required: true, + }, + "lock-duration": { + description: + "The number of blocks a proposal must wait before it can be executed.", + type: "number", + default: defaults.lockDuration, + }, + "extra-voting-blocks": { + description: + "The number of blocks for which a proposal can still be voted on after it's unlocked.", + type: "number", + default: defaults.extraVotingBlocks, + }, + "treasury-address": { + description: "The address of the treasury contract.", + type: "string", + default: defaults.treasuryAddress, + }, + "stale-block-lag": { + description: + "The number of blocks before the delegation history is forgotten. Voting power can't be used on proposals that are older than the stale block lag.", + type: "number", + default: Number(defaults.staleBlockLag), + required: true, + }, + out: { + alias: ["out-dir"], + description: + "The directory to write the contract addresses to; relative to the current working directory.", + type: "string", + default: defaults.outDir, + required: true, + }, + name: { + description: "The name of the deployment.", + type: "string", + default: defaults.name, + }, }, - handler: async (args) => { - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - - const account = privateKeyToAccount(walletKey as Hex); + handler: async ({ data, options, fork, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; const publicClient = createPublicClient({ transport: http(rpcUrl), chain, }); - const walletClient = createWalletClient({ account, transport: http(rpcUrl), chain, }); + const council = new ReadWriteCouncil({ publicClient, walletClient }); const contractInfos: ContractInfo[] = []; + const isFreshDeploy = await options.freshDeploy(); signale.pending("Deploying Council contracts..."); @@ -164,14 +138,15 @@ export const { command, describe, builder, handler } = createCommandModule({ // 1. Voting Token // ========================================================================= - let votingTokenAddress = await requiredString(args.tokenAddress, { - name: "token-address", - message: `Enter voting token address ${colors.dim( - "(leave blank to deploy a mock voting token)", - )}`, - initial: defaults.tokenAddress, - validate: () => true, - }); + let votingTokenAddress: string | undefined; + + if (!isFreshDeploy) { + votingTokenAddress = await options.tokenAddress({ + prompt: `Enter voting token address ${colors.dim( + "(leave blank to deploy a mock voting token)", + )}`, + }); + } // Used to scale voting power to match the token's decimals let decimals = 18; @@ -180,17 +155,9 @@ export const { command, describe, builder, handler } = createCommandModule({ if (votingTokenAddress) { signale.pending("Fetching data from voting token..."); - const tokenName = (await publicClient.readContract({ - abi: MockERC20__factory.abi, - address: votingTokenAddress as Address, - functionName: "name", - })) as string; - - decimals = (await publicClient.readContract({ - abi: MockERC20__factory.abi, - address: votingTokenAddress as Address, - functionName: "decimals", - })) as number; + const token = council.token(votingTokenAddress as `0x${string}`); + const tokenName = await token.getName(); + decimals = await token.getDecimals(); signale.success(`Data successfully fetched from voting token`); @@ -202,37 +169,27 @@ export const { command, describe, builder, handler } = createCommandModule({ // Deploy a mock voting token if no voting token address was provided if (!votingTokenAddress) { - const tokenName = await requiredString(args.tokenName, { - name: "token-name", - message: "Enter voting token name", - initial: defaults.tokenName, + const tokenName = await options.tokenName({ + prompt: "Enter voting token name", }); - const tokenSymbol = await requiredString(args.tokenSymbol, { - name: "token-symbol", - message: "Enter voting token symbol", - initial: defaults.tokenSymbol, + const tokenSymbol = await options.tokenSymbol({ + prompt: "Enter voting token symbol", }); - signale.pending("Deploying MockERC20..."); - - const mockERC20 = await deployMockERC20({ - tokenName, - tokenSymbol, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`MockERC20 deployment tx submitted: ${hash}`); + const tokenDeployData: DeployedContract = await fork({ + commands: [deployMockErc20Command], + optionValues: { + name: tokenName, + symbol: tokenSymbol, }, }); - signale.success(`MockERC20 deployed @ ${mockERC20.address}`); - votingTokenAddress = mockERC20.address; + votingTokenAddress = tokenDeployData.address; contractInfos.push({ name: tokenName, - ...mockERC20, + ...tokenDeployData, }); } @@ -240,83 +197,65 @@ export const { command, describe, builder, handler } = createCommandModule({ // 2. CoreVoting // ========================================================================= - const baseQuorum = await requiredString(args.baseQuorum, { - name: "base-quorum", - message: "Enter base quorum", - initial: defaults.baseQuorum, + const baseQuorum = await options.baseQuorum({ + prompt: "Enter base quorum", }); - const minProposalPower = await requiredString(args.minProposalPower, { - name: "min-proposal-power", - message: "Enter minimum proposal power", - initial: defaults.minProposalPower, + const minProposalPower = await options.minProposalPower({ + prompt: "Enter minimum proposal power", }); - signale.pending("Deploying CoreVoting..."); - - const coreVoting = await deployCoreVoting({ - quorum: baseQuorum, - minPower: minProposalPower, - decimals, - // Can submit proposals without a minimum voting power - gsc: account.address, - vaults: [], - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`CoreVoting deployment tx submitted: ${hash}`); + const coreVotingDeployData: DeployedContract = await fork({ + commands: [deployCoreVotingCommand], + optionValues: { + quorum: baseQuorum, + minPower: minProposalPower, + decimals, + vaults: isFreshDeploy ? [] : undefined, }, }); - signale.success(`CoreVoting deployed @ ${coreVoting.address}`); - contractInfos.push({ name: "CoreVoting", - ...coreVoting, + ...coreVotingDeployData, + }); + + const coreVoting = council.coreVoting({ + address: coreVotingDeployData.address, }); + const lockDuration = await options.lockDuration(); // Set the CoreVoting lock duration if provided - if (args.lockDuration) { - signale.pending( - `Setting CoreVoting lock duration to ${args.lockDuration}...`, - ); + if (lockDuration) { + signale.pending(`Setting CoreVoting lock duration to ${lockDuration}...`); - const hash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: coreVoting.address as Address, - functionName: "setLockDuration", - args: [args.lockDuration], + const hash = await coreVoting.setLockDuration({ + blocks: BigInt(lockDuration), }); signale.pending(`CoreVoting lock duration tx submitted: ${hash}`); - await publicClient.waitForTransactionReceipt({ hash }); - signale.success( - `Successfully set CoreVoting lock duration to ${args.lockDuration}`, + `Successfully set CoreVoting lock duration to ${lockDuration}`, ); } + const extraVotingBlocks = await options.extraVotingBlocks(); + // Set the CoreVoting extra voting time if provided - if (args.extraVotingBlocks) { + if (extraVotingBlocks) { signale.pending( - `Setting CoreVoting extra voting time to ${args.extraVotingBlocks}...`, + `Setting CoreVoting extra voting time to ${extraVotingBlocks}...`, ); - const hash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: coreVoting.address as Address, - functionName: "changeExtraVotingTime", - args: [args.extraVotingBlocks], + const hash = await coreVoting.changeExtraVotingTime({ + extraVoteBlocks: BigInt(extraVotingBlocks), }); signale.pending(`CoreVoting extra voting time tx submitted: ${hash}`); - await publicClient.waitForTransactionReceipt({ hash }); - signale.success( - `Successfully set CoreVoting extra voting time to ${args.extraVotingBlocks}`, + `Successfully set CoreVoting extra voting time to ${extraVotingBlocks}`, ); } @@ -324,89 +263,68 @@ export const { command, describe, builder, handler } = createCommandModule({ // 3. Voting Vaults // ========================================================================= - const staleBlockLag = await requiredNumber(args.staleBlockLag, { - name: "stale-block-lag", - message: "Enter stale block lag", - initial: defaults.staleBlockLag, + const staleBlockLag = await options.staleBlockLag({ + prompt: "Enter stale block lag", }); - if (chain.id === 31337) { + const localChainIds: number[] = [hardhat.id, localhost.id, foundry.id]; + if (localChainIds.includes(chain.id)) { + const blocksToMine = staleBlockLag * 2; // Calling queryVotePower on a voting vault that has a stale block lag larger // than the current block height will result in an error. To avoid this, we // we fast forward the block height by the stale block lag. signale.pending( - `Fast forwarding block height by ${staleBlockLag} blocks...`, + `Fast forwarding block height by ${blocksToMine} blocks...`, ); - const blockNumber = await mine({ blocks: staleBlockLag, rpcUrl }); + const blockNumber = await mine({ + blocks: blocksToMine, + client: publicClient, + }); signale.success( `Successfully fast forwarded block height to ${blockNumber}`, ); } - signale.pending("Deploying LockingVault..."); - - const lockingVault = await deployLockingVault({ - token: votingTokenAddress, - staleBlockLag, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`LockingVault deployment tx submitted: ${hash}`); + const lockingVaultDeployData: DeployedContract = await fork({ + commands: [deployLockingVaultCommand], + optionValues: { + token: votingTokenAddress, + staleBlockLag, }, }); - - signale.success(`LockingVault deployed @ ${lockingVault.address}`); - contractInfos.push({ name: "LockingVault", - ...lockingVault, + ...lockingVaultDeployData, }); - signale.pending("Deploying LockingVault SimpleProxy..."); - - const lockingVaultProxy = await deploySimpleProxy({ - owner: coreVoting.address, - implementation: lockingVault.address, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending( - `LockingVault SimpleProxy deployment tx submitted: ${hash}`, - ); + const lockVaultProxyDeployData: DeployedContract = await fork({ + commands: [deploySimpleProxyCommand], + optionValues: { + owner: coreVotingDeployData.address, + implementation: lockingVaultDeployData.address, }, }); - - signale.success( - `LockingVault SimpleProxy deployed @ ${lockingVaultProxy.address}`, - ); - contractInfos.push({ name: "LockingVaultProxy", - ...lockingVaultProxy, + ...lockVaultProxyDeployData, }); // Approve the vault to be used by the CoreVoting contract signale.pending("Changing LockingVault SimpleProxy status in CoreVoting"); - const lockingVaultStatusHash = await walletClient.writeContract({ - abi: CoreVoting__factory.abi, - address: coreVoting.address as Address, - functionName: "changeVaultStatus", - args: [lockingVaultProxy.address, true], + const lockingVaultStatusHash = await coreVoting.changeVaultStatus({ + vault: lockVaultProxyDeployData.address, + isValid: true, }); signale.pending( `LockingVault SimpleProxy status tx submitted: ${lockingVaultStatusHash}`, ); - await publicClient.waitForTransactionReceipt({ hash: lockingVaultStatusHash, }); - signale.success( "Successfully changed LockingVault SimpleProxy status in CoreVoting", ); @@ -415,34 +333,29 @@ export const { command, describe, builder, handler } = createCommandModule({ // 4. Treasury // ========================================================================= - let treasuryAddress = await requiredString(args.treasuryAddress, { - name: "treasury-address", - message: `Enter Treasury address ${colors.dim( - "(leave blank to deploy a new one)", - )}`, - initial: defaults.treasuryAddress, - validate: () => true, - }); + let treasuryAddress: string | undefined; + + if (!isFreshDeploy) { + treasuryAddress = await options.treasuryAddress({ + prompt: `Enter Treasury address ${colors.dim( + "(leave blank to deploy a new one)", + )}`, + }); + } if (!treasuryAddress) { signale.pending("Deploying Treasury..."); - const treasury = await deployTreasury({ - owner: coreVoting.address, - account, - rpcUrl, - chain, - onSubmitted: (hash) => { - signale.pending(`Treasury deployment tx submitted: ${hash}`); + const treasuryDeployData: DeployedContract = await fork({ + commands: [deployTreasury], + optionValues: { + owner: coreVotingDeployData.address, }, }); - signale.success(`Treasury deployed @ ${treasury.address}`); - treasuryAddress = treasury.address; - contractInfos.push({ name: "Treasury", - ...treasury, + ...treasuryDeployData, }); } @@ -450,16 +363,12 @@ export const { command, describe, builder, handler } = createCommandModule({ // 5. Save the addresses // ========================================================================= - const deploymentName = await requiredString(args.name, { - name: "name", - message: "Enter deployment name", - initial: defaults.name, + const deploymentName = await options.name({ + prompt: "Enter deployment name", }); - const outDir = await requiredString(args.outDir, { - name: "out-dir", - message: "Enter output directory", - initial: defaults.outDir, + const outDir = await options.outDir({ + prompt: "Enter output directory", }); const store = getDeploymentStore(deploymentName, chain.id, outDir); @@ -488,5 +397,7 @@ export const { command, describe, builder, handler } = createCommandModule({ console.log(`${contractInfo.name}: ${contractInfo.address}`); }); console.log(colors.dim(`${"=".repeat(80)}`)); + + next(contractInfos); }, }); diff --git a/packages/council-cli/src/commands/deploy/spender.ts b/packages/council-cli/src/commands/deploy/spender.ts index 808d6765..85261774 100644 --- a/packages/council-cli/src/commands/deploy/spender.ts +++ b/packages/council-cli/src/commands/deploy/spender.ts @@ -1,130 +1,104 @@ -import { Spender__factory } from "@council/typechain"; +import { Spender } from "@delvtech/council-artifacts/Spender"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount, parseUnits } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "spender [OPTIONS]", - aliases: ["Spender"], - describe: "Deploy a Spender contract", +export default command({ + description: "Deploy a Spender contract", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner"], - describe: "The contract owner's address (e.g., a Timelock contract)", - type: "string", - }, - a: { - alias: ["spender"], - describe: "The first address authorized to spend tokens", - type: "string", - }, - t: { - alias: ["token"], - describe: "The address of the ERC20 token contract", - type: "string", - }, - s: { - alias: ["small", "small-spend-limit", "smallSpendLimit"], - describe: "The small spend proposal limit", - type: "string", - }, - m: { - alias: ["medium", "medium-spend-limit", "mediumSpendLimit"], - describe: "The medium spend proposal limit", - type: "string", - }, - h: { - alias: ["high", "high-spend-limit", "highSpendLimit"], - describe: "The high spend proposal limit", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision to use. The limit options will be multiplied by (10 ** decimals). For example, if the small limit is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + owner: { + description: "The contract owner's address (e.g., a Timelock contract)", + type: "string", }, + spender: { + description: "The first address authorized to spend tokens", + type: "string", + }, + token: { + description: "The address of the ERC20 token contract", + type: "string", + required: true, + }, + small: { + alias: ["small-spend-limit"], + description: "The small spend proposal limit", + type: "string", + required: true, + }, + medium: { + alias: ["medium-spend-limit"], + description: "The medium spend proposal limit", + type: "string", + required: true, + }, + high: { + alias: ["high-spend-limit"], + description: "The high spend proposal limit", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision to use. The limit options will be multiplied by (10 ** decimals). For example, if the small limit is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const spender = await requiredString(args.spender, { - name: "spender", - message: "Enter spender address", - }); + const owner = (await options.owner()) || account.address; - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); + const spender = (await options.spender()) || owner; - const small = await requiredString(args.small, { - name: "small", - message: "Enter small spend limit", - }); + const token = await options.token({ + prompt: "Enter token address", + }); - const medium = await requiredString(args.medium, { - name: "medium", - message: "Enter medium spend limit", - }); + const small = await options.small({ + prompt: "Enter small spend limit", + }); - const high = await requiredString(args.high, { - name: "high", - message: "Enter high spend limit", - }); + const medium = await options.medium({ + prompt: "Enter medium spend limit", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const high = await options.high({ + prompt: "Enter high spend limit", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const decimals = await options.decimals(); - signale.pending("Deploying Spender..."); + signale.pending("Deploying Spender..."); - const { address } = await deploySpender({ - owner, - spender, - token, - smallSpendLimit: small, - mediumSpendLimit: medium, - highSpendLimit: high, - decimals, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`Spender deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deploySpender({ + owner, + spender, + token, + smallSpendLimit: small, + mediumSpendLimit: medium, + highSpendLimit: high, + decimals, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`Spender deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`Spender deployed @ ${address}`); - }, - }); + signale.success(`Spender deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeploySpenderOptions { owner: string; @@ -154,16 +128,16 @@ export async function deploySpender({ onSubmitted, }: DeploySpenderOptions): Promise { return deployContract({ - abi: Spender__factory.abi, + abi: Spender.abi, args: [ - owner, - spender, - token, - parseBigInt(smallSpendLimit, decimals), - parseBigInt(mediumSpendLimit, decimals), - parseBigInt(highSpendLimit, decimals), + owner as `0x${string}`, + spender as `0x${string}`, + token as `0x${string}`, + parseUnits(smallSpendLimit, decimals), + parseUnits(mediumSpendLimit, decimals), + parseUnits(highSpendLimit, decimals), ], - bytecode: Spender__factory.bytecode, + bytecode: Spender.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/timelock.ts b/packages/council-cli/src/commands/deploy/timelock.ts index f693b70a..ceb3ec11 100644 --- a/packages/council-cli/src/commands/deploy/timelock.ts +++ b/packages/council-cli/src/commands/deploy/timelock.ts @@ -1,85 +1,67 @@ -import { Timelock__factory } from "@council/typechain"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { WriteOptions } from "src/reusable-options/writeOptions.js"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "timelock [OPTIONS]", - aliases: ["Timelock"], - describe: "Deploy a Timelock contract", +export default command({ + description: "Deploy a Timelock contract", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["time", "wait-time", "waitTime"], - describe: - "The time (in seconds) to wait until a proposal can be executed", - type: "number", - }, - o: { - alias: ["owner"], - describe: - "The contract owner's address (e.g., a CoreVoting contract)", - type: "string", - }, - g: { - alias: ["gsc"], - describe: "The address of the GSC contract", - type: "string", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + time: { + alias: ["wait-time"], + description: + "The time (in seconds) to wait until a proposal can be executed", + type: "number", + required: true, }, + owner: { + description: "The contract owner's address (e.g., a CoreVoting contract)", + type: "string", + }, + gsc: { + description: "The address of the GSC contract", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const time = await requiredNumber(args.time, { - name: "time", - message: "Enter wait time (in seconds)", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a CoreVoting contract)", - }); + const time = await options.time({ + prompt: "Enter wait time (in seconds)", + }); - const gsc = await requiredString(args.gsc, { - name: "gsc", - message: "Enter GSC address", - }); + const owner = (await options.owner()) || account.address; - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const gsc = await options.gsc({ + prompt: "Enter GSC address", + }); - signale.pending("Deploying Timelock..."); + signale.pending("Deploying Timelock..."); - const { address } = await deployTimelock({ - waitTime: time, - owner, - gsc, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`Timelock deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployTimelock({ + waitTime: time, + owner, + gsc, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`Timelock deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`Timelock deployed @ ${address}`); - }, - }); + signale.success(`Timelock deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployTimelockOptions { waitTime: number; @@ -101,9 +83,9 @@ export async function deployTimelock({ onSubmitted, }: DeployTimelockOptions): Promise { return await deployContract({ - abi: Timelock__factory.abi, - args: [waitTime, owner, gsc], - bytecode: Timelock__factory.bytecode, + abi: Timelock.abi, + args: [BigInt(waitTime), owner as `0x${string}`, gsc as `0x${string}`], + bytecode: Timelock.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/treasury.ts b/packages/council-cli/src/commands/deploy/treasury.ts index 7a4c27e6..e3d51b03 100644 --- a/packages/council-cli/src/commands/deploy/treasury.ts +++ b/packages/council-cli/src/commands/deploy/treasury.ts @@ -1,60 +1,46 @@ -import { Treasury__factory } from "@council/typechain"; +import { Treasury } from "@delvtech/council-artifacts/Treasury"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "treasury [OPTIONS]", - aliases: ["Treasury"], - describe: "Deploy a Treasury contract", +export default command({ + description: "Deploy a Treasury contract", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner"], - describe: "The contract owner's address (e.g., a Timelock contract)", - type: "string", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + owner: { + description: "The contract owner's address (e.g., a Timelock contract)", + type: "string", + required: true, }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address (e.g., a Timelock contract)", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const owner = (await options.owner()) || account.address; - signale.pending("Deploying Treasury..."); + signale.pending("Deploying Treasury..."); - const { address } = await deployTreasury({ - owner, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`Treasury deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployTreasury({ + owner, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`Treasury deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`Treasury deployed @ ${address}`); - }, - }); + signale.success(`Treasury deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployTreasuryOptions { account: PrivateKeyAccount; @@ -72,9 +58,9 @@ export async function deployTreasury({ onSubmitted, }: DeployTreasuryOptions): Promise { return await deployContract({ - abi: Treasury__factory.abi, - args: [owner], - bytecode: Treasury__factory.bytecode, + abi: Treasury.abi, + args: [owner as `0x${string}`], + bytecode: Treasury.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/deploy/vesting-vault.ts b/packages/council-cli/src/commands/deploy/vesting-vault.ts index cda1c58a..874dd127 100644 --- a/packages/council-cli/src/commands/deploy/vesting-vault.ts +++ b/packages/council-cli/src/commands/deploy/vesting-vault.ts @@ -1,73 +1,60 @@ -import { LockingVault__factory } from "@council/typechain"; +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { chainOption, requiredChain } from "src/options/chain"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { deployContract, DeployedContract } from "src/utils/deployContract"; -import { Hex, PrivateKeyAccount } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; +import { PrivateKeyAccount } from "viem"; import { Chain } from "viem/chains"; +import { WriteOptions } from "../../reusable-options/writeOptions.js"; +import { + DeployedContract, + deployContract, +} from "../../utils/deployContract.js"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "vesting-vault [OPTIONS]", - aliases: ["VestingVault"], - describe: "Deploy a VestingVault contract", +export default command({ + description: "Deploy a VestingVault contract", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["token"], - describe: "The address of the ERC20 token contract", - type: "string", - }, - l: { - alias: ["lag", "stale-block-lag", "staleBlockLag"], - describe: - "The number of blocks before the delegation history is forgotten", - type: "number", - }, - c: chainOption, - r: rpcUrlOption, - w: walletKeyOption, - }); + options: { + token: { + description: "The address of the ERC20 token contract", + type: "string", + required: true, }, + lag: { + alias: ["stale-block-lag"], + description: + "The number of blocks before the delegation history is forgotten", + type: "number", + required: true, + }, + }, - handler: async (args) => { - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); + handler: async ({ data, options, next }) => { + const { account, chain, rpcUrl } = data as WriteOptions; - const lag = await requiredNumber(args.lag, { - name: "lag", - message: "Enter stale block lag", - }); + const token = await options.token({ + prompt: "Enter token address", + }); - const chain = await requiredChain(args.chain); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); - const account = privateKeyToAccount(walletKey as Hex); + const lag = await options.lag({ + prompt: "Enter stale block lag", + }); - signale.pending("Deploying VestingVault..."); + signale.pending("Deploying VestingVault..."); - const { address } = await deployVestingVault({ - token, - staleBlockLag: lag, - account, - rpcUrl, - chain, - onSubmitted: (txHash) => { - signale.pending(`VestingVault deployment tx submitted: ${txHash}`); - }, - }); + const deployData = await deployVestingVault({ + token, + staleBlockLag: lag, + account, + rpcUrl, + chain, + onSubmitted: (txHash) => { + signale.pending(`VestingVault deployment tx submitted: ${txHash}`); + }, + }); - signale.success(`VestingVault deployed @ ${address}`); - }, - }); + signale.success(`VestingVault deployed @ ${deployData.address}`); + next(deployData); + }, +}); export interface DeployVestingVaultOptions { token: string; @@ -87,9 +74,9 @@ export async function deployVestingVault({ onSubmitted, }: DeployVestingVaultOptions): Promise { return deployContract({ - abi: LockingVault__factory.abi, - args: [token, staleBlockLag], - bytecode: LockingVault__factory.bytecode, + abi: LockingVault.abi, + args: [token as `0x${string}`, BigInt(staleBlockLag)], + bytecode: LockingVault.bytecode, account, rpcUrl, chain, diff --git a/packages/council-cli/src/commands/encode.ts b/packages/council-cli/src/commands/encode.ts index a47e56bb..2d4c061b 100644 --- a/packages/council-cli/src/commands/encode.ts +++ b/packages/council-cli/src/commands/encode.ts @@ -1,24 +1,6 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; +import { command, passThroughCommand } from "clide-js"; -const commandDir = "./encode"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "encode [contract]", - describe: "Encode call data for a contract function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a contract", - }), +export default command({ + ...passThroughCommand, + description: "Encode call data for a contract function", }); diff --git a/packages/council-cli/src/commands/encode/airdrop.ts b/packages/council-cli/src/commands/encode/airdrop.ts deleted file mode 100644 index b88171ee..00000000 --- a/packages/council-cli/src/commands/encode/airdrop.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./airdrop"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "airdrop [function]", - aliases: ["Airdrop"], - describe: "Encode call data for a Airdrop function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/airdrop/authorize.ts b/packages/council-cli/src/commands/encode/airdrop/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/airdrop/authorize.ts +++ b/packages/council-cli/src/commands/encode/airdrop/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/airdrop/claim-and-delegate.ts b/packages/council-cli/src/commands/encode/airdrop/claim-and-delegate.ts index 0302ecd4..9de775e0 100644 --- a/packages/council-cli/src/commands/encode/airdrop/claim-and-delegate.ts +++ b/packages/council-cli/src/commands/encode/airdrop/claim-and-delegate.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/merkle-rewards/claim-and-delegate"; +import claimAndDelegate from "../merkle-rewards/claim-and-delegate.js"; +export default claimAndDelegate; diff --git a/packages/council-cli/src/commands/encode/airdrop/claim.ts b/packages/council-cli/src/commands/encode/airdrop/claim.ts index 636a2226..3c90ab7c 100644 --- a/packages/council-cli/src/commands/encode/airdrop/claim.ts +++ b/packages/council-cli/src/commands/encode/airdrop/claim.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/merkle-rewards/claim"; +import claim from "../merkle-rewards/claim.js"; +export default claim; diff --git a/packages/council-cli/src/commands/encode/airdrop/deauthorize.ts b/packages/council-cli/src/commands/encode/airdrop/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/airdrop/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/airdrop/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/airdrop/reclaim.ts b/packages/council-cli/src/commands/encode/airdrop/reclaim.ts index f640071b..71d62943 100644 --- a/packages/council-cli/src/commands/encode/airdrop/reclaim.ts +++ b/packages/council-cli/src/commands/encode/airdrop/reclaim.ts @@ -1,37 +1,34 @@ -import { Airdrop__factory } from "@council/typechain"; +import { Airdrop } from "@delvtech/council-artifacts/Airdrop"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "reclaim [OPTIONS]", - describe: "Encode call data for Airdrop.reclaim", +export default command({ + description: "Encode call data for Airdrop.reclaim", - builder: (yargs) => { - return yargs.options({ - r: { - alias: ["recipient", "destination"], - describe: "The recipient of the reclaimed funds", - type: "string", - }, - }); + options: { + recipient: { + alias: ["destination"], + description: "The recipient of the reclaimed funds", + type: "string", + required: true, + }, }, - handler: async (args) => { - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", + handler: async ({ options, next }) => { + const recipient = await options.recipient({ + prompt: "Enter recipient address", }); - - signale.success(encodeReclaim(recipient)); + const encoded = encodeReclaim(recipient); + signale.success(encoded); + next(encoded); }, }); function encodeReclaim(recipient: string) { return encodeFunctionData({ - abi: Airdrop__factory.abi, + abi: Airdrop.abi, functionName: "reclaim", - args: [recipient], + args: [recipient as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/airdrop/set-owner.ts b/packages/council-cli/src/commands/encode/airdrop/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/airdrop/set-owner.ts +++ b/packages/council-cli/src/commands/encode/airdrop/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/authorizable/authorize.ts b/packages/council-cli/src/commands/encode/authorizable/authorize.ts new file mode 100644 index 00000000..8c96f3b4 --- /dev/null +++ b/packages/council-cli/src/commands/encode/authorizable/authorize.ts @@ -0,0 +1,36 @@ +import { Authorizable } from "@delvtech/council-artifacts/Authorizable"; +import { command } from "clide-js"; +import signale from "signale"; +import { encodeFunctionData } from "viem"; + +export default command({ + description: "Encode call data for Authorizable.authorize", + + options: { + address: { + alias: ["who"], + description: "The address to authorize", + type: "string", + required: true, + }, + }, + + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter address", + }); + + const encoded = encodeAuthorize(address); + + signale.success(encoded); + next(encoded); + }, +}); + +export function encodeAuthorize(address: string): string { + return encodeFunctionData({ + abi: Authorizable.abi, + functionName: "authorize", + args: [address as `0x${string}`], + }); +} diff --git a/packages/council-cli/src/commands/encode/authorizable/deauthorize.ts b/packages/council-cli/src/commands/encode/authorizable/deauthorize.ts new file mode 100644 index 00000000..8c9378fb --- /dev/null +++ b/packages/council-cli/src/commands/encode/authorizable/deauthorize.ts @@ -0,0 +1,36 @@ +import { Authorizable } from "@delvtech/council-artifacts/Authorizable"; +import { command } from "clide-js"; +import signale from "signale"; +import { encodeFunctionData } from "viem"; + +export default command({ + description: "Encode call data for Authorizable.deauthorize", + + options: { + address: { + alias: ["who"], + description: "The address to remove authorization from", + type: "string", + required: true, + }, + }, + + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter address", + }); + + const encoded = encodeDeauthorize(address); + + signale.success(encoded); + next(encoded); + }, +}); + +export function encodeDeauthorize(address: string): string { + return encodeFunctionData({ + abi: Authorizable.abi, + functionName: "deauthorize", + args: [address as `0x${string}`], + }); +} diff --git a/packages/council-cli/src/commands/encode/authorizable/set-owner.ts b/packages/council-cli/src/commands/encode/authorizable/set-owner.ts new file mode 100644 index 00000000..b2441deb --- /dev/null +++ b/packages/council-cli/src/commands/encode/authorizable/set-owner.ts @@ -0,0 +1,36 @@ +import { Authorizable } from "@delvtech/council-artifacts/Authorizable"; +import { command } from "clide-js"; +import signale from "signale"; +import { encodeFunctionData } from "viem"; + +export default command({ + description: "Encode call data for Authorizable.setOwner", + + options: { + address: { + alias: ["who"], + description: "The address to set as the owner", + type: "string", + required: true, + }, + }, + + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter owner address", + }); + + const encoded = encodeSetOwner(address); + + signale.success(encoded); + next(encoded); + }, +}); + +export function encodeSetOwner(address: string): string { + return encodeFunctionData({ + abi: Authorizable.abi, + functionName: "setOwner", + args: [address as `0x${string}`], + }); +} diff --git a/packages/council-cli/src/commands/encode/core-voting.ts b/packages/council-cli/src/commands/encode/core-voting.ts deleted file mode 100644 index 7e1cf9da..00000000 --- a/packages/council-cli/src/commands/encode/core-voting.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./core-voting"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "core-voting [function]", - aliases: ["CoreVoting"], - describe: "Encode call data for a CoreVoting function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/core-voting/authorize.ts b/packages/council-cli/src/commands/encode/core-voting/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/core-voting/authorize.ts +++ b/packages/council-cli/src/commands/encode/core-voting/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/core-voting/change-extra-voting-time.ts b/packages/council-cli/src/commands/encode/core-voting/change-extra-voting-time.ts index fe2531f4..98d3d742 100644 --- a/packages/council-cli/src/commands/encode/core-voting/change-extra-voting-time.ts +++ b/packages/council-cli/src/commands/encode/core-voting/change-extra-voting-time.ts @@ -1,40 +1,35 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "change-extra-voting-time [OPTIONS]", - aliases: ["changeExtraVotingTime"], - describe: "Encode call data for CoreVoting.changeExtraVotingTime", +export default command({ + description: "Encode call data for CoreVoting.changeExtraVotingTime", - builder: (yargs) => { - return yargs.options({ - b: { - alias: ["blocks", "extra-vote-time", "extraVoteTime"], - describe: - "The number of blocks for which a proposal can still be voted on after it's unlocked", - type: "number", - }, - }); + options: { + blocks: { + alias: ["extra-vote-time"], + description: + "The number of blocks for which a proposal can still be voted on after it's unlocked", + type: "number", + required: true, }, + }, - handler: async (args) => { - const blocks = await requiredNumber(args.blocks, { - name: "blocks", - message: "Enter extra voting time (in blocks)", - }); - - signale.success(encodeChangeExtraVotingTime(blocks)); - }, - }); + handler: async ({ options, next }) => { + const blocks = await options.blocks({ + prompt: "Enter extra voting time (in blocks)", + }); + const encoded = encodeChangeExtraVotingTime(blocks); + signale.success(encoded); + next(encoded); + }, +}); export function encodeChangeExtraVotingTime(duration: number): string { return encodeFunctionData({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, functionName: "changeExtraVotingTime", - args: [duration], + args: [BigInt(duration)], }); } diff --git a/packages/council-cli/src/commands/encode/core-voting/change-vault-status.ts b/packages/council-cli/src/commands/encode/core-voting/change-vault-status.ts index 704575de..30bc611b 100644 --- a/packages/council-cli/src/commands/encode/core-voting/change-vault-status.ts +++ b/packages/council-cli/src/commands/encode/core-voting/change-vault-status.ts @@ -1,55 +1,51 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredBoolean } from "src/options/utils/requiredBoolean"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "change-vault-status [OPTIONS]", - aliases: ["changeVaultStatus"], - describe: "Encode call data for CoreVoting.changeVaultStatus", +export default command({ + description: "Encode call data for CoreVoting.changeVaultStatus", - builder: (yargs) => { - return yargs.options({ - v: { - alias: ["vault"], - describe: "The voting vault's address", - type: "string", - }, - a: { - alias: ["approved", "is-valid", "isValid"], - describe: "Whether or not the vault should be approved", - type: "boolean", - }, - }); + options: { + vault: { + description: "The voting vault's address", + type: "string", + required: true, }, + approved: { + alias: ["is-valid"], + description: "Whether or not the vault should be approved", + type: "boolean", + required: true, + }, + }, - handler: async (args) => { - const vault = await requiredString(args.vault, { - name: "vault", - message: "Enter voting vault address", - }); + handler: async ({ options, next }) => { + const vault = await options.vault({ + prompt: "Enter voting vault address", + }); - const approved = await requiredBoolean(args.approved, { - name: "approved", + const approved = await options.approved({ + prompt: { message: "Enter approval status", - inactive: "Not Approved", active: "Approved", - }); + inactive: "Not Approved", + }, + }); - signale.success(encodeChangeVaultStatus(vault, approved)); - }, - }); + const encoded = encodeChangeVaultStatus(vault, approved); + signale.success(encoded); + next(encoded); + }, +}); export function encodeChangeVaultStatus( vault: string, approved: boolean, ): string { return encodeFunctionData({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, functionName: "changeVaultStatus", - args: [vault, approved], + args: [vault as `0x${string}`, approved], }); } diff --git a/packages/council-cli/src/commands/encode/core-voting/deauthorize.ts b/packages/council-cli/src/commands/encode/core-voting/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/core-voting/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/core-voting/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/core-voting/set-custom-quorum.ts b/packages/council-cli/src/commands/encode/core-voting/set-custom-quorum.ts index 18d8e6cf..5b17e394 100644 --- a/packages/council-cli/src/commands/encode/core-voting/set-custom-quorum.ts +++ b/packages/council-cli/src/commands/encode/core-voting/set-custom-quorum.ts @@ -1,69 +1,58 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-custom-quorum [OPTIONS]", - aliases: ["setCustomQuorum"], - describe: "Encode call data for CoreVoting.setCustomQuorum", +export default command({ + description: "Encode call data for CoreVoting.setCustomQuorum", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["target"], - describe: "The address to set a custom quorum for", - type: "string", - }, - f: { - alias: ["function", "selector"], - describe: "The function selector/name", - type: "string", - }, - p: { - alias: ["power", "quorum"], - describe: "A new base quorum for the specific function", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The power option will be multiplied by (10 ** decimals). For example, if power is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + target: { + description: "The address to set a custom quorum for", + type: "string", + required: true, }, + f: { + alias: ["function", "selector"], + description: "The 4 byte function selector to set a custom quorum for", + type: "string", + required: true, + }, + power: { + alias: ["quorum"], + description: + "A new base quorum for the specific function (e.g. 0x12345678)", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The power option will be multiplied by (10 ** decimals). For example, if power is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + }, - handler: async (args) => { - const target = await requiredString(args.target, { - name: "target", - message: "Enter target address", - }); + handler: async ({ options, next }) => { + const target = await options.target({ + prompt: "Enter target address", + }); - const selector = await requiredString(args.function, { - name: "function", - message: "Enter function selector/name", - }); + const selector = await options.selector({ + prompt: "Enter 4 byte function selector", + }); - const power = await requiredNumberString(args.power, { - name: "power", - message: "Enter new base quorum", - }); + const power = await options.power({ + prompt: "Enter new base quorum", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeSetCustomQuorum(target, selector, power, decimals)); - }, - }); + const encoded = encodeSetCustomQuorum(target, selector, power, decimals); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetCustomQuorum( target: string, @@ -72,8 +61,12 @@ export function encodeSetCustomQuorum( decimals: number, ): string { return encodeFunctionData({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, functionName: "setCustomQuorum", - args: [target, selector, parseBigInt(quorum, decimals)], + args: [ + target as `0x${string}`, + selector as `0x${string}`, + parseUnits(quorum, decimals), + ], }); } diff --git a/packages/council-cli/src/commands/encode/core-voting/set-default-quorum.ts b/packages/council-cli/src/commands/encode/core-voting/set-default-quorum.ts index e0a14834..1bfa91e8 100644 --- a/packages/council-cli/src/commands/encode/core-voting/set-default-quorum.ts +++ b/packages/council-cli/src/commands/encode/core-voting/set-default-quorum.ts @@ -1,56 +1,46 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-default-quorum [OPTIONS]", - aliases: ["setDefaultQuorum"], - describe: "Encode call data for CoreVoting.setDefaultQuorum", +export default command({ + description: "Encode call data for CoreVoting.setDefaultQuorum", - builder: (yargs) => { - return yargs.options({ - p: { - alias: ["power", "quorum"], - describe: "The new base quorum", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The quorum option will be multiplied by (10 ** decimals). For example, if quorum is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + power: { + alias: ["quorum"], + description: "The new base quorum", + type: "string", + required: true, }, + decimals: { + description: + "The decimal precision used by the contract. The quorum option will be multiplied by (10 ** decimals). For example, if quorum is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + }, - handler: async (args) => { - const power = await requiredNumberString(args.power, { - name: "power", - message: "Enter new base quorum", - }); + handler: async ({ options, next }) => { + const power = await options.power({ + prompt: "Enter new base quorum", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeSetDefaultQuorum(power, decimals)); - }, - }); + const encoded = encodeSetDefaultQuorum(power, decimals); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetDefaultQuorum( quorum: string, decimals: number, ): string { return encodeFunctionData({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, functionName: "setDefaultQuorum", - args: [parseBigInt(quorum, decimals)], + args: [parseUnits(quorum, decimals)], }); } diff --git a/packages/council-cli/src/commands/encode/core-voting/set-lock-duration.ts b/packages/council-cli/src/commands/encode/core-voting/set-lock-duration.ts index c9060c48..160b261a 100644 --- a/packages/council-cli/src/commands/encode/core-voting/set-lock-duration.ts +++ b/packages/council-cli/src/commands/encode/core-voting/set-lock-duration.ts @@ -1,40 +1,35 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-lock-duration [OPTIONS]", - aliases: ["setLockDuration"], - describe: "Encode call data for CoreVoting.setLockDuration", +export default command({ + description: "Encode call data for CoreVoting.setLockDuration", - builder: (yargs) => { - return yargs.options({ - b: { - alias: ["blocks", "lock-duration", "lockDuration"], - describe: - "The number of blocks that must pass before a new proposal can be executed", - type: "number", - }, - }); + options: { + blocks: { + alias: ["lock-duration"], + description: + "The number of blocks that must pass before a new proposal can be executed", + type: "number", + required: true, }, + }, - handler: async (args) => { - const blocks = await requiredNumber(args.blocks, { - name: "blocks", - message: "Enter new lock duration (in blocks)", - }); - - signale.success(encodeSetLockDuration(blocks)); - }, - }); + handler: async ({ options, next }) => { + const blocks = await options.blocks({ + prompt: "Enter new lock duration (in blocks)", + }); + const encoded = encodeSetLockDuration(blocks); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetLockDuration(duration: number): string { return encodeFunctionData({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, functionName: "setLockDuration", - args: [duration], + args: [BigInt(duration)], }); } diff --git a/packages/council-cli/src/commands/encode/core-voting/set-min-proposal-power.ts b/packages/council-cli/src/commands/encode/core-voting/set-min-proposal-power.ts index beb6868c..d8d6ee44 100644 --- a/packages/council-cli/src/commands/encode/core-voting/set-min-proposal-power.ts +++ b/packages/council-cli/src/commands/encode/core-voting/set-min-proposal-power.ts @@ -1,56 +1,46 @@ -import { CoreVoting__factory } from "@council/typechain"; +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-min-proposal-power [OPTIONS]", - aliases: ["setMinProposalPower"], - describe: "Encode call data for CoreVoting.setMinProposalPower", +export default command({ + description: "Encode call data for CoreVoting.setMinProposalPower", - builder: (yargs) => { - return yargs.options({ - p: { - alias: ["power", "min-proposal-power", "minProposalPower"], - describe: "The minimum voting power required to create a proposal", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The power option will be multiplied by (10 ** decimals). For example, if power is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + power: { + alias: ["min-proposal-power"], + description: "The minimum voting power required to create a proposal", + type: "string", + required: true, }, + decimals: { + description: + "The decimal precision used by the contract. The power option will be multiplied by (10 ** decimals). For example, if power is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + }, - handler: async (args) => { - const power = await requiredNumberString(args.power, { - name: "power", - message: "Enter minimum voting power", - }); + handler: async ({ options, next }) => { + const power = await options.power({ + prompt: "Enter minimum voting power", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeSetMinProposalPower(power, decimals)); - }, - }); + const encoded = encodeSetMinProposalPower(power, decimals); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetMinProposalPower( power: string, decimals: number, ): string { return encodeFunctionData({ - abi: CoreVoting__factory.abi, + abi: CoreVoting.abi, functionName: "setMinProposalPower", - args: [parseBigInt(power, decimals)], + args: [parseUnits(power, decimals)], }); } diff --git a/packages/council-cli/src/commands/encode/core-voting/set-owner.ts b/packages/council-cli/src/commands/encode/core-voting/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/core-voting/set-owner.ts +++ b/packages/council-cli/src/commands/encode/core-voting/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/gsc-vault.ts b/packages/council-cli/src/commands/encode/gsc-vault.ts deleted file mode 100644 index 4a93cb11..00000000 --- a/packages/council-cli/src/commands/encode/gsc-vault.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./gsc-vault"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "gsc-vault [function]", - aliases: ["GSCVault"], - describe: "Encode call data for a GSCVault function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/gsc-vault/authorize.ts b/packages/council-cli/src/commands/encode/gsc-vault/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/gsc-vault/authorize.ts +++ b/packages/council-cli/src/commands/encode/gsc-vault/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/gsc-vault/deauthorize.ts b/packages/council-cli/src/commands/encode/gsc-vault/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/gsc-vault/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/gsc-vault/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/gsc-vault/set-core-voting.ts b/packages/council-cli/src/commands/encode/gsc-vault/set-core-voting.ts index 5184b9df..cfeec6b2 100644 --- a/packages/council-cli/src/commands/encode/gsc-vault/set-core-voting.ts +++ b/packages/council-cli/src/commands/encode/gsc-vault/set-core-voting.ts @@ -1,39 +1,34 @@ -import { GSCVault__factory } from "@council/typechain"; +import { GSCVault } from "@delvtech/council-artifacts/GSCVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-core-voting [OPTIONS]", - aliases: ["setCoreVoting"], - describe: "Encode call data for GSCVault.setCoreVoting", +export default command({ + description: "Encode call data for GSCVault.setCoreVoting", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "new-voting", "newVoting"], - describe: "The new core voting contract address", - type: "string", - }, - }); + options: { + address: { + alias: ["new-voting"], + description: "The new core voting contract address", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter core voting address", - }); - - signale.success(encodeSetCoreVoting(address)); - }, - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter core voting address", + }); + const encoded = encodeSetCoreVoting(address); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetCoreVoting(address: string): string { return encodeFunctionData({ - abi: GSCVault__factory.abi, + abi: GSCVault.abi, functionName: "setCoreVoting", - args: [address], + args: [address as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/gsc-vault/set-idle-duration.ts b/packages/council-cli/src/commands/encode/gsc-vault/set-idle-duration.ts index 49ffb7a8..42c9a2d2 100644 --- a/packages/council-cli/src/commands/encode/gsc-vault/set-idle-duration.ts +++ b/packages/council-cli/src/commands/encode/gsc-vault/set-idle-duration.ts @@ -1,40 +1,35 @@ -import { GSCVault__factory } from "@council/typechain"; +import { GSCVault } from "@delvtech/council-artifacts/GSCVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-idle-duration [OPTIONS]", - aliases: ["setIdleDuration"], - describe: "Encode call data for GSCVault.setIdleDuration", +export default command({ + description: "Encode call data for GSCVault.setIdleDuration", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["time", "idle-duration", "idleDuration"], - describe: - "The time (in seconds) new members must wait before they can vote", - type: "number", - }, - }); + options: { + time: { + alias: ["idle-duration"], + description: + "The time (in seconds) new members must wait before they can vote", + type: "number", + required: true, }, + }, - handler: async (args) => { - const time = await requiredNumber(args.time, { - name: "time", - message: "Enter new idle time (in seconds)", - }); - - signale.success(encodeSetIdleDuration(time)); - }, - }); + handler: async ({ options, next }) => { + const time = await options.time({ + prompt: "Enter new idle time (in seconds)", + }); + const encoded = encodeSetIdleDuration(time); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetIdleDuration(time: number): string { return encodeFunctionData({ - abi: GSCVault__factory.abi, + abi: GSCVault.abi, functionName: "setIdleDuration", - args: [time], + args: [BigInt(time)], }); } diff --git a/packages/council-cli/src/commands/encode/gsc-vault/set-owner.ts b/packages/council-cli/src/commands/encode/gsc-vault/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/gsc-vault/set-owner.ts +++ b/packages/council-cli/src/commands/encode/gsc-vault/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/gsc-vault/set-vote-power-bound.ts b/packages/council-cli/src/commands/encode/gsc-vault/set-vote-power-bound.ts index 945ed615..f319bea6 100644 --- a/packages/council-cli/src/commands/encode/gsc-vault/set-vote-power-bound.ts +++ b/packages/council-cli/src/commands/encode/gsc-vault/set-vote-power-bound.ts @@ -1,45 +1,36 @@ -import { GSCVault__factory } from "@council/typechain"; +import { GSCVault } from "@delvtech/council-artifacts/GSCVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, builder, handler } = createCommandModule({ - command: "set-vote-power-bound [OPTIONS]", - aliases: ["setVotePowerBound"], - describe: "Encode call data for GSCVault.setVotePowerBound", +export default command({ + description: "Encode call data for GSCVault.setVotePowerBound", - builder: (yargs) => { - return yargs.options({ - p: { - alias: ["power", "new-bound", "newBound"], - describe: "The new required voting power to become a member", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The power option will be multiplied by (10 ** decimals). For example, if power is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + bound: { + alias: ["power"], + description: "The new required voting power to become a member", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The power option will be multiplied by (10 ** decimals). For example, if power is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, }, - handler: async (args) => { - const power = await requiredNumberString(args.power, { - name: "power", - message: "Enter new voting power bound", + handler: async ({ options, next }) => { + const power = await options.power({ + prompt: "Enter new voting power bound", }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeSetVotePowerBound(power, decimals)); + const encoded = encodeSetVotePowerBound(power, decimals); + signale.success(encoded); + next(encoded); }, }); @@ -48,8 +39,8 @@ export function encodeSetVotePowerBound( decimals: number, ): string { return encodeFunctionData({ - abi: GSCVault__factory.abi, + abi: GSCVault.abi, functionName: "setVotePowerBound", - args: [parseBigInt(power, decimals)], + args: [parseUnits(power, decimals)], }); } diff --git a/packages/council-cli/src/commands/encode/libraries/authorizable/authorize.ts b/packages/council-cli/src/commands/encode/libraries/authorizable/authorize.ts deleted file mode 100644 index fa2e4349..00000000 --- a/packages/council-cli/src/commands/encode/libraries/authorizable/authorize.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Authorizable__factory } from "@council/typechain"; -import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "authorize [OPTIONS]", - describe: "Encode call data for Authorizable.authorize", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "who"], - describe: "The address to authorize", - type: "string", - }, - }); - }, - - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter address", - }); - - signale.success(encodeAuthorize(address)); - }, -}); - -export function encodeAuthorize(address: string): string { - return encodeFunctionData({ - abi: Authorizable__factory.abi, - functionName: "authorize", - args: [address], - }); -} diff --git a/packages/council-cli/src/commands/encode/libraries/authorizable/deauthorize.ts b/packages/council-cli/src/commands/encode/libraries/authorizable/deauthorize.ts deleted file mode 100644 index ec43e85e..00000000 --- a/packages/council-cli/src/commands/encode/libraries/authorizable/deauthorize.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Authorizable__factory } from "@council/typechain"; -import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "deauthorize [OPTIONS]", - describe: "Encode call data for Authorizable.deauthorize", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "who"], - describe: "The address to remove authorization from", - type: "string", - }, - }); - }, - - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter address", - }); - - signale.success(encodeDeauthorize(address)); - }, -}); - -export function encodeDeauthorize(address: string): string { - return encodeFunctionData({ - abi: Authorizable__factory.abi, - functionName: "deauthorize", - args: [address], - }); -} diff --git a/packages/council-cli/src/commands/encode/libraries/authorizable/set-owner.ts b/packages/council-cli/src/commands/encode/libraries/authorizable/set-owner.ts deleted file mode 100644 index b372de82..00000000 --- a/packages/council-cli/src/commands/encode/libraries/authorizable/set-owner.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Authorizable__factory } from "@council/typechain"; -import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-owner [OPTIONS]", - aliases: ["setOwner"], - describe: "Encode call data for Authorizable.setOwner", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "who"], - describe: "The address to set as the owner", - type: "string", - }, - }); - }, - - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter owner address", - }); - - signale.success(encodeSetOwner(address)); - }, - }); - -export function encodeSetOwner(address: string): string { - return encodeFunctionData({ - abi: Authorizable__factory.abi, - functionName: "setOwner", - args: [address], - }); -} diff --git a/packages/council-cli/src/commands/encode/libraries/merkle-rewards/claim-and-delegate.ts b/packages/council-cli/src/commands/encode/libraries/merkle-rewards/claim-and-delegate.ts deleted file mode 100644 index aecb1fb4..00000000 --- a/packages/council-cli/src/commands/encode/libraries/merkle-rewards/claim-and-delegate.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { MerkleRewards__factory } from "@council/typechain"; -import signale from "signale"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "claim-and-delegate [OPTIONS]", - aliases: ["claimAndDelegate"], - describe: "Encode call data for MerkleRewards.claimAndDelegate", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of rewards to claim and delegate", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - d: { - alias: ["delegate"], - describe: - "The address to delegate the resulting voting power to if the recipient doesn't already have a delegate", - type: "string", - }, - t: { - alias: ["total-grant", "totalGrant"], - describe: "The total grant amount", - type: "string", - }, - m: { - alias: ["proof", "merkle-proof", "merkleProof"], - describe: "The merkle proof for the claim", - type: "array", - string: true, - }, - r: { - alias: ["recipient", "destination"], - describe: "The address which will be credited with funds", - type: "string", - }, - }); - }, - - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to claim", - }); - - const totalGrant = await requiredString(args.totalGrant, { - name: "totalGrant", - message: "Enter total grant amount", - }); - - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); - - const proof = await requiredArray(args.proof, { - name: "proof", - message: "Enter merkle proof", - }); - - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", - }); - - const delegate = await requiredString(args.delegate, { - name: "delegate", - message: "Enter delegate address", - }); - - signale.success( - encodeClaimAndDelegate( - amount, - decimals, - delegate, - totalGrant, - proof, - recipient, - ), - ); - }, - }); - -export function encodeClaimAndDelegate( - amount: string, - decimals: number, - delegate: string, - totalGrant: string, - proof: string[], - recipient: string, -): string { - return encodeFunctionData({ - abi: MerkleRewards__factory.abi, - functionName: "claimAndDelegate", - args: [ - parseBigInt(amount, decimals), - delegate, - parseBigInt(totalGrant, decimals), - proof, - recipient, - ], - }); -} diff --git a/packages/council-cli/src/commands/encode/libraries/merkle-rewards/claim.ts b/packages/council-cli/src/commands/encode/libraries/merkle-rewards/claim.ts deleted file mode 100644 index 593e5939..00000000 --- a/packages/council-cli/src/commands/encode/libraries/merkle-rewards/claim.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { MerkleRewards__factory } from "@council/typechain"; -import signale from "signale"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "claim [OPTIONS]", - describe: "Encode call data for MerkleRewards.claim", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of rewards to claim", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - t: { - alias: ["total-grant", "totalGrant"], - describe: "The total grant amount", - type: "string", - }, - m: { - alias: ["proof", "merkle-proof", "merkleProof"], - describe: "The merkle proof for the claim", - type: "array", - string: true, - }, - r: { - alias: ["recipient", "destination"], - describe: "The address which will be credited with funds", - type: "string", - }, - }); - }, - - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to claim", - }); - - const totalGrant = await requiredString(args.totalGrant, { - name: "totalGrant", - message: "Enter total grant amount", - }); - - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); - - const proof = await requiredArray(args.proof, { - name: "proof", - message: "Enter merkle proof", - }); - - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", - }); - - signale.success( - encodeClaim(amount, decimals, totalGrant, proof, recipient), - ); - }, -}); - -export function encodeClaim( - amount: string, - decimals: number, - totalGrant: string, - proof: string[], - recipient: string, -): string { - return encodeFunctionData({ - abi: MerkleRewards__factory.abi, - functionName: "claim", - args: [ - parseBigInt(amount, decimals), - parseBigInt(totalGrant, decimals), - proof, - recipient, - ], - }); -} diff --git a/packages/council-cli/src/commands/encode/locking-vault.ts b/packages/council-cli/src/commands/encode/locking-vault.ts deleted file mode 100644 index be5a1c94..00000000 --- a/packages/council-cli/src/commands/encode/locking-vault.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./locking-vault"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "locking-vault [function]", - aliases: ["LockingVault"], - describe: "Encode call data for a LockingVault function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/locking-vault/change-delegation.ts b/packages/council-cli/src/commands/encode/locking-vault/change-delegation.ts index b7e0cfbd..848f80e4 100644 --- a/packages/council-cli/src/commands/encode/locking-vault/change-delegation.ts +++ b/packages/council-cli/src/commands/encode/locking-vault/change-delegation.ts @@ -1,39 +1,34 @@ -import { LockingVault__factory } from "@council/typechain"; +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "change-delegation [OPTIONS]", - aliases: ["changeDelegation"], - describe: "Encode call data for LockingVault.changeDelegation", +export default command({ + description: "Encode call data for LockingVault.changeDelegation", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "new-delegate", "newDelegate"], - describe: "The address to delegate to", - type: "string", - }, - }); + options: { + address: { + alias: ["new-delegate"], + description: "The address to delegate to", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter new delegate address", - }); - - signale.success(encodeChangeDelegation(address)); - }, - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter new delegate address", + }); + const encoded = encodeChangeDelegation(address); + signale.success(encoded); + next(encoded); + }, +}); export function encodeChangeDelegation(address: string): string { return encodeFunctionData({ - abi: LockingVault__factory.abi, + abi: LockingVault.abi, functionName: "changeDelegation", - args: [address], + args: [address as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/locking-vault/deposit.ts b/packages/council-cli/src/commands/encode/locking-vault/deposit.ts index c71405c9..3358de42 100644 --- a/packages/council-cli/src/commands/encode/locking-vault/deposit.ts +++ b/packages/council-cli/src/commands/encode/locking-vault/deposit.ts @@ -1,65 +1,56 @@ -import { LockingVault__factory } from "@council/typechain"; +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "deposit [OPTIONS]", - describe: "Encode call data for LockingVault.deposit", +export default command({ + description: "Encode call data for LockingVault.deposit", - builder: (yargs) => { - return yargs.options({ - f: { - alias: ["account", "funded-account", "fundedAccount"], - describe: "The address to credit this deposit to", - type: "string", - }, - a: { - alias: ["amount"], - describe: "The amount of tokens to deposit", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - d: { - alias: ["delegate", "first-delegate", "firstDelegate"], - describe: - "The address to delegate the resulting voting power to if the account doesn't already have a delegate", - type: "string", - }, - }); + options: { + account: { + alias: ["funded-account"], + description: "The address to credit this deposit to", + type: "string", + required: true, + }, + amount: { + description: "The amount of tokens to deposit", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + delegate: { + alias: ["first-delegate"], + description: + "The address to delegate the resulting voting power to if the account doesn't already have a delegate", + type: "string", + required: true, + }, }, - handler: async (args) => { - const account = await requiredString(args.account, { - name: "account", - message: "Enter account address", + handler: async ({ options, next }) => { + const account = await options.account({ + prompt: "Enter account address", }); - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to deposit", + const amount = await options.amount({ + prompt: "Enter amount to deposit", }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const delegate = await requiredString(args.delegate, { - name: "delegate", - message: "Enter first delegate address", + const delegate = await options.delegate({ + prompt: "Enter first delegate address", }); - signale.success(encodeDeposit(account, amount, decimals, delegate)); + const encoded = encodeDeposit(account, amount, decimals, delegate); + signale.success(encoded); + next(encoded); }, }); @@ -70,8 +61,12 @@ export function encodeDeposit( delegate: string, ): string { return encodeFunctionData({ - abi: LockingVault__factory.abi, + abi: LockingVault.abi, functionName: "deposit", - args: [account, parseBigInt(amount, decimals), delegate], + args: [ + account as `0x${string}`, + parseUnits(amount, decimals), + delegate as `0x${string}`, + ], }); } diff --git a/packages/council-cli/src/commands/encode/locking-vault/withdraw.ts b/packages/council-cli/src/commands/encode/locking-vault/withdraw.ts index 9cd5fef9..5a70ef39 100644 --- a/packages/council-cli/src/commands/encode/locking-vault/withdraw.ts +++ b/packages/council-cli/src/commands/encode/locking-vault/withdraw.ts @@ -1,51 +1,42 @@ -import { LockingVault__factory } from "@council/typechain"; +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "withdraw [OPTIONS]", - describe: "Encode call data for LockingVault.withdraw", +export default command({ + description: "Encode call data for LockingVault.withdraw", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of tokens to withdraw", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + amount: { + description: "The amount of tokens to withdraw", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to deposit", + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to deposit", }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeWithdraw(amount, decimals)); + const encoded = encodeWithdraw(amount, decimals); + signale.success(encoded); + next(encoded); }, }); export function encodeWithdraw(amount: string, decimals: number): string { return encodeFunctionData({ - abi: LockingVault__factory.abi, + abi: LockingVault.abi, functionName: "withdraw", - args: [parseBigInt(amount, decimals)], + args: [parseUnits(amount, decimals)], }); } diff --git a/packages/council-cli/src/commands/encode/merkle-rewards/claim-and-delegate.ts b/packages/council-cli/src/commands/encode/merkle-rewards/claim-and-delegate.ts new file mode 100644 index 00000000..04da7b8e --- /dev/null +++ b/packages/council-cli/src/commands/encode/merkle-rewards/claim-and-delegate.ts @@ -0,0 +1,105 @@ +import { MerkleRewards } from "@delvtech/council-artifacts/MerkleRewards"; +import { command } from "clide-js"; +import signale from "signale"; +import { encodeFunctionData, parseUnits } from "viem"; + +export default command({ + description: "Encode call data for MerkleRewards.claimAndDelegate", + + options: { + amount: { + description: "The amount of rewards to claim and delegate", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + delegate: { + description: + "The address to delegate the resulting voting power to if the recipient doesn't already have a delegate", + type: "string", + required: true, + }, + "total-grant": { + description: "The total grant amount", + type: "string", + required: true, + }, + proof: { + alias: ["merkle-proof"], + description: "The merkle proof for the claim", + type: "array", + required: true, + }, + recipient: { + alias: ["destination"], + description: "The address which will be credited with funds", + type: "string", + required: true, + }, + }, + + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to claim", + }); + + const totalGrant = await options.totalGrant({ + prompt: "Enter total grant amount", + }); + + const decimals = await options.decimals(); + + const proof = await options.proof({ + prompt: "Enter merkle proof", + }); + + const recipient = await options.recipient({ + prompt: "Enter recipient address", + }); + + const delegate = await options.delegate({ + prompt: { + message: "Enter delegate address", + initial: recipient, + }, + }); + + const encoded = encodeClaimAndDelegate( + amount, + decimals, + delegate, + totalGrant, + proof, + recipient, + ); + + signale.success(encoded); + next(encoded); + }, +}); + +export function encodeClaimAndDelegate( + amount: string, + decimals: number, + delegate: string, + totalGrant: string, + proof: string[], + recipient: string, +): string { + return encodeFunctionData({ + abi: MerkleRewards.abi, + functionName: "claimAndDelegate", + args: [ + parseUnits(amount, decimals), + delegate as `0x${string}`, + parseUnits(totalGrant, decimals), + proof as `0x${string}`[], + recipient as `0x${string}`, + ], + }); +} diff --git a/packages/council-cli/src/commands/encode/merkle-rewards/claim.ts b/packages/council-cli/src/commands/encode/merkle-rewards/claim.ts new file mode 100644 index 00000000..6593e02a --- /dev/null +++ b/packages/council-cli/src/commands/encode/merkle-rewards/claim.ts @@ -0,0 +1,83 @@ +import { MerkleRewards } from "@delvtech/council-artifacts/MerkleRewards"; +import { command } from "clide-js"; +import signale from "signale"; +import { encodeFunctionData, parseUnits } from "viem"; + +export default command({ + description: "Encode call data for MerkleRewards.claim", + + options: { + amount: { + description: "The amount of rewards to claim", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + "total-grant": { + description: "The total grant amount", + type: "string", + required: true, + }, + proof: { + alias: ["merkle-proof"], + description: "The merkle proof for the claim", + type: "array", + required: true, + }, + recipient: { + alias: ["destination"], + description: "The address which will be credited with funds", + type: "string", + required: true, + }, + }, + + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to claim", + }); + + const totalGrant = await options.totalGrant({ + prompt: "Enter total grant amount", + }); + + const decimals = await options.decimals(); + + const proof = await options.proof({ + prompt: "Enter merkle proof", + }); + + const recipient = await options.recipient({ + prompt: "Enter recipient address", + }); + + const encoded = encodeClaim(amount, decimals, totalGrant, proof, recipient); + + signale.success(encoded); + next(encoded); + }, +}); + +export function encodeClaim( + amount: string, + decimals: number, + totalGrant: string, + proof: string[], + recipient: string, +): string { + return encodeFunctionData({ + abi: MerkleRewards.abi, + functionName: "claim", + args: [ + parseUnits(amount, decimals), + parseUnits(totalGrant, decimals), + proof as `0x${string}`[], + recipient as `0x${string}`, + ], + }); +} diff --git a/packages/council-cli/src/commands/encode/optimistic-grants.ts b/packages/council-cli/src/commands/encode/optimistic-grants.ts deleted file mode 100644 index f313692c..00000000 --- a/packages/council-cli/src/commands/encode/optimistic-grants.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./optimistic-grants"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "optimistic-grants [function]", - aliases: ["OptimisticGrants"], - describe: "Encode call data for a OptimisticGrants function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/optimistic-grants/claim.ts b/packages/council-cli/src/commands/encode/optimistic-grants/claim.ts index 2c0bbdc3..8f83545b 100644 --- a/packages/council-cli/src/commands/encode/optimistic-grants/claim.ts +++ b/packages/council-cli/src/commands/encode/optimistic-grants/claim.ts @@ -1,37 +1,34 @@ -import { OptimisticGrants__factory } from "@council/typechain"; +import { OptimisticGrants } from "@delvtech/council-artifacts/OptimisticGrants"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "claim", - describe: "Encode call data for OptimisticGrants.claim", +export default command({ + description: "Encode call data for OptimisticGrants.claim", - builder: (yargs) => { - return yargs.options({ - r: { - alias: ["recipient", "destination"], - description: "The address to send the tokens to", - type: "string", - }, - }); + options: { + recipient: { + alias: ["destination"], + description: "The address to send the tokens to", + type: "string", + required: true, + }, }, - handler: async (args) => { - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", + handler: async ({ options, next }) => { + const recipient = await options.recipient({ + prompt: "Enter recipient address", }); - - signale.success(encodeClaim(recipient)); + const encoded = encodeClaim(recipient); + signale.success(encoded); + next(encoded); }, }); export function encodeClaim(recipient: string): string { return encodeFunctionData({ - abi: OptimisticGrants__factory.abi, + abi: OptimisticGrants.abi, functionName: "claim", - args: [recipient], + args: [recipient as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-grants/configure-grant.ts b/packages/council-cli/src/commands/encode/optimistic-grants/configure-grant.ts index a2497a63..15798a8b 100644 --- a/packages/council-cli/src/commands/encode/optimistic-grants/configure-grant.ts +++ b/packages/council-cli/src/commands/encode/optimistic-grants/configure-grant.ts @@ -1,70 +1,55 @@ -import { OptimisticGrants__factory } from "@council/typechain"; +import { OptimisticGrants } from "@delvtech/council-artifacts/OptimisticGrants"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "configure-grant [function]", - aliases: ["configureGrant"], - describe: "Encode call data for a OptimisticGrants.configureGrant", +export default command({ + description: "Encode call data for a OptimisticGrants.configureGrant", - builder: (yargs) => { - return yargs.options({ - o: { - alias: ["owner"], - describe: "The address of the grant owner", - type: "string", - }, - a: { - alias: ["amount"], - describe: "The amount of tokens to grant", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - e: { - alias: ["expiration"], - describe: "The expiration timestamp (in seconds) of the grant", - type: "number", - }, - }); + options: { + owner: { + description: "The address of the grant owner", + type: "string", + required: true, }, + amount: { + description: "The amount of tokens to grant", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + expiration: { + description: "The expiration timestamp (in seconds) of the grant", + type: "number", + required: true, + }, + }, - handler: async (args) => { - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter owner address", - }); + handler: async ({ options, next }) => { + const owner = await options.owner({ + prompt: "Enter owner address", + }); - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to grant", - }); + const amount = await options.amount({ + prompt: "Enter amount to grant", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const expiration = await requiredNumber(args.expiration, { - name: "expiration", - message: "Enter expiration timestamp (in seconds)", - }); + const expiration = await options.expiration({ + prompt: "Enter expiration timestamp (in seconds)", + }); - signale.success( - encodeConfigureGrant(owner, amount, decimals, expiration), - ); - }, - }); + const encoded = encodeConfigureGrant(owner, amount, decimals, expiration); + signale.success(encoded); + next(encoded); + }, +}); export function encodeConfigureGrant( owner: string, @@ -73,8 +58,12 @@ export function encodeConfigureGrant( expiration: number, ): string { return encodeFunctionData({ - abi: OptimisticGrants__factory.abi, + abi: OptimisticGrants.abi, functionName: "configureGrant", - args: [owner, parseBigInt(amount, decimals), expiration], + args: [ + owner as `0x${string}`, + parseUnits(amount, decimals), + BigInt(expiration), + ], }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-grants/deposit.ts b/packages/council-cli/src/commands/encode/optimistic-grants/deposit.ts index effd58f6..01946556 100644 --- a/packages/council-cli/src/commands/encode/optimistic-grants/deposit.ts +++ b/packages/council-cli/src/commands/encode/optimistic-grants/deposit.ts @@ -1,51 +1,42 @@ -import { OptimisticGrants__factory } from "@council/typechain"; +import { OptimisticGrants } from "@delvtech/council-artifacts/OptimisticGrants"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "deposit [OPTIONS]", - describe: "Encode call data for OptimisticGrants.deposit", +export default command({ + description: "Encode call data for OptimisticGrants.deposit", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of tokens to deposit", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + amount: { + description: "The amount of tokens to deposit", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to deposit", + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to deposit", }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeDeposit(amount, decimals)); + const encoded = encodeDeposit(amount, decimals); + signale.success(encoded); + next(encoded); }, }); export function encodeDeposit(amount: string, decimals: number): string { return encodeFunctionData({ - abi: OptimisticGrants__factory.abi, + abi: OptimisticGrants.abi, functionName: "deposit", - args: [parseBigInt(amount, decimals)], + args: [parseUnits(amount, decimals)], }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-grants/withdraw.ts b/packages/council-cli/src/commands/encode/optimistic-grants/withdraw.ts index 5308c4c4..eb2c51a5 100644 --- a/packages/council-cli/src/commands/encode/optimistic-grants/withdraw.ts +++ b/packages/council-cli/src/commands/encode/optimistic-grants/withdraw.ts @@ -1,54 +1,44 @@ -import { OptimisticGrants__factory } from "@council/typechain"; +import { OptimisticGrants } from "@delvtech/council-artifacts/OptimisticGrants"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "withdraw [OPTIONS]", - describe: "Encode call data for OptimisticGrants.withdraw", +export default command({ + description: "Encode call data for OptimisticGrants.withdraw", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of tokens to withdraw", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - r: { - alias: ["recipient"], - describe: "The address to withdraw to", - type: "string", - }, - }); + options: { + amount: { + description: "The amount of tokens to withdraw", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + recipient: { + description: "The address to withdraw to", + type: "string", + required: true, + }, }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to withdraw", + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to withdraw", }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", + const recipient = await options.recipient({ + prompt: "Enter recipient address", }); - signale.success(encodeDeposit(amount, decimals, recipient)); + const encoded = encodeDeposit(amount, decimals, recipient); + signale.success(encoded); + next(encoded); }, }); @@ -58,8 +48,8 @@ export function encodeDeposit( recipient: string, ): string { return encodeFunctionData({ - abi: OptimisticGrants__factory.abi, + abi: OptimisticGrants.abi, functionName: "withdraw", - args: [parseBigInt(amount, decimals), recipient], + args: [parseUnits(amount, decimals), recipient as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards.ts b/packages/council-cli/src/commands/encode/optimistic-rewards.ts deleted file mode 100644 index 82aecb2a..00000000 --- a/packages/council-cli/src/commands/encode/optimistic-rewards.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./optimistic-rewards"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "optimistic-rewards [function]", - aliases: ["OptimisticRewards"], - describe: "Encode call data for a OptimisticRewards function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/authorize.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/authorize.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/challenge-rewards.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/challenge-rewards.ts index 9f7c18dd..c5a236c5 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/challenge-rewards.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/challenge-rewards.ts @@ -1,21 +1,21 @@ -import { OptimisticRewards__factory } from "@council/typechain"; +import { OptimisticRewards } from "@delvtech/council-artifacts/OptimisticRewards"; +import { command } from "clide-js"; import signale from "signale"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, handler } = createCommandModule({ - command: "challenge-rewards [OPTIONS]", - aliases: ["challengeRewards"], - describe: "Encode call data for OptimisticRewards.challengeRewards", +export default command({ + description: "Encode call data for OptimisticRewards.challengeRewards", - handler: async () => { - signale.success(encodeChallengeRewards()); + handler: async ({ next }) => { + const encoded = encodeChallengeRewards(); + signale.success(encoded); + next(encoded); }, }); export function encodeChallengeRewards(): string { return encodeFunctionData({ - abi: OptimisticRewards__factory.abi, + abi: OptimisticRewards.abi, functionName: "challengeRewards", }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/claim-and-delegate.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/claim-and-delegate.ts index 0302ecd4..9de775e0 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/claim-and-delegate.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/claim-and-delegate.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/merkle-rewards/claim-and-delegate"; +import claimAndDelegate from "../merkle-rewards/claim-and-delegate.js"; +export default claimAndDelegate; diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/claim.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/claim.ts index 636a2226..3c90ab7c 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/claim.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/claim.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/merkle-rewards/claim"; +import claim from "../merkle-rewards/claim.js"; +export default claim; diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/deauthorize.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/propose-rewards.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/propose-rewards.ts index 74000e0b..a9d40d97 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/propose-rewards.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/propose-rewards.ts @@ -1,39 +1,34 @@ -import { OptimisticRewards__factory } from "@council/typechain"; +import { OptimisticRewards } from "@delvtech/council-artifacts/OptimisticRewards"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "propose-rewards [OPTIONS]", - aliases: ["proposeRewards"], - describe: "Encode call data for OptimisticRewards.proposeRewards", +export default command({ + description: "Encode call data for OptimisticRewards.proposeRewards", - builder: (yargs) => { - return yargs.options({ - r: { - alias: ["root"], - describe: "The merkle root of the proposed new rewards", - type: "string", - }, - }); + options: { + root: { + description: "The merkle root of the proposed new rewards", + type: "string", + required: true, }, + }, - handler: async (args) => { - const root = await requiredString(args.root, { - name: "root", - message: "Enter rewards merkle root", - }); + handler: async ({ options, next }) => { + const root = await options.root({ + prompt: "Enter rewards merkle root", + }); - signale.success(encodeProposeRewards(root)); - }, - }); + const encoded = encodeProposeRewards(root); + signale.success(encoded); + next(encoded); + }, +}); export function encodeProposeRewards(root: string): string { return encodeFunctionData({ - abi: OptimisticRewards__factory.abi, + abi: OptimisticRewards.abi, functionName: "proposeRewards", - args: [root], + args: [root as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/set-challenge-period.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/set-challenge-period.ts index 1272158f..09a47539 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/set-challenge-period.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/set-challenge-period.ts @@ -1,39 +1,34 @@ -import { OptimisticRewards__factory } from "@council/typechain"; +import { OptimisticRewards } from "@delvtech/council-artifacts/OptimisticRewards"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-challenge-period [OPTIONS]", - aliases: ["setChallengePeriod"], - describe: "Encode call data for OptimisticRewards.setChallengePeriod", +export default command({ + description: "Encode call data for OptimisticRewards.setChallengePeriod", - builder: (yargs) => { - return yargs.options({ - p: { - alias: ["period"], - describe: "The new challenge period (in seconds)", - type: "number", - }, - }); + options: { + period: { + description: "The new challenge period (in seconds)", + type: "number", + required: true, }, + }, - handler: async (args) => { - const period = await requiredNumber(args.period, { - name: "period", - message: "Enter challenge period (in seconds)", - }); + handler: async ({ options, next }) => { + const period = await options.period({ + prompt: "Enter challenge period (in seconds)", + }); - signale.success(encodeSetChallengePeriod(period)); - }, - }); + const encoded = encodeSetChallengePeriod(period); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetChallengePeriod(period: number): string { return encodeFunctionData({ - abi: OptimisticRewards__factory.abi, + abi: OptimisticRewards.abi, functionName: "setChallengePeriod", - args: [period], + args: [BigInt(period)], }); } diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/set-owner.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/set-owner.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/optimistic-rewards/set-proposer.ts b/packages/council-cli/src/commands/encode/optimistic-rewards/set-proposer.ts index 64be66e1..9fbba42f 100644 --- a/packages/council-cli/src/commands/encode/optimistic-rewards/set-proposer.ts +++ b/packages/council-cli/src/commands/encode/optimistic-rewards/set-proposer.ts @@ -1,39 +1,34 @@ -import { OptimisticRewards__factory } from "@council/typechain"; +import { OptimisticRewards } from "@delvtech/council-artifacts/OptimisticRewards"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-proposer [OPTIONS]", - aliases: ["setProposer"], - describe: "Encode call data for OptimisticRewards.setProposer", +export default command({ + description: "Encode call data for OptimisticRewards.setProposer", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "proposer"], - describe: "The address of the new proposer", - type: "string", - }, - }); + options: { + address: { + alias: ["proposer"], + description: "The address of the new proposer", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter proposer address", - }); - - signale.success(encodeSetProposer(address)); - }, - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter proposer address", + }); + const encoded = encodeSetProposer(address); + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetProposer(proposerAddress: string): string { return encodeFunctionData({ - abi: OptimisticRewards__factory.abi, + abi: OptimisticRewards.abi, functionName: "setProposer", - args: [proposerAddress], + args: [proposerAddress as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/spender.ts b/packages/council-cli/src/commands/encode/spender.ts deleted file mode 100644 index 65bf5853..00000000 --- a/packages/council-cli/src/commands/encode/spender.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./spender"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "spender [function]", - aliases: ["Spender"], - describe: "Encode call data for a Spender function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/spender/authorize.ts b/packages/council-cli/src/commands/encode/spender/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/spender/authorize.ts +++ b/packages/council-cli/src/commands/encode/spender/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/spender/deauthorize.ts b/packages/council-cli/src/commands/encode/spender/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/spender/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/spender/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/spender/high-spend.ts b/packages/council-cli/src/commands/encode/spender/high-spend.ts index 23adfc20..27b9fe42 100644 --- a/packages/council-cli/src/commands/encode/spender/high-spend.ts +++ b/packages/council-cli/src/commands/encode/spender/high-spend.ts @@ -1,58 +1,47 @@ -import { Spender__factory } from "@council/typechain"; +import { Spender } from "@delvtech/council-artifacts/Spender"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "high-spend [OPTIONS]", - aliases: ["highSpend"], - describe: "Encode call data for a Spender.highSpend", +export default command({ + description: "Encode call data for a Spender.highSpend", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount to spend", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - d: { - alias: ["destination"], - describe: "The address to send the funds to", - type: "string", - }, - }); + options: { + amount: { + description: "The amount to spend", + type: "string", + required: true, }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + destination: { + description: "The address to send the funds to", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to spend", - }); + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to spend", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const destination = await requiredString(args.destination, { - name: "destination", - message: "Enter destination address", - }); + const destination = await options.destination({ + prompt: "Enter destination address", + }); - signale.success(encodeHighSpend(amount, decimals, destination)); - }, - }); + const encoded = encodeHighSpend(amount, decimals, destination); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeHighSpend( amount: string, @@ -60,8 +49,8 @@ export function encodeHighSpend( destination: string, ): string { return encodeFunctionData({ - abi: Spender__factory.abi, + abi: Spender.abi, functionName: "smallSpend", - args: [parseBigInt(amount, decimals), destination], + args: [parseUnits(amount, decimals), destination as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/spender/medium-spend.ts b/packages/council-cli/src/commands/encode/spender/medium-spend.ts index 6c69a851..2555db1a 100644 --- a/packages/council-cli/src/commands/encode/spender/medium-spend.ts +++ b/packages/council-cli/src/commands/encode/spender/medium-spend.ts @@ -1,58 +1,47 @@ -import { Spender__factory } from "@council/typechain"; +import { Spender } from "@delvtech/council-artifacts/Spender"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "medium-spend [OPTIONS]", - aliases: ["mediumSpend"], - describe: "Encode call data for a Spender.mediumSpend", +export default command({ + description: "Encode call data for a Spender.mediumSpend", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount to spend", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - d: { - alias: ["destination"], - describe: "The address to send the funds to", - type: "string", - }, - }); + options: { + amount: { + description: "The amount to spend", + type: "string", + required: true, }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + destination: { + description: "The address to send the funds to", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to spend", - }); + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to spend", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const destination = await requiredString(args.destination, { - name: "destination", - message: "Enter destination address", - }); + const destination = await options.destination({ + prompt: "Enter destination address", + }); - signale.success(encodeMediumSpend(amount, decimals, destination)); - }, - }); + const encoded = encodeMediumSpend(amount, decimals, destination); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeMediumSpend( amount: string, @@ -60,8 +49,8 @@ export function encodeMediumSpend( destination: string, ): string { return encodeFunctionData({ - abi: Spender__factory.abi, + abi: Spender.abi, functionName: "mediumSpend", - args: [parseBigInt(amount, decimals), destination], + args: [parseUnits(amount, decimals), destination as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/spender/remove-token.ts b/packages/council-cli/src/commands/encode/spender/remove-token.ts index 30913449..8504bc3e 100644 --- a/packages/council-cli/src/commands/encode/spender/remove-token.ts +++ b/packages/council-cli/src/commands/encode/spender/remove-token.ts @@ -1,59 +1,48 @@ -import { Spender__factory } from "@council/typechain"; +import { Spender } from "@delvtech/council-artifacts/Spender"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "remove-token [OPTIONS]", - aliases: ["removeToken"], - describe: "Encode call data for a Spender.removeToken", +export default command({ + description: "Encode call data for a Spender.removeToken", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: - "The amount of tokens to remove (max uint256 for the full balance)", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - d: { - alias: ["destination"], - describe: "The address to send the funds to", - type: "string", - }, - }); + options: { + amount: { + description: + "The amount of tokens to remove (max uint256 for the full balance)", + type: "string", + required: true, }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + destination: { + description: "The address to send the funds to", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to remove (max uint256 for the full balance)", - }); + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to remove (max uint256 for the full balance)", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const destination = await requiredString(args.destination, { - name: "destination", - message: "Enter destination address", - }); + const destination = await options.destination({ + prompt: "Enter destination address", + }); - signale.success(encodeRemoveToken(amount, decimals, destination)); - }, - }); + const encoded = encodeRemoveToken(amount, decimals, destination); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeRemoveToken( amount: string, @@ -61,8 +50,8 @@ export function encodeRemoveToken( destination: string, ): string { return encodeFunctionData({ - abi: Spender__factory.abi, + abi: Spender.abi, functionName: "removeToken", - args: [parseBigInt(amount, decimals), destination], + args: [parseUnits(amount, decimals), destination as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/spender/set-limits.ts b/packages/council-cli/src/commands/encode/spender/set-limits.ts index 143a4652..7c679162 100644 --- a/packages/council-cli/src/commands/encode/spender/set-limits.ts +++ b/packages/council-cli/src/commands/encode/spender/set-limits.ts @@ -1,68 +1,59 @@ -import { Spender__factory } from "@council/typechain"; +import { Spender } from "@delvtech/council-artifacts/Spender"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-limits [OPTIONS]", - aliases: ["setLimits"], - describe: "Encode call data for a Spender.setLimits", +export default command({ + description: "Encode call data for a Spender.setLimits", - builder: (yargs) => { - return yargs.options({ - s: { - alias: ["small"], - describe: "The new small spend limit", - type: "string", - }, - m: { - alias: ["medium"], - describe: "The new medium spend limit", - type: "string", - }, - h: { - alias: ["high"], - describe: "The new high spend limit", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount options will be multiplied by (10 ** decimals). For example, if small is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + s: { + alias: ["small"], + description: "The new small spend limit", + type: "string", + required: true, }, + m: { + alias: ["medium"], + description: "The new medium spend limit", + type: "string", + required: true, + }, + h: { + alias: ["high"], + description: "The new high spend limit", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount options will be multiplied by (10 ** decimals). For example, if small is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + }, - handler: async (args) => { - const small = await requiredString(args.small, { - name: "small", - message: "Enter small spend limit", - }); + handler: async ({ options, next }) => { + const small = await options.small({ + prompt: "Enter small spend limit", + }); - const medium = await requiredString(args.medium, { - name: "medium", - message: "Enter medium spend limit", - }); + const medium = await options.medium({ + prompt: "Enter medium spend limit", + }); - const high = await requiredString(args.high, { - name: "high", - message: "Enter high spend limit", - }); + const high = await options.high({ + prompt: "Enter high spend limit", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - signale.success(encodeSetLimits(small, medium, high, decimals)); - }, - }); + const encoded = encodeSetLimits(small, medium, high, decimals); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetLimits( small: string, @@ -71,13 +62,13 @@ export function encodeSetLimits( decimals: number, ): string { return encodeFunctionData({ - abi: Spender__factory.abi, + abi: Spender.abi, functionName: "setLimits", args: [ [ - parseBigInt(small, decimals), - parseBigInt(medium, decimals), - parseBigInt(high, decimals), + parseUnits(small, decimals), + parseUnits(medium, decimals), + parseUnits(high, decimals), ], ], }); diff --git a/packages/council-cli/src/commands/encode/spender/set-owner.ts b/packages/council-cli/src/commands/encode/spender/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/spender/set-owner.ts +++ b/packages/council-cli/src/commands/encode/spender/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/spender/small-spend.ts b/packages/council-cli/src/commands/encode/spender/small-spend.ts index 6f032fa5..b0bf0efc 100644 --- a/packages/council-cli/src/commands/encode/spender/small-spend.ts +++ b/packages/council-cli/src/commands/encode/spender/small-spend.ts @@ -1,58 +1,47 @@ -import { Spender__factory } from "@council/typechain"; +import { Spender } from "@delvtech/council-artifacts/Spender"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "small-spend [OPTIONS]", - aliases: ["smallSpend"], - describe: "Encode call data for a Spender.smallSpend", +export default command({ + description: "Encode call data for a Spender.smallSpend", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount to spend", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - d: { - alias: ["destination"], - describe: "The address to send the funds to", - type: "string", - }, - }); + options: { + amount: { + description: "The amount to spend", + type: "string", + required: true, }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + destination: { + description: "The address to send the funds to", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to spend", - }); + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to spend", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const destination = await requiredString(args.destination, { - name: "destination", - message: "Enter destination address", - }); + const destination = await options.destination({ + prompt: "Enter destination address", + }); - signale.success(encodeSmallSpend(amount, decimals, destination)); - }, - }); + const encoded = encodeSmallSpend(amount, decimals, destination); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeSmallSpend( amount: string, @@ -60,8 +49,8 @@ export function encodeSmallSpend( destination: string, ): string { return encodeFunctionData({ - abi: Spender__factory.abi, + abi: Spender.abi, functionName: "smallSpend", - args: [parseBigInt(amount, decimals), destination], + args: [parseUnits(amount, decimals), destination as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/timelock.ts b/packages/council-cli/src/commands/encode/timelock.ts deleted file mode 100644 index 7c516dfd..00000000 --- a/packages/council-cli/src/commands/encode/timelock.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./timelock"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "timelock [function]", - aliases: ["Timelock"], - describe: "Encode call data for a Timelock function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/timelock/authorize.ts b/packages/council-cli/src/commands/encode/timelock/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/timelock/authorize.ts +++ b/packages/council-cli/src/commands/encode/timelock/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/timelock/deauthorize.ts b/packages/council-cli/src/commands/encode/timelock/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/timelock/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/timelock/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/timelock/execute.ts b/packages/council-cli/src/commands/encode/timelock/execute.ts index 9798bc80..6940d8b4 100644 --- a/packages/council-cli/src/commands/encode/timelock/execute.ts +++ b/packages/council-cli/src/commands/encode/timelock/execute.ts @@ -1,49 +1,45 @@ -import { Timelock__factory } from "@council/typechain"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "execute [OPTIONS]", - describe: "Encode call data for Timelock.execute", +export default command({ + description: "Encode call data for Timelock.execute", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["targets"], - describe: "A list of target addresses the timelock contract will call", - type: "array", - string: true, - }, - d: { - alias: ["calldatas"], - describe: "Encoded call data for each target", - type: "array", - string: true, - }, - }); + options: { + targets: { + description: "A list of target addresses the timelock contract will call", + type: "array", + required: true, + }, + data: { + alias: ["calldatas"], + description: "Encoded call data for each target", + type: "array", + required: true, + }, }, - handler: async (args) => { - const targets = await requiredArray(args.targets, { - name: "targets", - message: "Enter target addresses", + handler: async ({ options, next }) => { + const targets = await options.targets({ + prompt: "Enter target addresses", }); - const calldatas = await requiredArray(args.calldatas, { - name: "calldatas", - message: "Enter call data for each target", + const calldatas = await options.calldatas({ + prompt: "Enter call data for each target", }); - signale.success(encodeExecute(targets, calldatas)); + const encoded = encodeExecute(targets, calldatas); + + signale.success(encoded); + next(encoded); }, }); export function encodeExecute(targets: string[], calldatas: string[]): string { return encodeFunctionData({ - abi: Timelock__factory.abi, + abi: Timelock.abi, functionName: "execute", - args: [targets, calldatas], + args: [targets as `0x${string}`[], calldatas as `0x${string}`[]], }); } diff --git a/packages/council-cli/src/commands/encode/timelock/increase-time.ts b/packages/council-cli/src/commands/encode/timelock/increase-time.ts index ee40a127..0e68e034 100644 --- a/packages/council-cli/src/commands/encode/timelock/increase-time.ts +++ b/packages/council-cli/src/commands/encode/timelock/increase-time.ts @@ -1,68 +1,49 @@ -import { Timelock__factory } from "@council/typechain"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredCallHash } from "src/options/utils/requiredCallHash"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { + callHashOptions, + getCallHash, +} from "src/reusable-options/call-hash.js"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "increase-time [OPTIONS]", - aliases: ["increaseTime"], - describe: "Encode call data for Timelock.increaseTime", +export default command({ + description: "Encode call data for Timelock.increaseTime", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["time"], - describe: "The amount of time (in seconds) to increase by", - type: "number", - }, - h: { - alias: ["call-hash", "callHash"], - describe: "The hash entry to increase time for", - type: "string", - }, - a: { - alias: ["targets"], - describe: - "A list of addresses to call. This will be used with the `-d | --calldatas` option to create a call hash if one isn't provided via the `-h | --call-hash` option.", - type: "array", - string: true, - }, - d: { - alias: ["calldatas"], - describe: - "Encoded call data for each target. This will be used with the `-t | --targets` option to create a call hash if one isn't provided via the `-h | --call-hash` option.", - type: "array", - string: true, - }, - }); + options: { + time: { + description: "The amount of time (in seconds) to increase by", + type: "number", + required: true, }, + ...callHashOptions, + }, - handler: async (args) => { - const timeValue = await requiredNumber(args.time, { - name: "time", - message: "Enter amount of time (in seconds) to increase by", - }); + handler: async ({ options, next }) => { + const timeValue = await options.time({ + prompt: "Enter amount of time (in seconds) to increase by", + }); - const callHash = await requiredCallHash( - args.callHash, - args.targets, - args.calldatas, - ); + const callHash = await getCallHash( + options.callHash, + options.targets, + options.calldatas, + ); - signale.success(encodeIncreaseTime(timeValue.toString(), callHash)); - }, - }); + const encoded = encodeIncreaseTime(timeValue.toString(), callHash); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeIncreaseTime( timeValue: string, callHash: string, ): string { return encodeFunctionData({ - abi: Timelock__factory.abi, + abi: Timelock.abi, functionName: "increaseTime", - args: [timeValue, callHash], + args: [BigInt(timeValue), callHash as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/timelock/register-call.ts b/packages/council-cli/src/commands/encode/timelock/register-call.ts index b571a7ac..adcc2b8e 100644 --- a/packages/council-cli/src/commands/encode/timelock/register-call.ts +++ b/packages/council-cli/src/commands/encode/timelock/register-call.ts @@ -1,54 +1,35 @@ -import { Timelock__factory } from "@council/typechain"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredCallHash } from "src/options/utils/requiredCallHash"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { + callHashOptions, + getCallHash, +} from "src/reusable-options/call-hash.js"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "register-call [OPTIONS]", - aliases: ["registerCall"], - describe: "Encode call data for Timelock.registerCall", +export default command({ + description: "Encode call data for Timelock.registerCall", - builder: (yargs) => { - return yargs.options({ - h: { - alias: ["call-hash", "callHash"], - describe: "The hash to map the timestamp to", - type: "string", - }, - t: { - alias: ["targets"], - describe: - "A list of addresses to call. This will be used with the `-d | --calldatas` option to create a call hash if one isn't provided via the `-h | --call-hash` option.", - type: "array", - string: true, - }, - d: { - alias: ["calldatas"], - describe: - "Encoded call data for each target. This will be used with the `-t | --targets` option to create a call hash if one isn't provided via the `-h | --call-hash` option.", - type: "array", - string: true, - }, - }); - }, + options: callHashOptions, - handler: async (args) => { - const callHash = await requiredCallHash( - args.callHash, - args.targets, - args.calldatas, - ); + handler: async ({ options, next }) => { + const callHash = await getCallHash( + options.callHash, + options.targets, + options.calldatas, + ); - signale.success(encodeRegisterCall(callHash)); - }, - }); + const encoded = encodeRegisterCall(callHash); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeRegisterCall(callHash: string): string { return encodeFunctionData({ - abi: Timelock__factory.abi, + abi: Timelock.abi, functionName: "registerCall", - args: [callHash], + args: [callHash as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/timelock/set-owner.ts b/packages/council-cli/src/commands/encode/timelock/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/timelock/set-owner.ts +++ b/packages/council-cli/src/commands/encode/timelock/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/timelock/set-wait-time.ts b/packages/council-cli/src/commands/encode/timelock/set-wait-time.ts index 2b0d3069..d443a491 100644 --- a/packages/council-cli/src/commands/encode/timelock/set-wait-time.ts +++ b/packages/council-cli/src/commands/encode/timelock/set-wait-time.ts @@ -1,39 +1,36 @@ -import { Timelock__factory } from "@council/typechain"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-wait-time [OPTIONS]", - aliases: ["setWaitTime"], - describe: "Encode call data for Timelock.setWaitTime", +export default command({ + description: "Encode call data for Timelock.setWaitTime", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["time", "wait-time", "waitTime"], - describe: "The new wait time (in seconds)", - type: "number", - }, - }); + options: { + time: { + alias: ["wait-time"], + description: "The new wait time (in seconds)", + type: "number", + required: true, }, + }, - handler: async (args) => { - const time = await requiredNumber(args.time, { - name: "time", - message: "Enter new wait time (in seconds)", - }); + handler: async ({ options, next }) => { + const time = await options.time({ + prompt: "Enter new wait time (in seconds)", + }); - signale.success(encodeSetWaitTime(time.toString())); - }, - }); + const encoded = encodeSetWaitTime(time.toString()); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetWaitTime(waitTime: string): string { return encodeFunctionData({ - abi: Timelock__factory.abi, + abi: Timelock.abi, functionName: "setWaitTime", - args: [waitTime], + args: [BigInt(waitTime)], }); } diff --git a/packages/council-cli/src/commands/encode/timelock/stop-call.ts b/packages/council-cli/src/commands/encode/timelock/stop-call.ts index ac5da413..41d34155 100644 --- a/packages/council-cli/src/commands/encode/timelock/stop-call.ts +++ b/packages/council-cli/src/commands/encode/timelock/stop-call.ts @@ -1,54 +1,35 @@ -import { Timelock__factory } from "@council/typechain"; +import { Timelock } from "@delvtech/council-artifacts/Timelock"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredCallHash } from "src/options/utils/requiredCallHash"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { + callHashOptions, + getCallHash, +} from "src/reusable-options/call-hash.js"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "stop-call [OPTIONS]", - aliases: ["stopCall"], - describe: "Encode call data for Timelock.stopCall", +export default command({ + description: "Encode call data for Timelock.stopCall", - builder: (yargs) => { - return yargs.options({ - h: { - alias: ["call-hash", "callHash"], - describe: "The hash entry to remove", - type: "string", - }, - t: { - alias: ["targets"], - describe: - "A list of addresses to call. This will be used with the `-d | --calldatas` option to create a call hash if one isn't provided via the `-h | --call-hash` option.", - type: "array", - string: true, - }, - d: { - alias: ["calldatas"], - describe: - "Encoded call data for each target. This will be used with the `-t | --targets` option to create a call hash if one isn't provided via the `-h | --call-hash` option.", - type: "array", - string: true, - }, - }); - }, + options: callHashOptions, - handler: async (args) => { - const callHash = await requiredCallHash( - args.callHash, - args.targets, - args.calldatas, - ); + handler: async ({ options, next }) => { + const callHash = await getCallHash( + options.callHash, + options.targets, + options.calldatas, + ); - signale.success(encodeStopCall(callHash)); - }, - }); + const encoded = encodeStopCall(callHash); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeStopCall(callHash: string): string { return encodeFunctionData({ - abi: Timelock__factory.abi, + abi: Timelock.abi, functionName: "stopCall", - args: [callHash], + args: [callHash as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/treasury.ts b/packages/council-cli/src/commands/encode/treasury.ts deleted file mode 100644 index f1c262a8..00000000 --- a/packages/council-cli/src/commands/encode/treasury.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./treasury"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "treasury [function]", - aliases: ["Treasury"], - describe: "Encode call data for a Treasury function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/treasury/approve.ts b/packages/council-cli/src/commands/encode/treasury/approve.ts index e16c3049..a9b7808c 100644 --- a/packages/council-cli/src/commands/encode/treasury/approve.ts +++ b/packages/council-cli/src/commands/encode/treasury/approve.ts @@ -1,67 +1,56 @@ -import { Treasury__factory } from "@council/typechain"; +import { Treasury } from "@delvtech/council-artifacts/Treasury"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "approve [OPTIONS]", - describe: "Encode call data for Treasury.approve", +export default command({ + description: "Encode call data for Treasury.approve", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["token"], - describe: `The address of the token to approve`, - type: "string", - }, - a: { - alias: ["amount"], - describe: "The amount to approve", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - s: { - alias: ["spender"], - describe: "The address to approve", - type: "string", - }, - }); + options: { + token: { + description: `The address of the token to approve`, + type: "string", + required: true, }, + amount: { + description: "The amount to approve", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + spender: { + description: "The address to approve", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const token = await requiredString(args.token, { - name: "token", - message: "Enter token address", - }); + handler: async ({ options, next }) => { + const token = await options.token({ + prompt: "Enter token address", + }); - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to approve", - }); + const amount = await options.amount({ + prompt: "Enter amount to approve", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const spender = await requiredString(args.spender, { - name: "spender", - message: "Enter spender address", - }); + const spender = await options.spender({ + prompt: "Enter spender address", + }); - signale.success(encodeApprove(token, amount, decimals, spender)); - }, - }); + const encoded = encodeApprove(token, amount, decimals, spender); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeApprove( token: string, @@ -70,8 +59,12 @@ export function encodeApprove( spender: string, ): string { return encodeFunctionData({ - abi: Treasury__factory.abi, + abi: Treasury.abi, functionName: "approve", - args: [token, parseBigInt(amount, decimals), spender], + args: [ + token as `0x${string}`, + spender as `0x${string}`, + parseUnits(amount, decimals), + ], }); } diff --git a/packages/council-cli/src/commands/encode/treasury/authorize.ts b/packages/council-cli/src/commands/encode/treasury/authorize.ts index 820bf003..431843e7 100644 --- a/packages/council-cli/src/commands/encode/treasury/authorize.ts +++ b/packages/council-cli/src/commands/encode/treasury/authorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/authorize"; +import authorize from "../authorizable/authorize.js"; +export default authorize; diff --git a/packages/council-cli/src/commands/encode/treasury/deauthorize.ts b/packages/council-cli/src/commands/encode/treasury/deauthorize.ts index 6b7d485a..6a10c41e 100644 --- a/packages/council-cli/src/commands/encode/treasury/deauthorize.ts +++ b/packages/council-cli/src/commands/encode/treasury/deauthorize.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/deauthorize"; +import deauthorize from "../authorizable/deauthorize.js"; +export default deauthorize; diff --git a/packages/council-cli/src/commands/encode/treasury/generic-call.ts b/packages/council-cli/src/commands/encode/treasury/generic-call.ts index e912dbe6..a2f1030f 100644 --- a/packages/council-cli/src/commands/encode/treasury/generic-call.ts +++ b/packages/council-cli/src/commands/encode/treasury/generic-call.ts @@ -1,48 +1,45 @@ -import { Treasury__factory } from "@council/typechain"; +import { Treasury } from "@delvtech/council-artifacts/Treasury"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const genericCall = createCommandModule({ - command: "generic-call [OPTIONS]", - aliases: ["genericCall"], - describe: "Encode call data for Treasury.genericCall", +export default command({ + description: "Encode call data for Treasury.genericCall", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["target"], - describe: `The address of the target contract`, - type: "string", - }, - d: { - alias: ["data", "calldata", "call-data", "callData"], - describe: "The encoded call data", - type: "string", - }, - }); + options: { + target: { + description: `The address of the target contract`, + type: "string", + required: true, + }, + data: { + alias: ["calldata", "call-data"], + description: "The encoded call data", + type: "string", + required: true, + }, }, - handler: async (args) => { - const target = await requiredString(args.target, { - name: "target", - message: "Enter target address", + handler: async ({ options, next }) => { + const target = await options.target({ + prompt: "Enter target address", }); - const data = await requiredString(args.data, { - name: "data", - message: "Enter call data", + const data = await options.data({ + prompt: "Enter call data", }); - signale.success(encodeGenericCall(target, data)); + const encoded = encodeGenericCall(target, data); + + signale.success(encoded); + next(encoded); }, }); export function encodeGenericCall(target: string, data: string): string { return encodeFunctionData({ - abi: Treasury__factory.abi, + abi: Treasury.abi, functionName: "genericCall", - args: [target, data], + args: [target as `0x${string}`, data as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/treasury/send-funds.ts b/packages/council-cli/src/commands/encode/treasury/send-funds.ts index 5404aba8..68d2cb2a 100644 --- a/packages/council-cli/src/commands/encode/treasury/send-funds.ts +++ b/packages/council-cli/src/commands/encode/treasury/send-funds.ts @@ -1,71 +1,61 @@ -import { Treasury__factory } from "@council/typechain"; +import { Treasury } from "@delvtech/council-artifacts/Treasury"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; const ETH_CONSTANT = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "send-funds [OPTIONS]", - aliases: ["sendFunds"], - describe: "Encode call data for Treasury.sendFunds", +export default command({ + description: "Encode call data for Treasury.sendFunds", - builder: (yargs) => { - return yargs.options({ - t: { - alias: ["token"], - describe: `The address of token to send (${ETH_CONSTANT} to send ETH)`, - type: "string", - }, - a: { - alias: ["amount"], - describe: "The amount to send", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - r: { - alias: ["recipient"], - describe: "The address to send the funds to", - type: "string", - }, - }); + options: { + token: { + description: `The address of token to send (${ETH_CONSTANT} to send ETH)`, + type: "string", + required: true, }, + amount: { + description: "The amount to send", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + recipient: { + description: "The address to send the funds to", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const token = await requiredString(args.token, { - name: "token", + handler: async ({ options, next }) => { + const token = await options.token({ + prompt: { message: "Enter token address", initial: ETH_CONSTANT, - }); + }, + }); - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to send", - }); + const amount = await options.amount({ + prompt: "Enter amount to send", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", - }); + const recipient = await options.recipient({ + prompt: "Enter recipient address", + }); - signale.success(encodeSendFunds(token, amount, decimals, recipient)); - }, - }); + const encoded = encodeSendFunds(token, amount, decimals, recipient); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeSendFunds( token: string, @@ -74,8 +64,12 @@ export function encodeSendFunds( recipient: string, ): string { return encodeFunctionData({ - abi: Treasury__factory.abi, + abi: Treasury.abi, functionName: "sendFunds", - args: [token, parseBigInt(amount, decimals), recipient], + args: [ + token as `0x${string}`, + parseUnits(amount, decimals), + recipient as `0x${string}`, + ], }); } diff --git a/packages/council-cli/src/commands/encode/treasury/set-owner.ts b/packages/council-cli/src/commands/encode/treasury/set-owner.ts index 91845c80..d850a301 100644 --- a/packages/council-cli/src/commands/encode/treasury/set-owner.ts +++ b/packages/council-cli/src/commands/encode/treasury/set-owner.ts @@ -1 +1,2 @@ -export * from "src/commands/encode/libraries/authorizable/set-owner"; +import setOwner from "../authorizable/set-owner.js"; +export default setOwner; diff --git a/packages/council-cli/src/commands/encode/vesting-vault.ts b/packages/council-cli/src/commands/encode/vesting-vault.ts deleted file mode 100644 index fa3647fb..00000000 --- a/packages/council-cli/src/commands/encode/vesting-vault.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; - -const commandDir = "./vesting-vault"; - -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "vesting-vault [function]", - aliases: ["VestingVault"], - describe: "Encode call data for a VestingVault function", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: "Choose a function", - }), - }); diff --git a/packages/council-cli/src/commands/encode/vesting-vault/accept-grant.ts b/packages/council-cli/src/commands/encode/vesting-vault/accept-grant.ts index 4f1cd7b5..ed8ed110 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/accept-grant.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/accept-grant.ts @@ -1,22 +1,21 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "accept-grant [OPTIONS]", - aliases: ["acceptGrant"], - describe: "Encode call data for VestingVault.acceptGrant", +export default command({ + description: "Encode call data for VestingVault.acceptGrant", - handler: () => { - signale.success(encodeAcceptGrant()); - }, - }); + handler: ({ next }) => { + const encoded = encodeAcceptGrant(); + signale.success(encoded); + next(encoded); + }, +}); export function encodeAcceptGrant(): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "acceptGrant", }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/add-grant-and-delegate.ts b/packages/council-cli/src/commands/encode/vesting-vault/add-grant-and-delegate.ts index 2645882c..788ca3c3 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/add-grant-and-delegate.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/add-grant-and-delegate.ts @@ -1,108 +1,94 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "add-grant-and-delegate [OPTIONS]", - aliases: ["addGrantAndDelegate"], - describe: "Encode call data for VestingVault.addGrantAndDelegate", +export default command({ + description: "Encode call data for VestingVault.addGrantAndDelegate", - builder: (yargs) => { - return yargs.options({ - w: { - alias: ["who", "address"], - describe: "The grant recipient", - type: "string", - }, - a: { - alias: ["amount"], - describe: "The total grant value", - type: "string", - }, - p: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - s: { - alias: ["start-time", "startTime"], - describe: - "An optional non standard start time (in seconds). If set to zero then the start time will be made the block this is executed in", - type: "number", - default: 0, - }, - e: { - alias: ["expiration"], - describe: - "The timestamp (in seconds) when the grant ends and all tokens are unlocked", - type: "number", - }, - c: { - alias: ["cliff"], - describe: - "The timestamp (in seconds) when the grant begins vesting. No tokens will be unlocked until this timestamp has been reached", - type: "number", - }, - d: { - alias: ["delegate"], - describe: - "The address to delegate the resulting voting power to if the recipient doesn't already have a delegate", - type: "string", - }, - }); + options: { + who: { + alias: ["address"], + description: "The grant recipient", + type: "string", + required: true, }, + amount: { + description: "The total grant value", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + "start-time": { + description: + "An optional non standard start time (in seconds). If set to zero then the start time will be made the block this is executed in", + type: "number", + default: 0, + }, + expiration: { + description: + "The timestamp (in seconds) when the grant ends and all tokens are unlocked", + type: "number", + required: true, + }, + cliff: { + description: + "The timestamp (in seconds) when the grant begins vesting. No tokens will be unlocked until this timestamp has been reached", + type: "number", + required: true, + }, + delegate: { + description: + "The address to delegate the resulting voting power to if the recipient doesn't already have a delegate", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const who = await requiredString(args.who, { - name: "who", - message: "Enter recipient address", - }); + handler: async ({ options, next }) => { + const who = await options.who({ + prompt: "Enter recipient address", + }); - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter total grant amount", - }); + const amount = await options.amount({ + prompt: "Enter total grant amount", + }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const expiration = await requiredNumber(args.expiration, { - name: "expiration", - message: "Enter expiration timestamp (in seconds)", - }); + const startTime = await options.startTime(); - const cliff = await requiredNumber(args.cliff, { - name: "cliff", - message: "Enter cliff timestamp (in seconds)", - }); + const expiration = await options.expiration({ + prompt: "Enter expiration timestamp (in seconds)", + }); - const delegate = await requiredString(args.delegate, { - name: "delegate", - message: "Enter delegate address", - }); + const cliff = await options.cliff({ + prompt: "Enter cliff timestamp (in seconds)", + }); - signale.success( - encodeAddGrantAndDelegate({ - who, - amount, - decimals, - startTime: args.startTime, - expiration, - cliff, - delegate, - }), - ); - }, - }); + const delegate = await options.delegate({ + prompt: "Enter delegate address", + }); + + const encoded = encodeAddGrantAndDelegate({ + who, + amount, + decimals, + startTime, + expiration, + cliff, + delegate, + }); + + signale.success(encoded); + next(encoded); + }, +}); interface EncodeAddGrantAndDelegateOptions { who: string; @@ -124,15 +110,15 @@ export function encodeAddGrantAndDelegate({ delegate, }: EncodeAddGrantAndDelegateOptions): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "addGrantAndDelegate", args: [ - who, - parseBigInt(amount, decimals), - startTime, - expiration, - cliff, - delegate, + who as `0x${string}`, + parseUnits(amount, decimals), + BigInt(startTime), + BigInt(expiration), + BigInt(cliff), + delegate as `0x${string}`, ], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/change-delegation.ts b/packages/council-cli/src/commands/encode/vesting-vault/change-delegation.ts index 366c404c..1361e6ca 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/change-delegation.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/change-delegation.ts @@ -1,39 +1,36 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "change-delegation [OPTIONS]", - aliases: ["changeDelegation"], - describe: "Encode call data for VestingVault.changeDelegation", +export default command({ + description: "Encode call data for VestingVault.changeDelegation", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "new-delegate", "newDelegate"], - describe: "The amount of tokens to deposit", - type: "string", - }, - }); + options: { + address: { + alias: ["new-delegate", "newDelegate"], + description: "The amount of tokens to deposit", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter new delegate address", - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter new delegate address", + }); - signale.success(encodeChangeDelegation(address)); - }, - }); + const encoded = encodeChangeDelegation(address); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeChangeDelegation(address: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, - functionName: "changeDelegation", - args: [address], + abi: VestingVault.abi, + functionName: "delegate", + args: [address as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/change-unvested-multiplier.ts b/packages/council-cli/src/commands/encode/vesting-vault/change-unvested-multiplier.ts index 1252ba06..ef04bbaa 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/change-unvested-multiplier.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/change-unvested-multiplier.ts @@ -1,39 +1,35 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "change-unvested-multiplier [OPTIONS]", - aliases: ["changeUnvestedMultiplier"], - describe: "Encode call data for VestingVault.changeUnvestedMultiplier", +export default command({ + description: "Encode call data for VestingVault.changeUnvestedMultiplier", - builder: (yargs) => { - return yargs.options({ - m: { - alias: ["multiplier"], - describe: "The new multiplier as a percentage", - type: "number", - }, - }); + options: { + multiplier: { + description: "The new multiplier as a percentage", + type: "number", + required: true, }, + }, - handler: async (args) => { - const multiplier = await requiredNumber(args.multiplier, { - name: "multiplier", - message: "Enter new multiplier (%)", - }); + handler: async ({ options, next }) => { + const multiplier = await options.multiplier({ + prompt: "Enter new multiplier (%)", + }); - signale.success(encodeChangeUnvestedMultiplier(multiplier)); - }, - }); + const encoded = encodeChangeUnvestedMultiplier(multiplier); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeChangeUnvestedMultiplier(multiplier: number): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "changeUnvestedMultiplier", - args: [multiplier], + args: [BigInt(multiplier)], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/delegate.ts b/packages/council-cli/src/commands/encode/vesting-vault/delegate.ts index c248913a..948d40e0 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/delegate.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/delegate.ts @@ -1,38 +1,36 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "delegate [OPTIONS]", - describe: "Encode call data for VestingVault.delegate", +export default command({ + description: "Encode call data for VestingVault.delegate", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "to"], - describe: "The address to delegate to", - type: "string", - }, - }); + options: { + address: { + alias: ["to"], + description: "The address to delegate to", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "to", - message: "Enter new delegate address", - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter new delegate address", + }); - signale.success(encodeDelegate(address)); - }, - }); + const encoded = encodeDelegate(address); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeDelegate(address: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "delegate", - args: [address], + args: [address as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/deposit.ts b/packages/council-cli/src/commands/encode/vesting-vault/deposit.ts index aa942e36..aaf848e3 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/deposit.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/deposit.ts @@ -1,51 +1,43 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "deposit [OPTIONS]", - describe: "Encode call data for VestingVault.deposit", +export default command({ + description: "Encode call data for VestingVault.deposit", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of tokens to deposit", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - }); + options: { + amount: { + description: "The amount of tokens to deposit", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to deposit", + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: "Enter amount to deposit", }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); + + const encoded = encodeDeposit(amount, decimals); - signale.success(encodeDeposit(amount, decimals)); + signale.success(encoded); + next(encoded); }, }); export function encodeDeposit(amount: string, decimals: number): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "deposit", - args: [parseBigInt(amount, decimals)], + args: [parseUnits(amount, decimals)], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/initialize.ts b/packages/council-cli/src/commands/encode/vesting-vault/initialize.ts index e77b4b53..2adbd0db 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/initialize.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/initialize.ts @@ -1,49 +1,45 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "initialize [OPTIONS]", - describe: "Encode call data for VestingVault.initialize", +export default command({ + description: "Encode call data for VestingVault.initialize", - builder: (yargs) => { - return yargs.options({ - m: { - alias: ["manager"], - describe: "The address that will be able add and remove grants", - type: "string", - }, - t: { - alias: ["timelock"], - describe: - "The address that will be able to change the unvested multiplier, the manager, and the timelock", - type: "string", - }, - }); + options: { + manager: { + description: "The address that will be able add and remove grants", + type: "string", + required: true, }, + timelock: { + description: + "The address that will be able to change the unvested multiplier, the manager, and the timelock", + type: "string", + required: true, + }, + }, - handler: async (args) => { - const manager = await requiredString(args.manager, { - name: "manager", - message: "Enter manager address", - }); + handler: async ({ options, next }) => { + const manager = await options.manager({ + prompt: "Enter manager address", + }); - const timelock = await requiredString(args.timelock, { - name: "timelock", - message: "Enter timelock address", - }); + const timelock = await options.timelock({ + prompt: "Enter timelock address", + }); - signale.success(encodeInitialize(manager, timelock)); - }, - }); + const encoded = encodeInitialize(manager, timelock); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeInitialize(manager: string, timelock: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "initialize", - args: [manager, timelock], + args: [manager as `0x${string}`, timelock as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/remove-grant.ts b/packages/council-cli/src/commands/encode/vesting-vault/remove-grant.ts index d65f8610..4466d6ae 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/remove-grant.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/remove-grant.ts @@ -1,39 +1,36 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "remove-grant [OPTIONS]", - aliases: ["removeGrant"], - describe: "Encode call data for VestingVault.removeGrant", +export default command({ + description: "Encode call data for VestingVault.removeGrant", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "who"], - describe: "The grant owner", - type: "string", - }, - }); + options: { + address: { + alias: ["who"], + description: "The grant owner", + type: "string", + required: true, }, + }, - handler: async (args) => { - const who = await requiredString(args.who, { - name: "who", - message: "Enter owner address", - }); + handler: async ({ options, next }) => { + const who = await options.who({ + prompt: "Enter owner address", + }); - signale.success(encodeRemoveGrant(who)); - }, - }); + const encoded = encodeRemoveGrant(who); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeRemoveGrant(who: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "removeGrant", - args: [who], + args: [who as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/set-manager.ts b/packages/council-cli/src/commands/encode/vesting-vault/set-manager.ts index ed48eaf4..d133205c 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/set-manager.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/set-manager.ts @@ -1,39 +1,36 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-manager [OPTIONS]", - aliases: ["setTimelock"], - describe: "Encode call data for VestingVault.setManager", +export default command({ + description: "Encode call data for VestingVault.setManager", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "manager"], - describe: "The new manager address", - type: "string", - }, - }); + options: { + address: { + alias: ["manager"], + description: "The new manager address", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter new manager address", - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter new manager address", + }); - signale.success(encodeSetManager(address)); - }, - }); + const encoded = encodeSetManager(address); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetManager(address: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "setManager", - args: [address], + args: [address as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/set-timelock.ts b/packages/council-cli/src/commands/encode/vesting-vault/set-timelock.ts index fb27200c..d3979395 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/set-timelock.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/set-timelock.ts @@ -1,39 +1,36 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "set-timelock [OPTIONS]", - aliases: ["setTimelock"], - describe: "Encode call data for VestingVault.setTimelock", +export default command({ + description: "Encode call data for VestingVault.setTimelock", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "timelock"], - describe: "The new timelock address", - type: "string", - }, - }); + options: { + address: { + alias: ["timelock"], + description: "The new timelock address", + type: "string", + required: true, }, + }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter new timelock address", - }); + handler: async ({ options, next }) => { + const address = await options.address({ + prompt: "Enter new timelock address", + }); - signale.success(encodeSetTimelock(address)); - }, - }); + const encoded = encodeSetTimelock(address); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeSetTimelock(address: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "setTimelock", - args: [address], + args: [address as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/update-voting-power.ts b/packages/council-cli/src/commands/encode/vesting-vault/update-voting-power.ts index 642a92cf..00d343e3 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/update-voting-power.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/update-voting-power.ts @@ -1,39 +1,36 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredString } from "src/options/utils/requiredString"; -import { createCommandModule } from "src/utils/createCommandModule"; import { encodeFunctionData } from "viem"; -export const { command, aliases, describe, builder, handler } = - createCommandModule({ - command: "update-voting-power [OPTIONS]", - aliases: ["updateVotingPower"], - describe: "Encode call data for VestingVault.updateVotingPower", +export default command({ + description: "Encode call data for VestingVault.updateVotingPower", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address", "who"], - describe: "The address to update voting power for", - type: "string", - }, - }); + options: { + address: { + alias: ["who"], + description: "The address to update voting power for", + type: "string", + required: true, }, + }, - handler: async (args) => { - const who = await requiredString(args.who, { - name: "who", - message: "Enter voter's address", - }); + handler: async ({ options, next }) => { + const who = await options.who({ + prompt: "Enter voter's address", + }); - signale.success(encodeUpdateVotingPower(who)); - }, - }); + const encoded = encodeUpdateVotingPower(who); + + signale.success(encoded); + next(encoded); + }, +}); export function encodeUpdateVotingPower(who: string): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "updateVotingPower", - args: [who], + args: [who as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/encode/vesting-vault/withdraw.ts b/packages/council-cli/src/commands/encode/vesting-vault/withdraw.ts index e8ae4a3d..776ec891 100644 --- a/packages/council-cli/src/commands/encode/vesting-vault/withdraw.ts +++ b/packages/council-cli/src/commands/encode/vesting-vault/withdraw.ts @@ -1,54 +1,48 @@ -import { VestingVault__factory } from "@council/typechain"; +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { encodeFunctionData } from "viem"; +import { encodeFunctionData, parseUnits } from "viem"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "withdraw [OPTIONS]", - describe: "Encode call data for VestingVault.withdraw", +export default command({ + description: "Encode call data for VestingVault.withdraw", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["amount"], - describe: "The amount of tokens to withdraw", - type: "string", - }, - d: { - alias: ["decimals"], - describe: - "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", - type: "number", - }, - r: { - alias: ["recipient"], - describe: "The address to withdraw to", - type: "string", - }, - }); + options: { + amount: { + description: "The amount of tokens to withdraw", + type: "string", + required: true, + }, + decimals: { + description: + "The decimal precision used by the contract. The amount option will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000", + type: "number", + default: 18, + }, + recipient: { + description: "The address to withdraw to", + type: "string", + required: true, + }, }, - handler: async (args) => { - const amount = await requiredString(args.amount, { - name: "amount", - message: "Enter amount to withdraw", + handler: async ({ options, next }) => { + const amount = await options.amount({ + prompt: { + message: "Enter amount to withdraw", + initial: "0.0", + }, }); - const decimals = await requiredNumber(args.decimals, { - name: "decimals", - message: "Enter decimal precision", - initial: 18, - }); + const decimals = await options.decimals(); - const recipient = await requiredString(args.recipient, { - name: "recipient", - message: "Enter recipient address", + const recipient = await options.recipient({ + prompt: "Enter recipient address", }); - signale.success(encodeDeposit(amount, decimals, recipient)); + const encoded = encodeDeposit(amount, decimals, recipient); + + signale.success(encoded); + next(encoded); }, }); @@ -58,8 +52,8 @@ export function encodeDeposit( recipient: string, ): string { return encodeFunctionData({ - abi: VestingVault__factory.abi, + abi: VestingVault.abi, functionName: "withdraw", - args: [parseBigInt(amount, decimals), recipient], + args: [parseUnits(amount, decimals), recipient as `0x${string}`], }); } diff --git a/packages/council-cli/src/commands/locking-vault.ts b/packages/council-cli/src/commands/locking-vault.ts new file mode 100644 index 00000000..3ef24594 --- /dev/null +++ b/packages/council-cli/src/commands/locking-vault.ts @@ -0,0 +1,6 @@ +import { command, passThroughCommand } from "clide-js"; + +export default command({ + ...passThroughCommand, + description: "Interact with a LockingVault contract", +}); diff --git a/packages/council-cli/src/commands/locking-vault/approve.ts b/packages/council-cli/src/commands/locking-vault/approve.ts new file mode 100644 index 00000000..64501bd3 --- /dev/null +++ b/packages/council-cli/src/commands/locking-vault/approve.ts @@ -0,0 +1,70 @@ +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { + createPublicClient, + createWalletClient, + http, + maxUint256, + parseUnits, +} from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; + +export default command({ + description: + "Give a spending allowance to a LockingVault contract for the tokens it accepts.", + + options: { + address: { + describe: "The LockingVault contract address", + type: "string", + required: true, + }, + amount: { + describe: "The amount of tokens to approve", + type: "string", + }, + ...writeOptions, + }, + + handler: async ({ options, context, next }) => { + const { + account: signerAccount, + chain, + rpcUrl, + } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter Locking Vault address", + }); + + const amount = await options.amount(); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ chain, transport }); + const walletClient = createWalletClient({ + transport, + chain, + account: signerAccount, + }); + + const lockingVault = new ReadWriteCouncil({ + publicClient, + walletClient, + }).lockingVault(address as `0x${string}`); + + const token = await lockingVault.getToken(); + const decimals = await token.getDecimals(); + + const hash = await token.approve({ + amount: amount !== undefined ? parseUnits(amount, decimals) : maxUint256, + spender: lockingVault.address, + }); + + signale.success(hash); + next(hash); + }, +}); diff --git a/packages/council-cli/src/commands/locking-vault/deposit.ts b/packages/council-cli/src/commands/locking-vault/deposit.ts new file mode 100644 index 00000000..e648636c --- /dev/null +++ b/packages/council-cli/src/commands/locking-vault/deposit.ts @@ -0,0 +1,75 @@ +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, createWalletClient, http, parseUnits } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; + +export default command({ + description: "Deposit tokens into a LockingVault.", + + options: { + address: { + describe: "The LockingVault contract address", + type: "string", + required: true, + }, + amount: { + describe: "The amount of tokens to deposit", + type: "string", + required: true, + }, + account: { + describe: "The account to credit the deposit to", + type: "string", + }, + ...writeOptions, + }, + + handler: async ({ options, context, next }) => { + const { + account: signerAccount, + chain, + rpcUrl, + } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter Locking Vault address", + }); + + const amount = await options.amount({ + prompt: { + message: "Enter deposit amount", + initial: "0.0", + }, + }); + + const account = await options.account(); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ chain, transport }); + const walletClient = createWalletClient({ + transport, + chain, + account: signerAccount, + }); + + const lockingVault = new ReadWriteCouncil({ + publicClient, + walletClient, + }).lockingVault(address as `0x${string}`); + + const token = await lockingVault.getToken(); + const decimals = await token.getDecimals(); + + const hash = await lockingVault.deposit({ + amount: parseUnits(amount, decimals), + account: account as `0x${string}` | undefined, + }); + + signale.success(hash); + next(hash); + }, +}); diff --git a/packages/council-cli/src/commands/locking-vault/get-balance.ts b/packages/council-cli/src/commands/locking-vault/get-balance.ts new file mode 100644 index 00000000..640845e4 --- /dev/null +++ b/packages/council-cli/src/commands/locking-vault/get-balance.ts @@ -0,0 +1,55 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, http } from "viem"; +import { chainOption, getChain } from "../../reusable-options/chain.js"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the balance of a given account.", + + options: { + address: { + description: "The LockingVault contract address", + type: "string", + required: true, + }, + account: { + alias: ["voter"], + description: "The account to get the balance of", + type: "string", + required: true, + }, + chain: chainOption, + rpc: rpcUrlOption, + }, + + handler: async ({ options, context, next }) => { + const chain = await getChain(options.chain, context); + + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const address = await options.address({ + prompt: "Enter LockingVault contract address", + }); + + const account = await options.account({ + prompt: "Enter account to get balance of", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + + const council = new ReadCouncil({ publicClient }); + const lockingVault = council.lockingVault(address as `0x${string}`); + + const balance = await lockingVault.getDepositedBalance({ + account: account as `0x${string}`, + }); + + signale.info(balance); + next(balance); + }, +}); diff --git a/packages/council-cli/src/commands/locking-vault/get-delegate.ts b/packages/council-cli/src/commands/locking-vault/get-delegate.ts new file mode 100644 index 00000000..ae68302a --- /dev/null +++ b/packages/council-cli/src/commands/locking-vault/get-delegate.ts @@ -0,0 +1,55 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, http } from "viem"; +import { chainOption, getChain } from "../../reusable-options/chain.js"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the delegate of a given account.", + + options: { + address: { + description: "The LockingVault contract address", + type: "string", + required: true, + }, + account: { + alias: ["voter"], + description: "The account to get the delegate of", + type: "string", + required: true, + }, + chain: chainOption, + rpc: rpcUrlOption, + }, + + handler: async ({ options, context, next }) => { + const chain = await getChain(options.chain, context); + + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const address = await options.address({ + prompt: "Enter LockingVault contract address", + }); + + const account = await options.account({ + prompt: "Enter account to get delegate of", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + + const council = new ReadCouncil({ publicClient }); + const lockingVault = council.lockingVault(address as `0x${string}`); + + const delegate = await lockingVault.getDelegate({ + account: account as `0x${string}`, + }); + + signale.info(delegate.address); + next(delegate); + }, +}); diff --git a/packages/council-cli/src/commands/locking-vault/get-token.ts b/packages/council-cli/src/commands/locking-vault/get-token.ts new file mode 100644 index 00000000..8798c468 --- /dev/null +++ b/packages/council-cli/src/commands/locking-vault/get-token.ts @@ -0,0 +1,43 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, http } from "viem"; +import { chainOption, getChain } from "../../reusable-options/chain.js"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the token contract address of a given locking vault.", + + options: { + address: { + description: "The LockingVault contract address", + type: "string", + required: true, + }, + chain: chainOption, + rpc: rpcUrlOption, + }, + + handler: async ({ options, context, next }) => { + const chain = await getChain(options.chain, context); + + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const address = await options.address({ + prompt: "Enter LockingVault contract address", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + + const council = new ReadCouncil({ publicClient }); + const lockingVault = council.lockingVault(address as `0x${string}`); + + const token = await lockingVault.getToken(); + + signale.info(token.address); + next(token); + }, +}); diff --git a/packages/council-cli/src/commands/merkle-rewards.ts b/packages/council-cli/src/commands/merkle-rewards.ts new file mode 100644 index 00000000..9644c923 --- /dev/null +++ b/packages/council-cli/src/commands/merkle-rewards.ts @@ -0,0 +1,7 @@ +import { command, passThroughCommand } from "clide-js"; + +export default command({ + ...passThroughCommand, + description: + "Do something for merkle rewards, like create a tree with proofs.", +}); diff --git a/packages/council-cli/src/commands/merkle-rewards/create-tree.ts b/packages/council-cli/src/commands/merkle-rewards/create-tree.ts new file mode 100644 index 00000000..1618e800 --- /dev/null +++ b/packages/council-cli/src/commands/merkle-rewards/create-tree.ts @@ -0,0 +1,296 @@ +import { OptionGetter, command } from "clide-js"; +import colors from "colors"; +import MerkleTree from "merkletreejs"; +import path from "path"; +import signale from "signale"; +import { + Address, + Hex, + encodePacked, + formatUnits, + isAddress, + keccak256, + parseUnits, +} from "viem"; +import { JsonStore } from "../../utils/config/JsonStore.js"; +import { Schema, validateData } from "../../utils/config/validateData.js"; +import { isNotEmptyList } from "../../utils/validation/isNotEmptyList.js"; +import { isNumberString } from "../../utils/validation/isNumberString.js"; + +export default command({ + description: + "Create a merkle tree for rewards (e.g., airdrop) from a list of addresses and reward amounts. The output is a JSON file with the merkle root and each leaf by address with it's proof.", + + options: { + "accounts-path": { + description: + 'The path to the json file with the addresses and amounts listed as an array of objects with address and amount properties. The amount property is a decimal string that will be scaled based on the decimals option. For example, [{"address": "0x1234...", "amount": "100.5"}, ...].', + type: "string", + }, + addresses: { + description: + "A list of recipient addresses to include in the merkle tree.", + type: "array", + }, + amounts: { + description: + "A list of amounts to reward each address. Must be same length as addresses.", + type: "array", + }, + decimals: { + alias: ["token-decimals"], + description: + "The decimal precision used by the token contract. The amounts will be multiplied by (10 ** decimals). For example, if amount is 100 and decimals is 18, then the result will be 100000000000000000000.", + type: "number", + default: 18, + }, + out: { + alias: ["out-dir"], + description: + "The directory to write the merkle tree info to; relative to the current working directory.", + type: "string", + }, + }, + + handler: async ({ options, next }) => { + const accounts = await getAccounts({ + accountsPathGetter: options.accountsPath, + addressesGetter: options.addresses, + amountsGetter: options.amounts, + }); + + const decimals = await options.decimals(); + + const merkleTree = getMerkleTree(accounts, decimals); + + // Sum all the amounts + const amountTotal = accounts.reduce( + (sum, { amount }) => sum + parseUnits(amount, decimals), + 0n, + ); + + // Get the total unique addresses + const allAddresses = accounts.map(({ address }) => address); + const uniqueAddresses = new Set(allAddresses); + + // Create object entries for each account with the address as the key which + // is lowercased since object keys are case sensitive. + const accountsEntries = accounts.map(({ address, amount }) => { + const proof = merkleTree.getHexProof( + hashAccount({ address, amount }, decimals), + ); + + return [address.toLowerCase(), { amount, proof }]; + }); + + const merkleTreeInfo = { + root: merkleTree.getHexRoot(), + rewardsTotal: formatUnits(amountTotal, decimals), + uniqueAccountsTotal: uniqueAddresses.size, + accounts: Object.fromEntries(accountsEntries), + }; + + const outDir = await options.outDir({ + prompt: `Enter the path to write the merkle tree info to ${colors.dim( + "(optional)", + )}`, + }); + + if (outDir) { + const store = new JsonStore({ + path: path.dirname(outDir), + name: path.basename(outDir), + }); + + store.set(merkleTreeInfo); + } + + console.log("\n"); + signale.success("Merkle tree created successfully!"); + console.log("\n"); + + console.log(colors.dim(`${"=".repeat(80)}`)); + console.log(`Merkle root: ${merkleTreeInfo.root}`); + console.log(colors.dim(`${"-".repeat(80)}`)); + console.log(`Rewards total: ${merkleTreeInfo.rewardsTotal}`); + console.log(colors.dim(`${"-".repeat(80)}`)); + console.log(`Unique accounts total: ${merkleTreeInfo.uniqueAccountsTotal}`); + console.log(colors.dim(`${"=".repeat(80)}`)); + + next(merkleTreeInfo); + }, +}); + +/** + * A requiredOption wrapper for prompting the user for the accounts to create + * the merkle tree from. + */ +async function getAccounts({ + accountsPathGetter, + addressesGetter, + amountsGetter, +}: { + accountsPathGetter: OptionGetter; + addressesGetter: OptionGetter; + amountsGetter: OptionGetter; +}): Promise { + let accounts: Account[] = []; + + let addresses = await addressesGetter(); + let amounts = await amountsGetter(); + + // Try to import the accounts from the accounts path if it was passed or + // prompt the user for the accounts path if no options were passed. + if (!addresses && !amounts) { + const possibleAccountsPath = await accountsPathGetter({ + prompt: `Enter the path to the accounts JSON file ${colors.dim( + "(Leave blank to enter addresses and amounts manually)", + )}`, + }); + + // Import and validate the accounts from the accounts path + if (possibleAccountsPath) { + const fullAccountsPath = path.resolve( + process.cwd(), + possibleAccountsPath, + ); + + const { default: importedAccounts } = await import( + fullAccountsPath + ).catch((err) => { + signale.error(err); + throw new Error( + `The accounts file at ${fullAccountsPath} could not be found.`, + ); + }); + + // Validate the imported accounts + validateData(importedAccounts, accountsScema); + + // Add the imported accounts to the accounts array + accounts = [...accounts, ...importedAccounts]; + } + } + + // Add accounts from the addresses and amounts options if they were passed or + // prompt the user for them if accounts is still empty. + if ( + isNotEmptyList(addresses) || + isNotEmptyList(amounts) || + !accounts.length + ) { + addresses = await addressesGetter({ + prompt: { + message: "Enter recipient addresses", + validate: (addresses) => { + if (!addresses?.length) { + return "Enter valid addresses"; + } + + // Validate the addresses + for (const address of addresses) { + if (!isAddress(address)) { + return `Invalid address: ${address}`; + } + } + + return true; + }, + }, + }); + + if (!addresses) { + throw new Error("Addresses are required"); + } + + amounts = await amountsGetter({ + prompt: { + message: "Enter reward amounts", + validate: (amounts) => { + if (!amounts) { + return "Enter valid amounts"; + } + + // Validate the addresses + for (const amount of amounts) { + if (!isNumberString(amount)) { + return `Invalid amount: ${amount}`; + } + } + + return true; + }, + }, + }); + + if (!amounts) { + throw new Error("Amounts are required"); + } + + // Ensure options are the same length + if (addresses.length !== amounts.length) { + throw new Error( + "The `addresses` and `amounts` options must be the same length.", + ); + } + + const ensuredAccounts = addresses.map((address, i) => { + return { + address: address as `0x${string}`, + amount: (amounts as `${number}`[])[i], + }; + }); + + // Add the ensured accounts to the accounts array + return [...accounts, ...ensuredAccounts]; + } + + return accounts; +} + +interface Account { + address: Address; + amount: `${number}`; +} + +const accountsScema: Schema = { + type: "array", + items: { + type: "object", + properties: { + address: { + type: "string", + pattern: "^0x[a-fA-F0-9]{40}$", + }, + amount: { + type: "string", + pattern: "^(\\d*\\.)?\\d+$", + }, + }, + required: ["address", "amount"], + }, +}; + +function getMerkleTree(accounts: Account[], tokenDecimals: number) { + const leaves = accounts.map((account) => hashAccount(account, tokenDecimals)); + + return new MerkleTree.default( + leaves, + (bytes: Hex) => { + const packedData = encodePacked(["bytes"], [bytes]); + return keccak256(packedData); + }, + { + hashLeaves: false, + sortPairs: true, + }, + ); +} + +function hashAccount({ address, amount }: Account, tokenDecimals: number) { + const packedData = encodePacked( + ["address", "uint256"], + [address, parseUnits(amount, tokenDecimals)], + ); + return keccak256(packedData); +} diff --git a/packages/council-cli/src/commands/mock-token.ts b/packages/council-cli/src/commands/mock-token.ts index da004915..91a86ae3 100644 --- a/packages/council-cli/src/commands/mock-token.ts +++ b/packages/council-cli/src/commands/mock-token.ts @@ -1,23 +1,6 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; +import { command, passThroughCommand } from "clide-js"; -const commandDir = "./mock-token"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "mock-token [command]", - describe: "Interact with a LockingVault contract", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - }), +export default command({ + ...passThroughCommand, + description: "Interact with a MockERC20 contract", }); diff --git a/packages/council-cli/src/commands/mock-token/mint.ts b/packages/council-cli/src/commands/mock-token/mint.ts index ce8be2b9..902fdb60 100644 --- a/packages/council-cli/src/commands/mock-token/mint.ts +++ b/packages/council-cli/src/commands/mock-token/mint.ts @@ -1,63 +1,77 @@ -import { CouncilContext, MockToken } from "@council/sdk"; -import { getDefaultProvider, Wallet } from "ethers"; +import { ReadWriteMockToken } from "@delvtech/council-viem"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "mint [OPTIONS]", - describe: "Mint tokens", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address"], - describe: "The token contract address", - type: "string", - }, - f: { - alias: ["account"], - describe: "The account to mint tokens for", - type: "string", - }, - t: { - alias: ["amount"], - describe: "The amount of tokens to mint", - type: "string", - }, - w: walletKeyOption, - r: rpcUrlOption, - }); +import { createPublicClient, createWalletClient, http, parseUnits } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; + +export default command({ + description: "Mint tokens", + + options: { + address: { + describe: "The token contract address", + type: "string", + required: true, + }, + account: { + describe: "The account to mint tokens for", + type: "string", + required: true, + }, + amount: { + describe: "The amount of tokens to mint", + type: "string", + required: true, + }, + ...writeOptions, }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter token contract address", + handler: async ({ options, context, next }) => { + const { + account: signerAccount, + chain, + rpcUrl, + } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter token contract address", }); - const account = await requiredString(args.account, { - name: "account", - message: "Enter account to mint tokens for", + const account = await options.account({ + prompt: "Enter account to mint tokens for", }); - const amount = await requiredNumberString(args.amount, { - name: "amount", - message: "Enter amount of tokens to mint", + const amount = await options.amount({ + prompt: { + message: "Enter amount of tokens to mint", + initial: "0.0", + }, }); - const walletKey = await requiredWalletKey(args.walletKey); - const rpcURL = await requiredRpcUrl(args.rpcUrl); + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + const walletClient = createWalletClient({ + transport, + chain, + account: signerAccount, + }); - const provider = getDefaultProvider(rpcURL); - const context = new CouncilContext(provider); - const token = new MockToken(address, context); + const token = new ReadWriteMockToken({ + address: address as `0x${string}`, + publicClient, + walletClient, + }); - const signer = new Wallet(walletKey, provider); + const decimals = await token.getDecimals(); + const hash = await token.mint({ + account: account as `0x${string}`, + amount: parseUnits(amount, decimals), + }); - signale.success(await token.mint(signer, account, amount)); + signale.success(hash); + next(hash); }, }); diff --git a/packages/council-cli/src/commands/mock-token/set-allowance.ts b/packages/council-cli/src/commands/mock-token/set-allowance.ts index b38a4c2e..41482f77 100644 --- a/packages/council-cli/src/commands/mock-token/set-allowance.ts +++ b/packages/council-cli/src/commands/mock-token/set-allowance.ts @@ -1,76 +1,89 @@ -import { CouncilContext, MockToken } from "@council/sdk"; -import { getDefaultProvider, Wallet } from "ethers"; +import { ReadWriteMockToken } from "@delvtech/council-viem"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { createPublicClient, createWalletClient, http, parseUnits } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "set-allowance [OPTIONS]", - aliases: ["setAllowance"], - describe: "Set an account's token allowance", +export default command({ + description: "Set an account's token allowance", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address"], - describe: "The token contract address", - type: "string", - }, - o: { - alias: ["owner"], - describe: "The address of the token owner", - type: "string", - }, - s: { - alias: ["spender"], - describe: "The address of the token spender", - type: "string", - }, - b: { - alias: ["balance"], - describe: - "The amount of tokens the spender is allowed to spend from the owner's account", - type: "string", - }, - w: walletKeyOption, - r: rpcUrlOption, - }); + options: { + address: { + description: "The token contract address", + type: "string", + required: true, + }, + owner: { + description: "The address of the token owner", + type: "string", + required: true, + }, + spender: { + description: "The address of the token spender", + type: "string", + required: true, + }, + allowance: { + description: + "The amount of tokens the spender is allowed to spend from the owner's account", + type: "string", + required: true, + }, + ...writeOptions, }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter token contract address", + handler: async ({ options, context, next }) => { + const { + account: signerAccount, + chain, + rpcUrl, + } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter token contract address", }); - const owner = await requiredString(args.owner, { - name: "owner", - message: "Enter the token owner's address", + const owner = await options.owner({ + prompt: "Enter the token owner's address", }); - const spender = await requiredString(args.spender, { - name: "spender", - message: "Enter the token spender's address", + const spender = await options.spender({ + prompt: "Enter the token spender's address", }); - const amount = await requiredNumberString(args.balance, { - name: "amount", - message: - "Enter amount of tokens the spender is allowed to spend from the owner's account", + const allowance = await options.allowance({ + prompt: { + message: + "Enter amount of tokens the spender is allowed to spend from the owner's account", + initial: "0.0", + }, }); - const walletKey = await requiredWalletKey(args.walletKey); - const rpcURL = await requiredRpcUrl(args.rpcUrl); + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + const walletClient = createWalletClient({ + transport, + chain, + account: signerAccount, + }); - const provider = getDefaultProvider(rpcURL); - const context = new CouncilContext(provider); - const token = new MockToken(address, context); + const token = new ReadWriteMockToken({ + address: address as `0x${string}`, + publicClient, + walletClient, + }); - const signer = new Wallet(walletKey, provider); + const decimals = await token.getDecimals(); + const hash = await token.setAllowance({ + allowance: parseUnits(allowance, decimals), + spender: spender as `0x${string}`, + owner: owner as `0x${string}`, + }); - signale.success(await token.setAllowance(signer, owner, spender, amount)); + signale.success(hash); + next(hash); }, }); diff --git a/packages/council-cli/src/commands/mock-token/set-balance.ts b/packages/council-cli/src/commands/mock-token/set-balance.ts index dda22efa..347f40cb 100644 --- a/packages/council-cli/src/commands/mock-token/set-balance.ts +++ b/packages/council-cli/src/commands/mock-token/set-balance.ts @@ -1,64 +1,77 @@ -import { CouncilContext, MockToken } from "@council/sdk"; -import { getDefaultProvider, Wallet } from "ethers"; +import { ReadWriteMockToken } from "@delvtech/council-viem"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumberString } from "src/options/utils/requiredNumberString"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { createPublicClient, createWalletClient, http, parseUnits } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "set-balance [OPTIONS]", - aliases: ["setBalance"], - describe: "Set an account's token balance", +export default command({ + description: "Set an account's token balance", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address"], - describe: "The token contract address", - type: "string", - }, - f: { - alias: ["account"], - describe: "The account to set balance for", - type: "string", - }, - b: { - alias: ["balance"], - describe: "The new balance (as a decimal string) for the account", - type: "string", - }, - w: walletKeyOption, - r: rpcUrlOption, - }); + options: { + address: { + description: "The token contract address", + type: "string", + required: true, + }, + account: { + description: "The account to set balance for", + type: "string", + required: true, + }, + balance: { + description: "The new balance (as a decimal string) for the account", + type: "string", + required: true, + }, + ...writeOptions, }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter token contract address", + handler: async ({ options, context, next }) => { + const { + account: singerAccount, + chain, + rpcUrl, + } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter token contract address", }); - const account = await requiredString(args.account, { - name: "account", - message: "Enter account to set balance for", + const account = await options.account({ + prompt: "Enter account to set balance for", }); - const balance = await requiredNumberString(args.balance, { - name: "balance", - message: "Enter new balance for account", + const balance = await options.balance({ + prompt: { + message: "Enter new balance for account", + initial: "0.0", + }, }); - const walletKey = await requiredWalletKey(args.walletKey); - const rpcURL = await requiredRpcUrl(args.rpcUrl); + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + const walletClient = createWalletClient({ + transport, + chain, + account: singerAccount, + }); - const provider = getDefaultProvider(rpcURL); - const context = new CouncilContext(provider); - const token = new MockToken(address, context); + const token = new ReadWriteMockToken({ + address: address as `0x${string}`, + publicClient, + walletClient, + }); - const signer = new Wallet(walletKey, provider); + const decimals = await token.getDecimals(); + const hash = await token.setBalance({ + account: account as `0x${string}`, + balance: parseUnits(balance, decimals), + }); - signale.success(await token.setBalance(signer, account, balance)); + signale.success(hash); + next(hash); }, }); diff --git a/packages/council-cli/src/commands/proposal.ts b/packages/council-cli/src/commands/proposal.ts index ea126f4f..47537174 100644 --- a/packages/council-cli/src/commands/proposal.ts +++ b/packages/council-cli/src/commands/proposal.ts @@ -1,23 +1,6 @@ -import path from "node:path"; -import { createCommandModule } from "src/utils/createCommandModule"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "src/utils/selectCommandHandler"; +import { command, passThroughCommand } from "clide-js"; -const commandDir = "./proposal"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "proposal [command]", - describe: "Interact with a proposal", - - builder: (yargs) => { - return yargs.commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }); - }, - - handler: selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - }), +export default command({ + ...passThroughCommand, + description: "Interact with a proposal", }); diff --git a/packages/council-cli/src/commands/proposal/create.ts b/packages/council-cli/src/commands/proposal/create.ts index 871743f9..88cd96e3 100644 --- a/packages/council-cli/src/commands/proposal/create.ts +++ b/packages/council-cli/src/commands/proposal/create.ts @@ -1,129 +1,142 @@ -import { Ballot, CouncilContext, VotingContract } from "@council/sdk"; -import { getDefaultProvider, Wallet } from "ethers"; +import { Ballot, ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredOption } from "src/options/utils/requiredOption"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { DAY_IN_BLOCKS } from "src/utils/constants"; -import { createCommandModule } from "src/utils/createCommandModule"; +import { createPublicClient, createWalletClient, http } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; +import { DAY_IN_BLOCKS } from "../../utils/constants.js"; -export const { command, describe, builder, handler } = createCommandModule({ - command: "create [OPTIONS]", - describe: "Create a proposal", +export default command({ + description: "Create a proposal", - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address"], - describe: "The voting contract address", - type: "string", - }, - v: { - alias: ["vaults"], - describe: - "The addresses of the approved voting vaults to draw voting power from. This will be used to verify that the signer has enough voting power to create a proposal.", - type: "array", - string: true, - }, - t: { - alias: ["targets"], - describe: "A list of addresses to call.", - type: "array", - string: true, - }, - d: { - alias: ["calldatas"], - describe: "Encoded call data for each target.", - type: "array", - string: true, - }, - l: { - alias: ["last-call"], - describe: - "The block after which the proposal can no longer be executed.", - type: "number", - }, - b: { - alias: ["ballot"], - describe: "The initial vote from the signer's account", - type: "string", - choices: ["yes", "no", "maybe"], - default: "yes", - }, - w: walletKeyOption, - r: rpcUrlOption, - }); + options: { + address: { + description: "The voting contract address", + type: "string", + required: true, + }, + vaults: { + description: + "The addresses of the approved voting vaults to draw voting power from. This will be used to verify that the signer has enough voting power to create a proposal.", + type: "array", + string: true, + required: true, + }, + vaultdatas: { + alias: ["vault-data", "extra-vault-data"], + description: "The extra data for each vault", + type: "array", + string: true, + }, + targets: { + description: "A list of addresses to call.", + type: "array", + string: true, + required: true, + }, + calldatas: { + alias: ["data", "call-data"], + description: "Encoded call data for each target.", + type: "array", + string: true, + required: true, + }, + "last-call": { + description: + "The block after which the proposal can no longer be executed.", + type: "number", + required: true, + }, + ballot: { + description: + "The initial vote from the signer's account (yes, no, maybe).", + type: "string", + default: "yes", + }, + ...writeOptions, }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter voting contract address", + handler: async ({ options, context, next }) => { + const { account, chain, rpcUrl } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter voting contract address", }); - const vaults = await requiredArray(args.vaults, { - name: "targets", - message: "Enter voting vault addresses", + const vaults = await options.vaults({ + prompt: "Enter voting vault addresses", }); - const targets = await requiredArray(args.targets, { - name: "targets", - message: "Enter target addresses", + const vaultdatas = await options.vaultdatas(); + + const targets = await options.targets({ + prompt: "Enter target addresses", }); - const calldatas = await requiredArray(args.calldatas, { - name: "calldatas", - message: "Enter call data for each target", + const calldatas = await options.calldatas({ + prompt: "Enter call data for each target", }); - const ballot = await requiredOption(args.ballot, { - name: "ballot", - message: "Select initial ballot", - type: "select", - choices: [ - { - title: "Yes", - value: "yes", - }, - { - title: "No", - value: "no", - }, - { - title: "Abstain", - value: "maybe", - }, - ], + const ballot = await options.ballot({ + prompt: { + message: "Select initial ballot", + type: "select", + choices: [ + { + title: "Yes", + value: "yes", + }, + { + title: "No", + value: "no", + }, + { + title: "Abstain", + value: "maybe", + }, + ], + }, + validate: (value) => { + if (value === "yes" || value === "no" || value === "maybe") { + return true; + } + return false; + }, }); - const walletKey = await requiredWalletKey(args.walletKey); - const rpcURL = await requiredRpcUrl(args.rpcUrl); + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + const walletClient = createWalletClient({ transport, chain, account }); + const currentBlock = await publicClient.getBlockNumber(); - const provider = getDefaultProvider(rpcURL); - const context = new CouncilContext(provider); - const votingContract = new VotingContract(address, [], context); + const lastCall = await options.lastCall({ + prompt: { + message: "Enter the last call block", + initial: String(currentBlock + DAY_IN_BLOCKS * 14n), + validate: (value) => { + return !isNaN(Number(value)); + }, + }, + }); - const signer = new Wallet(walletKey, provider); - const currentBlock = await provider.getBlockNumber(); + const council = new ReadWriteCouncil({ publicClient, walletClient }); + const coreVoting = council.coreVoting({ + address: address as `0x${string}`, + }); - const lastCall = await requiredNumber(args.lastCall, { - name: "last-call", - message: "Enter the last call block", - initial: currentBlock + DAY_IN_BLOCKS * 90, + const hash = await coreVoting.createProposal({ + ballot: ballot as Ballot, + calldatas: calldatas as `0x${string}`[], + lastCall: BigInt(lastCall), + targets: targets as `0x${string}`[], + vaults: vaults as `0x${string}`[], + extraVaultData: + (vaultdatas as `0x${string}`[] | undefined) || vaults.map(() => "0x"), }); - signale.success( - await votingContract.createProposal( - signer, - vaults, - targets, - calldatas, - lastCall, - ballot as Ballot, - ), - ); + signale.success(hash); + next(hash); }, }); diff --git a/packages/council-cli/src/commands/proposal/execute.ts b/packages/council-cli/src/commands/proposal/execute.ts index cb461e28..c1b7b51f 100644 --- a/packages/council-cli/src/commands/proposal/execute.ts +++ b/packages/council-cli/src/commands/proposal/execute.ts @@ -1,53 +1,59 @@ -import { CouncilContext, Proposal } from "@council/sdk"; -import { getDefaultProvider, Wallet } from "ethers"; +import { ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; import signale from "signale"; -import { requiredRpcUrl, rpcUrlOption } from "src/options/rpc-url"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { requiredString } from "src/options/utils/requiredString"; -import { requiredWalletKey, walletKeyOption } from "src/options/wallet-key"; -import { createCommandModule } from "src/utils/createCommandModule"; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "execute [OPTIONS]", - describe: "Execute a proposal", - - builder: (yargs) => { - return yargs.options({ - a: { - alias: ["address"], - describe: "The voting contract address", - type: "string", - }, - p: { - alias: ["id"], - describe: "The id of the proposal to execute", - type: "number", - }, - r: rpcUrlOption, - w: walletKeyOption, - }); +import { createPublicClient, createWalletClient, http } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; + +export default command({ + description: "Execute a proposal", + + options: { + address: { + description: "The voting contract address", + type: "string", + required: true, + }, + id: { + alias: ["proposal"], + description: "The id of the proposal to execute", + type: "number", + required: true, + }, + ...writeOptions, }, - handler: async (args) => { - const address = await requiredString(args.address, { - name: "address", - message: "Enter voting contract address", + handler: async ({ options, context, end, next }) => { + const { account, chain, rpcUrl } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter voting contract address", }); - const id = await requiredNumber(args.id, { - name: "id", - message: "Enter proposal id", + const id = await options.id({ + prompt: "Enter proposal id", }); - const rpcUrl = await requiredRpcUrl(args.rpcUrl); - const walletKey = await requiredWalletKey(args.walletKey); + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + const walletClient = createWalletClient({ transport, chain, account }); + + const council = new ReadWriteCouncil({ publicClient, walletClient }); + const coreVoting = council.coreVoting({ + address: address as `0x${string}`, + }); + const proposal = await coreVoting.getProposal({ id: BigInt(id) }); - const provider = getDefaultProvider(rpcUrl); - const context = new CouncilContext(provider); - const proposal = new Proposal(id, address, context); + if (!proposal) { + signale.error(`Proposal ${id} not found`); + return end(); + } - const signer = new Wallet(walletKey, provider); + const hash = await proposal.execute(); - signale.success(await proposal.execute(signer)); + signale.success(hash); + next(hash); }, }); diff --git a/packages/council-cli/src/commands/proposal/vote.ts b/packages/council-cli/src/commands/proposal/vote.ts new file mode 100644 index 00000000..969ac663 --- /dev/null +++ b/packages/council-cli/src/commands/proposal/vote.ts @@ -0,0 +1,110 @@ +import { Ballot, ReadWriteCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, createWalletClient, http } from "viem"; +import { + getWriteOptions, + writeOptions, +} from "../../reusable-options/writeOptions.js"; + +export default command({ + description: "Vote on a proposal", + + options: { + address: { + description: "The voting contract address", + type: "string", + required: true, + }, + id: { + alias: ["proposal-id"], + description: "The proposal id", + type: "number", + required: true, + }, + ballot: { + description: + "The initial vote from the signer's account (yes, no, maybe).", + type: "string", + default: "yes", + }, + vaults: { + description: + "The addresses of the approved voting vaults to draw voting power from.", + type: "array", + string: true, + required: true, + }, + vaultdatas: { + alias: ["vault-data", "extra-vault-data"], + description: "The extra data for each vault", + type: "array", + string: true, + }, + ...writeOptions, + }, + + handler: async ({ options, context, next }) => { + const { account, chain, rpcUrl } = await getWriteOptions(options, context); + + const address = await options.address({ + prompt: "Enter voting contract address", + }); + + const id = await options.id({ + prompt: "Enter proposal id", + }); + + const ballot = await options.ballot({ + prompt: { + message: "Select initial ballot", + type: "select", + choices: [ + { + title: "Yes", + value: "yes", + }, + { + title: "No", + value: "no", + }, + { + title: "Abstain", + value: "maybe", + }, + ], + }, + validate: (value) => { + if (value === "yes" || value === "no" || value === "maybe") { + return true; + } + return false; + }, + }); + + const vaults = await options.vaults({ + prompt: "Enter voting vault addresses", + }); + + const vaultdatas = await options.vaultdatas(); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + const walletClient = createWalletClient({ transport, chain, account }); + + const council = new ReadWriteCouncil({ publicClient, walletClient }); + const coreVoting = council.coreVoting({ + address: address as `0x${string}`, + }); + + const propsal = await coreVoting.getProposal({ id: BigInt(id) }); + const hash = await propsal?.vote({ + ballot: ballot as Ballot, + vaults: vaults as `0x${string}`[], + extraVaultData: vaultdatas as `0x${string}`[] | undefined, + }); + + signale.success(hash); + next(hash); + }, +}); diff --git a/packages/council-cli/src/commands/server.ts b/packages/council-cli/src/commands/server.ts index a4553d61..c2a82ccb 100644 --- a/packages/council-cli/src/commands/server.ts +++ b/packages/council-cli/src/commands/server.ts @@ -1,240 +1,107 @@ -// HACK: Suppress ganache warning about bigint -// https://github.com/trufflesuite/ganache/issues/1080#issuecomment-906550239 -const originalConsoleWarn = console.warn; -console.warn = () => {}; - -import colors from "colors"; -import ganache from "ganache"; +import { command } from "clide-js"; +import { execSync } from "node:child_process"; import signale from "signale"; -import { requiredNumber } from "src/options/utils/requiredNumber"; -import { formatBigInt } from "src/utils/bigint/formatBigInt"; -import { parseBigInt } from "src/utils/bigint/parseBigInt"; -import { createCommandModule } from "src/utils/createCommandModule"; - -console.warn = originalConsoleWarn; - -export const { command, describe, builder, handler } = createCommandModule({ - command: "server [OPTIONS]", - describe: "Start a local ethereum node", +import { parseUnits } from "viem"; + +// This command is only available if the optional hardhat peer dependency is +// installed so we import it dynamically to avoid crashing if it's not +// installed. +let error: Error | undefined; +const hardhat = await import("hardhat").catch((e) => { + error = e; + return undefined; +}); - builder: (argv) => { - return argv.options({ - p: { - alias: ["port"], - describe: "The port to listen on", - type: "number", - default: 8545, - }, - h: { - alias: ["host"], - describe: "The hostname to listen on", - type: "string", - default: "127.0.0.1", - }, - b: { - alias: ["balance"], - describe: "The ETH balance to assign to each account", - type: "number", - default: 100, - }, - t: { - alias: ["block-time"], - describe: "The blockTime in seconds for automatic mining", - type: "number", - }, - c: { - alias: ["chain-id"], - describe: "The id to use for the local blockchain", - type: "number", - default: 31337, - }, - }); +export default command({ + description: "Start a local ethereum node", + isMiddleware: false, + + options: { + host: { + description: "The host to listen on", + type: "string", + default: "127.0.0.1", + }, + port: { + description: "The port to listen on", + type: "number", + default: 8545, + }, + balance: { + description: "The ETH balance to assign to each account", + type: "number", + default: 1_000, + }, + "block-time": { + description: "The blockTime in seconds for automatic mining", + type: "number", + }, + "chain-id": { + description: "The id to use for the local blockchain", + type: "number", + default: 1337, + }, }, - handler: async (args) => { - const port = await requiredNumber(args.port, { - name: "port", - message: "Enter port number", - initial: 8545, - }); - - const initialAccountBalance = parseBigInt((args.balance || 100).toString()); - - const serverConfig = { - blockTime: args.blockTime, - chain: { - chainId: args.chainId || 31337, - }, - - wallet: { - defaultBalance: initialAccountBalance, - accounts: [ - // default hardhat accounts - { - balance: initialAccountBalance, - // address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 - secretKey: - "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", - }, - { - balance: initialAccountBalance, - // address: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 - secretKey: - "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d", - }, - { - balance: initialAccountBalance, - // address: 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC - secretKey: - "0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a", - }, - { - balance: initialAccountBalance, - // address: 0x90F79bf6EB2c4f870365E785982E1f101E93b906 - secretKey: - "0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6", - }, - { - balance: initialAccountBalance, - // address: 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 - secretKey: - "0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a", - }, - { - balance: initialAccountBalance, - // address: 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc - secretKey: - "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba", - }, - { - balance: initialAccountBalance, - // address: 0x976EA74026E726554dB657fA54763abd0C3a0aa9 - secretKey: - "0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e", - }, - { - balance: initialAccountBalance, - // address: 0x14dC79964da2C08b23698B3D3cc7Ca32193d9955 - secretKey: - "0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356", - }, - { - balance: initialAccountBalance, - // address: 0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f - secretKey: - "0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97", - }, - { - balance: initialAccountBalance, - // address: 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 - secretKey: - "0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6", - }, - { - balance: initialAccountBalance, - // address: 0xBcd4042DE499D14e55001CcbB24a551F3b954096 - secretKey: - "0xf214f2b2cd398c806f84e317254e0f0b801d0643303237d97a22a48e01628897", - }, - { - balance: initialAccountBalance, - // address: 0x71bE63f3384f5fb98995898A86B02Fb2426c5788 - secretKey: - "0x701b615bbdfb9de65240bc28bd21bbc0d996645a3dd57e7b12bc2bdf6f192c82", - }, - { - balance: initialAccountBalance, - // address: 0xFABB0ac9d68B0B445fB7357272Ff202C5651694a - secretKey: - "0xa267530f49f8280200edf313ee7af6b827f2a8bce2897751d06a843f644967b1", - }, - { - balance: initialAccountBalance, - // address: 0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec - secretKey: - "0x47c99abed3324a2707c28affff1267e45918ec8c3f20b8aa892e8b065d2942dd", - }, - { - balance: initialAccountBalance, - // address: 0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097 - secretKey: - "0xc526ee95bf44d8fc405a158bb884d9d1238d99f0612e9f33d006bb0789009aaa", - }, - { - balance: initialAccountBalance, - // address: 0xcd3B766CCDd6AE721141F452C550Ca635964ce71 - secretKey: - "0x8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61", - }, - { - balance: initialAccountBalance, - // address: 0x2546BcD3c84621e976D8185a91A922aE77ECEc30 - secretKey: - "0xea6c44ac03bff858b476bba40716402b03e41b8e97e276d1baec7c37d42484a0", - }, - { - balance: initialAccountBalance, - // address: 0xbDA5747bFD65F08deb54cb465eB87D40e51B197E - secretKey: - "0x689af8efa8c651a91ad287602527f3af2fe9f6501a7ac4b061667b5a93e037fd", - }, - { - balance: initialAccountBalance, - // address: 0xdD2FD4581271e230360230F9337D5c0430Bf44C0 - secretKey: - "0xde9be858da4a475276426320d5e9262ecfc3ba460bfac56360bfa6c4c28b4ee0", - }, - { - balance: initialAccountBalance, - // address: 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199 - secretKey: - "0xdf57089febbacf7ba0bc227dafbffa9fc08a93fdc68e1e42411a14efcf23656e", - }, - ], - }, - }; - - if (process.env.WALLET_PRIVATE_KEY) { - serverConfig.wallet.accounts.push({ - balance: initialAccountBalance, - secretKey: process.env.WALLET_PRIVATE_KEY, - }); - } - - const server = ganache.server(serverConfig); - - server.listen(port, args.host, async (err) => { - if (err) { - throw err; + handler: async ({ options, end }) => { + if (!hardhat) { + // https://hardhat.org/hardhat-runner/docs/errors#HH1 + if (error?.message.startsWith("HH1")) { + signale.error( + "Must be inside a Hardhat project with a hardhat config file.", + ); + } else if (error?.message.startsWith("HH")) { + signale.error(error.message); + } else { + const globalNodeModules = execSync("npm root -g").toString().trim(); + const localNodeModules = execSync("npm root").toString().trim(); + const isGlobal = globalNodeModules === localNodeModules; + + signale.error(error?.message ?? error); + signale.error( + `This command requires hardhat to be installed. Run ${ + isGlobal + ? "`npm install -g hardhat`" + : "`npm install --save-dev hardhat`" + } to install hardhat.`, + ); } - console.log("\n"); - signale.success( - `Server listening at http://${server.address().address}:${port} 🚀`, - ); - - const initialAccounts = await server.provider.getInitialAccounts(); + return end(); + } - console.log("\n"); - console.log(`Initial Accounts:`); - console.log(colors.dim(`${"=".repeat(80)}`)); + const hre = hardhat.default; - Object.entries(initialAccounts).forEach(([address, account], i) => { - // don't log the user's private key - if (account.secretKey === process.env.WALLET_PRIVATE_KEY) { - return; - } + const host = await options.host(); + const port = await options.port(); + const balance = await options.balance(); + const blockTime = await options.blockTime(); + const chainId = await options.chainId(); - if (i !== 0) { - console.log(colors.dim(`${"-".repeat(80)}`)); - } + hre.config.networks.hardhat = { + ...hre.config.networks.hardhat, + chainId, - const balance = formatBigInt(account.balance); - console.log(`Account ${i + 1}: ${address} (${balance} ETH)`); - console.log(`Private Key: ${account.secretKey}`); - }); + allowUnlimitedContractSize: true, + accounts: { + ...hre.config.networks.hardhat.accounts, + accountsBalance: String(parseUnits(String(balance), 18)), + }, + mining: + blockTime !== undefined + ? { + ...hre.config.networks.hardhat.mining, + auto: false, + interval: blockTime * 1_000, + } + : hre.config.networks.hardhat.mining, + }; - console.log(colors.dim(`${"=".repeat(80)}`)); + hre.run("node", { + hostname: host, + port, }); + + end(); }, }); diff --git a/packages/council-cli/src/commands/server/block-number.ts b/packages/council-cli/src/commands/server/block-number.ts new file mode 100644 index 00000000..6e237f88 --- /dev/null +++ b/packages/council-cli/src/commands/server/block-number.ts @@ -0,0 +1,30 @@ +import { command } from "clide-js"; +import signale from "signale"; +import { createClient, http } from "viem"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the block number of the local blockchain", + + options: { + rpc: rpcUrlOption, + }, + + handler: async ({ options, next }) => { + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const client = createClient({ + transport: http(rpcUrl), + }); + + const blockNumberHex = await client.request({ + method: "eth_blockNumber", + }); + const blockNumber = BigInt(blockNumberHex); + + signale.info(`Current block number: ${blockNumber}`); + next(blockNumber); + }, +}); diff --git a/packages/council-cli/src/commands/server/mine.ts b/packages/council-cli/src/commands/server/mine.ts new file mode 100644 index 00000000..2cb9abe1 --- /dev/null +++ b/packages/council-cli/src/commands/server/mine.ts @@ -0,0 +1,54 @@ +import { command } from "clide-js"; +import signale from "signale"; +import { Client, createClient, http } from "viem"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Mine blocks on the local blockchain", + + options: { + blocks: { + description: "The number of blocks to mine", + type: "number", + required: true, + default: 1, + }, + rpc: rpcUrlOption, + }, + + handler: async ({ options, next }) => { + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const blocks = await options.blocks({ + prompt: "Enter the number of blocks to mine", + }); + + const client = createClient({ + transport: http(rpcUrl), + }); + await mine({ blocks, client }); + + signale.success(`Mined ${blocks} blocks.`); + next(); + }, +}); + +interface MineOptions { + blocks: number; + client: Client; +} + +/** + * Mine a given number of blocks on the local testnet + * @param blocks The number of blocks to mine + * @returns The new current block number + */ +export async function mine({ blocks, client }: MineOptions): Promise { + await client.request({ + // @ts-expect-error - This is a hardhat method + method: "hardhat_mine", + params: [`0x${blocks.toString(16)}`], + }); +} diff --git a/packages/council-cli/src/commands/vault.ts b/packages/council-cli/src/commands/vault.ts new file mode 100644 index 00000000..a50f7b75 --- /dev/null +++ b/packages/council-cli/src/commands/vault.ts @@ -0,0 +1,6 @@ +import { command, passThroughCommand } from "clide-js"; + +export default command({ + ...passThroughCommand, + description: "Interact with a VotingVault contract", +}); diff --git a/packages/council-cli/src/commands/vault/get-voting-power.ts b/packages/council-cli/src/commands/vault/get-voting-power.ts new file mode 100644 index 00000000..5517ebde --- /dev/null +++ b/packages/council-cli/src/commands/vault/get-voting-power.ts @@ -0,0 +1,55 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, http } from "viem"; +import { chainOption, getChain } from "../../reusable-options/chain.js"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the voting power of a given account.", + + options: { + address: { + description: "The vault contract address", + type: "string", + required: true, + }, + account: { + alias: ["voter"], + description: "The account to get the voting power of", + type: "string", + required: true, + }, + chain: chainOption, + rpc: rpcUrlOption, + }, + + handler: async ({ options, context, next }) => { + const chain = await getChain(options.chain, context); + + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const address = await options.address({ + prompt: "Enter vault contract address", + }); + + const account = await options.account({ + prompt: "Enter account to get voting power of", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + + const council = new ReadCouncil({ publicClient }); + const votingVault = council.votingVault(address as `0x${string}`); + + const votingPower = await votingVault.getVotingPower({ + account: account as `0x${string}`, + }); + + signale.success(votingPower); + next(votingPower); + }, +}); diff --git a/packages/council-cli/src/commands/vesting-vault.ts b/packages/council-cli/src/commands/vesting-vault.ts new file mode 100644 index 00000000..9193fcbe --- /dev/null +++ b/packages/council-cli/src/commands/vesting-vault.ts @@ -0,0 +1,6 @@ +import { command, passThroughCommand } from "clide-js"; + +export default command({ + ...passThroughCommand, + description: "Interact with a VestingVault contract", +}); diff --git a/packages/council-cli/src/commands/vesting-vault/get-delegate.ts b/packages/council-cli/src/commands/vesting-vault/get-delegate.ts new file mode 100644 index 00000000..ae68302a --- /dev/null +++ b/packages/council-cli/src/commands/vesting-vault/get-delegate.ts @@ -0,0 +1,55 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, http } from "viem"; +import { chainOption, getChain } from "../../reusable-options/chain.js"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the delegate of a given account.", + + options: { + address: { + description: "The LockingVault contract address", + type: "string", + required: true, + }, + account: { + alias: ["voter"], + description: "The account to get the delegate of", + type: "string", + required: true, + }, + chain: chainOption, + rpc: rpcUrlOption, + }, + + handler: async ({ options, context, next }) => { + const chain = await getChain(options.chain, context); + + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const address = await options.address({ + prompt: "Enter LockingVault contract address", + }); + + const account = await options.account({ + prompt: "Enter account to get delegate of", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + + const council = new ReadCouncil({ publicClient }); + const lockingVault = council.lockingVault(address as `0x${string}`); + + const delegate = await lockingVault.getDelegate({ + account: account as `0x${string}`, + }); + + signale.info(delegate.address); + next(delegate); + }, +}); diff --git a/packages/council-cli/src/commands/vesting-vault/get-token.ts b/packages/council-cli/src/commands/vesting-vault/get-token.ts new file mode 100644 index 00000000..8798c468 --- /dev/null +++ b/packages/council-cli/src/commands/vesting-vault/get-token.ts @@ -0,0 +1,43 @@ +import { ReadCouncil } from "@delvtech/council-viem"; +import { command } from "clide-js"; +import signale from "signale"; +import { createPublicClient, http } from "viem"; +import { chainOption, getChain } from "../../reusable-options/chain.js"; +import { rpcUrlOption } from "../../reusable-options/rpc-url.js"; + +export default command({ + description: "Get the token contract address of a given locking vault.", + + options: { + address: { + description: "The LockingVault contract address", + type: "string", + required: true, + }, + chain: chainOption, + rpc: rpcUrlOption, + }, + + handler: async ({ options, context, next }) => { + const chain = await getChain(options.chain, context); + + const rpcUrl = await options.rpc({ + prompt: "Enter RPC URL", + }); + + const address = await options.address({ + prompt: "Enter LockingVault contract address", + }); + + const transport = http(rpcUrl); + const publicClient = createPublicClient({ transport, chain }); + + const council = new ReadCouncil({ publicClient }); + const lockingVault = council.lockingVault(address as `0x${string}`); + + const token = await lockingVault.getToken(); + + signale.info(token.address); + next(token); + }, +}); diff --git a/packages/council-cli/src/config.ts b/packages/council-cli/src/config.ts index 568c50e1..d97a5e1a 100644 --- a/packages/council-cli/src/config.ts +++ b/packages/council-cli/src/config.ts @@ -1,13 +1,15 @@ -import { getOSConfigDir } from "./utils/getOSConfigDir"; -import { JSONStore } from "./utils/JSONStore"; +import { JsonStore } from "./utils/config/JsonStore.js"; +import { getOSConfigDir } from "./utils/config/getOSConfigDir.js"; -export interface CouncilClIConfig { - "rpc-url"?: string; -} +const configSettingNames = ["rpc-url"] as const; + +export type CouncilCliConfig = Partial< + Record<(typeof configSettingNames)[number], string> +>; // TODO: Test if this will work in environments like an AWS Lambda and ensure // graceful fallbacks if not. -export const config = new JSONStore({ +export const config = new JsonStore({ path: getOSConfigDir("council"), name: "cli", defaults: { diff --git a/packages/council-cli/src/council.ts b/packages/council-cli/src/council.ts index 20175b02..94d981c8 100644 --- a/packages/council-cli/src/council.ts +++ b/packages/council-cli/src/council.ts @@ -1,40 +1,41 @@ #!/usr/bin/env node -import path from "node:path"; +import { help, run } from "clide-js"; +import { commandMenu } from "clide-plugin-command-menu"; +import "dotenv/config"; import signale from "signale"; -import "src/utils/fetchPolyfill"; -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; -import { - COMMAND_FILE_EXTENSIONS, - selectCommandHandler, -} from "./utils/selectCommandHandler"; -const commandDir = "./commands"; +run({ + plugins: [ + // Help generator with --help and -h options + help({ + maxWidth: 100, + }), -const parser = yargs(hideBin(process.argv)) - .commandDir(commandDir, { - extensions: COMMAND_FILE_EXTENSIONS, - }) - .command( - "$0", - "Start a guided walkthrough", - () => {}, - selectCommandHandler({ - commandsPath: path.resolve(__dirname, commandDir), - message: `What would you like to do?`, - isRoot: true, + // Interactive prompts for incomplete commands + commandMenu({ + title: "Council CLI", + titleColors: ["#D89DFF", "#519BFF"], + skip: (options) => !!options.help, }), - ) - // turn off yargs error handling - .fail(false); + ], -async function main() { - try { - await parser.parse(); - } catch (err) { - const help = await parser.getHelp(); - signale.error(`${err}\n\n${help}`); - } -} + // Top level options applied to all commands + options: { + y: { + alias: ["yes"], + description: "Accept all default option values", + type: "boolean", + default: false, + }, + }, -main(); + afterParse: async ({ parsedOptions, context }) => { + if (parsedOptions.yes) { + for (const [key, config] of Object.entries(context.options)) { + (parsedOptions[key] as any) = parsedOptions[key] ?? config.default; + } + } + }, +}).catch((error) => { + signale.error(error); +}); diff --git a/packages/council-cli/src/commands/deploy/utils/deploymentStore.ts b/packages/council-cli/src/deploymentStore.ts similarity index 90% rename from packages/council-cli/src/commands/deploy/utils/deploymentStore.ts rename to packages/council-cli/src/deploymentStore.ts index 0f13aa1e..8b81475d 100644 --- a/packages/council-cli/src/commands/deploy/utils/deploymentStore.ts +++ b/packages/council-cli/src/deploymentStore.ts @@ -1,4 +1,4 @@ -import { JSONStore } from "src/utils/JSONStore"; +import { JsonStore } from "./utils/config/JsonStore.js"; export const DEFAULT_DEPLOYMENTS_DIR = "./deployments"; @@ -21,8 +21,8 @@ export function getDeploymentStore( name: string, chainId: number, deploymentsDir = DEFAULT_DEPLOYMENTS_DIR, -): JSONStore { - return new JSONStore({ +): JsonStore { + return new JsonStore({ path: deploymentsDir, name: `${name}-${chainId}`, defaults: { diff --git a/packages/council-cli/src/lib/viem.ts b/packages/council-cli/src/lib/viem.ts new file mode 100644 index 00000000..fbe5f072 --- /dev/null +++ b/packages/council-cli/src/lib/viem.ts @@ -0,0 +1,31 @@ +import { + arbitrum, + goerli, + localhost, + mainnet, + optimism, + polygon, + sepolia, +} from "viem/chains"; + +export const supportedChains = { + [formatChainName(localhost.name)]: localhost, + [formatChainName(mainnet.name)]: mainnet, + [formatChainName(goerli.name)]: goerli, + [formatChainName(sepolia.name)]: sepolia, + [formatChainName(optimism.name)]: optimism, + [formatChainName(arbitrum.name)]: arbitrum, + [formatChainName(polygon.name)]: polygon, +}; + +export type SupportedChain = keyof typeof supportedChains; + +export function formatChainName(name: K): HyphenCase { + return name.replace(" ", "-").toLowerCase() as HyphenCase; +} + +export type HyphenCase = T extends `${infer A}${infer B}` + ? B extends ` ${infer C}` + ? `${Lowercase
}-${HyphenCase>}` + : `${Lowercase}${HyphenCase}` + : T; diff --git a/packages/council-cli/src/options/chain.ts b/packages/council-cli/src/options/chain.ts deleted file mode 100644 index a6d305d6..00000000 --- a/packages/council-cli/src/options/chain.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - SupportedChain, - supportedChainNames, - supportedChains, -} from "src/utils/chains"; -import { Chain } from "viem/chains"; -import { requiredOption } from "./utils/requiredOption"; - -export const chainOption = { - alias: ["chain"], - describe: "The chain to target.", - type: "string", - default: process.env.CHAIN, -} as const; - -export async function requiredChain( - chainName: string | undefined, -): Promise { - const ensuredChainName = await requiredOption(chainName, { - name: "chain", - message: "Select chain", - type: "select", - choices: supportedChainNames.map((chainName) => ({ - title: chainName, - value: chainName, - })), - }); - - const chain = supportedChains[ensuredChainName as SupportedChain]; - - if (!chain) { - throw new Error(`Unsupported chain: ${ensuredChainName}`); - } - - return chain; -} diff --git a/packages/council-cli/src/options/rpc-url.ts b/packages/council-cli/src/options/rpc-url.ts deleted file mode 100644 index ce7e2c9a..00000000 --- a/packages/council-cli/src/options/rpc-url.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { config } from "src/config"; -import { requiredString } from "src/options/utils/requiredString"; - -export const rpcUrlOption = { - alias: ["rpc", "rpc-url"], - describe: "A RPC URL to send the transaction request to", - type: "string", - default: process.env.RPC_URL || config.get("rpc-url"), -} as const; - -export async function requiredRpcUrl(rpcUrl?: string): Promise { - return await requiredString(rpcUrl, { - name: "rpc-url", - message: "Enter RPC URL", - initial: process.env.RPC_URL || config.get("rpc-url"), - }); -} diff --git a/packages/council-cli/src/options/utils/requiredArray.ts b/packages/council-cli/src/options/utils/requiredArray.ts deleted file mode 100644 index d296ba53..00000000 --- a/packages/council-cli/src/options/utils/requiredArray.ts +++ /dev/null @@ -1,31 +0,0 @@ -import colors from "colors"; -import prompts from "prompts"; -import { isNotEmptyList } from "src/utils/validation/isNotEmptyList"; -import { requiredOption } from "./requiredOption"; -import { UntypedQuestion } from "./types"; - -export type ArrayQuestion = Omit; - -export async function requiredArray( - value: string[] | undefined, - question: ArrayQuestion, - options?: prompts.Options, -): Promise { - return requiredOption( - value, - { - validate: (value) => { - // The value is a string if it was captured from the prompt. - if (typeof value === "string") { - value = value.split(" "); - } - return isNotEmptyList(value); - }, - ...question, - type: "list", - separator: " ", - message: `${question.message} ${colors.dim("(space separated)")}`, - }, - options, - ); -} diff --git a/packages/council-cli/src/options/utils/requiredBoolean.ts b/packages/council-cli/src/options/utils/requiredBoolean.ts deleted file mode 100644 index 19fd3253..00000000 --- a/packages/council-cli/src/options/utils/requiredBoolean.ts +++ /dev/null @@ -1,20 +0,0 @@ -import prompts from "prompts"; -import { requiredOption } from "./requiredOption"; -import { UntypedQuestion } from "./types"; - -export async function requiredBoolean( - value: boolean | undefined, - question: UntypedQuestion, - options?: prompts.Options, -): Promise { - return requiredOption( - value, - { - active: "yes", - inactive: "no", - ...question, - type: "toggle", - }, - options, - ); -} diff --git a/packages/council-cli/src/options/utils/requiredCallHash.ts b/packages/council-cli/src/options/utils/requiredCallHash.ts deleted file mode 100644 index 251caa65..00000000 --- a/packages/council-cli/src/options/utils/requiredCallHash.ts +++ /dev/null @@ -1,49 +0,0 @@ -import colors from "colors"; -import { requiredArray } from "src/options/utils/requiredArray"; -import { requiredOption } from "src/options/utils/requiredOption"; -import { createCallHash } from "src/utils/createCallHash"; -import { isNotEmptyList } from "src/utils/validation/isNotEmptyList"; - -export async function requiredCallHash( - callHash?: string, - targets?: string[], - calldatas?: string[], -): Promise { - let fallbackCallHash: string | undefined; - - if (isNotEmptyList(targets) && isNotEmptyList(calldatas)) { - fallbackCallHash = createCallHash(targets, calldatas); - } - - const ensuredCallHash = await requiredOption(callHash || fallbackCallHash, { - name: "call-hash", - type: "text", - message: `Enter call hash ${colors.dim( - "(Leave blank to create a new hash from targets and call data)", - )}`, - }); - - if (ensuredCallHash) { - return ensuredCallHash; - } - - const ensuredTargets = await requiredArray(targets, { - name: "targets", - message: "Enter target addresses", - }).catch(() => { - throw new Error( - "The `targets` option is required if no `call-hash` is provided.", - ); - }); - - const ensuredCalldatas = await requiredArray(calldatas, { - name: "calldatas", - message: "Enter call data for each target", - }).catch(() => { - throw new Error( - "The `callData` option is required if no `call-hash` is provided.", - ); - }); - - return createCallHash(ensuredTargets, ensuredCalldatas); -} diff --git a/packages/council-cli/src/options/utils/requiredNumber.ts b/packages/council-cli/src/options/utils/requiredNumber.ts deleted file mode 100644 index 0560804c..00000000 --- a/packages/council-cli/src/options/utils/requiredNumber.ts +++ /dev/null @@ -1,19 +0,0 @@ -import prompts from "prompts"; -import { requiredOption } from "./requiredOption"; -import { UntypedQuestion } from "./types"; - -export async function requiredNumber( - value: number | undefined, - question: UntypedQuestion, - options?: prompts.Options, -): Promise { - return requiredOption( - value, - { - validate: (num) => num > -1, - ...question, - type: "number", - }, - options, - ); -} diff --git a/packages/council-cli/src/options/utils/requiredNumberString.ts b/packages/council-cli/src/options/utils/requiredNumberString.ts deleted file mode 100644 index db7eea4f..00000000 --- a/packages/council-cli/src/options/utils/requiredNumberString.ts +++ /dev/null @@ -1,20 +0,0 @@ -import prompts from "prompts"; -import { isNumberString } from "src/utils/validation/isNumberString"; -import { requiredOption } from "./requiredOption"; -import { UntypedQuestion } from "./types"; - -export async function requiredNumberString( - value: string | undefined, - question: UntypedQuestion, - options?: prompts.Options, -): Promise { - return requiredOption( - value, - { - validate: isNumberString, - ...question, - type: "text", - }, - options, - ); -} diff --git a/packages/council-cli/src/options/utils/requiredOption.ts b/packages/council-cli/src/options/utils/requiredOption.ts deleted file mode 100644 index 49758a26..00000000 --- a/packages/council-cli/src/options/utils/requiredOption.ts +++ /dev/null @@ -1,31 +0,0 @@ -import prompts from "prompts"; -import { Question } from "./types"; - -/** - * A wrapper around `prompts` which takes a value and prompts the user if it's - * undefined. It will return the value from the prompt rather than prompt's - * `Answer` object and throws an error if the prompt is canceled. - */ -export async function requiredOption( - value: T | undefined, - question: Question, - options?: prompts.Options, -): Promise { - if ( - (!question.validate || question.validate(value, {}, question)) && - value !== undefined - ) { - return value as T; - } - - const optionName = question.name as string; - - const result = await prompts(question, { - ...options, - onCancel: () => { - throw new Error(`Option \`${optionName}\` is required.`); - }, - }); - - return result[optionName]; -} diff --git a/packages/council-cli/src/options/utils/requiredSecret.ts b/packages/council-cli/src/options/utils/requiredSecret.ts deleted file mode 100644 index 3ce00c60..00000000 --- a/packages/council-cli/src/options/utils/requiredSecret.ts +++ /dev/null @@ -1,19 +0,0 @@ -import prompts from "prompts"; -import { requiredOption } from "./requiredOption"; -import { UntypedQuestion } from "./types"; - -export async function requiredSecret( - value: string | undefined, - question: UntypedQuestion, - options?: prompts.Options, -): Promise { - return requiredOption( - value, - { - validate: Boolean, - ...question, - type: "password", - }, - options, - ); -} diff --git a/packages/council-cli/src/options/utils/requiredString.ts b/packages/council-cli/src/options/utils/requiredString.ts deleted file mode 100644 index ed1ec3e1..00000000 --- a/packages/council-cli/src/options/utils/requiredString.ts +++ /dev/null @@ -1,19 +0,0 @@ -import prompts from "prompts"; -import { requiredOption } from "./requiredOption"; -import { UntypedQuestion } from "./types"; - -export async function requiredString( - value: string | undefined, - question: UntypedQuestion, - options?: prompts.Options, -): Promise { - return requiredOption( - value, - { - validate: Boolean, - ...question, - type: "text", - }, - options, - ); -} diff --git a/packages/council-cli/src/options/utils/types.ts b/packages/council-cli/src/options/utils/types.ts deleted file mode 100644 index a54b066b..00000000 --- a/packages/council-cli/src/options/utils/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -import prompts from "prompts"; - -/** - * make the message property required since prompts throws an error if it's not - * defined. - */ -export type Question = Omit & { - message: NonNullable; -}; - -export type UntypedQuestion = Omit; diff --git a/packages/council-cli/src/options/wallet-key.ts b/packages/council-cli/src/options/wallet-key.ts deleted file mode 100644 index 73b3034c..00000000 --- a/packages/council-cli/src/options/wallet-key.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { requiredSecret } from "src/options/utils/requiredSecret"; - -export const walletKeyOption = { - alias: ["wallet-key"], - describe: "A wallet key to sign and pay for the transaction", - type: "string", - hidden: true, - default: process.env.WALLET_PRIVATE_KEY, -} as const; - -export async function requiredWalletKey(walletKey?: string): Promise { - return await requiredSecret(walletKey, { - name: "wallet-key", - message: "Enter wallet key", - initial: process.env.WALLET_PRIVATE_KEY, - }); -} diff --git a/packages/council-cli/src/reusable-options/call-hash.ts b/packages/council-cli/src/reusable-options/call-hash.ts new file mode 100644 index 00000000..d2d4e6b6 --- /dev/null +++ b/packages/council-cli/src/reusable-options/call-hash.ts @@ -0,0 +1,68 @@ +import { OptionGetter, OptionsConfig } from "clide-js"; +import colors from "colors"; +import { createCallHash } from "../utils/createCallHash.js"; +import { isNotEmptyList } from "../utils/validation/isNotEmptyList.js"; + +export const callHashOptions = { + "call-hash": { + description: "The hash entry to increase time for", + type: "string", + }, + targets: { + description: + "A list of addresses to call. This will be used with the `--calldatas` option to create a call hash if one isn't provided via the `--call-hash` option.", + type: "array", + }, + calldatas: { + description: + "Encoded call data for each target. This will be used with the `--targets` option to create a call hash if one isn't provided via the `--call-hash` option.", + type: "array", + }, +} as const satisfies OptionsConfig; + +export async function getCallHash( + callHashGetter: OptionGetter, + targetsGetter: OptionGetter, + calldatasGetter: OptionGetter, +): Promise { + let callHash = await callHashGetter(); + if (callHash) { + return callHash; + } + + let targets = await targetsGetter(); + let calldatas = await calldatasGetter(); + if (isNotEmptyList(targets) && isNotEmptyList(calldatas)) { + return createCallHash(targets, calldatas); + } + + callHash = await callHashGetter({ + prompt: `Enter call hash ${colors.dim( + "(Leave blank to create a new hash from targets and call data)", + )}`, + }); + if (callHash) { + return callHash; + } + + targets = await targetsGetter({ + prompt: "Enter target addresses", + }); + if (!targets) { + throw new Error( + "The `targets` option is required if no `call-hash` is provided.", + ); + } + + calldatas = await calldatasGetter({ + prompt: "Enter call data for each target", + }); + + if (!calldatas) { + throw new Error( + "The `callData` option is required if no `call-hash` is provided.", + ); + } + + return createCallHash(targets, calldatas); +} diff --git a/packages/council-cli/src/reusable-options/chain.ts b/packages/council-cli/src/reusable-options/chain.ts new file mode 100644 index 00000000..71ad843d --- /dev/null +++ b/packages/council-cli/src/reusable-options/chain.ts @@ -0,0 +1,81 @@ +import { Context, OptionConfig, OptionGetter } from "clide-js"; +import { Chain, defineChain } from "viem"; +import { + HyphenCase, + SupportedChain, + formatChainName, + supportedChains, +} from "../lib/viem.js"; + +// TODO: Add a way to register new chains that updates the chain prompt and +// makes it possible to use the custom chain name in environment variables. + +export const chainOption = { + alias: ["chain"], + description: "The chain to target.", + type: "string", + required: true, + default: process.env.CHAIN || "localhost", +} as const satisfies OptionConfig; + +const supportedChainNames = Object.keys(supportedChains); + +export async function getChain( + chainOptionGetter: OptionGetter, + context?: Context, +): Promise { + const choices = supportedChainNames.map((chainName) => { + return { + title: chainName, + value: chainName, + }; + }); + + if (context) { + choices.push({ + title: "other", + value: "other", + }); + } + + const chosenChain = (await chainOptionGetter({ + prompt: { + message: "Select chain", + type: "select", + choices, + }, + })) as SupportedChain | "other" | `other:${number}`; + + if (chosenChain in supportedChains) { + return supportedChains[chosenChain as SupportedChain]; + } + + const id = chosenChain.startsWith("other:") + ? parseInt(chosenChain.split(":")[1]) + : await context?.client.prompt({ + message: "Enter chain ID", + type: "number", + }); + + return defineChain({ + id, + name: chosenChain, + network: "other", + nativeCurrency: { + decimals: 18, + name: "Native Currency", + symbol: "VALUE", + }, + rpcUrls: { + default: { http: [] }, + public: { http: [] }, + }, + }); +} + +/** Derive the correct option value from a Chain object. */ +export function chainToOptionValue( + chain: TChain, +): HyphenCase { + return formatChainName(chain.name) as HyphenCase; +} diff --git a/packages/council-cli/src/reusable-options/deploy/fresh-deploy.ts b/packages/council-cli/src/reusable-options/deploy/fresh-deploy.ts new file mode 100644 index 00000000..aca4e1c3 --- /dev/null +++ b/packages/council-cli/src/reusable-options/deploy/fresh-deploy.ts @@ -0,0 +1,8 @@ +import { OptionConfig } from "clide-js"; + +export const freshDeployOption = { + alias: ["fresh-deploy"], + description: "Deploy all contracts from scratch.", + type: "boolean", + default: false, +} as const satisfies OptionConfig; diff --git a/packages/council-cli/src/reusable-options/rpc-url.ts b/packages/council-cli/src/reusable-options/rpc-url.ts new file mode 100644 index 00000000..051ec984 --- /dev/null +++ b/packages/council-cli/src/reusable-options/rpc-url.ts @@ -0,0 +1,9 @@ +import { OptionConfig } from "clide-js"; + +export const rpcUrlOption = { + alias: ["rpc", "rpc-url"], + description: "An RPC URL to send the transaction request to", + type: "string", + required: true, + default: process.env.RPC_URL || "http://127.0.0.1:8545", +} as const satisfies OptionConfig; diff --git a/packages/council-cli/src/reusable-options/wallet-key.ts b/packages/council-cli/src/reusable-options/wallet-key.ts new file mode 100644 index 00000000..54bd1938 --- /dev/null +++ b/packages/council-cli/src/reusable-options/wallet-key.ts @@ -0,0 +1,9 @@ +import { OptionConfig } from "clide-js"; + +export const walletKeyOption = { + alias: ["wallet-key"], + description: "A wallet key to sign and pay for the transaction", + type: "secret", + required: true, + default: process.env.WALLET_PRIVATE_KEY, +} as const satisfies OptionConfig; diff --git a/packages/council-cli/src/reusable-options/writeOptions.ts b/packages/council-cli/src/reusable-options/writeOptions.ts new file mode 100644 index 00000000..5a42556f --- /dev/null +++ b/packages/council-cli/src/reusable-options/writeOptions.ts @@ -0,0 +1,43 @@ +import { Context, OptionsConfig, OptionsGetter } from "clide-js"; +import { Chain, PrivateKeyAccount } from "viem"; +import { privateKeyToAccount } from "viem/accounts"; +import { chainOption, getChain } from "./chain.js"; +import { rpcUrlOption } from "./rpc-url.js"; +import { walletKeyOption } from "./wallet-key.js"; + +export const writeOptions = { + chain: chainOption, + rpc: rpcUrlOption, + wallet: walletKeyOption, +} as const satisfies OptionsConfig; + +export interface WriteOptions { + chain: Chain; + rpcUrl: string; + account: PrivateKeyAccount; + walletKey: `0x${string}`; +} + +export async function getWriteOptions( + optionsGetter: OptionsGetter, + context?: Context, +): Promise { + const chain = await getChain(optionsGetter.chain, context); + + const rpcUrl = await optionsGetter.rpc({ + prompt: "Enter RPC URL", + }); + + const walletKey = await optionsGetter.wallet({ + prompt: "Enter wallet key", + }); + + const account = privateKeyToAccount(walletKey as `0x${string}`); + + return { + chain, + rpcUrl, + account, + walletKey: walletKey as `0x${string}`, + }; +} diff --git a/packages/council-cli/src/utils/bigint/formatBigInt.ts b/packages/council-cli/src/utils/bigint/formatBigInt.ts deleted file mode 100644 index 7ed4d09c..00000000 --- a/packages/council-cli/src/utils/bigint/formatBigInt.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function formatBigInt(bigInt: bigint, decimals = 18): string { - const bigIntString = bigInt.toString(); - const whole = bigIntString.slice(0, -decimals); - const part = bigIntString.padStart(decimals, "0").slice(-decimals); - return `${whole || 0}${part && `.${part}`}`; -} diff --git a/packages/council-cli/src/utils/bigint/parseBigInt.ts b/packages/council-cli/src/utils/bigint/parseBigInt.ts deleted file mode 100644 index 468ad213..00000000 --- a/packages/council-cli/src/utils/bigint/parseBigInt.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function parseBigInt(decimalString: string, decimals = 18): bigint { - const [whole, part = ""] = decimalString.split("."); - return BigInt(`${whole}${part.padEnd(decimals, "0")}`); -} diff --git a/packages/council-cli/src/utils/chains.ts b/packages/council-cli/src/utils/chains.ts deleted file mode 100644 index 8623a393..00000000 --- a/packages/council-cli/src/utils/chains.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { - arbitrum, - goerli, - hardhat, - mainnet, - optimism, - polygon, - sepolia, -} from "viem/chains"; - -export const supportedChains = { - localhost: hardhat, - mainnet, - goerli, - sepolia, - optimism, - arbitrum, - polygon, -}; - -export type SupportedChain = keyof typeof supportedChains; - -export const supportedChainNames = Object.keys( - supportedChains, -) as SupportedChain[]; diff --git a/packages/council-cli/src/utils/JSONStore.ts b/packages/council-cli/src/utils/config/JsonStore.ts similarity index 90% rename from packages/council-cli/src/utils/JSONStore.ts rename to packages/council-cli/src/utils/config/JsonStore.ts index 74856f87..714e14e2 100644 --- a/packages/council-cli/src/utils/JSONStore.ts +++ b/packages/council-cli/src/utils/config/JsonStore.ts @@ -1,8 +1,12 @@ -import Ajv, { ValidateFunction } from "ajv"; +import ajv, { ValidateFunction } from "ajv"; import type { JSONSchema } from "json-schema-typed"; import fs from "node:fs"; import path from "node:path"; -import { OptionalKeys, RequiredKeys } from "./types"; +import { OptionalKeys, RequiredKeys } from "../types.js"; + +fs.promises; + +const Ajv = ajv.default; /** * An object of JSONSchemas based on `T` @@ -32,7 +36,7 @@ export type DynamicJSONStoreOptions = /** * Options for the `JSONStore` class */ -export type JSONStoreOptions> = { +export type JsonStoreOptions> = { /** * The path where the JSON will be saved *excluding the filename* */ @@ -51,7 +55,7 @@ export type JSONStoreOptions> = { * * Use a JSON file to persist key-value data */ -export class JSONStore> { +export class JsonStore> { /** * The path to the JSON file for this store */ @@ -60,7 +64,7 @@ export class JSONStore> { /** * The default values the JSON will be created with and will reset to */ - readonly defaults: JSONStoreOptions["defaults"]; + readonly defaults: JsonStoreOptions["defaults"]; /** * Ensures the JSON matches the schema if provided @@ -70,8 +74,8 @@ export class JSONStore> { /** * Use a JSON file to persist key-value data */ - constructor(options: JSONStoreOptions) { - const filename = `${removeJSONExtension(options.name)}.json`; + constructor(options: JsonStoreOptions) { + const filename = `${removeJsonExtension(options.name)}.json`; this.path = path.resolve(process.cwd(), options.path, filename); if (options.schema) { @@ -107,6 +111,17 @@ export class JSONStore> { this._validate(data); return data; + + // { 'rpc-url': undefined } + } + + /** + * Remove the store file + */ + rm(): void { + try { + fs.rmSync(this.path); + } catch (_) {} } /** @@ -246,7 +261,7 @@ export class JSONStore> { * @param file - The full filename * @returns The filename without the `.json` extension */ -function removeJSONExtension(filename: string): string { +function removeJsonExtension(filename: string): string { return filename.replace(/\.json$/, ""); } diff --git a/packages/council-cli/src/utils/getOSConfigDir.ts b/packages/council-cli/src/utils/config/getOSConfigDir.ts similarity index 92% rename from packages/council-cli/src/utils/getOSConfigDir.ts rename to packages/council-cli/src/utils/config/getOSConfigDir.ts index c1ea6c76..d4380d55 100644 --- a/packages/council-cli/src/utils/getOSConfigDir.ts +++ b/packages/council-cli/src/utils/config/getOSConfigDir.ts @@ -22,9 +22,10 @@ export function getOSConfigDir(projectName: string): string { configDir = process.env.APPDATA || path.join(homeDir, "AppData", "Roaming"); } else if (platform === "darwin") { // macOS - // https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html // https://apple.fandom.com/wiki/Preferences_folder - configDir = path.join(homeDir, "Library", "Preferences"); + // https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html + // https://apple.fandom.com/wiki/Application_Support_folder + configDir = path.join(homeDir, "Library", "Application Support'"); } else { // Linux and others // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html diff --git a/packages/council-cli/src/utils/config/validateData.ts b/packages/council-cli/src/utils/config/validateData.ts new file mode 100644 index 00000000..8d4829ff --- /dev/null +++ b/packages/council-cli/src/utils/config/validateData.ts @@ -0,0 +1,72 @@ +import ajv from "ajv"; +import type { JSONSchema } from "json-schema-typed"; + +const Ajv = ajv.default; + +/** + * A JSONSchema based on `T` + */ +export type Schema = + T extends Array + ? { + type: "array"; + items: Schema; + } + : T extends object + ? JSONSchema & { + type: "object"; + properties: { + [K in keyof T]-?: Schema; + }; + } + : JSONSchema; + +/** + * Validate `data` against `schema` and throw a `TypeError` if it doesn't match + * @param data The data to validate + * @param schema A `JSONSchema` from + * [json-schema-typed](https://www.npmjs.com/package/json-schema-typed) that + * matches the type of `data`. + * + * @example + * + * const schema = { + * type: "object", + * properties: { + * foo: { type: "string" }, + * }, + * required: ["foo"], + * additionalProperties: false, + * }; + * + * // Passes + * validateValue({ foo: "bar" }, schema); + * + * // Throws + * validateValue({ foo: 123 }, schema); + * validateValue({}, schema); + * validateValue({ foo: "bar", bar: "baz" }, schema); + */ +export function validateData( + data: T, + schema: Schema, +): void { + const ajv = new Ajv({ allErrors: true, useDefaults: true }); + const validator = ajv.compile(schema); + + const valid = validator(data); + + if (valid || !validator.errors) { + return; + } + + const errors = validator.errors.map( + ({ instancePath, message = "", params }) => { + if (params.additionalProperty) { + return `property \`${params.additionalProperty}\` not allowed`; + } + return `\`${instancePath.slice(1)}\` ${message}`; + }, + ); + throw new TypeError(`Schema violation: ${errors.join("; ")}`); +} diff --git a/packages/council-cli/src/utils/constants.ts b/packages/council-cli/src/utils/constants.ts index cdebb978..2a58dcfe 100644 --- a/packages/council-cli/src/utils/constants.ts +++ b/packages/council-cli/src/utils/constants.ts @@ -1,4 +1,4 @@ -export const DAY_IN_SECONDS = 86400; -export const BLOCK_TIME = 12; +export const DAY_IN_SECONDS = 86400n; +export const BLOCK_TIME = 12n; export const DAY_IN_BLOCKS = DAY_IN_SECONDS / BLOCK_TIME; export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; diff --git a/packages/council-cli/src/utils/createCommandModule.ts b/packages/council-cli/src/utils/createCommandModule.ts deleted file mode 100644 index 9080a786..00000000 --- a/packages/council-cli/src/utils/createCommandModule.ts +++ /dev/null @@ -1,215 +0,0 @@ -import { Argv, CommandModule, InferredOptionTypes, Options } from "yargs"; - -// TODO: Make a PR on the yargs repo to add handler argument types for aliases -// and positional arguments. - -/** - * A factory function for creating a `yargs.CommandModule` which includes - * typed arguments in the `handler` function for option keys *and* aliases. - * - * @see https://github.com/yargs/yargs/blob/main/docs/advanced.md#providing-a-command-module - * - * @example - * - *```ts - *export const { command, builder, handler } = createCommandModule({ - * command: "greet [OPTIONS]", - * builder: (argv) => - * argv.options({ - * n: { - * alias: ["full-name"], - * type: "string", - * }, - * }), - * handler: ({ fullName }) => { - * // Woohoo! arg types inferred from aliases! - * console.log(`Hello, ${fullName}`) - * }, - *}); - *``` - */ -export function createCommandModule< - T extends object = object, - U extends object = object, - A extends string = string, ->(options: AliasedCommandModule): AliasedCommandModule { - return options; -} - -// TypeScript magic - -/** - * `yargs.CommandModule` with a type param for option aliases - */ -interface AliasedCommandModule< - T extends object = object, - U extends object = object, - A extends string = string, -> extends Omit, "builder"> { - builder?: AliasedCommandBuilder | undefined; -} - -/** - * `yargs.Options.alias` with a type param - */ -type AliasValue = A[] | readonly A[] | A; - -/** - * `yargs.Options` with a type param for the alias value - */ -interface AliasedOptions< - A extends string = string, - T extends Options["type"] = Options["type"], -> extends Options { - alias?: AliasValue; - type?: T; -} - -/** - * Get a union type of the values in `O.alias` - */ -type AliasNames< - O extends AliasedOptions, - A extends string = string, -> = O["alias"] extends AliasValue ? O["alias"][number] : never; - -/** - * Get a new `Record` of `AliasedOption`s that includes `T` and a duplicate - * entry for each value in `A` / alias in the `AliasedOption` - * - * @example - * - * ```ts - * type WithAliases = InferredOptionAliases<'n', { - * alias: ["name"]; - * type: "number"; - * }, 'name'>; - * - * // results in: - * // { - * // n: { - * // alias: ["name"]; - * // type: "number"; - * // }; - * // name: { - * // alias: ["name"]; - * // type: "number"; - * // }; - * // } - * ``` - */ -type InferredOptionAliases< - K extends string | number | symbol, - O extends AliasedOptions, - A extends string = string, -> = Record, O>; - -/** - * Get a new `Record` of `AliasedOption`s that extends `T` with a duplicate - * entry for each value in `A`/alias in the `AliasedOption` - * - * @example - * - * ```ts - * type WithAliases = InferredOptionsAliases< - * { - * n: { - * alias: ["name"]; - * type: "number"; - * }; - * }, - * "name" - * >; - * - * // results in: - * // { - * // n: { - * // alias: ["name"]; - * // type: "number"; - * // }; - * // name: { - * // alias: ["name"]; - * // type: "number"; - * // }; - * // } - * ``` - */ -type WithAliases< - O extends { [key: string]: AliasedOptions }, - A extends string = string, -> = { - [K in keyof O]: O[K]; -} & { - [K in keyof O as AliasNames]: O[K]; -}; - -/** - * `yargs.CommandBuilder` with a type param for option aliases - */ -type AliasedCommandBuilder< - T extends object = object, - U extends object = object, - A extends string = string, -> = - | { [key: string]: AliasedOptions } - | ((args: AliasedArgv) => AliasedArgv) - | ((args: AliasedArgv) => PromiseLike>); - -/** - * `yargs.Argv` with type params for option aliases - */ -type AliasedArgv = Omit & { - option< - K extends keyof T, - O extends AliasedOptions, - A extends string = string, - >( - key: K, - options: O, - ): AliasedArgv< - Omit & InferredOptionTypes> - >; - option< - K extends string, - O extends AliasedOptions, - A extends string = string, - >( - key: K, - options: O, - ): AliasedArgv< - Omit & InferredOptionTypes> - >; - option< - O extends { [key: string]: AliasedOptions }, - A extends string = string, - >( - options: O, - ): AliasedArgv & InferredOptionTypes>>; - - options< - K extends keyof T, - O extends AliasedOptions, - A extends string = string, - >( - key: K, - options: O, - ): AliasedArgv< - Omit & InferredOptionTypes> - >; - options< - K extends string, - O extends AliasedOptions, - A extends string = string, - >( - key: K, - options: O, - ): AliasedArgv< - Omit & InferredOptionTypes> - >; - options< - O extends { [key: string]: AliasedOptions }, - A extends string = string, - >( - options: O, - ): AliasedArgv & InferredOptionTypes>>; -}; diff --git a/packages/council-cli/src/utils/defaultOptionValues.ts b/packages/council-cli/src/utils/defaultOptionValues.ts new file mode 100644 index 00000000..1db261c7 --- /dev/null +++ b/packages/council-cli/src/utils/defaultOptionValues.ts @@ -0,0 +1,11 @@ +import { OptionValues, OptionsConfig } from "clide-js"; + +export default function defaultOptionValues( + optionsConfig: OptionsConfig, +): OptionValues { + return Object.fromEntries( + Object.entries(optionsConfig).map(([key, config]) => { + return [key, config.default]; + }), + ) as OptionValues; +} diff --git a/packages/council-cli/src/utils/deployContract.ts b/packages/council-cli/src/utils/deployContract.ts index bed04db4..ce1c05ac 100644 --- a/packages/council-cli/src/utils/deployContract.ts +++ b/packages/council-cli/src/utils/deployContract.ts @@ -1,15 +1,17 @@ import { + Abi, Chain, createPublicClient, createWalletClient, + DeployContractParameters, Hex, http, PrivateKeyAccount, } from "viem"; -interface DeployContractOptions { - abi: any; - args: any[]; +interface DeployContractOptions { + abi: TAbi; + args: DeployContractParameters["args"]; bytecode: Hex; account: PrivateKeyAccount; rpcUrl: string; @@ -17,7 +19,7 @@ interface DeployContractOptions { onSubmitted?: (txHash: string) => void; } -export async function deployContract({ +export async function deployContract({ abi, args, bytecode, @@ -25,7 +27,7 @@ export async function deployContract({ rpcUrl, chain, onSubmitted, -}: DeployContractOptions): Promise { +}: DeployContractOptions): Promise { const publicClient = createPublicClient({ transport: http(rpcUrl), chain, @@ -42,7 +44,7 @@ export async function deployContract({ account, args, bytecode, - }); + } as any); onSubmitted?.(hash); const { contractAddress } = await publicClient.waitForTransactionReceipt({ @@ -58,12 +60,12 @@ export async function deployContract({ return { address: contractAddress, hash, - deploymentArgs: args, + deploymentArgs: args as any[], }; } export type DeployedContract = { - address: string; - hash: string; + address: `0x${string}`; + hash: `0x${string}`; deploymentArgs: any[]; }; diff --git a/packages/council-cli/src/utils/mine.ts b/packages/council-cli/src/utils/mine.ts deleted file mode 100644 index 2f98921a..00000000 --- a/packages/council-cli/src/utils/mine.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createPublicClient, http } from "viem"; -import { hardhat } from "viem/chains"; - -interface MineOptions { - blocks: number; - rpcUrl: string; -} - -/** - * Mine a given number of blocks on the local testnet - * @param blocks The number of blocks to mine - * @returns The new current block number - */ -export async function mine({ blocks, rpcUrl }: MineOptions): Promise { - const publicClient = createPublicClient({ - chain: hardhat, - transport: http(rpcUrl), - }); - - await publicClient.request({ - // @ts-expect-error: evm_mine is not a valid method - method: "evm_mine", - // @ts-expect-error: Type '"evm_mine"' is not assignable to type - // '"eth_uninstallFilter"' - params: [{ blocks }], - }); - - return Number(await publicClient.getBlockNumber()); -} diff --git a/packages/council-cli/src/utils/selectCommandHandler.ts b/packages/council-cli/src/utils/selectCommandHandler.ts deleted file mode 100644 index 3807e3d2..00000000 --- a/packages/council-cli/src/utils/selectCommandHandler.ts +++ /dev/null @@ -1,164 +0,0 @@ -import cfonts from "cfonts"; -import colors from "colors"; -import fs from "node:fs"; -import path from "node:path"; -import prompts, { Choice } from "prompts"; -import signale from "signale"; -import { CommandModule } from "yargs"; - -export const COMMAND_FILE_EXTENSIONS = ["js", "ts"]; - -export interface selectCommandHandlerOptions { - /** - * The path to the directory to scan for command modules. The names of the - * files will be used to populate the choices for the user. - */ - commandsPath: string; - - /** - * The message to show when prompting the user to select a command. - * @default "Choose a command" - */ - message?: string; - - /** - * Set to false to prevent showing the command module's `describe` export in - * the choices. - * @default true - */ - showDescriptions?: boolean; - - /** - * The max character length of the description. If the description goes past - * this, it will be truncated with an ellipses. - * @default 60 - */ - maxDescriptionLength?: number; - - /** - * Set to true to remove the back option - * @default false; - */ - isRoot?: boolean; -} - -/** - * Create a command module handler that prompts the user to select a command - * from all files at a given path. - * @returns - */ -export function selectCommandHandler( - options: selectCommandHandlerOptions, -): CommandModule["handler"] { - return async (argv) => { - try { - const commandName = argv._.slice(-1)[0]; - - const { - commandsPath, - message = "Choose a command", - showDescriptions = true, - maxDescriptionLength = 60, - isRoot = path.basename(commandsPath) === commandName, - } = options; - - const commandDirItems = fs.readdirSync(commandsPath); - const extensionStrings = COMMAND_FILE_EXTENSIONS.map( - (extension) => `\\.${extension}`, - ); - const extensionRegex = new RegExp(`(${extensionStrings.join("|")})$`); - - const choices = await Promise.all( - commandDirItems - .filter((item) => { - const isCommand = extensionRegex.test(item); - return isCommand; - }) - .map(async (filename): Promise => { - const title = removeFileExtension(filename); - let description; - - if (showDescriptions) { - const filepath = path.join(commandsPath, filename); - const { describe } = (await import( - filepath - ).catch()) as CommandModule; - - description = - describe && describe.length > maxDescriptionLength - ? `${describe.slice(0, maxDescriptionLength)}...` - : describe; - } - - return { - title: `${title}${ - description ? colors.dim(` - ${description}`) : "" - }`, - value: filename, - }; - }), - ); - - const backChoice = { - title: colors.italic("↩ back"), - value: "back", - }; - - if (!isRoot) { - choices.unshift(backChoice); - } - - if (!hasIntroduced) { - cfonts.say("Council CLI", { - font: "tiny", - gradient: ["#D89DFF", "#519BFF"], - transitionGradient: true, - }); - hasIntroduced = true; - } - - const { filename } = await prompts( - { - type: "select", - name: "filename", - message, - choices, - }, - { - onCancel: () => { - process.exit(); - }, - }, - ); - - if (filename === backChoice.value) { - const handler = handlerHistory.pop(); - return handler?.(argv); - } - handlerHistory.push(selectCommandHandler(options)); - - const filePath = path.join(commandsPath, filename); - const { handler } = await import(filePath); - - try { - return await handler(argv); - } catch (err) { - signale.error(err); - - // replay if selected handler fails - const handler = handlerHistory.pop(); - return handler?.(argv); - } - } catch (err) { - signale.error(err); - } - }; -} - -function removeFileExtension(filename: string): string { - return filename.replace(/\.\w+$/, ""); -} - -let hasIntroduced = false; - -const handlerHistory: CommandModule["handler"][] = []; diff --git a/packages/council-cli/src/utils/bigint/stringifyBigInts.ts b/packages/council-cli/src/utils/stringifyBigInts.ts similarity index 87% rename from packages/council-cli/src/utils/bigint/stringifyBigInts.ts rename to packages/council-cli/src/utils/stringifyBigInts.ts index 323529ca..53b44971 100644 --- a/packages/council-cli/src/utils/bigint/stringifyBigInts.ts +++ b/packages/council-cli/src/utils/stringifyBigInts.ts @@ -5,12 +5,12 @@ export type ConvertedBigInts = T extends bigint ? string : T extends Array - ? ConvertedBigInts[] - : T extends object - ? { - [K in keyof T]: ConvertedBigInts; - } - : T; + ? ConvertedBigInts[] + : T extends object + ? { + [K in keyof T]: ConvertedBigInts; + } + : T; /** * Convert bigints from an object, array, or primitive to strings diff --git a/packages/council-cli/src/utils/validation/isNumberString.ts b/packages/council-cli/src/utils/validation/isNumberString.ts index 9c4cd955..e84fbabc 100644 --- a/packages/council-cli/src/utils/validation/isNumberString.ts +++ b/packages/council-cli/src/utils/validation/isNumberString.ts @@ -1,6 +1,6 @@ /** * Validate that a string can be represented as a decimal number */ -export function isNumberString(str: string): boolean { +export function isNumberString(str: string): str is `${number}` { return /^\d*\.?\d+?$/.test(str); } diff --git a/packages/council-cli/tsconfig.json b/packages/council-cli/tsconfig.json index 7003606b..5e787536 100644 --- a/packages/council-cli/tsconfig.json +++ b/packages/council-cli/tsconfig.json @@ -1,19 +1,31 @@ { + "$schema": "https://json.schemastore.org/tsconfig", "extends": "@council/tsconfig/base.json", "include": ["src"], "exclude": ["node_modules"], "compilerOptions": { + "outDir": "dist", + "rootDir": "src", "baseUrl": ".", - "rootDir": "./src", - "outDir": "dist/", + // "module": "NodeNext", + // "moduleResolution": "NodeNext", + // "target": "ESNext", "allowSyntheticDefaultImports": true, + // important to import JSON files from @delvtech/council-artifacts + "resolveJsonModule": true, + // we don't need declaration files for a CLI "declaration": false, "declarationMap": false, - "paths": { - "src/*": ["src/*"] - } - } + "lib": ["es2023"], + "module": "node16", + "target": "es2022", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "node16", + }, } diff --git a/packages/council-cli/typedoc.json b/packages/council-cli/typedoc.json deleted file mode 100644 index 26af2747..00000000 --- a/packages/council-cli/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://typedoc.org/schema.json", - "entryPoints": ["./src/index.ts"], - "out": "docs", - "navigationLinks": { - "github": "https://github.com/delvtech/council-kit/tree/main/packages/council-sdk", - "council-kit": "https://github.com/delvtech/council-kit" - }, - "categorizeByGroup": false -} diff --git a/packages/council-sdk/.env.example b/packages/council-core/.env.example similarity index 100% rename from packages/council-sdk/.env.example rename to packages/council-core/.env.example diff --git a/packages/council-sdk/.eslintignore b/packages/council-core/.eslintignore similarity index 100% rename from packages/council-sdk/.eslintignore rename to packages/council-core/.eslintignore diff --git a/packages/council-sdk/.eslintrc b/packages/council-core/.eslintrc similarity index 100% rename from packages/council-sdk/.eslintrc rename to packages/council-core/.eslintrc diff --git a/packages/council-sdk/.gitignore b/packages/council-core/.gitignore similarity index 100% rename from packages/council-sdk/.gitignore rename to packages/council-core/.gitignore diff --git a/packages/council-core/CHANGELOG.md b/packages/council-core/CHANGELOG.md new file mode 100644 index 00000000..3f5c9dba --- /dev/null +++ b/packages/council-core/CHANGELOG.md @@ -0,0 +1,23 @@ +# @delvtech/council-core + +## 0.0.3 + +### Patch Changes + +- Updated dependencies [a5ed20e] + - @delvtech/council-artifacts@0.0.3 + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [5ab0981] + - @delvtech/council-artifacts@0.0.2 + +## 0.0.1 + +### Patch Changes + +- abebf3c: Initial release 🚀 +- Updated dependencies [abebf3c] + - @delvtech/council-artifacts@0.0.1 diff --git a/packages/council-sdk/README.md b/packages/council-core/README.md similarity index 100% rename from packages/council-sdk/README.md rename to packages/council-core/README.md diff --git a/packages/council-core/package.json b/packages/council-core/package.json new file mode 100644 index 00000000..cd501d24 --- /dev/null +++ b/packages/council-core/package.json @@ -0,0 +1,143 @@ +{ + "name": "@delvtech/council-core", + "version": "0.0.3", + "license": "MIT", + "type": "module", + "scripts": { + "build": "tsup", + "watch": "tsup --watch", + "docs": "typedoc", + "watch:docs": "typedoc --watch", + "test": "vitest run", + "test:watch": "vitest --reporter=verbose", + "typecheck": "tsc --noEmit" + }, + "peerDependencies": { + "@delvtech/evm-client": "^0.1.1" + }, + "dependencies": { + "@delvtech/council-artifacts": "^0.0.3", + "big.js": "^6.2.1", + "fast-json-stable-stringify": "^2.1.0", + "lru-cache": "^10.2.0" + }, + "devDependencies": { + "@council/eslint-config": "*", + "@council/tsconfig": "*", + "@delvtech/evm-client": "^0.1.1", + "@types/big.js": "^6.2.2", + "abitype": "^1.0.0", + "dotenv": "^16.4.5", + "nodemon": "^3.0.3", + "sinon": "^17.0.1", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "tsup": "^8.0.2", + "typedoc": "^0.25.8", + "typedoc-plugin-markdown": "^3.17.1", + "typescript": "^5.3.3", + "vitest": "^1.3.1" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./airdrop": { + "types": "./dist/airdrop.d.ts", + "default": "./dist/airdrop.js" + }, + "./contract": { + "types": "./dist/contract.d.ts", + "default": "./dist/contract.js" + }, + "./council": { + "types": "./dist/council.d.ts", + "default": "./dist/council.js" + }, + "./errors": { + "types": "./dist/errors.d.ts", + "default": "./dist/errors.js" + }, + "./model": { + "types": "./dist/model.d.ts", + "default": "./dist/model.js" + }, + "./proposal": { + "types": "./dist/proposal.d.ts", + "default": "./dist/proposal.js" + }, + "./token": { + "types": "./dist/token.d.ts", + "default": "./dist/token.js" + }, + "./utils": { + "types": "./dist/utils.d.ts", + "default": "./dist/utils.js" + }, + "./vaults": { + "types": "./dist/vaults.d.ts", + "default": "./dist/vaults.js" + }, + "./vote": { + "types": "./dist/vote.d.ts", + "default": "./dist/vote.js" + }, + "./voter": { + "types": "./dist/voter.d.ts", + "default": "./dist/voter.js" + }, + "./voting": { + "types": "./dist/voting.d.ts", + "default": "./dist/voting.js" + } + }, + "typesVersions": { + "*": { + "airdrop": [ + "./dist/airdrop.d.ts" + ], + "contract": [ + "./dist/contract.d.ts" + ], + "council": [ + "./dist/council.d.ts" + ], + "error": [ + "./dist/error.d.ts" + ], + "model": [ + "./dist/model.d.ts" + ], + "proposal": [ + "./dist/proposal.d.ts" + ], + "token": [ + "./dist/token.d.ts" + ], + "utils": [ + "./dist/utils.d.ts" + ], + "vaults": [ + "./dist/vaults.d.ts" + ], + "vote": [ + "./dist/vote.d.ts" + ], + "voter": [ + "./dist/voter.d.ts" + ], + "voting": [ + "./dist/voting.d.ts" + ] + } + }, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/packages/council-core/src/contract/extend.ts b/packages/council-core/src/contract/extend.ts new file mode 100644 index 00000000..301ac4cf --- /dev/null +++ b/packages/council-core/src/contract/extend.ts @@ -0,0 +1,91 @@ +import { + CachedReadContract, + CachedReadWriteContract, + CreateCachedReadContractOptions, + CreateCachedReadWriteContractOptions, + Network, + createCachedReadContract, + createCachedReadWriteContract, +} from "@delvtech/evm-client"; +import { Abi } from "abitype"; +import { Prettify } from "src/types"; +import { getEventsWithSplitAndRetry } from "src/utils/getEventsWithSplitAndRetry"; + +interface ExtendOptions { + network: Network; + /** + * The maximum number of times to split a failed event query into smaller + * block ranges and retry. This number has the potential to increase the + * number of requests exponentially, so the number should be considered + * carefully. Defaults to 5. + */ + maxEventQuerySplits?: number; +} + +export type ExtendReadContractOptions = Prettify< + ExtendOptions & CreateCachedReadContractOptions +>; + +/** + * Extends a read contract with custom event fetching logic and caching. When + * event queries fail, the range of blocks is recursively split in half and the + * query is retried until the `maxEventQuerySplits` is reached. + */ +export function extendReadContract({ + contract, + network, + cache, + namespace, + maxEventQuerySplits = 5, +}: ExtendReadContractOptions): CachedReadContract { + return createCachedReadContract({ + contract: { + ...contract, + getEvents(eventName, options) { + return getEventsWithSplitAndRetry({ + contract, + network, + eventName, + options, + attemptsLeft: maxEventQuerySplits, + }); + }, + }, + cache, + namespace, + }); +} + +export type ExtendReadWriteContractOptions = Prettify< + ExtendOptions & CreateCachedReadWriteContractOptions +>; + +/** + * Extends a read contract with custom event fetching logic and caching. When + * event queries fail, the range of blocks is recursively split in half and the + * query is retried until the `maxEventQuerySplits` is reached. + */ +export function extendReadWriteContract({ + contract, + network, + cache, + namespace, + maxEventQuerySplits = 5, +}: ExtendReadWriteContractOptions): CachedReadWriteContract { + return createCachedReadWriteContract({ + contract: { + ...contract, + getEvents(eventName, options) { + return getEventsWithSplitAndRetry({ + contract, + network, + eventName, + options, + attemptsLeft: maxEventQuerySplits, + }); + }, + }, + cache, + namespace, + }); +} diff --git a/packages/council-core/src/contract/factory.ts b/packages/council-core/src/contract/factory.ts new file mode 100644 index 00000000..2e295520 --- /dev/null +++ b/packages/council-core/src/contract/factory.ts @@ -0,0 +1,22 @@ +import { + CachedReadContract, + CachedReadWriteContract, + CreateCachedReadContractOptions, +} from "@delvtech/evm-client"; +import { Abi } from "abitype"; +import { Prettify } from "src/types"; + +export type ContractFactoryOptions = Prettify< + Omit & { + abi: TAbi; + address: `0x${string}`; + } +>; + +export type ReadContractFactory = ( + options: ContractFactoryOptions, +) => CachedReadContract; + +export type ReadWriteContractFactory = ( + options: ContractFactoryOptions, +) => CachedReadWriteContract; diff --git a/packages/council-core/src/errors/BlockNotFound.ts b/packages/council-core/src/errors/BlockNotFound.ts new file mode 100644 index 00000000..21636747 --- /dev/null +++ b/packages/council-core/src/errors/BlockNotFound.ts @@ -0,0 +1,8 @@ +import { BlockLike } from "src/utils/blockToReadOptions"; + +export class BlockNotFoundError extends Error { + constructor(block?: BlockLike) { + super(`Block${block !== undefined ? ` ${block}` : ""} not found`); + this.name = "BlockNotFound"; + } +} diff --git a/packages/council-core/src/exports/airdrop.ts b/packages/council-core/src/exports/airdrop.ts new file mode 100644 index 00000000..5145fc14 --- /dev/null +++ b/packages/council-core/src/exports/airdrop.ts @@ -0,0 +1,5 @@ +export { + ReadAirdrop, + type ReadAirdropOptions, +} from "src/models/airdrop/ReadAirdrop"; +export { ReadWriteAirdrop } from "src/models/airdrop/ReadWriteAirdrop"; diff --git a/packages/council-core/src/exports/contract.ts b/packages/council-core/src/exports/contract.ts new file mode 100644 index 00000000..36b6f224 --- /dev/null +++ b/packages/council-core/src/exports/contract.ts @@ -0,0 +1,12 @@ +export type { + ContractFactoryOptions, + ReadContractFactory, + ReadWriteContractFactory, +} from "src/contract/factory"; + +export { + extendReadContract, + extendReadWriteContract, + type ExtendReadContractOptions, + type ExtendReadWriteContractOptions, +} from "src/contract/extend"; diff --git a/packages/council-core/src/exports/council.ts b/packages/council-core/src/exports/council.ts new file mode 100644 index 00000000..3992432e --- /dev/null +++ b/packages/council-core/src/exports/council.ts @@ -0,0 +1,8 @@ +export { + ReadCouncil, + type ReadCouncilOptions, +} from "src/models/council/ReadCouncil"; +export { + ReadWriteCouncil, + type ReadWriteCouncilOptions, +} from "src/models/council/ReadWriteCouncil"; diff --git a/packages/council-core/src/exports/errors.ts b/packages/council-core/src/exports/errors.ts new file mode 100644 index 00000000..14500751 --- /dev/null +++ b/packages/council-core/src/exports/errors.ts @@ -0,0 +1 @@ +export { BlockNotFoundError } from "src/errors/BlockNotFound"; diff --git a/packages/council-core/src/exports/index.ts b/packages/council-core/src/exports/index.ts new file mode 100644 index 00000000..5c51e94d --- /dev/null +++ b/packages/council-core/src/exports/index.ts @@ -0,0 +1,12 @@ +export * from "src/exports/airdrop"; +export * from "src/exports/council"; +export * from "src/exports/errors"; +export * from "src/exports/contract"; +export * from "src/exports/model"; +export * from "src/exports/proposal"; +export * from "src/exports/token"; +export * from "src/exports/utils"; +export * from "src/exports/vaults"; +export * from "src/exports/vote"; +export * from "src/exports/voter"; +export * from "src/exports/voting"; diff --git a/packages/council-core/src/exports/model.ts b/packages/council-core/src/exports/model.ts new file mode 100644 index 00000000..2be6b22e --- /dev/null +++ b/packages/council-core/src/exports/model.ts @@ -0,0 +1,7 @@ +export { + Model, + type ReadContractModelOptions, + type ReadModelOptions, + type ReadWriteContractModelOptions, + type ReadWriteModelOptions, +} from "src/models/Model"; diff --git a/packages/council-core/src/exports/proposal.ts b/packages/council-core/src/exports/proposal.ts new file mode 100644 index 00000000..50e012b4 --- /dev/null +++ b/packages/council-core/src/exports/proposal.ts @@ -0,0 +1,9 @@ +export { + ReadProposal, + type BaseProposalOptions, + type ReadProposalOptions, +} from "src/models/proposal/ReadProposal"; +export { + ReadWriteProposal, + type ReadWriteProposalOptions, +} from "src/models/proposal/ReadWriteProposal"; diff --git a/packages/council-core/src/exports/token.ts b/packages/council-core/src/exports/token.ts new file mode 100644 index 00000000..e5704d58 --- /dev/null +++ b/packages/council-core/src/exports/token.ts @@ -0,0 +1,2 @@ +export { ReadToken, type ReadTokenOptions } from "src/models/token/ReadToken"; +export { ReadWriteMockToken } from "src/models/token/ReadWriteMockToken"; diff --git a/packages/council-core/src/exports/utils.ts b/packages/council-core/src/exports/utils.ts new file mode 100644 index 00000000..811b210c --- /dev/null +++ b/packages/council-core/src/exports/utils.ts @@ -0,0 +1,5 @@ +export { + blockToReadOptions, + type BlockLike, +} from "src/utils/blockToReadOptions"; +export { getVaultsWithPower } from "src/utils/getVaultsWithPower"; diff --git a/packages/council-core/src/exports/vaults.ts b/packages/council-core/src/exports/vaults.ts new file mode 100644 index 00000000..ef3931fd --- /dev/null +++ b/packages/council-core/src/exports/vaults.ts @@ -0,0 +1,30 @@ +export { + ReadVotingVault, + type ReadVotingVaultOptions, +} from "src/models/votingVault/ReadVotingVault"; +export { + ReadGscVault, + type ReadGscVaultOptions, +} from "src/models/votingVault/gscVault/ReadGscVault"; +export { + ReadWriteGscVault, + type ReadWriteGscVaultOptions, +} from "src/models/votingVault/gscVault/ReadWriteGscVault"; +export { + ReadLockingVault, + type ReadLockingVaultOptions, +} from "src/models/votingVault/lockingVault/ReadLockingVault"; +export { + ReadWriteLockingVault, + type ReadWriteLockingVaultOptions, +} from "src/models/votingVault/lockingVault/ReadWriteLockingVault"; +export type { + VoterPowerBreakdown, + VoterWithPower, + VotingVaultAbi, +} from "src/models/votingVault/types"; +export { + ReadVestingVault, + type ReadVestingVaultOptions, +} from "src/models/votingVault/vestingVault/ReadVestingVault"; +export { ReadWriteVestingVault } from "src/models/votingVault/vestingVault/ReadWriteVestingVault"; diff --git a/packages/council-core/src/exports/vote.ts b/packages/council-core/src/exports/vote.ts new file mode 100644 index 00000000..a9768dc1 --- /dev/null +++ b/packages/council-core/src/exports/vote.ts @@ -0,0 +1 @@ +export { ReadVote, type ReadVoteOptions } from "src/models/ReadVote"; diff --git a/packages/council-core/src/exports/voter.ts b/packages/council-core/src/exports/voter.ts new file mode 100644 index 00000000..e6a497e5 --- /dev/null +++ b/packages/council-core/src/exports/voter.ts @@ -0,0 +1 @@ +export { ReadVoter, type ReadVoterOptions } from "src/models/ReadVoter"; diff --git a/packages/council-core/src/exports/voting.ts b/packages/council-core/src/exports/voting.ts new file mode 100644 index 00000000..f167a6e1 --- /dev/null +++ b/packages/council-core/src/exports/voting.ts @@ -0,0 +1,15 @@ +export { + ReadCoreVoting, + type ReadCoreVotingOptions, +} from "src/models/coreVoting/ReadCoreVoting"; +export { + ReadWriteCoreVoting, + type ReadWriteCoreVotingOptions, +} from "src/models/coreVoting/ReadWriteCoreVoting"; +export { EXECUTED_PROPOSAL_HASH } from "src/models/coreVoting/constants"; +export type { + Actions, + Ballot, + CoreVotingAbi, + VoteResults, +} from "src/models/coreVoting/types"; diff --git a/packages/council-core/src/models/Model.ts b/packages/council-core/src/models/Model.ts new file mode 100644 index 00000000..80e248b8 --- /dev/null +++ b/packages/council-core/src/models/Model.ts @@ -0,0 +1,68 @@ +import { + CreateCachedReadContractOptions, + CreateCachedReadWriteContractOptions, + Network, +} from "@delvtech/evm-client"; +import { + ReadContractFactory, + ReadWriteContractFactory, +} from "src/contract/factory"; + +interface ModelOptions { + network: Network; + /** + * An arbitrary name for the instance. This is for convenience only (e.g., + * display name, debugging) and has no affect on the model's behavior. + */ + name?: string; +} + +/** + * @category Models + */ +export interface ReadModelOptions extends ModelOptions { + contractFactory: ReadContractFactory; +} + +/** + * A base class for read-only models. + * @category Models + */ +export class Model { + name: string; + network: Network; + contractFactory: ReadContractFactory; + + constructor({ name, network, contractFactory }: ReadModelOptions) { + this.name = name ?? this.constructor.name; + this.network = network; + this.contractFactory = contractFactory; + } +} + +/** + * @category Models + */ +export interface ReadWriteModelOptions extends ModelOptions { + contractFactory: ReadWriteContractFactory; +} + +// Contract models + +/** + * @category Models + */ +export interface ReadContractModelOptions + extends ReadModelOptions, + Omit { + address: `0x${string}`; +} + +/** + * @category Models + */ +export interface ReadWriteContractModelOptions + extends ReadWriteModelOptions, + Omit { + address: `0x${string}`; +} diff --git a/packages/council-core/src/models/ReadVote.ts b/packages/council-core/src/models/ReadVote.ts new file mode 100644 index 00000000..daa645f3 --- /dev/null +++ b/packages/council-core/src/models/ReadVote.ts @@ -0,0 +1,44 @@ +import { Ballot } from "src/models/coreVoting/types"; +import { Model, ReadModelOptions } from "src/models/Model"; +import { ReadProposal } from "src/models/proposal/ReadProposal"; +import { ReadVoter } from "src/models/ReadVoter"; + +export interface ReadVoteOptions extends ReadModelOptions { + ballot: Ballot; + power: bigint; + proposal: ReadProposal; + voter: ReadVoter | `0x${string}`; +} + +/** + * @category Models + */ +export class ReadVote extends Model { + ballot: Ballot; + power: bigint; + proposal: ReadProposal; + voter: ReadVoter; + + constructor({ + name = "Vote", + ballot, + contractFactory, + network, + power, + proposal, + voter, + }: ReadVoteOptions) { + super({ contractFactory, network, name }); + this.ballot = ballot; + this.power = power; + this.proposal = proposal; + this.voter = + typeof voter === "string" + ? new ReadVoter({ + address: voter, + contractFactory, + network, + }) + : voter; + } +} diff --git a/packages/council-core/src/models/ReadVoter.ts b/packages/council-core/src/models/ReadVoter.ts new file mode 100644 index 00000000..664df88c --- /dev/null +++ b/packages/council-core/src/models/ReadVoter.ts @@ -0,0 +1,118 @@ +import { ReadCoreVoting } from "src/models/coreVoting/ReadCoreVoting"; +import { Model, ReadModelOptions } from "src/models/Model"; +import { ReadVote } from "src/models/ReadVote"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { BlockLike } from "src/utils/blockToReadOptions"; + +export interface ReadVoterOptions extends ReadModelOptions { + address: `0x${string}`; +} + +/** + * A participant in Council + * @category Models + */ +export class ReadVoter extends Model { + address: `0x${string}`; + + constructor({ address, name = `Voter`, ...rest }: ReadVoterOptions) { + super({ + name, + ...rest, + }); + this.address = address; + } + + /** + * Get the total voting power for this Voter from a given list of vaults. + * @param extraData - ABI encoded optional extra data used by some vaults, such + * as merkle proofs. + */ + async getVotingPower({ + vaults, + atBlock, + extraData, + }: { + vaults: (ReadVotingVault | `0x${string}`)[]; + atBlock?: BlockLike; + extraData?: `0x${string}`[]; + }): Promise { + const vaultPowers = vaults.map((vault, i) => { + if (typeof vault === "string") { + vault = new ReadVotingVault({ + address: vault, + contractFactory: this.contractFactory, + network: this.network, + }); + } + return vault.getVotingPower({ + account: this.address, + atBlock, + extraData: extraData?.[i], + }); + }); + return (await Promise.all(vaultPowers)).reduce((sum, val) => sum + val, 0n); + } + + /** + * Get the casted votes for this Voter in a given Voting Contract + */ + async getVotes({ + coreVoting, + proposalId, + fromBlock, + toBlock, + }: { + coreVoting: ReadCoreVoting | `0x${string}`; + proposalId?: bigint; + fromBlock?: BlockLike; + toBlock?: BlockLike; + }): Promise { + const _coreVoting = + typeof coreVoting === "string" + ? new ReadCoreVoting({ + address: coreVoting, + contractFactory: this.contractFactory, + network: this.network, + }) + : coreVoting; + return _coreVoting.getVotes({ + proposalId, + account: this, + fromBlock, + toBlock, + }); + } + + /** + * Get the number of proposals this Voter has voted on and the number of + * proposals that they were able to vote on. If the numbers are the same, then + * this Voter has voted on every proposal they were able to. + */ + async getParticipation({ + coreVoting, + vaults, + fromBlock, + toBlock, + }: { + coreVoting: ReadCoreVoting | `0x${string}`; + vaults: (ReadVotingVault | `0x${string}`)[]; + fromBlock?: BlockLike; + toBlock?: BlockLike; + }): Promise<[number, number]> { + const _coreVoting = + typeof coreVoting === "string" + ? new ReadCoreVoting({ + address: coreVoting, + contractFactory: this.contractFactory, + network: this.network, + vaults, + }) + : coreVoting; + return _coreVoting.getParticipation({ + account: this, + fromBlock, + toBlock, + }); + } +} diff --git a/packages/council-core/src/models/airdrop/ReadAirdrop.ts b/packages/council-core/src/models/airdrop/ReadAirdrop.ts new file mode 100644 index 00000000..97d896eb --- /dev/null +++ b/packages/council-core/src/models/airdrop/ReadAirdrop.ts @@ -0,0 +1,100 @@ +import { Airdrop as AirdropArtifact } from "@delvtech/council-artifacts/Airdrop"; +import { CachedReadContract } from "@delvtech/evm-client"; +import { AirdropAbi } from "src/models/airdrop/types"; +import { Model, ReadContractModelOptions } from "src/models/Model"; +import { ReadToken } from "src/models/token/ReadToken"; +import { ReadLockingVault } from "src/models/votingVault/lockingVault/ReadLockingVault"; +import { BlockLike, blockToReadOptions } from "src/utils/blockToReadOptions"; + +/** + * @category Models + */ +export interface ReadAirdropOptions extends ReadContractModelOptions {} + +/** + * @category Models + */ +export class ReadAirdrop extends Model { + contract: CachedReadContract; + + constructor({ + name = "Airdrop", + address, + contractFactory, + network, + cache, + namespace, + }: ReadAirdropOptions) { + super({ contractFactory, name, network }); + this.contract = contractFactory({ + abi: AirdropArtifact.abi, + address, + cache, + namespace, + }); + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get a timestamp (in MS) of when the tokens can be reclaimed (removed by the + * owner). + */ + async getExpiration(): Promise { + const secondsTimestamp = await this.contract.read("expiration"); + return new Date(Number(secondsTimestamp * 1000n)); + } + + /** + * Get The merkle root with deposits encoded into it as hash [address, amount] + */ + getMerkleRoot(): Promise<`0x${string}`> { + return this.contract.read("rewardsRoot"); + } + + /** + * Get the token that will be paid out. + */ + async getToken(): Promise { + return new ReadToken({ + address: await this.contract.read("token"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Get the amount that an address has already claimed. + */ + async getClaimedAmount({ + account, + atBlock, + }: { + account: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + return await this.contract.read( + "claimed", + { 0: account }, + blockToReadOptions(atBlock), + ); + } + + /** + * Get the address of the locking vault into which tokens will be deposited + * when someone claims and delegates in a single tx. + */ + async getLockingVault(): Promise { + const address = await this.contract.read("lockingVault"); + return new ReadLockingVault({ + address, + contractFactory: this.contractFactory, + network: this.network, + }); + } +} diff --git a/packages/council-core/src/models/airdrop/ReadWriteAirdrop.ts b/packages/council-core/src/models/airdrop/ReadWriteAirdrop.ts new file mode 100644 index 00000000..a5c9b633 --- /dev/null +++ b/packages/council-core/src/models/airdrop/ReadWriteAirdrop.ts @@ -0,0 +1,149 @@ +import { + CachedReadWriteContract, + ContractWriteOptions, +} from "@delvtech/evm-client"; +import { ReadWriteContractFactory } from "src/contract/factory"; +import { ReadAirdrop } from "src/models/airdrop/ReadAirdrop"; +import { AirdropAbi } from "src/models/airdrop/types"; +import { ReadWriteContractModelOptions } from "src/models/Model"; +import { ReadWriteToken } from "src/models/token/ReadWriteToken"; +import { ReadWriteLockingVault } from "src/models/votingVault/lockingVault/ReadWriteLockingVault"; + +/** + * @category Models + */ +interface ReadWriteAirdropOptions extends ReadWriteContractModelOptions {} + +/** + * @category Models + */ +export class ReadWriteAirdrop extends ReadAirdrop { + declare contract: CachedReadWriteContract; + declare contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteAirdropOptions) { + super(options); + } + + override async getToken(): Promise { + return new ReadWriteToken({ + address: await this.contract.read("token"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + override async getLockingVault(): Promise { + return new ReadWriteLockingVault({ + address: await this.contract.read("lockingVault"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Claims tokens from the airdrop and sends them to the user. + * @param amount - Amount of tokens to claim. + * @param totalGrant - The total amount of tokens the user was granted. + * @param merkleProof - A set of hashes that can be used to reconstruct the + * path from a user (leaf) node to the merkle root, verifying that the user is + * part of the tree. + * @param recipient - The address which will be credited with funds. + * @return - The transaction hash. + */ + async claim({ + amount, + totalGrant, + merkleProof, + recipient, + options, + }: { + amount: bigint; + totalGrant: bigint; + merkleProof: `0x${string}`[]; + recipient: `0x${string}`; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "claim", + { + amount, + destination: recipient, + merkleProof, + totalGrant, + }, + options, + ); + const token = await this.getToken(); + token.contract.deleteRead("balanceOf", { 0: recipient }); + this.contract.deleteRead("claimed", { 0: recipient }); + return hash; + } + + /** + * Claims tokens from the airdrop, deposits it into the locking vault, and + * delegates in a single transaction. + * @param amount - Amount of tokens to claim. + * @param delegate - The address the user will delegate to, WARNING - should not be zero. + * @param totalGrant - The total amount of tokens the user was granted. + * @param merkleProof - A set of hashes that can be used to reconstruct the + * path from a user (leaf) node to the merkle root, verifying that the user is + * part of the tree. + * @param recipient - The address which will be credited with funds. + * @return - The transaction hash. + */ + async claimAndDelegate({ + amount, + delegate, + totalGrant, + merkleProof, + recipient, + options, + }: { + amount: bigint; + delegate: `0x${string}`; + totalGrant: bigint; + merkleProof: `0x${string}`[]; + recipient: `0x${string}`; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "claimAndDelegate", + { + amount, + delegate, + totalGrant, + merkleProof, + destination: recipient, + }, + options, + ); + const lockingVault = await this.getLockingVault(); + lockingVault.contract.clearCache(); + this.contract.deleteRead("claimed", { 0: recipient }); + return hash; + } + + /** + * Remove funds from the airdrop after expiration + * @param recipient - The address which will be credited with funds. + * @return - The transaction hash. + */ + async reclaim({ + recipient, + options, + }: { + recipient: `0x${string}`; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "reclaim", + { destination: recipient }, + options, + ); + const token = await this.getToken(); + token.contract.deleteRead("balanceOf", { 0: recipient }); + this.contract.clearCache(); + return hash; + } +} diff --git a/packages/council-core/src/models/airdrop/types.ts b/packages/council-core/src/models/airdrop/types.ts new file mode 100644 index 00000000..3b9ab527 --- /dev/null +++ b/packages/council-core/src/models/airdrop/types.ts @@ -0,0 +1,3 @@ +import { Airdrop } from "@delvtech/council-artifacts/Airdrop"; + +export type AirdropAbi = typeof Airdrop.abi; diff --git a/packages/council-core/src/models/coreVoting/ReadCoreVoting.ts b/packages/council-core/src/models/coreVoting/ReadCoreVoting.ts new file mode 100644 index 00000000..b01dd093 --- /dev/null +++ b/packages/council-core/src/models/coreVoting/ReadCoreVoting.ts @@ -0,0 +1,309 @@ +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { CachedReadContract } from "@delvtech/evm-client"; +import { Model, ReadContractModelOptions } from "src/models/Model"; +import { ReadVote } from "src/models/ReadVote"; +import { ReadVoter } from "src/models/ReadVoter"; +import { + BALLOTS, + EXECUTED_PROPOSAL_HASH, +} from "src/models/coreVoting/constants"; +import { CoreVotingAbi } from "src/models/coreVoting/types"; +import { ReadProposal } from "src/models/proposal/ReadProposal"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { BlockLike } from "src/utils/blockToReadOptions"; + +/** + * @category Models + */ +export interface ReadCoreVotingOptions extends ReadContractModelOptions { + vaults?: (ReadVotingVault | `0x${string}`)[]; +} + +/** + * @category Models + */ +export class ReadCoreVoting extends Model { + contract: CachedReadContract; + vaults: ReadVotingVault[]; + + /** + * Create a new CoreVoting model instance. + * @param address - The address of the deployed contract. + * @param vaults - The VotingVault instances or addresses of the vaults that are + * approved for this voting contract. + */ + constructor({ + name = "Core Voting", + address, + contractFactory, + network, + cache, + namespace, + vaults = [], + }: ReadCoreVotingOptions) { + super({ contractFactory, network, name }); + + this.contract = contractFactory({ + abi: CoreVoting.abi, + address, + cache, + namespace, + }); + + this.vaults = vaults.map((vault) => + vault instanceof ReadVotingVault + ? vault + : new ReadVotingVault({ + address: vault, + contractFactory, + network, + }), + ); + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get a proposal by id. + */ + async getProposal({ id }: { id: bigint }): Promise { + const proposalInfo = await this._getProposalInfo({ id }); + if (proposalInfo) { + return new ReadProposal({ + ...proposalInfo, + coreVoting: this, + contractFactory: this.contractFactory, + network: this.network, + }); + } + } + + /** + * Get all proposals ever created. + * @param fromBlock - Include all proposals created on or after this block number. + * @param toBlock - Include all proposals created on or before this block number. + */ + async getProposals({ + fromBlock, + toBlock, + }: { + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const createdEvents = await this.contract.getEvents("ProposalCreated", { + fromBlock, + toBlock, + }); + return createdEvents.map( + ({ args: { proposalId, created, execution, expiration } }) => + new ReadProposal({ + contractFactory: this.contractFactory, + coreVoting: this, + created, + expiration, + id: proposalId, + unlock: execution, + network: this.network, + }), + ); + } + + /** + * Get the voting power owned by a given address in all vaults. + * @param extraData - ABI encoded optional extra data used by some vaults, such + * as merkle proofs. + */ + async getVotingPower({ + account, + atBlock, + extraData, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + extraData?: `0x${string}`[]; + }): Promise { + const vaultPowers = await Promise.all( + this.vaults.map((vault, i) => + vault.getVotingPower({ + account: account, + atBlock, + extraData: extraData?.[i], + }), + ), + ); + return vaultPowers.reduce((sum, power) => sum + power, 0n); + } + + /** + * Get a casted vote for a given address on a given proposal id. + */ + async getVote({ + account, + proposalId, + }: { + account: ReadVoter | `0x${string}`; + proposalId: bigint; + }): Promise { + const { castBallot, votingPower } = await this.contract.read("votes", { + "0": account instanceof ReadVoter ? account.address : account, + "1": proposalId, + }); + + if (votingPower === 0n) { + return; + } + + return new ReadVote({ + ballot: BALLOTS[castBallot], + contractFactory: this.contractFactory, + network: this.network, + power: votingPower, + proposal: (await this.getProposal({ id: proposalId }))!, + voter: account, + }); + } + + /** + * Get all casted votes on proposals in this voting contract. + * @param fromBlock - The starting block number for the range of blocks fetched. + * @param toBlock - The ending block number for the range of blocks fetched. + */ + async getVotes({ + proposalId, + account, + fromBlock, + toBlock, + }: { + proposalId?: bigint; + account?: ReadVoter | `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const voteEvents = await this.contract.getEvents("Voted", { + filter: { + voter: + typeof account === "string" || !account ? account : account.address, + proposalId, + }, + fromBlock, + toBlock, + }); + + const votes: ReadVote[] = []; + + for (const { + args: { + proposalId, + vote: { castBallot, votingPower }, + voter, + }, + } of voteEvents) { + const proposal = await this.getProposal({ id: proposalId }); + if (!proposal) { + throw new Error( + `Vote event for proposal ${proposalId} from voter ${voter} references a non-existent proposal.`, + ); + } + votes.push( + new ReadVote({ + ballot: BALLOTS[castBallot], + contractFactory: this.contractFactory, + network: this.network, + power: votingPower, + proposal, + voter, + }), + ); + } + + return votes; + } + + /** + * Get the number of proposals an address has voted on and the number of + * proposals that they were able to vote on. If the numbers are the same, then + * the address has voted on every proposal they were able to. + */ + async getParticipation({ + account, + fromBlock, + toBlock, + }: { + account: ReadVoter | `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + }): Promise<[number, number]> { + const votes = await this.getVotes({ + account: account, + fromBlock, + toBlock, + }); + const votedProposalIds = votes.map(({ proposal: { id } }) => id); + const proposals = await this.getProposals(); + const proposalsNotVoted = await Promise.all( + proposals + .filter(({ id }) => !votedProposalIds.includes(id)) + .map( + async (proposal) => + // could be null if the proposal has been deleted and the created + // block can't be fetched. + ((await proposal.getVotingPower({ account: account })) || 0n) > 0n, + ), + ); + const missedVotesCount = proposalsNotVoted.filter(Boolean).length; + return [proposals.length - missedVotesCount, proposals.length]; + } + + /** + * Get a proposal by id. + */ + protected async _getProposalInfo({ id }: { id: bigint }): Promise< + | { + id: bigint; + created: bigint; + expiration: bigint; + lastCall?: bigint; + proposalHash?: `0x${string}`; + requiredQuorum?: bigint; + unlock?: bigint; + } + | undefined + > { + const { created, expiration, lastCall, proposalHash, quorum, unlock } = + await this.contract.read("proposals", { 0: id }); + + if (proposalHash !== EXECUTED_PROPOSAL_HASH) { + return { + id, + created, + expiration, + lastCall, + proposalHash, + requiredQuorum: quorum, + unlock, + }; + } + + const createdEvents = await this.contract.getEvents("ProposalCreated"); + const createdEvent = createdEvents.find( + ({ args: { proposalId } }) => proposalId === id, + ); + + if (createdEvent) { + const { + args: { created, execution, expiration }, + } = createdEvent; + return { + id, + created, + expiration, + unlock: execution, + }; + } + } +} diff --git a/packages/council-core/src/models/coreVoting/ReadWriteCoreVoting.ts b/packages/council-core/src/models/coreVoting/ReadWriteCoreVoting.ts new file mode 100644 index 00000000..fbb15c01 --- /dev/null +++ b/packages/council-core/src/models/coreVoting/ReadWriteCoreVoting.ts @@ -0,0 +1,207 @@ +import { + CachedReadWriteContract, + ContractWriteOptions, +} from "@delvtech/evm-client"; +import { ReadWriteContractFactory } from "src/contract/factory"; +import { BALLOTS } from "src/models/coreVoting/constants"; +import { ReadCoreVoting } from "src/models/coreVoting/ReadCoreVoting"; +import { Ballot, CoreVotingAbi } from "src/models/coreVoting/types"; +import { ReadWriteContractModelOptions } from "src/models/Model"; +import { ReadWriteProposal } from "src/models/proposal/ReadWriteProposal"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { BlockLike } from "src/utils/blockToReadOptions"; + +export interface ReadWriteCoreVotingOptions + extends ReadWriteContractModelOptions { + vaults?: (ReadVotingVault | `0x${string}`)[]; +} + +export class ReadWriteCoreVoting< + TVaults extends ReadVotingVault[] = ReadVotingVault[], +> extends ReadCoreVoting { + declare contract: CachedReadWriteContract; + declare contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteCoreVotingOptions) { + super(options); + } + + override async getProposal({ + id, + }: { + id: bigint; + }): Promise { + const proposalInfo = await this._getProposalInfo({ id }); + if (proposalInfo) { + return new ReadWriteProposal({ + ...proposalInfo, + coreVoting: this, + contractFactory: this.contractFactory, + network: this.network, + }); + } + } + + override async getProposals({ + fromBlock, + toBlock, + }: { + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const createdEvents = await this.contract.getEvents("ProposalCreated", { + fromBlock, + toBlock, + }); + return createdEvents.map( + ({ args: { proposalId, created, execution, expiration } }) => + new ReadWriteProposal({ + contractFactory: this.contractFactory, + coreVoting: this, + created, + expiration, + id: proposalId, + unlock: execution, + network: this.network, + }), + ); + } + + /** + * Create a new proposal. + * @param vaults - The addresses of the approved vaults to draw voting power + * from. + * @param targets - The targets (contract addresses) to call. + * @param calldatas - The execution calldata for each target. + * @param lastCall - The block number after which the proposal can't be executed. + * @param ballot: The initial vote from the signer's account. + * @returns The transaction hash. + */ + async createProposal({ + ballot, + calldatas, + lastCall, + targets, + vaults, + extraVaultData = [], + options, + }: { + vaults: (ReadVotingVault | `0x${string}`)[]; + targets: `0x${string}`[]; + calldatas: `0x${string}`[]; + lastCall: bigint; + ballot: Ballot; + /** + * Extra data given to the vaults to help calculation + */ + extraVaultData?: `0x${string}`[]; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const vaultAddresses = vaults.map((vault) => + typeof vault === "string" ? vault : vault.address, + ); + const hash = await this.contract.write( + "proposal", + { + ballot: BALLOTS.indexOf(ballot), + calldatas, + extraVaultData, + lastCall, + targets, + votingVaults: vaultAddresses, + }, + options, + ); + this.contract.clearCache(); + return hash; + } + + /** + * Change the number of blocks that must be waited before a proposal can be executed. + * @param blocks - The number of blocks that must be waited. + * @returns The transaction hash. + */ + async setLockDuration({ + blocks, + options, + }: { + blocks: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "setLockDuration", + { _lockDuration: blocks }, + options, + ); + this.contract.deleteRead("lockDuration"); + return hash; + } + + /** + * Change whether a vault is approved or not. + * @param address -The address of the vault. + * @param isValid - Whether or not the approved. + * @returns The transaction hash. + */ + async changeVaultStatus({ + vault: _vault, + isValid, + options, + }: { + vault: ReadVotingVault | `0x${string}`; + isValid: boolean; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const vault = + _vault instanceof ReadVotingVault + ? _vault + : new ReadVotingVault({ + address: _vault, + contractFactory: this.contractFactory, + network: this.network, + }); + + const hash = await this.contract.write( + "changeVaultStatus", + { + isValid, + vault: vault.address, + }, + options, + ); + + if (isValid) { + this.vaults.push(vault); + } else { + this.vaults = this.vaults.filter( + ({ address }) => address !== vault.address, + ) as TVaults; + } + + this.contract.deleteRead("approvedVaults", { 0: vault.address }); + return hash; + } + + /** + * Change the amount of time (in blocks) that a proposal can still be voted on + * after it's been unlocked. + * @param extraVoteBlocks - The number of blocks after the proposal is + * unlocked during which voting can continue. + * @returns The transaction hash. + */ + async changeExtraVotingTime({ + extraVoteBlocks, + options, + }: { + extraVoteBlocks: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "changeExtraVotingTime", + { _extraVoteTime: extraVoteBlocks }, + options, + ); + this.contract.deleteRead("extraVoteTime"); + return hash; + } +} diff --git a/packages/council-core/src/models/coreVoting/constants.ts b/packages/council-core/src/models/coreVoting/constants.ts new file mode 100644 index 00000000..3619118f --- /dev/null +++ b/packages/council-core/src/models/coreVoting/constants.ts @@ -0,0 +1,3 @@ +export const BALLOTS = ["yes", "no", "maybe"] as const; +export const EXECUTED_PROPOSAL_HASH = + "0x0000000000000000000000000000000000000000000000000000000000000000"; diff --git a/packages/council-core/src/models/coreVoting/types.ts b/packages/council-core/src/models/coreVoting/types.ts new file mode 100644 index 00000000..6c14c94a --- /dev/null +++ b/packages/council-core/src/models/coreVoting/types.ts @@ -0,0 +1,24 @@ +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { BALLOTS } from "src/models/coreVoting/constants"; + +export type CoreVotingAbi = typeof CoreVoting.abi; + +/** + * A valid ballot option. + * @category Data Sources + */ +export type Ballot = (typeof BALLOTS)[number]; + +/** + * The amount of voting power casted by ballot. + * @category Data Sources + */ +export type VoteResults = Record; + +/** + * The actions a proposal will perform. + */ +export interface Actions { + targets: `0x${string}`[] | readonly `0x${string}`[]; + calldatas: `0x${string}`[] | readonly `0x${string}`[]; +} diff --git a/packages/council-core/src/models/council/ReadCouncil.ts b/packages/council-core/src/models/council/ReadCouncil.ts new file mode 100644 index 00000000..e9dfddb9 --- /dev/null +++ b/packages/council-core/src/models/council/ReadCouncil.ts @@ -0,0 +1,99 @@ +import { Network } from "@delvtech/evm-client"; +import { ReadContractFactory } from "src/contract/factory"; +import { ReadAirdrop } from "src/models/airdrop/ReadAirdrop"; +import { ReadCoreVoting } from "src/models/coreVoting/ReadCoreVoting"; +import { Model, ReadModelOptions } from "src/models/Model"; +import { ReadVoter } from "src/models/ReadVoter"; +import { ReadToken } from "src/models/token/ReadToken"; +import { ReadGscVault } from "src/models/votingVault/gscVault/ReadGscVault"; +import { ReadLockingVault } from "src/models/votingVault/lockingVault/ReadLockingVault"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { ReadVestingVault } from "src/models/votingVault/vestingVault/ReadVestingVault"; + +export interface ReadCouncilOptions extends ReadModelOptions {} + +export class ReadCouncil extends Model { + protected _contractFactory: ReadContractFactory; + protected _network: Network; + + constructor({ + name = "Council", + contractFactory, + network, + }: ReadCouncilOptions) { + super({ contractFactory, network, name }); + this._contractFactory = contractFactory; + this._network = network; + } + + coreVoting({ + address, + vaults, + }: { + address: `0x${string}`; + vaults?: (ReadVotingVault | `0x${string}`)[]; + }): ReadCoreVoting { + return new ReadCoreVoting({ + address, + contractFactory: this._contractFactory, + network: this._network, + vaults, + }); + } + + voter(address: `0x${string}`): ReadVoter { + return new ReadVoter({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + votingVault(address: `0x${string}`): ReadVotingVault { + return new ReadVotingVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + lockingVault(address: `0x${string}`): ReadLockingVault { + return new ReadLockingVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + vestingVault(address: `0x${string}`): ReadVestingVault { + return new ReadVestingVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + gscVault(address: `0x${string}`): ReadGscVault { + return new ReadGscVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + airdrop(address: `0x${string}`): ReadAirdrop { + return new ReadAirdrop({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + token(address: `0x${string}`): ReadToken { + return new ReadToken({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } +} diff --git a/packages/council-core/src/models/council/ReadWriteCouncil.ts b/packages/council-core/src/models/council/ReadWriteCouncil.ts new file mode 100644 index 00000000..23e9cb31 --- /dev/null +++ b/packages/council-core/src/models/council/ReadWriteCouncil.ts @@ -0,0 +1,75 @@ +import { ReadWriteContractFactory } from "src/contract/factory"; +import { ReadWriteModelOptions } from "src/models/Model"; +import { ReadWriteAirdrop } from "src/models/airdrop/ReadWriteAirdrop"; +import { ReadWriteCoreVoting } from "src/models/coreVoting/ReadWriteCoreVoting"; +import { ReadCouncil } from "src/models/council/ReadCouncil"; +import { ReadWriteToken } from "src/models/token/ReadWriteToken"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { ReadWriteGscVault } from "src/models/votingVault/gscVault/ReadWriteGscVault"; +import { ReadWriteLockingVault } from "src/models/votingVault/lockingVault/ReadWriteLockingVault"; +import { ReadWriteVestingVault } from "src/models/votingVault/vestingVault/ReadWriteVestingVault"; + +export interface ReadWriteCouncilOptions extends ReadWriteModelOptions {} + +export class ReadWriteCouncil extends ReadCouncil { + protected declare _contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteCouncilOptions) { + super(options); + } + + coreVoting({ + address, + vaults, + }: { + address: `0x${string}`; + vaults?: (ReadVotingVault | `0x${string}`)[]; + }): ReadWriteCoreVoting { + return new ReadWriteCoreVoting({ + address, + contractFactory: this._contractFactory, + network: this._network, + vaults, + }); + } + + lockingVault(address: `0x${string}`): ReadWriteLockingVault { + return new ReadWriteLockingVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + vestingVault(address: `0x${string}`): ReadWriteVestingVault { + return new ReadWriteVestingVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + gscVault(address: `0x${string}`): ReadWriteGscVault { + return new ReadWriteGscVault({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + airdrop(address: `0x${string}`): ReadWriteAirdrop { + return new ReadWriteAirdrop({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } + + token(address: `0x${string}`): ReadWriteToken { + return new ReadWriteToken({ + address, + contractFactory: this._contractFactory, + network: this._network, + }); + } +} diff --git a/packages/council-core/src/models/proposal/ReadProposal.ts b/packages/council-core/src/models/proposal/ReadProposal.ts new file mode 100644 index 00000000..d453b601 --- /dev/null +++ b/packages/council-core/src/models/proposal/ReadProposal.ts @@ -0,0 +1,448 @@ +import { CoreVoting } from "@delvtech/council-artifacts/CoreVoting"; +import { ContractReadOptions, Event, Transaction } from "@delvtech/evm-client"; +import { Model, ReadModelOptions } from "src/models/Model"; +import { ReadVote } from "src/models/ReadVote"; +import { ReadVoter } from "src/models/ReadVoter"; +import { ReadCoreVoting } from "src/models/coreVoting/ReadCoreVoting"; +import { Actions, Ballot, VoteResults } from "src/models/coreVoting/types"; +import { BlockLike } from "src/utils/blockToReadOptions"; + +export interface BaseProposalOptions { + id: bigint; + coreVoting: ReadCoreVoting | `0x${string}`; + /** + * The block number of when this proposal was created. + */ + created: bigint; + expiration: bigint; + lastCall?: bigint; + proposalHash?: `0x${string}`; + requiredQuorum?: bigint; + unlock?: bigint; +} + +export interface ReadProposalOptions + extends BaseProposalOptions, + ReadModelOptions {} + +/** + * A model of a Proposal in Council + * @category Models + */ +export class ReadProposal extends Model { + id: bigint; + coreVoting: ReadCoreVoting; + created: bigint; + expiration: bigint; + + private _lastCall?: bigint; + private _proposalHash?: `0x${string}`; + private _requiredQuorum?: bigint; + private _unlock?: bigint; + private _allDataFetched = false; + + /** + * Create a new Proposal model instance. + * @param id - The id of the proposal in the voting contract. + * @param votingContract - the voting contract in which this proposal was + * created. + */ + constructor({ + name = "Proposal", + id, + coreVoting, + contractFactory, + network, + created, + expiration, + lastCall, + proposalHash, + requiredQuorum, + unlock, + }: ReadProposalOptions) { + super({ contractFactory, network, name }); + this.id = id; + this.coreVoting = + coreVoting instanceof ReadCoreVoting + ? coreVoting + : new ReadCoreVoting({ + address: coreVoting, + contractFactory, + network, + }); + this.created = created; + this.expiration = expiration; + this._lastCall = lastCall; + this._proposalHash = proposalHash; + this._requiredQuorum = requiredQuorum; + this._unlock = unlock; + } + + /** + * Get the array of addresses that will be called (targets) and the data + * they'll be called with (calldatas) by a proposal. + */ + async getTargetsAndCalldatas(): Promise { + const createdTransaction = await this.getCreatedTransaction(); + if (createdTransaction) { + const { + args: { targets, calldatas }, + } = this.coreVoting.contract.decodeFunctionData<"proposal">( + createdTransaction.input, + ); + return { + targets, + calldatas, + }; + } + } + + /** + * Get the hash of this proposal, used by its voting contract to verify the + * proposal data on execution. Not available on executed proposals. + */ + async getHash(): Promise<`0x${string}` | undefined> { + const data = await this._getData(); + return data?._proposalHash; + } + + /** + * Get the required quorum for this proposal to be executed. If the sum of + * voting power from all casted votes does not meet or exceed this number, + * then the proposal is not passing quorum. Not available on executed + * proposals. + */ + async getRequiredQuorum(): Promise { + const data = await this._getData(); + return data?._requiredQuorum; + } + + /** + * Get the block number of when this proposal can be executed. Will only be + * null if this proposal instance was initiated with an invalid id. + */ + async getUnlockBlock(): Promise { + const data = await this._getData(); + return data?._unlock; + } + + async getCreatedBy(): Promise { + const createdTransaction = await this.getCreatedTransaction(); + return ( + createdTransaction?.from && + new ReadVoter({ + address: createdTransaction.from, + contractFactory: this.contractFactory, + network: this.network, + }) + ); + } + + /** + * Get the hash of the transaction that created the proposal, or null if + * the Proposal doesn't exist. + * @returns The transaction hash + */ + async getCreatedTransaction(): Promise { + const createdEvent = await this._getCreatedEvent(); + const transaction = + createdEvent?.transactionHash && + (await this.network.getTransaction(createdEvent?.transactionHash)); + return transaction; + } + + /** + * Get the block number after which this proposal can no longer be executed. + * Not available on executed proposals. + */ + async getLastCallBlock(): Promise { + const data = await this._getData(); + return data?._lastCall; + } + + /** + * Get a boolean indicating whether this proposal is still active. Proposals + * are active during their voting period, i.e., from creation block up to + * expiration block or execution. Returns false if the current block is later + * than this proposal's expiration or this proposal has been executed. + */ + async getIsActive(): Promise { + const isExecuted = await this.getIsExecuted(); + if (isExecuted) { + return false; + } + const block = await this.network.getBlock(); + + return this.expiration > (block?.blockNumber ?? Infinity); + } + + /** + * Get a boolean indicating whether this proposal has been executed. + * @param atBlock - The block number to check. If this proposal was executed + * on or before this block, this will return true. + */ + async getIsExecuted(): Promise { + const executedEvent = await this._getExecutedEvent(); + return !!executedEvent; + } + + /** + * Get the hash of the transaction that executed the proposal, or null if + * the Proposal wasn't executed. + * @returns The transaction hash + */ + async getExecutedTransaction(): Promise { + const executedEvent = await this._getExecutedEvent(); + const hash = executedEvent?.transactionHash; + const transaction = hash && (await this.network.getTransaction(hash)); + return transaction; + } + + /** + * Get the casted vote for a given address on this proposal. + * @param address - The address that casted the vote. + */ + async getVote({ + account, + }: { + account: ReadVoter | `0x${string}`; + }): Promise { + return this.coreVoting.getVote({ + proposalId: this.id, + account, + }); + } + + /** + * Get all casted votes on this proposal + * @param fromBlock - Include all votes casted on or after this block. + * @param toBlock - Include all votes casted on or before this block. + */ + async getVotes({ + account, + fromBlock, + toBlock, + }: { + account?: ReadVoter | `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + return this.coreVoting.getVotes({ + proposalId: this.id, + account, + fromBlock, + toBlock, + }); + } + + /** + * Get the usable voting power of a given address for this proposal determined + * by its creation block. Any changes to voting power after the creation block + * of this proposal does not apply to this proposal and therefore will not be + * reflected. + * @param extraData - ABI encoded optional extra data used by some vaults, such + * as merkle proofs. + */ + async getVotingPower({ + account, + extraData, + }: { + account: ReadVoter | `0x${string}`; + extraData?: `0x${string}`[]; + }): Promise { + return this.coreVoting.getVotingPower({ + account, + atBlock: this.created, + extraData, + }); + } + + /** + * Get the total voting power of all votes on this proposal by their ballot. + */ + async getResults({ + options, + }: { + options?: ContractReadOptions; + } = {}): Promise { + const powerByBallot: Record = { + yes: 0n, + no: 0n, + maybe: 0n, + }; + + // The proposal voting power is deleted when the proposal is executed, so we + // have to get the results from vote events. + const isExecuted = await this.getIsExecuted(); + if (isExecuted) { + const votes = await this.getVotes({ + toBlock: options?.blockNumber ?? options?.blockTag, + }); + for (const { ballot, power } of votes) { + powerByBallot[ballot] += power; + } + } else { + const proposalVotingPower = await this.coreVoting.contract.read( + "getProposalVotingPower", + { proposalId: this.id }, + options, + ); + if (Array.isArray(proposalVotingPower)) { + powerByBallot.yes = proposalVotingPower[0]; + powerByBallot.no = proposalVotingPower[1]; + powerByBallot.maybe = proposalVotingPower[2]; + } else { + return { + yes: proposalVotingPower as unknown as bigint, + no: 0n, + maybe: 0n, + }; + } + } + + return powerByBallot; + } + + /** + * Get the current quorum of this proposal measured by summing the voting + * power of all casted votes. + */ + async getCurrentQuorum(): Promise { + const results = await this.getResults(); + return Object.values(results).reduce((sum, val) => sum + val, 0n); + } + + /** + * Get a boolean indicating whether this proposal can be executed. Proposals + * can only be executed if the quorum requirement has been met, there are more + * yes votes than no votes, and the current block is between the unlock and + * last call blocks. + */ + async getIsExecutable(): Promise { + const unlockBlock = await this.getUnlockBlock(); + const lastCallBlock = await this.getLastCallBlock(); + const requiredQuorum = await this.getRequiredQuorum(); + if (!unlockBlock || !requiredQuorum || !lastCallBlock) { + return false; + } + + const block = await this.network.getBlock(); + + if (!block) { + return false; + } + + const blockNumber = block.blockNumber; + + if ( + blockNumber === null || + blockNumber < unlockBlock || + blockNumber > lastCallBlock + ) { + return false; + } + + const currentQuorum = await this.getCurrentQuorum(); + const { yes, no } = await this.getResults(); + return currentQuorum >= requiredQuorum && yes > no; + } + + /** + * Idempotent function to ensure all possible data is fetched for the + * proposal. (From both events and the CoreVoting contract) + **/ + protected async _getData(): Promise< + | { + _lastCall?: bigint; + _proposalHash?: `0x${string}`; + _requiredQuorum?: bigint; + _unlock?: bigint; + } + | undefined + > { + if (this._allDataFetched) { + return { + _lastCall: this._lastCall, + _proposalHash: this._proposalHash, + _requiredQuorum: this._requiredQuorum, + _unlock: this._unlock, + }; + } + + const { _lastCall, _proposalHash, _requiredQuorum, _unlock } = + (await this.coreVoting.getProposal({ id: this.id }))!; + + const data = { _lastCall, _proposalHash, _requiredQuorum, _unlock }; + Object.assign(this, data, { _allDataFetched: true }); + return data; + } + + /** + * Get the event that was emitted when this proposal was created. + */ + protected async _getCreatedEvent(): Promise< + Event | undefined + > { + const createdEvents = await this._getCreatedEvents(); + return createdEvents.find( + ({ args: { proposalId } }) => proposalId === this.id, + ); + } + + /** + * Get the ProposalCreated events for the proposal's creation block. + */ + protected async _getCreatedEvents(): Promise< + Event[] + > { + return await this.coreVoting.contract.getEvents("ProposalCreated", { + fromBlock: this.created, + toBlock: this.created, + }); + } + + /** + * Get the event that was emitted when this proposal was executed, or + * undefined if it hasn't been executed. + */ + protected async _getExecutedEvent(): Promise< + Event | undefined + > { + const executedEvents = await this._getExecutedEvents(); + const found = executedEvents.find( + ({ args }) => args.proposalId === this.id, + ); + + return found; + } + + /** + * Get the ProposalExecuted events within range of this proposal's lifecycle. + */ + protected async _getExecutedEvents(): Promise< + Event[] + > { + let toBlock = await this.getLastCallBlock(); + const latestBlock = await this.network.getBlock(); + + // Ensure we don't try to fetch a block range including blocks that don't + // exist yet. + if ( + typeof toBlock === "bigint" && + typeof latestBlock?.blockNumber === "bigint" && + latestBlock.blockNumber < toBlock + ) { + toBlock = latestBlock.blockNumber; + } + + const events = await this.coreVoting.contract.getEvents( + "ProposalExecuted", + { + fromBlock: this.created, + toBlock, + }, + ); + + return events; + } +} diff --git a/packages/council-core/src/models/proposal/ReadWriteProposal.ts b/packages/council-core/src/models/proposal/ReadWriteProposal.ts new file mode 100644 index 00000000..a3179ebf --- /dev/null +++ b/packages/council-core/src/models/proposal/ReadWriteProposal.ts @@ -0,0 +1,109 @@ +import { ContractWriteOptions } from "@delvtech/evm-client"; + +import { BALLOTS } from "src/models/coreVoting/constants"; +import { ReadWriteCoreVoting } from "src/models/coreVoting/ReadWriteCoreVoting"; +import { Ballot } from "src/models/coreVoting/types"; +import { ReadWriteModelOptions } from "src/models/Model"; +import { + BaseProposalOptions, + ReadProposal, +} from "src/models/proposal/ReadProposal"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { getVaultsWithPower } from "src/utils/getVaultsWithPower"; + +export interface ReadWriteProposalOptions + extends ReadWriteModelOptions, + BaseProposalOptions { + coreVoting: ReadWriteCoreVoting | `0x${string}`; +} + +export class ReadWriteProposal extends ReadProposal { + declare coreVoting: ReadWriteCoreVoting; + + constructor(options: ReadWriteProposalOptions) { + super(options); + } + + /** + * Execute a proposal. + * @param signer - An ethers Signer instance. + * @returns The transaction hash. + */ + async execute({ + options, + }: { options?: ContractWriteOptions } = {}): Promise<`0x${string}`> { + const actions = await this.getTargetsAndCalldatas(); + if (!actions) { + throw new Error("Proposal not found"); + } + const hash = await this.coreVoting.contract.write( + "execute", + { + calldatas: actions.calldatas, + targets: actions.targets, + proposalId: this.id, + }, + options, + ); + this.coreVoting.contract.clearCache(); + return hash; + } + + /** + * Vote on this proposal. + * @param signer - An ethers Signer instance for the voter. + * @param ballot - The ballot to cast. + * @returns The transaction hash. + */ + async vote({ + ballot, + vaults: _vaults = this.coreVoting.vaults, + extraVaultData: _extraVaultData, + options, + }: { + ballot: Ballot; + /** + * The vaults to draw voting power from. Defaults to the `CoreVoting`'s + * configured vaults. + */ + vaults?: (`0x${string}` | ReadVotingVault)[]; + /** + * Extra data given to the vaults to help calculation. + */ + extraVaultData?: `0x${string}`[]; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const vaults = _vaults.map((vault) => + vault instanceof ReadVotingVault + ? vault + : new ReadVotingVault({ + address: vault, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + + const signerAddress = await this.coreVoting.contract.getSignerAddress(); + const vaultsWithPower = await getVaultsWithPower(signerAddress, vaults); + + const extraVaultData = vaultsWithPower.map(({ address }) => { + const index = _vaults.indexOf(address); + return _extraVaultData?.[index] || "0x"; + }); + + const hash = this.coreVoting.contract.write( + "vote", + { + ballot: BALLOTS.indexOf(ballot), + extraVaultData, + proposalId: this.id, + votingVaults: vaultsWithPower.map(({ address }) => address), + }, + options, + ); + + this.coreVoting.contract.clearCache(); + + return hash; + } +} diff --git a/packages/council-core/src/models/token/ReadToken.ts b/packages/council-core/src/models/token/ReadToken.ts new file mode 100644 index 00000000..6a291ae5 --- /dev/null +++ b/packages/council-core/src/models/token/ReadToken.ts @@ -0,0 +1,102 @@ +import { MockERC20 } from "@delvtech/council-artifacts/MockERC20"; +import { CachedReadContract } from "@delvtech/evm-client"; +import { Model, ReadContractModelOptions } from "src/models/Model"; +import { ERC20Abi } from "src/models/token/types"; +import { BlockLike, blockToReadOptions } from "src/utils/blockToReadOptions"; + +/** + * @category Models + */ +export interface ReadTokenOptions extends ReadContractModelOptions {} + +/** + * @category Models + */ +export class ReadToken extends Model { + contract: CachedReadContract; + + constructor({ + name = "Token", + address, + contractFactory, + network, + cache, + namespace, + }: ReadTokenOptions) { + super({ name, network, contractFactory }); + this.contract = contractFactory({ + abi: MockERC20.abi, + address, + cache, + namespace, + }); + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get the symbol for this token. + */ + getSymbol(): Promise { + return this.contract.read("symbol"); + } + + /** + * Get the number of decimal places this token uses. + */ + getDecimals(): Promise { + return this.contract.read("decimals"); + } + + /** + * Get the name of this token + */ + getName(): Promise { + return this.contract.read("name"); + } + + /** + * Get the spending allowance of a given spender for a given owner of this + * token. + */ + getAllowance({ + owner, + spender, + atBlock, + }: { + owner: `0x${string}`; + spender: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + return this.contract.read( + "allowance", + { + 0: owner, + 1: spender, + }, + blockToReadOptions(atBlock), + ); + } + + /** + * Get the token balance of a given address + */ + getBalanceOf({ + account, + atBlock, + }: { + account: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + return this.contract.read( + "balanceOf", + { 0: account }, + blockToReadOptions(atBlock), + ); + } +} diff --git a/packages/council-core/src/models/token/ReadWriteMockToken.ts b/packages/council-core/src/models/token/ReadWriteMockToken.ts new file mode 100644 index 00000000..d8bd2739 --- /dev/null +++ b/packages/council-core/src/models/token/ReadWriteMockToken.ts @@ -0,0 +1,102 @@ +import { ContractWriteOptions } from "@delvtech/evm-client"; +import { + ReadWriteToken, + ReadWriteTokenOptions, +} from "src/models/token/ReadWriteToken"; + +export class ReadWriteMockToken extends ReadWriteToken { + constructor({ name = "Mock Token", ...rest }: ReadWriteTokenOptions) { + super({ + name, + ...rest, + }); + } + + /** + * Mint new tokens + * @param account - The account to add tokens to. + * @param amount - The amount of tokens (as a decimal string) to add. + * @return - The transaction hash. + */ + async mint({ + account, + amount, + options, + }: { + account: `0x${string}`; + amount: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "mint", + { + account, + amount, + }, + options, + ); + this.contract.deleteRead("balanceOf", { 0: account }); + return hash; + } + + /** + * Modify an account's balance. + * @param account - The account to set balance for. + * @param balance - The new balance (as a decimal string) for the account. + * @return - The transaction hash. + */ + async setBalance({ + account, + balance, + options, + }: { + account: `0x${string}`; + balance: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "setBalance", + { + who: account, + amount: balance, + }, + options, + ); + this.contract.deleteRead("balanceOf", { 0: account }); + return hash; + } + + /** + * Modify an account's allowance. + * @param account - The address of the owner to set allowance for. + * @param spender - The address of the spender to set allowance for. + * @param balance - The new balance (as a decimal string) for the account. + * @return - The transaction hash. + */ + async setAllowance({ + owner, + spender, + allowance, + options, + }: { + owner: `0x${string}`; + spender: `0x${string}`; + allowance: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "setAllowance", + { + amount: allowance, + source: owner, + spender, + }, + options, + ); + this.contract.deleteRead("allowance", { + 0: owner, + 1: spender, + }); + return hash; + } +} diff --git a/packages/council-core/src/models/token/ReadWriteToken.ts b/packages/council-core/src/models/token/ReadWriteToken.ts new file mode 100644 index 00000000..1241d6aa --- /dev/null +++ b/packages/council-core/src/models/token/ReadWriteToken.ts @@ -0,0 +1,56 @@ +import { + CachedReadWriteContract, + ContractWriteOptions, +} from "@delvtech/evm-client"; +import { ReadWriteContractFactory } from "src/contract/factory"; +import { ReadWriteContractModelOptions } from "src/models/Model"; +import { ReadToken } from "src/models/token/ReadToken"; +import { ERC20Abi } from "src/models/token/types"; + +/** + * @category Models + */ +export interface ReadWriteTokenOptions extends ReadWriteContractModelOptions {} + +/** + * @category Models + */ +export class ReadWriteToken extends ReadToken { + declare contract: CachedReadWriteContract; + declare contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteTokenOptions) { + super(options); + } + + /** + * Give a spending allowance to a given spender. + * @param spender - The address of the spender. + * @param amount - The amount of tokens the spender can spend. + * @returns The transaction hash. + */ + async approve({ + spender, + amount, + options, + }: { + owner?: `0x${string}`; + spender: `0x${string}`; + amount: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.contract.write( + "approve", + { + account: spender, + amount, + }, + options, + ); + this.contract.deleteRead("allowance", { + 0: await this.contract.getSignerAddress(), + 1: spender, + }); + return hash; + } +} diff --git a/packages/council-core/src/models/token/types.ts b/packages/council-core/src/models/token/types.ts new file mode 100644 index 00000000..6da3995d --- /dev/null +++ b/packages/council-core/src/models/token/types.ts @@ -0,0 +1,5 @@ +import { MockERC20 } from "@delvtech/council-artifacts/MockERC20"; + +// Using MockERC20 abi for convenience to make extending to the MockToken model +// more straightforward without having to keep track of two different abis. +export type ERC20Abi = typeof MockERC20.abi; diff --git a/packages/council-core/src/models/votingVault/ReadVotingVault.ts b/packages/council-core/src/models/votingVault/ReadVotingVault.ts new file mode 100644 index 00000000..cd715443 --- /dev/null +++ b/packages/council-core/src/models/votingVault/ReadVotingVault.ts @@ -0,0 +1,85 @@ +import { IVotingVault } from "@delvtech/council-artifacts/IVotingVault"; +import { CachedReadContract } from "@delvtech/evm-client"; +import { Model, ReadContractModelOptions } from "src/models/Model"; +import { ReadVoter } from "src/models/ReadVoter"; +import { VotingVaultAbi } from "src/models/votingVault/types"; +import { BlockLike } from "src/utils/blockToReadOptions"; +import { getBlockOrThrow } from "src/utils/getBlockOrThrow"; + +/** + * @category Models + */ +export interface ReadVotingVaultOptions extends ReadContractModelOptions {} + +/** + * A vault which stores voting power by address + * @category Models + */ +export class ReadVotingVault extends Model { + contract: CachedReadContract; + + constructor({ + name = "Voting Vault", + address, + contractFactory, + network, + cache, + namespace, + }: ReadVotingVaultOptions) { + super({ name, network, contractFactory }); + this.contract = contractFactory({ + abi: IVotingVault.abi, + address, + cache, + namespace, + }); + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get the usable voting power owned by a given address in this vault. + * @param extraData - ABI encoded optional extra data used by some vaults, + * such as merkle proofs. + */ + async getVotingPower({ + account, + atBlock = "latest", + extraData = "0x00", + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + extraData?: `0x${string}`; + }): Promise { + let blockNumber = atBlock; + + if (typeof blockNumber !== "bigint") { + const block = await getBlockOrThrow(this.network, blockNumber); + if (block.blockNumber === null) { + return 0n; + } + blockNumber = block.blockNumber; + } + + try { + return await this.contract.simulateWrite("queryVotePower", { + blockNumber, + extraData, + user: typeof account === "string" ? account : account.address, + }); + } catch (error) { + // queryVotePower throws an uninitialized an error if the account is not + // found/hasn't ever had voting power. + if (error instanceof Error && error.message.includes("uninitialized")) { + return 0n; + } + + throw error; + } + } +} diff --git a/packages/council-core/src/models/votingVault/gscVault/ReadGscVault.ts b/packages/council-core/src/models/votingVault/gscVault/ReadGscVault.ts new file mode 100644 index 00000000..1370d65b --- /dev/null +++ b/packages/council-core/src/models/votingVault/gscVault/ReadGscVault.ts @@ -0,0 +1,250 @@ +import { GSCVault } from "@delvtech/council-artifacts/GSCVault"; +import { CachedReadContract } from "@delvtech/evm-client"; +import { ReadContractModelOptions } from "src/models/Model"; +import { ReadVoter } from "src/models/ReadVoter"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { GscVaultAbi } from "src/models/votingVault/gscVault/types"; +import { BlockLike, blockToReadOptions } from "src/utils/blockToReadOptions"; +import { getBlockOrThrow } from "src/utils/getBlockOrThrow"; + +export interface ReadGscVaultOptions extends ReadContractModelOptions {} + +/** + * A VotingVault for the Governance Steering Council in which each member has a + * single vote and must maintain a minimum required voting power in the core + * voting vaults to remain eligible. + * @category Models + */ +export class ReadGscVault extends ReadVotingVault { + gscVaultContract: CachedReadContract; + + constructor({ + name = "GSC Vault", + address, + contractFactory, + network, + cache, + namespace, + }: ReadGscVaultOptions) { + super({ + address, + contractFactory, + network, + cache, + namespace, + name, + }); + this.gscVaultContract = contractFactory({ + abi: GSCVault.abi, + address, + cache, + namespace, + }); + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get the amount of voting power required to join this vault. + */ + getRequiredVotingPower({ + atBlock, + }: { + atBlock?: BlockLike; + } = {}): Promise { + return this.gscVaultContract.read( + "votingPowerBound", + undefined, + blockToReadOptions(atBlock), + ); + } + + /** + * Get all current members of this vault. + * @param fromBlock - The block number to start searching for members from. + * @param toBlock - The block number to stop searching for members at. + */ + async getMembers({ + fromBlock, + toBlock, + }: { + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const latestJoinTimestampByMember: Record<`0x${string}`, bigint> = {}; + + const joinEvents = await this.gscVaultContract.getEvents( + "MembershipProved", + { + fromBlock, + toBlock, + }, + ); + + // Capture the latest join date of each address. + for (const { + args: { who, when }, + } of joinEvents) { + if ( + !latestJoinTimestampByMember[who] || + when > latestJoinTimestampByMember[who] + ) { + latestJoinTimestampByMember[who] = when; + } + } + + const kickEvents = await this.gscVaultContract.getEvents("Kicked", { + fromBlock, + toBlock, + }); + + // Ignore addresses that were kicked after their latest join date. + for (const { + args: { who, when }, + } of kickEvents) { + // NOTE: the kickEvents store `when` as a block number whereas the + // joinEvents store `when` as a timestamp, so we must convert the block + // number to a timestamp so we can compare them. + const { timestamp: kickedTimestamp } = await getBlockOrThrow( + this.network, + when, + ); + + if ( + latestJoinTimestampByMember[who] && + kickedTimestamp > latestJoinTimestampByMember[who] + ) { + delete latestJoinTimestampByMember[who]; + } + } + + return Object.entries(latestJoinTimestampByMember).map( + ([address]) => + new ReadVoter({ + address: address as `0x${string}`, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + } + + /** + * Get all voters with voting power in this vault (alias for `getMembers`). + * @param fromBlock - The block number to start searching for voters from. + * @param toBlock - The block number to stop searching for voters at. + */ + getVoters( + ...args: Parameters + ): Promise { + return this.getMembers(...args); + } + + /** + * Get the join date of a given address. + */ + async getJoinDate({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const secondsTimestamp = await this.gscVaultContract.read( + "members", + { + 0: typeof account === "string" ? account : account.address, + }, + blockToReadOptions(atBlock), + ); + return secondsTimestamp ? new Date(Number(secondsTimestamp * 1000n)) : null; + } + + /** + * Get a boolean indicating whether a given voter is a current member. + */ + async getIsMember({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + return !!(await this.getJoinDate({ + account, + atBlock, + })); + } + + /** + * Get the time (in MS) that a new GSC member must wait after joining before + * they can vote. + */ + getIdleDuration({ atBlock }: { atBlock?: BlockLike } = {}): Promise { + return this.gscVaultContract.read( + "idleDuration", + {}, + blockToReadOptions(atBlock), + ); + } + + /** + * Get a boolean indicating whether a member is still in the idle duration. + * Idle members cannot vote. + */ + async getIsIdle({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const joinDate = await this.getJoinDate({ + account, + atBlock, + }); + const isMember = !!joinDate; + return ( + isMember && + joinDate.getTime() + + Number( + await this.getIdleDuration({ + atBlock, + }), + ) > + Date.now() + ); + } + + /** + * Get the voting vaults a member joined with. Used to prove the member meets + * the minimum voting power requirement. + */ + async getMemberVaults({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const vaultAddresses = await this.gscVaultContract.read( + "getUserVaults", + { + who: typeof account === "string" ? account : account.address, + }, + blockToReadOptions(atBlock), + ); + return vaultAddresses.map( + (address) => + new ReadVotingVault({ + address, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + } +} diff --git a/packages/council-core/src/models/votingVault/gscVault/ReadWriteGscVault.ts b/packages/council-core/src/models/votingVault/gscVault/ReadWriteGscVault.ts new file mode 100644 index 00000000..92f6061f --- /dev/null +++ b/packages/council-core/src/models/votingVault/gscVault/ReadWriteGscVault.ts @@ -0,0 +1,110 @@ +import { + CachedReadWriteContract, + ContractWriteOptions, +} from "@delvtech/evm-client"; +import { ReadWriteContractFactory } from "src/contract/factory"; +import { ReadWriteContractModelOptions } from "src/models/Model"; +import { ReadVoter } from "src/models/ReadVoter"; +import { ReadGscVault } from "src/models/votingVault/gscVault/ReadGscVault"; +import { GscVaultAbi } from "src/models/votingVault/gscVault/types"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; + +export interface ReadWriteGscVaultOptions + extends ReadWriteContractModelOptions {} + +export class ReadWriteGscVault extends ReadGscVault { + declare gscVaultContract: CachedReadWriteContract; + declare contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteGscVaultOptions) { + super(options); + } + + /** + * Set the idle duration for a member in this GSC vault. The idle duration is + * the amount of time a member must be a member before they can vote. + * @param duration - The new idle duration in seconds. + */ + async setIdleDuration({ + duration, + options, + }: { + duration: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.gscVaultContract.write( + "setIdleDuration", + { _idleDuration: duration }, + options, + ); + this.contract.clearCache(); + return hash; + } + + /** + * Become a member of this GSC vault. + * @param vaults - The addresses of the approved vaults the joining member has + * voting power in. This is used to prove the joining member meets the + * minimum voting power requirement. If voting power is moved to a different + * vault, the member will become ineligible until they join again with the + * new vault or risk being kicked. + * @returns The transaction hash. + */ + async join({ + vaults, + extraVaultData = [], + options, + }: { + vaults: (ReadVotingVault | `0x${string}`)[]; + /** + * Extra data given to the vaults to help calculation + */ + extraVaultData?: `0x${string}`[]; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const vaultAddresses = vaults.map((vault) => + typeof vault === "string" ? vault : vault.address, + ); + const hash = await this.gscVaultContract.write( + "proveMembership", + { + extraData: extraVaultData, + votingVaults: vaultAddresses, + }, + options, + ); + this.contract.clearCache(); + return hash; + } + + /** + * Remove a member that's become ineligible from this GSC vault. A member + * becomes ineligible when the voting power in the vaults they joined with + * drops below the required minimum. + * @param account - The address of the ineligible member to kick. + * @returns The transaction hash. + */ + async kick({ + account, + extraVaultData = [], + options, + }: { + account: ReadVoter | `0x${string}`; + /** + * The extra data the vaults need to load the member's voting power + */ + extraVaultData?: `0x${string}`[]; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.gscVaultContract.write( + "kick", + { + extraData: extraVaultData, + who: typeof account === "string" ? account : account.address, + }, + options, + ); + this.contract.clearCache(); + return hash; + } +} diff --git a/packages/council-core/src/models/votingVault/gscVault/types.ts b/packages/council-core/src/models/votingVault/gscVault/types.ts new file mode 100644 index 00000000..5c56b482 --- /dev/null +++ b/packages/council-core/src/models/votingVault/gscVault/types.ts @@ -0,0 +1,3 @@ +import { GSCVault } from "@delvtech/council-artifacts/GSCVault"; + +export type GscVaultAbi = typeof GSCVault.abi; diff --git a/packages/council-core/src/models/votingVault/lockingVault/ReadLockingVault.test.ts b/packages/council-core/src/models/votingVault/lockingVault/ReadLockingVault.test.ts new file mode 100644 index 00000000..a19324d0 --- /dev/null +++ b/packages/council-core/src/models/votingVault/lockingVault/ReadLockingVault.test.ts @@ -0,0 +1,134 @@ +import { NetworkStub } from "@delvtech/evm-client/stubs"; +import { ReadCouncil } from "src/models/council/ReadCouncil"; +import { LockingVaultAbi } from "src/models/votingVault/lockingVault/types"; +import { + CachedReadContractStub, + stubContractFactory, +} from "src/test/stubContractFactory"; +import { describe, expect, it } from "vitest"; + +const ALICE = "0x123"; +const BOB = "0x456"; +const CHARLIE = "0x789"; +const DAVE = "0xabc"; +const EVE = "0xdef"; + +describe("ReadLockingVault", () => { + function setupStub() { + const council = new ReadCouncil({ + contractFactory: stubContractFactory, + network: new NetworkStub(), + }); + + const lockingVault = council.lockingVault("0x"); + // The model doesn't know that the factory creates stubbed contracts. + const contractStub = + lockingVault.lockingVaultContract as CachedReadContractStub; + + return { council, lockingVault, contractStub }; + } + + it("Accurately breaks down voting power", async () => { + const { contractStub, lockingVault } = setupStub(); + + contractStub.stubEvents( + "VoteChange", + { filter: { to: undefined }, fromBlock: undefined, toBlock: undefined }, + [ + // Alice receives 100 + { + args: { + amount: 100n, + from: ALICE, + to: ALICE, + }, + eventName: "VoteChange", + }, + // Bob delegates 100 to Alice + { + args: { + amount: 100n, + from: BOB, + to: ALICE, + }, + eventName: "VoteChange", + }, + // Charlie delegates 100 to Alice + { + args: { + amount: 100n, + from: CHARLIE, + to: ALICE, + }, + eventName: "VoteChange", + }, + // Dave delegates 100 to Alice + { + args: { + amount: 100n, + from: DAVE, + to: ALICE, + }, + eventName: "VoteChange", + }, + // Eve receives 100 + { + args: { + amount: 100n, + from: EVE, + to: EVE, + }, + eventName: "VoteChange", + }, + // Bob changes his delegation of 100 from Alice to Eve + { + args: { + amount: -100n, + from: BOB, + to: ALICE, + }, + eventName: "VoteChange", + }, + { + args: { + amount: 100n, + from: BOB, + to: EVE, + }, + eventName: "VoteChange", + }, + ], + ); + + const powerBreakdown = await lockingVault.getVotingPowerBreakdown(); + + expect(powerBreakdown).toEqual([ + { + voter: expect.objectContaining({ address: ALICE }), + votingPower: 300n, + votingPowerFromAllDelegators: 200n, + votingPowerByDelegator: [ + { + voter: expect.objectContaining({ address: CHARLIE }), + votingPower: 100n, + }, + { + voter: expect.objectContaining({ address: DAVE }), + votingPower: 100n, + }, + ], + }, + { + voter: expect.objectContaining({ address: EVE }), + votingPower: 200n, + votingPowerFromAllDelegators: 100n, + votingPowerByDelegator: [ + { + voter: expect.objectContaining({ address: BOB }), + votingPower: 100n, + }, + ], + }, + ]); + }); +}); diff --git a/packages/council-core/src/models/votingVault/lockingVault/ReadLockingVault.ts b/packages/council-core/src/models/votingVault/lockingVault/ReadLockingVault.ts new file mode 100644 index 00000000..2fa43aa7 --- /dev/null +++ b/packages/council-core/src/models/votingVault/lockingVault/ReadLockingVault.ts @@ -0,0 +1,378 @@ +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; +import { CachedReadContract } from "@delvtech/evm-client"; +import { ReadContractModelOptions } from "src/models/Model"; +import { ReadVoter } from "src/models/ReadVoter"; +import { ReadToken } from "src/models/token/ReadToken"; +import { LockingVaultAbi } from "src/models/votingVault/lockingVault/types"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { VoterPowerBreakdown } from "src/models/votingVault/types"; +import { BlockLike, blockToReadOptions } from "src/utils/blockToReadOptions"; +import { getBlockOrThrow } from "src/utils/getBlockOrThrow"; +import { getOrSet } from "src/utils/getOrSet"; + +export interface ReadLockingVaultOptions extends ReadContractModelOptions {} + +/** + * A VotingVault that gives voting power for depositing tokens. + * @category Models + */ +export class ReadLockingVault extends ReadVotingVault { + lockingVaultContract: CachedReadContract; + + constructor({ + name = "Locking Vault", + address, + contractFactory, + network, + cache, + namespace, + }: ReadLockingVaultOptions) { + super({ + address, + contractFactory, + network, + cache, + namespace, + name, + }); + this.lockingVaultContract = contractFactory({ + abi: LockingVault.abi, + address, + cache, + namespace, + }); + } + + /** + * Get the associated token for this LockingVault. + */ + async getToken(): Promise { + return new ReadToken({ + address: await this.lockingVaultContract.read("token"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Get the amount of tokens that a given `address` has deposited into this + * vault. + */ + async getDepositedBalance({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const deposits = await this.lockingVaultContract.read( + "deposits", + { + who: typeof account === "string" ? account : account.address, + }, + blockToReadOptions(atBlock), + ); + return deposits[1]; + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get all participants with voting power in this vault. + * @param fromBlock - Include all voters that had power on or after this block number. + * @param toBlock - Include all voters that had power on or before this block number. + */ + async getVoters({ + fromBlock, + toBlock, + }: { + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const powerByVoter = await this._getPowerByVoter({ + fromBlock, + toBlock, + }); + return Object.keys(powerByVoter).map( + ([address]) => + new ReadVoter({ + address: address as `0x${string}`, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + } + + /** + * Get all participants that have voting power in this vault along with their + * voting power, the amount of voting power being delegated to them, and the + * amount of power delegated to them by each delegator. This is a convenience + * method to fetch voting power and delegation data for a large number of + * voters in a single call. + * @param account - Get a breakdown for a specific account. + * @param fromBlock - Include all voters that had power on or after this block + * number. + * @param toBlock - Include all voters that had power on or before this block + * number. + */ + async getVotingPowerBreakdown({ + account, + fromBlock, + toBlock, + }: { + account?: `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const voteChangeEvents = await this.lockingVaultContract.getEvents( + "VoteChange", + { + filter: { + to: account, + }, + fromBlock, + toBlock, + }, + ); + + const breakdownByVoter: Record< + `0x${string}`, + { + power: bigint; + powerFromAllDelegators: bigint; + powerByDelegator: Record<`0x${string}`, bigint>; + } + > = {}; + + for (const { + args: { from, to, amount }, + } of voteChangeEvents) { + if (!breakdownByVoter[to]) { + breakdownByVoter[to] = { + power: 0n, + powerFromAllDelegators: 0n, + powerByDelegator: {}, + }; + } + + breakdownByVoter[to].power += amount; + + // ignore self-delegation + if (from !== to) { + breakdownByVoter[to].powerFromAllDelegators += amount; + breakdownByVoter[to].powerByDelegator[from] = + (breakdownByVoter[to].powerByDelegator[from] ?? 0n) + amount; + } + } + + const voterMap = new Map<`0x${string}`, ReadVoter>(); + + return Object.entries(breakdownByVoter) + .filter(([, { power }]) => power > 0) + .map( + ([_address, { power, powerByDelegator, powerFromAllDelegators }]) => { + const address = _address as `0x${string}`; + + const voter = getOrSet({ + key: address, + cache: voterMap, + callback: () => + new ReadVoter({ + address, + contractFactory: this.contractFactory, + network: this.network, + }), + }); + + const votingPowerByDelegator = Object.entries(powerByDelegator) + .filter(([, votingPower]) => votingPower > 0n) + .map(([_address, votingPower]) => { + const address = _address as `0x${string}`; + const voter = getOrSet({ + key: address, + cache: voterMap, + callback: () => + new ReadVoter({ + address, + contractFactory: this.contractFactory, + network: this.network, + }), + }); + return { + voter, + votingPower, + }; + }); + + return { + voter, + votingPower: power, + votingPowerFromAllDelegators: powerFromAllDelegators, + votingPowerByDelegator, + }; + }, + ); + } + + /** + * Get the number of blocks before the delegation history is forgotten. Voting + * power from this vault can't be used on proposals that are older than the + * stale block lag. + */ + getStaleBlockLag(): Promise { + return this.lockingVaultContract.read("staleBlockLag"); + } + + /** + * Get the voting power for a given address at a given block without + * accounting for the stale block lag. + */ + async getHistoricalVotingPower({ + account, + atBlock, + }: { + account: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + let blockNumber = atBlock; + + if (typeof blockNumber !== "bigint") { + const block = await getBlockOrThrow(this.network, atBlock); + blockNumber = block.blockNumber ?? undefined; + } + + if (blockNumber === undefined) { + return 0n; + } + + return this.lockingVaultContract.read("queryVotePowerView", { + user: account, + blockNumber, + }); + } + + /** + * Get the sum of voting power held by all voters in this vault. + * @param atBlock - Get the total held at this block number. + */ + async getTotalVotingPower({ + atBlock, + }: { + atBlock?: BlockLike; + } = {}): Promise { + const powerByVoter = await this._getPowerByVoter({ + toBlock: atBlock, + }); + return Object.values(powerByVoter).reduce((sum, power) => sum + power, 0n); + } + + /** + * Get the current delegate of a given account. + */ + async getDelegate({ + account, + atBlock, + }: { + account: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const { 0: address } = await this.lockingVaultContract.read( + "deposits", + { + who: account, + }, + blockToReadOptions(atBlock), + ); + return new ReadVoter({ + address, + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Get all voters delegated to a given account in this vault. + */ + async getDelegatorsTo({ + account, + atBlock, + }: { + account: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + let toBlock = atBlock; + + if (typeof toBlock !== "bigint") { + const { blockNumber } = await getBlockOrThrow(this.network, toBlock); + toBlock = blockNumber ?? undefined; + } + + const voteChangeEvents = await this.lockingVaultContract.getEvents( + "VoteChange", + { + filter: { + to: account, + }, + toBlock, + }, + ); + + const powerByDelegators: Record<`0x${string}`, bigint> = {}; + for (const { + args: { from, amount }, + } of voteChangeEvents) { + // ignore self-delegation + if (from !== account) { + powerByDelegators[from] = (powerByDelegators[from] ?? 0n) + amount; + } + } + + return Object.entries(powerByDelegators) + .filter(([, power]) => power > 0) + .map( + ([address]) => + new ReadVoter({ + address: address as `0x${string}`, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + } + + private async _getPowerByVoter({ + account, + fromBlock, + toBlock, + }: { + account?: `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise> { + const voteChangeEvents = await this.lockingVaultContract.getEvents( + "VoteChange", + { + filter: { + to: account, + }, + fromBlock, + toBlock, + }, + ); + + const powerByVoter: Record<`0x${string}`, bigint> = {}; + for (const { + args: { to, amount }, + } of voteChangeEvents) { + powerByVoter[to] = (powerByVoter[to] ?? 0n) + amount; + } + + return Object.fromEntries( + Object.entries(powerByVoter).filter(([, power]) => power > 0n), + ); + } +} diff --git a/packages/council-core/src/models/votingVault/lockingVault/ReadWriteLockingVault.ts b/packages/council-core/src/models/votingVault/lockingVault/ReadWriteLockingVault.ts new file mode 100644 index 00000000..21e4db07 --- /dev/null +++ b/packages/council-core/src/models/votingVault/lockingVault/ReadWriteLockingVault.ts @@ -0,0 +1,111 @@ +import { + CachedReadWriteContract, + ContractWriteOptions, +} from "@delvtech/evm-client"; +import { ReadWriteContractFactory } from "src/contract/factory"; +import { ReadWriteContractModelOptions } from "src/models/Model"; +import { ReadWriteToken } from "src/models/token/ReadWriteToken"; +import { ReadLockingVault } from "src/models/votingVault/lockingVault/ReadLockingVault"; +import { LockingVaultAbi } from "src/models/votingVault/lockingVault/types"; + +export interface ReadWriteLockingVaultOptions + extends ReadWriteContractModelOptions {} + +export class ReadWriteLockingVault extends ReadLockingVault { + declare lockingVaultContract: CachedReadWriteContract; + declare contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteLockingVaultOptions) { + super(options); + } + + override async getToken(): Promise { + return new ReadWriteToken({ + address: await this.lockingVaultContract.read("token"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Change current delegate. + * @param delegate - The address to delegate to. + * @returns The transaction hash. + */ + async changeDelegate({ + delegate, + options, + }: { + delegate: `0x${string}`; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.lockingVaultContract.write( + "changeDelegation", + { newDelegate: delegate }, + options, + ); + this.contract.clearCache(); + return hash; + } + + /** + * Deposit tokens into this vault. + * @param account - The address to credit this deposit to. Defaults to the + * signer's address. + * @param amount - The amount of tokens to deposit. (formatted decimal string) + * @param firstDelegate - The address to delegate the resulting voting power + * to if the account doesn't already have a delegate. Defaults to funded + * account being credited. + * @returns The transaction hash. + */ + async deposit({ + account, + amount, + firstDelegate, + options, + }: { + account?: `0x${string}`; + amount: bigint; + firstDelegate?: `0x${string}`; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const fundedAccount = + account ?? (await this.lockingVaultContract.getSignerAddress()); + const hash = await this.lockingVaultContract.write( + "deposit", + { + amount, + fundedAccount, + firstDelegation: firstDelegate ?? fundedAccount, + }, + options, + ); + this.contract.clearCache(); + const token = await this.getToken(); + token.contract.clearCache(); + return hash; + } + + /** + * Withdraw tokens from this vault. + * @param amount - The amount of tokens to withdraw. (formatted decimal string) + * @returns The transaction hash. + */ + async withdraw({ + amount, + options, + }: { + amount: bigint; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.lockingVaultContract.write( + "withdraw", + { amount }, + options, + ); + this.contract.clearCache(); + const token = await this.getToken(); + token.contract.clearCache(); + return hash; + } +} diff --git a/packages/council-core/src/models/votingVault/lockingVault/types.ts b/packages/council-core/src/models/votingVault/lockingVault/types.ts new file mode 100644 index 00000000..8e2b1800 --- /dev/null +++ b/packages/council-core/src/models/votingVault/lockingVault/types.ts @@ -0,0 +1,3 @@ +import { LockingVault } from "@delvtech/council-artifacts/LockingVault"; + +export type LockingVaultAbi = typeof LockingVault.abi; diff --git a/packages/council-sdk/src/models/votingVault/types.ts b/packages/council-core/src/models/votingVault/types.ts similarity index 53% rename from packages/council-sdk/src/models/votingVault/types.ts rename to packages/council-core/src/models/votingVault/types.ts index 05cf08c4..d06c9fd5 100644 --- a/packages/council-sdk/src/models/votingVault/types.ts +++ b/packages/council-core/src/models/votingVault/types.ts @@ -1,8 +1,11 @@ -import { Voter } from "src/models/Voter"; +import { IVotingVault } from "@delvtech/council-artifacts/IVotingVault"; +import { ReadVoter } from "src/models/ReadVoter"; + +export type VotingVaultAbi = typeof IVotingVault.abi; export interface VoterWithPower { - voter: Voter; - votingPower: string; + voter: ReadVoter; + votingPower: bigint; } export interface VoterPowerBreakdown extends VoterWithPower { @@ -10,10 +13,10 @@ export interface VoterPowerBreakdown extends VoterWithPower { * The total voting power from all wallets delegated to this voter. Does not * include self-delegation. */ - votingPowerFromDelegators: string; + votingPowerFromAllDelegators: bigint; /** * All wallets delegated to this voter with the power they're delegating. Does * not include self-delegation. */ - delegators: VoterWithPower[]; + votingPowerByDelegator: VoterWithPower[]; } diff --git a/packages/council-core/src/models/votingVault/vestingVault/ReadVestingVault.ts b/packages/council-core/src/models/votingVault/vestingVault/ReadVestingVault.ts new file mode 100644 index 00000000..7779067f --- /dev/null +++ b/packages/council-core/src/models/votingVault/vestingVault/ReadVestingVault.ts @@ -0,0 +1,438 @@ +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { CachedReadContract } from "@delvtech/evm-client"; +import Big from "big.js"; +import { ReadContractModelOptions } from "src/models/Model"; +import { ReadVoter } from "src/models/ReadVoter"; +import { ReadToken } from "src/models/token/ReadToken"; +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; +import { VoterPowerBreakdown } from "src/models/votingVault/types"; +import { + Grant, + VestingVaultAbi, +} from "src/models/votingVault/vestingVault/types"; +import { BlockLike, blockToReadOptions } from "src/utils/blockToReadOptions"; +import { getBlockOrThrow } from "src/utils/getBlockOrThrow"; +import { getOrSet } from "src/utils/getOrSet"; + +export interface ReadVestingVaultOptions extends ReadContractModelOptions {} + +/** + * A VotingVault that gives voting power for receiving grants and applies a + * multiplier on unvested tokens to reduce their voting power. + * @category Models + */ +export class ReadVestingVault extends ReadVotingVault { + vestingVaultContract: CachedReadContract; + + constructor({ + name = "Vesting Vault", + address, + contractFactory, + network, + cache, + namespace, + }: ReadVestingVaultOptions) { + super({ + address, + contractFactory, + network, + cache, + namespace, + name, + }); + this.vestingVaultContract = contractFactory({ + abi: VestingVault.abi, + address, + cache, + namespace, + }); + } + + get address(): `0x${string}` { + return this.contract.address; + } + get namespace(): string | undefined { + return this.contract.namespace; + } + + /** + * Get this vault's token. + */ + async getToken(): Promise { + return new ReadToken({ + address: await this.vestingVaultContract.read("token"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Get this vault's unvested multiplier, a number that represents the voting + * power of each unvested token as a percentage of a vested token. For example + * if unvested tokens have 50% voting power compared to vested ones, this + * value would be 50. + */ + getUnvestedMultiplier({ + atBlock, + }: { atBlock?: BlockLike } = {}): Promise { + return this.vestingVaultContract.read( + "unvestedMultiplier", + undefined, + blockToReadOptions(atBlock), + ); + } + + /** + * Get the grant data for a given address. + */ + getGrant({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + return this.vestingVaultContract.read( + "getGrant", + { + _who: typeof account === "string" ? account : account.address, + }, + blockToReadOptions(atBlock), + ); + } + + /** + * Gets the amount of tokens currently claimable from the grant. + * Mimics internal function https://github.com/delvtech/council/blob/main/contracts/vaults/VestingVault.sol#L434 + * @param account - The grantee account address. + * @returns The amount of claimable tokens. + */ + async getWithdrawableAmount({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + let blockNumber = atBlock; + + if (typeof blockNumber !== "bigint") { + const block = await getBlockOrThrow(this.network, blockNumber); + if (block.blockNumber === null) { + return 0n; + } + blockNumber = block.blockNumber; + } + + const { allocation, created, cliff, expiration, withdrawn } = + await this.getGrant({ + account: account, + atBlock, + }); + + // funds are not unlocked + if (blockNumber < cliff) { + return 0n; + } + + // all funds are claimable + if (blockNumber >= expiration) { + return allocation - withdrawn; + } + + const blocksSinceCreated = blockNumber - created; + const grantDuration = expiration - created; + const amount = Big(String(allocation)) + .mul(String(blocksSinceCreated)) + .div(String(grantDuration)); + + return BigInt(amount.toFixed()) - withdrawn; + } + + /** + * Get all participants that have voting power in this vault. + * @param fromBlock - Include all voters that had power on or after this block number. + * @param toBlock - Include all voters that had power on or before this block number. + */ + async getVoters({ + fromBlock, + toBlock, + }: { + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + const powerByVoter = await this._getPowerByVoter({ + fromBlock, + toBlock, + }); + return Object.keys(powerByVoter).map( + (address) => + new ReadVoter({ + address: address as `0x${string}`, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + } + + /** + * Get all participants that have voting power in this vault along with their + * voting power, the amount of voting power being delegated to them, and the + * amount of power delegated to them by each delegator. This is a convenience + * method to fetch voting power and delegation data for a large number of + * voters in a single call. + * @param account - Get a breakdown for a specific account. + * @param fromBlock - Include all voters that had power on or after this block + * number. + * @param toBlock - Include all voters that had power on or before this block + * number. + */ + async getVotingPowerBreakdown({ + account, + fromBlock, + toBlock, + }: { + account?: `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise { + // const breakdownByVoter = await this._getPowerBreakdownByVoter(options); + const voteChangeEvents = await this.vestingVaultContract.getEvents( + "VoteChange", + { + filter: { + to: account, + }, + fromBlock, + toBlock, + }, + ); + + const breakdownByVoter: Record< + `0x${string}`, + { + power: bigint; + powerFromAllDelegators: bigint; + powerByDelegator: Record<`0x${string}`, bigint>; + } + > = {}; + + for (const { + args: { from, to, amount }, + } of voteChangeEvents) { + if (!breakdownByVoter[to]) { + breakdownByVoter[to] = { + power: 0n, + powerFromAllDelegators: 0n, + powerByDelegator: {}, + }; + } + + breakdownByVoter[to].power += amount; + + // ignore self-delegation + if (from !== to) { + breakdownByVoter[to].powerFromAllDelegators += amount; + breakdownByVoter[to].powerByDelegator[from] = + (breakdownByVoter[to].powerByDelegator[from] ?? 0n) + amount; + } + } + + const voterMap = new Map<`0x${string}`, ReadVoter>(); + + return Object.entries(breakdownByVoter) + .filter(([, { power }]) => power > 0) + .map( + ([_address, { power, powerByDelegator, powerFromAllDelegators }]) => { + const address = _address as `0x${string}`; + + const voter = getOrSet({ + key: address, + cache: voterMap, + callback: () => + new ReadVoter({ + address, + contractFactory: this.contractFactory, + network: this.network, + }), + }); + + const votingPowerByDelegator = Object.entries(powerByDelegator) + .filter(([, votingPower]) => votingPower > 0n) + .map(([_address, votingPower]) => { + const address = _address as `0x${string}`; + const voter = getOrSet({ + key: address, + cache: voterMap, + callback: () => + new ReadVoter({ + address, + contractFactory: this.contractFactory, + network: this.network, + }), + }); + return { + voter, + votingPower, + }; + }); + + return { + voter, + votingPower: power, + votingPowerFromAllDelegators: powerFromAllDelegators, + votingPowerByDelegator, + }; + }, + ); + } + + /** + * Get the number of blocks before the delegation history is forgotten. Voting + * power from this vault can't be used on proposals that are older than the + * stale block lag. + */ + getStaleBlockLag(): Promise { + return this.vestingVaultContract.read("staleBlockLag"); + } + + /** + * Get the voting power for a given address at a given block without + * accounting for the stale block lag. + * @param account + * @param atBlock + * @returns The historical voting power of the given address. + */ + async getHistoricalVotingPower({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + let blockNumber = atBlock; + + if (typeof blockNumber !== "bigint") { + const block = await getBlockOrThrow(this.network, blockNumber); + if (block.blockNumber === null) { + return 0n; + } + blockNumber = block.blockNumber; + } + + return this.vestingVaultContract.read("queryVotePowerView", { + user: typeof account === "string" ? account : account.address, + blockNumber, + }); + } + + /** + * Get the sum of voting power held by all voters in this vault. + * @param atBlock - Get the total held at this block number. + */ + async getTotalVotingPower({ + atBlock, + }: { + atBlock?: BlockLike; + } = {}): Promise { + const powerByVoter = await this._getPowerByVoter({ + toBlock: atBlock, + }); + return Object.values(powerByVoter).reduce((sum, power) => sum + power, 0n); + } + + /** + * Get the current delegate of a given account. + */ + async getDelegate({ + account, + atBlock, + }: { + account: ReadVoter | `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const { delegatee } = await this.getGrant({ + account, + atBlock, + }); + return new ReadVoter({ + address: delegatee, + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Get all voters delegated to a given address in this vault. + */ + async getDelegatorsTo({ + account, + atBlock, + }: { + account: `0x${string}`; + atBlock?: BlockLike; + }): Promise { + const voteChangeEvents = await this.vestingVaultContract.getEvents( + "VoteChange", + { + filter: { + to: account, + }, + toBlock: atBlock, + }, + ); + + const powerByDelegators: Record<`0x${string}`, bigint> = {}; + for (const { + args: { from, amount }, + } of voteChangeEvents) { + // ignore self-delegation + if (from !== account) { + powerByDelegators[from] = (powerByDelegators[from] ?? 0n) + amount; + } + } + + return Object.entries(powerByDelegators) + .filter(([, power]) => power > 0) + .map( + ([address]) => + new ReadVoter({ + address: address as `0x${string}`, + contractFactory: this.contractFactory, + network: this.network, + }), + ); + } + + private async _getPowerByVoter({ + address, + fromBlock, + toBlock, + }: { + address?: `0x${string}`; + fromBlock?: BlockLike; + toBlock?: BlockLike; + } = {}): Promise> { + const voteChangeEvents = await this.vestingVaultContract.getEvents( + "VoteChange", + { + filter: { + to: address, + }, + fromBlock, + toBlock, + }, + ); + + const powerByVoter: Record<`0x${string}`, bigint> = {}; + for (const { + args: { to, amount }, + } of voteChangeEvents) { + powerByVoter[to] = (powerByVoter[to] ?? 0n) + amount; + } + + return Object.fromEntries( + Object.entries(powerByVoter).filter(([, power]) => power > 0n), + ); + } +} diff --git a/packages/council-core/src/models/votingVault/vestingVault/ReadWriteVestingVault.ts b/packages/council-core/src/models/votingVault/vestingVault/ReadWriteVestingVault.ts new file mode 100644 index 00000000..60d2208c --- /dev/null +++ b/packages/council-core/src/models/votingVault/vestingVault/ReadWriteVestingVault.ts @@ -0,0 +1,72 @@ +import { + CachedReadWriteContract, + ContractWriteOptions, +} from "@delvtech/evm-client"; +import { ReadWriteContractFactory } from "src/contract/factory"; +import { ReadWriteContractModelOptions } from "src/models/Model"; +import { ReadWriteToken } from "src/models/token/ReadWriteToken"; +import { ReadVestingVault } from "src/models/votingVault/vestingVault/ReadVestingVault"; +import { VestingVaultAbi } from "src/models/votingVault/vestingVault/types"; + +interface ReadWriteVestingVaultOptions extends ReadWriteContractModelOptions {} + +export class ReadWriteVestingVault extends ReadVestingVault { + declare vestingVaultContract: CachedReadWriteContract; + declare contractFactory: ReadWriteContractFactory; + + constructor(options: ReadWriteVestingVaultOptions) { + super(options); + } + + override async getToken(): Promise { + return new ReadWriteToken({ + address: await this.vestingVaultContract.read("token"), + contractFactory: this.contractFactory, + network: this.network, + }); + } + + /** + * Change current delegate. + * @param delegate - The address to delegate to. Defaults to the signer's + * address. + * @returns The transaction hash. + */ + async changeDelegate({ + delegate, + options, + }: { + delegate: `0x${string}`; + options?: ContractWriteOptions; + }): Promise<`0x${string}`> { + const hash = await this.vestingVaultContract.write( + "delegate", + { + _to: delegate, + }, + options, + ); + this.contract.clearCache(); + return hash; + } + + /** + * Claim a grant and withdraw the tokens. + * @returns The transaction hash. + */ + async claim({ + options, + }: { + options?: ContractWriteOptions; + } = {}): Promise<`0x${string}`> { + const hash = await this.vestingVaultContract.write( + "claim", + undefined, + options, + ); + const token = await this.getToken(); + token.contract.clearCache(); + this.contract.clearCache(); + return hash; + } +} diff --git a/packages/council-core/src/models/votingVault/vestingVault/types.ts b/packages/council-core/src/models/votingVault/vestingVault/types.ts new file mode 100644 index 00000000..373ebd0d --- /dev/null +++ b/packages/council-core/src/models/votingVault/vestingVault/types.ts @@ -0,0 +1,5 @@ +import { VestingVault } from "@delvtech/council-artifacts/VestingVault"; +import { FunctionReturn } from "@delvtech/evm-client"; + +export type VestingVaultAbi = typeof VestingVault.abi; +export type Grant = FunctionReturn; diff --git a/packages/council-core/src/test/stubContractFactory.ts b/packages/council-core/src/test/stubContractFactory.ts new file mode 100644 index 00000000..444596c7 --- /dev/null +++ b/packages/council-core/src/test/stubContractFactory.ts @@ -0,0 +1,26 @@ +import { + CachedReadContract, + createCachedReadContract, +} from "@delvtech/evm-client"; +import { ReadContractStub } from "@delvtech/evm-client/stubs"; +import { Abi } from "abitype"; +import { ContractFactoryOptions } from "src/exports"; +import { Prettify } from "src/types"; + +/** + * A cached read contract combined with a read contract stub. + */ +export type CachedReadContractStub = Prettify< + CachedReadContract & ReadContractStub +>; + +/** + * A factory for creating cached read contract stubs. + */ +export function stubContractFactory({ + abi, +}: ContractFactoryOptions): CachedReadContractStub { + return createCachedReadContract({ + contract: new ReadContractStub(abi), + }) as CachedReadContractStub; +} diff --git a/packages/council-core/src/types.ts b/packages/council-core/src/types.ts new file mode 100644 index 00000000..0719b023 --- /dev/null +++ b/packages/council-core/src/types.ts @@ -0,0 +1,3 @@ +export type Prettify = { + [K in keyof T]: T[K]; +} & unknown; diff --git a/packages/council-core/src/utils/blockToReadOptions.ts b/packages/council-core/src/utils/blockToReadOptions.ts new file mode 100644 index 00000000..eb4de138 --- /dev/null +++ b/packages/council-core/src/utils/blockToReadOptions.ts @@ -0,0 +1,22 @@ +import { BlockTag, ContractReadOptions } from "@delvtech/evm-client"; + +export type BlockLike = BlockTag | bigint; + +export function blockToReadOptions( + block?: BlockLike, +): ContractReadOptions | undefined { + switch (typeof block) { + case "bigint": + return { + blockNumber: block, + }; + + case "string": + return { + blockTag: block, + }; + + default: + return undefined; + } +} diff --git a/packages/council-core/src/utils/formatUnits.ts b/packages/council-core/src/utils/formatUnits.ts new file mode 100644 index 00000000..08a7b2f6 --- /dev/null +++ b/packages/council-core/src/utils/formatUnits.ts @@ -0,0 +1,5 @@ +import Big from "big.js"; + +export function formatUnits(value: number | bigint, decimals: number): string { + return Big(String(value)).div(Big(10).pow(decimals)).toFixed(decimals); +} diff --git a/packages/council-core/src/utils/getBlockOrThrow.ts b/packages/council-core/src/utils/getBlockOrThrow.ts new file mode 100644 index 00000000..b8704264 --- /dev/null +++ b/packages/council-core/src/utils/getBlockOrThrow.ts @@ -0,0 +1,19 @@ +import { Block, Network } from "@delvtech/evm-client"; +import { BlockNotFoundError } from "src/errors/BlockNotFound"; +import { BlockLike, blockToReadOptions } from "src/utils/blockToReadOptions"; + +/** + * A utility that tries to fetch a block from a given network and throws an + * error if no block is found. + * @throws `BlockNotFoundError` + */ +export async function getBlockOrThrow( + network: Network, + block?: BlockLike, +): Promise { + const fetched = await network.getBlock(blockToReadOptions(block)); + if (!fetched) { + throw new BlockNotFoundError(block); + } + return fetched; +} diff --git a/packages/council-core/src/utils/getEventsWithSplitAndRetry.ts b/packages/council-core/src/utils/getEventsWithSplitAndRetry.ts new file mode 100644 index 00000000..d45eae8d --- /dev/null +++ b/packages/council-core/src/utils/getEventsWithSplitAndRetry.ts @@ -0,0 +1,104 @@ +import { + ContractGetEventsOptions, + Event, + EventName, + Network, + ReadContract, +} from "@delvtech/evm-client"; +import { Abi } from "abitype"; + +/** + * Fetch events from a contract, splitting the range of blocks in half and + * sending 2 smaller requests if the original request fails. This repeats + * until the attempts are exhausted. + */ +export async function getEventsWithSplitAndRetry< + TAbi extends Abi, + TEventName extends EventName, +>({ + eventName, + contract, + network, + attemptsLeft, + options, +}: { + eventName: TEventName; + contract: ReadContract; + network: Network; + attemptsLeft: number; + options?: ContractGetEventsOptions; +}): Promise[]> { + if (attemptsLeft <= 0) { + throw new Error(`Max attempts reached for fetching events: ${eventName}`); + } + + return contract.getEvents(eventName, options).catch(async (error) => { + let fromBlock = options?.fromBlock; + let toBlock = options?.toBlock; + + // Unable to make ranges with these blocks + if (typeof fromBlock === "string" && fromBlock !== "earliest") { + throw new Error( + `Unable to split block range with fromBlock: ${fromBlock}, for event: ${eventName}\n\n${error.message}`, + ); + } + if (typeof toBlock === "string" && toBlock === "earliest") { + throw new Error( + `Unable to split block range with toBlock: ${toBlock}, for event: ${eventName}\n\n${error.message}`, + ); + } + + // Set default values for fromBlock and toBlock + if (typeof fromBlock !== "bigint") { + fromBlock = 0n; + } + if (typeof toBlock !== "bigint") { + const block = await network.getBlock(); + if (!block?.blockNumber) { + throw new Error( + `Unable to get latest block for event: ${eventName}\n\n${error.message}`, + ); + } + toBlock = block.blockNumber; + } + + // No range to split + if (fromBlock === toBlock) { + throw error; + } + + const middleBlock = (fromBlock + toBlock) / 2n; + + console.warn("Failed to fetch events:", { + address: contract.address, + eventName, + options, + attemptsLeft, + }); + + const firstHalf = await getEventsWithSplitAndRetry({ + eventName, + contract, + network, + options: { + ...options, + fromBlock, + toBlock: middleBlock, + }, + attemptsLeft: attemptsLeft - 1, + }); + const secondHalf = await getEventsWithSplitAndRetry({ + eventName, + contract, + network, + options: { + ...options, + fromBlock: middleBlock + 1n, + toBlock, + }, + attemptsLeft: attemptsLeft - 1, + }); + + return firstHalf.concat(secondHalf); + }); +} diff --git a/packages/council-core/src/utils/getOrSet.ts b/packages/council-core/src/utils/getOrSet.ts new file mode 100644 index 00000000..32369d70 --- /dev/null +++ b/packages/council-core/src/utils/getOrSet.ts @@ -0,0 +1,16 @@ +export function getOrSet({ + cache, + callback, + key, +}: { + key: string; + cache: Map; + callback: () => TValue; +}): TValue { + if (cache.has(key)) { + return cache.get(key)!; + } + const value = callback(); + cache.set(key, value); + return value; +} diff --git a/packages/council-core/src/utils/getVaultsWithPower.ts b/packages/council-core/src/utils/getVaultsWithPower.ts new file mode 100644 index 00000000..8c355390 --- /dev/null +++ b/packages/council-core/src/utils/getVaultsWithPower.ts @@ -0,0 +1,21 @@ +import { ReadVotingVault } from "src/models/votingVault/ReadVotingVault"; + + +export async function getVaultsWithPower( + account: `0x${string}`, + vaults: ReadVotingVault[], +): Promise { + const vaultsWithPower: ReadVotingVault[] = []; + + for (const vault of vaults) { + // Some vaults may throw an error when voting power is zero or cannot find + // found. The catch block ensures this does not interrupt any voting flows. + const votingPower = await vault.getVotingPower({ account: account }).catch(() => 0n); + + if (votingPower > 0n) { + vaultsWithPower.push(vault); + } + } + + return vaultsWithPower; +} diff --git a/packages/council-core/tsconfig.json b/packages/council-core/tsconfig.json new file mode 100644 index 00000000..7a8bf91c --- /dev/null +++ b/packages/council-core/tsconfig.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@council/tsconfig/base.json", + "include": ["src"], + "exclude": ["node_modules"], + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "target": "ESNext", + "lib": ["ESNext"], + "rootDir": ".", + "baseUrl": ".", + "outDir": "dist", + "paths": { + "src/*": ["src/*"], + }, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + }, +} diff --git a/packages/council-core/tsup.config.ts b/packages/council-core/tsup.config.ts new file mode 100644 index 00000000..b8aa555c --- /dev/null +++ b/packages/council-core/tsup.config.ts @@ -0,0 +1,31 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + // Splitting the entry points in foundational packages like this makes it + // easier for wrapper packages to re-export `*` from some entry points and + // specific exports from others that it needs to augment or modify. + // Otherwise, if the wrapper package overwrites any of the exports, it would + // have to re-export all of the foundational package's exports individually. + entry: [ + "src/exports/index.ts", + "src/exports/airdrop.ts", + "src/exports/council.ts", + "src/exports/errors.ts", + "src/exports/contract.ts", + "src/exports/model.ts", + "src/exports/proposal.ts", + "src/exports/token.ts", + "src/exports/utils.ts", + "src/exports/vaults.ts", + "src/exports/vote.ts", + "src/exports/voter.ts", + "src/exports/voting.ts", + ], + format: ["esm"], + sourcemap: true, + dts: true, + clean: true, + minify: true, + shims: true, + cjsInterop: true, +}); diff --git a/packages/council-sdk/typedoc.json b/packages/council-core/typedoc.json similarity index 100% rename from packages/council-sdk/typedoc.json rename to packages/council-core/typedoc.json diff --git a/packages/council-core/vitest.config.ts b/packages/council-core/vitest.config.ts new file mode 100644 index 00000000..430cf4b6 --- /dev/null +++ b/packages/council-core/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + alias: { + "src/": "/src/", + }, + coverage: { + // get coverage for all of source except the example dir + include: ["./src/{!(example),}/**/*.ts"] + } + }, +}); diff --git a/packages/council-deploy/.env.sample b/packages/council-deploy/.env.sample deleted file mode 100644 index 8762f3aa..00000000 --- a/packages/council-deploy/.env.sample +++ /dev/null @@ -1,32 +0,0 @@ -MAINNET_DEPLOYER_PRIVATE_KEY= -GOERLI_DEPLOYER_PRIVATE_KEY= -MAINNET_URI= -GOERLI_URI= -ETHERSCAN_API_KEY= - -# deployment configuration -# VOTING_TOKEN_ADDRESS= - -# GSC Voting -# GSC_BASE_QUORUM= -# GSC_LOCK_DURATION= -# GSC_EXTRA_VOTING= - -# GSC Vault -# GSC_VOTING_POWER_BOUND= -# GSC_IDLE_DURATION= - -# Core Voting -# BASE_QUORUM= # token units -# LOCK_DURATION= -# EXTRA_VOTING= -# MIN_PROPOSAL_POWER= - -# Timelock -# WAIT_BLOCKS= - -# Treasury -# TREASURY_ADDRESS= - -# Voting Vaults -# UNVESTED_VOTING_MULTIPLIER= \ No newline at end of file diff --git a/packages/council-deploy/.eslintrc b/packages/council-deploy/.eslintrc deleted file mode 100644 index 02ee1cfb..00000000 --- a/packages/council-deploy/.eslintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": [ - "@council/eslint-config" - ], - "rules": { - // Testnet projects run in the terminal and are allowed to use console.log - // for showing output things - "no-console": "off" - } -} diff --git a/packages/council-deploy/.gitignore b/packages/council-deploy/.gitignore deleted file mode 100644 index d46bf0ea..00000000 --- a/packages/council-deploy/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -cache -artifacts -contracts - -# don't check in the compiled typescript factories -compiled - -.env - -dist - -localhost.deployments.json \ No newline at end of file diff --git a/packages/council-deploy/.nvmrc b/packages/council-deploy/.nvmrc deleted file mode 100644 index e05edc32..00000000 --- a/packages/council-deploy/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -14.11.0 \ No newline at end of file diff --git a/packages/council-deploy/.prettierrc.js b/packages/council-deploy/.prettierrc.js deleted file mode 100644 index 2f90e90c..00000000 --- a/packages/council-deploy/.prettierrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), -}; diff --git a/packages/council-deploy/LICENSE b/packages/council-deploy/LICENSE deleted file mode 100644 index 33bb3680..00000000 --- a/packages/council-deploy/LICENSE +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/packages/council-deploy/README.md b/packages/council-deploy/README.md deleted file mode 100644 index 3683eb5b..00000000 --- a/packages/council-deploy/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# @council/deploy - -Scripts for deploying the Council contracts to your network of choice, i.e.: -`goerli` or `mainnet`. - -## Principles - -Setting up and deploying the Council contracts is a complex process that -requires doing things in a specific order. This project serves to be a reference -point for anyone looking to deploy their own version of Council. - -You might not need every contract provided by Council. Perhaps you don't need a -GSC, Treasury, or a specific Voting Vault. You might already have a -voting token and don't need to deploy the one provided here. We intend to make -this customization process easy with different Recipes for common deployment -cases. - -We also recommend that you deploy your Council contracts to `goerli` first to -resolve any issues before going live on `mainnet`. - -## Installation - -1. Clone the council-monorepo then run, `yarn install`. -2. Run `yarn workspace @council/deploy run load-contracts` to grab the latest contract code -3. Add your environment variables to `packages/council-deploy/.env`. See the - `.env.sample` in this project for a template. -4. Run `yarn workspace @council/deploy run build`. - -## Deploy contracts - -Contracts are deployed using the private key of the wallet specified in the `.env` -file, see: `GOERLI_DEPLOYER_PRIVATE_KEY`. - -Once all contracts are deployed, each one will be verified on Etherscan -automatically. (Don't forget to add your `ETHERSCAN_API_KEY` to the .env file.) - -The entire process takes around 10 minutes. This is because some contracts need -to interact with other contracts. It also takes a little extra time for -Etherscan to index new contracts before they can be verified. - -### Goerli: - -Run: `yarn workspace @council/deploy run goerli:deploy-contracts` - -### Mainnet: - -TBD - -## Handy Scripts - -Either for demo purposes or just general usefulness, there are a handful of CLI -scripts that can make life easier when working with the contracts. - -### `yarn workspace @council/deploy run goerli:mint-voting-tokens` - -Prompts for a wallet address and voting token, then mints and transfers a -specified amount of tokens. - -### `yarn workspace @council/deploy run goerli:deposit-voting-tokens-into-locking-vault` - -Prompts for a locking vault address, then transfers a specified amount of its -voting token from the user's wallet to the vault. If the wallet does not have -any of the voting token, it will prompt you to mint some. - -## File Structure - -All code that deploys, verifies, or interacts with the contracts -lives under `src/`. - -When contracts are deployed, The network-specific `*.deployments.json` file -under `src/deployments` is updated with the contract deployment information. -This file has a strict JSONSchema and typescript types so it can be imported and -used safely in other projects. Deployments are checked into the repo since each -deployment is unique. - -Each contract type, (eg: Timelock, Treasury, Voting Vaults) is treated as a -separate feature of Council, so each one lives in its own folder containing all -the necessary logic to deploy and interact with it. Some contracts like -`src/votingToken` are completely decoupled from all other contracts. Others, -like `src/vaults/lockingVault` are allowed to import from other folders where it -makes sense (In this example, the locking vault needs to know about the -votingToken). - -Deployment of the entire set of Council contracts lives in -`src/deployCouncil.ts`. You are encouraged to read the heavily commented code -there to better understand how the contracts talk to each other during the -deployment process. This is also where you can modify the deployment process -based on what makes sense for your needs. - -### Note about Proposals - -If you need to test voting, then make sure you do this step AFTER your account -has vote power. To get vote power, deposit some of your tokens to the locking -vault through the UI. diff --git a/packages/council-deploy/hardhat.config.ts b/packages/council-deploy/hardhat.config.ts deleted file mode 100644 index 834aaf46..00000000 --- a/packages/council-deploy/hardhat.config.ts +++ /dev/null @@ -1,55 +0,0 @@ -// This adds ethers to the hre which has dev utilities for local testnet like 'getSigners()' -import "@nomiclabs/hardhat-waffle"; -import "@nomiclabs/hardhat-etherscan"; -import "dotenv/config"; -// This adds support for typescript paths mappings -import "tsconfig-paths/register"; - -import { HardhatUserConfig } from "hardhat/config"; - -const config: HardhatUserConfig = { - defaultNetwork: "goerli", - solidity: { - compilers: [ - { - version: "0.7.1", - settings: { - optimizer: { - enabled: true, - runs: 10000, - }, - }, - }, - { - version: "0.8.3", - settings: { - optimizer: { - enabled: true, - runs: 7500, - }, - }, - }, - ], - }, - networks: { - mainnet: { - chainId: 1, - url: process.env.MAINNET_URI, - accounts: [process.env.MAINNET_DEPLOYER_PRIVATE_KEY || ""], - }, - goerli: { - chainId: 5, - url: process.env.GOERLI_URI, - accounts: [process.env.GOERLI_DEPLOYER_PRIVATE_KEY || ""], - }, - localhost: { - chainId: 31337, - }, - }, - // See: https://hardhat.org/hardhat-runner/plugins/nomiclabs-hardhat-etherscan - etherscan: { - apiKey: process.env.ETHERSCAN_API_KEY, - }, -}; - -export default config; diff --git a/packages/council-deploy/package.json b/packages/council-deploy/package.json deleted file mode 100644 index 8b3eb3cc..00000000 --- a/packages/council-deploy/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "@council/deploy", - "version": "1.0.0", - "private": true, - "homepage": "https://github.com/delvtech/council-monorepo", - "main": "dist/main.js", - "source": "src/index.ts", - "types": "dist/types.d.ts", - "targets": { - "main": { - "source": "src/index.ts" - }, - "exampleDeploy": { - "source": "src/deployCouncil.ts" - }, - "types": { - "source": "src/index.ts" - } - }, - "files": [ - "dist" - ], - "alias": { - "src": "./src" - }, - "dependencies": { - "@alch/alchemy-web3": "^1.1.7", - "@council/typechain": "*", - "@ethersproject/providers": "^5.6.5", - "dotenv": "^16.0.0", - "merkletreejs": "^0.3.9" - }, - "devDependencies": { - "@council/eslint-config": "*", - "@council/prettier-config": "*", - "@council/tsconfig": "*", - "@nomiclabs/hardhat-etherscan": "^3.1.3", - "@nomiclabs/hardhat-ethers": "^2.0.2", - "@nomiclabs/hardhat-waffle": "^2.0.1", - "@openzeppelin/contracts": "^4.2.0", - "@types/ethereumjs-abi": "^0.6.3", - "@types/node": "^14.17.20", - "@types/prompt": "^1.1.4", - "cross-env": "^7.0.3", - "eslint": "^7.32.0", - "ethers": "^5.6.6", - "hardhat": "^2.6.6", - "lint-staged": "^12.3.7", - "parcel": "^2.8.0", - "prettier": "2.6.2", - "prompt": "^1.3.0", - "ts-generator": "^0.1.1", - "ts-node": "^10.8.1", - "tsc": "^2.0.3", - "tsconfig-paths": "^4.0.0", - "typescript": "^4.7.4" - }, - "peerDependencies": { - "ethers": "^5.6.6" - }, - "scripts": { - "start-node": "rm -f src/deployments/localhost.deployments.json && hardhat node", - "build": "parcel build", - "watch": "parcel watch", - "load-contracts": "sh scripts/load-contracts.sh", - "mainnet:deploy-contracts": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/promptDeploy.ts --network mainnet --no-compile", - "mainnet:deploy-airdrop": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/airdrop/promptDeployAirdrop.ts --network mainnet --no-compile", - "mainnet:mint-voting-tokens": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/votingToken/promptMintFromListOfVotingTokens.ts --network mainnet --no-compile", - "mainnet:deposit-voting-tokens": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/vaults/lockingVault/promptChooseLockingVaultAndDepositTokens.ts --network mainnet --no-compile", - "goerli:deploy-contracts": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/promptDeploy.ts --network goerli --no-compile", - "goerli:deploy-airdrop": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/airdrop/promptDeployAirdrop.ts --network goerli --no-compile", - "goerli:propose-remove-vesting-vault": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/coreVoting/proposals/createProposalRemoveVestingVault.ts --network goerli --no-compile", - "goerli:propose-one-second-timelock-wait-time": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/coreVoting/proposals/createProposalSetWaitTime.ts --network goerli --no-compile", - "goerli:mint-voting-tokens": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/votingToken/promptMintFromListOfVotingTokens.ts --network goerli --no-compile", - "goerli:deposit-voting-tokens": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/vaults/lockingVault/promptChooseLockingVaultAndDepositTokens.ts --network goerli --no-compile", - "local:deploy-contracts": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/promptDeploy.ts --network localhost --no-compile", - "local:deploy-airdrop": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/airdrop/promptDeployAirdrop.ts --network localhost --no-compile", - "local:mint-voting-tokens": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/votingToken/promptMintFromListOfVotingTokens.ts --network localhost --no-compile", - "local:deposit-voting-tokens": "cross-env TS_NODE_TRANSPILE_ONLY=1 npx hardhat run src/vaults/lockingVault/promptChooseLockingVaultAndDepositTokens.ts --network localhost --no-compile" - } -} diff --git a/packages/council-deploy/scripts/load-contracts.sh b/packages/council-deploy/scripts/load-contracts.sh deleted file mode 100644 index 4060e066..00000000 --- a/packages/council-deploy/scripts/load-contracts.sh +++ /dev/null @@ -1,17 +0,0 @@ -echo "Downloading contracts..." - -if [[ -z "${GITHUB_TOKEN}" ]]; then - git clone git@github.com:delvtech/council.git council -else - git clone https://$GITHUB_TOKEN@github.com/delvtech/council.git council -fi - -# blow away old-contracts -rm -rf contracts -mkdir contracts - -echo "Copying latest contracts..." -cp -R council/contracts/ contracts -rm -rf council - -echo "Done!" \ No newline at end of file diff --git a/packages/council-deploy/solhint.json b/packages/council-deploy/solhint.json deleted file mode 100644 index 31b19f1a..00000000 --- a/packages/council-deploy/solhint.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": ["solhint:recommended"], - "rules": { - "prettier/prettier": "error", - "avoid-throw": "off", - "avoid-suicide": "error", - "avoid-sha3": "warn", - "reason-string": "off", - "private-vars-leading-underscore": "error", - "compiler-version": ["off"], - "func-visibility": ["warn", { "ignoreConstructors": true }], - "not-rely-on-time": "off" - }, - "plugins": ["prettier"] -} diff --git a/packages/council-deploy/src/airdrop/accounts/accounts.json b/packages/council-deploy/src/airdrop/accounts/accounts.json deleted file mode 100644 index e1b19943..00000000 --- a/packages/council-deploy/src/airdrop/accounts/accounts.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "address": "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "amount": "100.000000000000000000" - }, - { - "address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "amount": "100.000000000000000000" - }, - { - "address": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", - "amount": "100.000000000000000000" - }, - { - "address": "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", - "amount": "100.000000000000000000" - }, - { - "address": "0x90F79bf6EB2c4f870365E785982E1f101E93b906", - "amount": "100.000000000000000000" - }, - { - "address": "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", - "amount": "100.000000000000000000" - } -] diff --git a/packages/council-deploy/src/airdrop/accounts/index.ts b/packages/council-deploy/src/airdrop/accounts/index.ts deleted file mode 100644 index 56ed9172..00000000 --- a/packages/council-deploy/src/airdrop/accounts/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import accounts from "./accounts.json"; -import leavesWithProofs from "./leavesWithProofs.json"; -import { LeafWithProof } from "./types"; - -export const airdropAccounts = accounts; -export const airdropLeaves: LeafWithProof[] = leavesWithProofs; diff --git a/packages/council-deploy/src/airdrop/accounts/leavesWithProofs.json b/packages/council-deploy/src/airdrop/accounts/leavesWithProofs.json deleted file mode 100644 index b20a037c..00000000 --- a/packages/council-deploy/src/airdrop/accounts/leavesWithProofs.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "leaf": { - "address": "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "amount": "100.000000000000000000" - }, - "proof": [ - "0x271e61abd8219c77862fda17c0c094302fa9884962394db34da950745db9fbbb", - "0x3889db47cb95d6d73f4bad64adf84a7724c8c83ffa58c5cad440f142c040a365", - "0x78c8945665d755d9b62bd8be8c3fbb941c1fd9e129c5f8b12bbbc74a5bf61f52" - ] - }, - { - "leaf": { - "address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "amount": "100.000000000000000000" - }, - "proof": [ - "0xf5111c4fa6bd06c74ffe8ff51b4b1ae39159381b4e0c2bd39613c0814d047f41", - "0x3889db47cb95d6d73f4bad64adf84a7724c8c83ffa58c5cad440f142c040a365", - "0x78c8945665d755d9b62bd8be8c3fbb941c1fd9e129c5f8b12bbbc74a5bf61f52" - ] - }, - { - "leaf": { - "address": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", - "amount": "100.000000000000000000" - }, - "proof": [ - "0x0b4c05bfeaff696a6005ca9096af2535d85c4ea6adf929f186c5765844f99f2f", - "0x801fa479e4f0012edb252aa984a5d55a6f7edb6a4b5b77b2d339bb0e03c1780b", - "0x78c8945665d755d9b62bd8be8c3fbb941c1fd9e129c5f8b12bbbc74a5bf61f52" - ] - }, - { - "leaf": { - "address": "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", - "amount": "100.000000000000000000" - }, - "proof": [ - "0xb744c83281c8c4e19fd76aa9822f709c68558891ccff788560f3873aab6b19b3", - "0x801fa479e4f0012edb252aa984a5d55a6f7edb6a4b5b77b2d339bb0e03c1780b", - "0x78c8945665d755d9b62bd8be8c3fbb941c1fd9e129c5f8b12bbbc74a5bf61f52" - ] - }, - { - "leaf": { - "address": "0x90F79bf6EB2c4f870365E785982E1f101E93b906", - "amount": "100.000000000000000000" - }, - "proof": [ - "0x237d3a47770a3265ae98e7c870ce112e5e53b0cec3c538cae793f0a6d7d7748d", - "0x66e72161b05ac5f80f87b16e7969b123c006943a8b3dc2ab9a42e66897b2aedc" - ] - }, - { - "leaf": { - "address": "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", - "amount": "100.000000000000000000" - }, - "proof": [ - "0x259b98d749bca4a7d88fb6d07e639aad4a3f8b7d12f690ce0e60d427bb3ebcae", - "0x66e72161b05ac5f80f87b16e7969b123c006943a8b3dc2ab9a42e66897b2aedc" - ] - } -] diff --git a/packages/council-deploy/src/airdrop/accounts/types.ts b/packages/council-deploy/src/airdrop/accounts/types.ts deleted file mode 100644 index c835df09..00000000 --- a/packages/council-deploy/src/airdrop/accounts/types.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface LeafWithProof { - leaf: { - address: string; - amount: string; - }; - proof: string[]; -} diff --git a/packages/council-deploy/src/airdrop/deployAirdrop.ts b/packages/council-deploy/src/airdrop/deployAirdrop.ts deleted file mode 100644 index 26f66640..00000000 --- a/packages/council-deploy/src/airdrop/deployAirdrop.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Signer } from "ethers"; -import { Airdrop__factory } from "@council/typechain"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployAirdropOptions { - signer: Signer; - ownerAddress: string; - merkleRoot: string; - tokenAddress: string; - expirationTimestamp: number; - lockingVaultAddress: string; -} - -export async function deployAirdrop({ - signer, - ownerAddress, - merkleRoot, - tokenAddress, - expirationTimestamp, - lockingVaultAddress, -}: DeployAirdropOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying Airdrop..."); - const airdropFactory = new Airdrop__factory(signer); - const deploymentArgs: DeployArguments = [ - ownerAddress, - merkleRoot, - tokenAddress, - expirationTimestamp, - lockingVaultAddress, - ]; - const airdrop = await airdropFactory.deploy(...deploymentArgs); - await airdrop.deployTransaction.wait(1); - console.log(`Deployed Airdrop @ ${airdrop.address}`); - - return { - address: airdrop.address, - name: "Airdrop", - contract: airdrop, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/airdrop/promptDeployAirdrop.ts b/packages/council-deploy/src/airdrop/promptDeployAirdrop.ts deleted file mode 100644 index 6040270c..00000000 --- a/packages/council-deploy/src/airdrop/promptDeployAirdrop.ts +++ /dev/null @@ -1,239 +0,0 @@ -import { - LockingVault, - LockingVault__factory, - MockERC20, - MockERC20__factory, -} from "@council/typechain"; -import { BigNumber, Signer } from "ethers"; -import { commify, formatUnits, parseUnits } from "ethers/lib/utils"; -import prompt from "prompt"; -import { - getDeploymentForContract, - getDeploymentsFile, - getDeploymentsFileName, -} from "src/deployments/getDeployments"; -import { promptString } from "src/base/prompts/promptString"; -import { promptNumber } from "src/base/prompts/promptNumber"; -import { getLockingVaults } from "src/vaults/lockingVault/getLockingVaults"; -import { promptYesNo } from "src/base/prompts/promptYesNo"; -import { DeploymentInfo, DeploymentsJsonFile } from "src/deployments/types"; -import MerkleTree from "merkletreejs"; -import { deployAirdrop } from "./deployAirdrop"; -import { ethers, network } from "hardhat"; -import path from "node:path"; -import { writeFile } from "src/base/writeFile"; -import { etherscanVerifyContract } from "src/etherscan/verifyContract"; - -async function airdropDeployPrompt() { - const signers = await ethers.getSigners(); - const signer = signers[0]; - const chainId = network.config.chainId; - - const deploymentsFile = await getDeploymentsFile(network.name, chainId); - - prompt.start(); - - const { token, tokenAddress, vaultAddress } = await promptAirdropVault( - signer, - deploymentsFile, - ); - - const ownerAddress = await promptString({ - message: - "Airdrop owner's address (e.g., Timelock's address, CoreVoting's address)", - }); - - const tokenDecimals = await token.decimals(); - const tokenSymbol = await token.symbol(); - const merkleRoot = await promptMerkleRoot(tokenDecimals, tokenSymbol); - - const expirationTimestamp = await promptExpirationTimestamp(); - - const { contract, address, deploymentArgs, name } = await deployAirdrop({ - signer, - ownerAddress, - merkleRoot, - tokenAddress, - expirationTimestamp, - lockingVaultAddress: vaultAddress, - }); - - const fullProtocolDeployment = deploymentsFile.deployments.find( - ({ contracts }) => - contracts.find(({ address }) => address === vaultAddress), - ); - - if (fullProtocolDeployment) { - fullProtocolDeployment.contracts.push({ - address, - deploymentArgs, - name, - }); - } else { - deploymentsFile.deployments.push({ - name: `Airdrop deploy for ${vaultAddress}`, - timestamp: Date.now(), - signer: signer.address, - contracts: [ - { - address, - deploymentArgs, - name, - }, - ], - }); - } - - const deploymentsFileName = getDeploymentsFileName(network.name); - writeFile(`./src/deployments/${deploymentsFileName}`, deploymentsFile); - - if (chainId && chainId !== 31337) { - // Verifying contracts on etherscan at the end of this script is faster since - // it takes time for etherscan to index new contracts. Generally, it's good to - // wait a few blocks after a contract is deployed before trying to verify it. - console.log("Verifying airdrop contract on etherscan..."); - await etherscanVerifyContract(contract, deploymentArgs); - } -} - -// Get the locking vault and confirm the token of the locking vault. -async function promptAirdropVault( - signer: Signer, - deploymentsFile?: DeploymentsJsonFile, -): Promise<{ - token: MockERC20; - tokenAddress: string; - vault: LockingVault; - vaultAddress: string; -}> { - if (deploymentsFile) { - const allLockingVaults = getLockingVaults(deploymentsFile.deployments); - const lockingVaultsTable = allLockingVaults.map((lockingVault) => ({ - "Deployment name": ( - getDeploymentForContract( - lockingVault.address, - deploymentsFile.deployments, - ) as DeploymentInfo - ).name, - "LockingVault address": lockingVault.address, - })); - - console.table(lockingVaultsTable); - } - - const vaultAddress = await promptString({ - message: "LockingVault address", - }); - const vault = LockingVault__factory.connect(vaultAddress, signer); - - const tokenAddress = await vault.token(); - const token = MockERC20__factory.connect(tokenAddress, signer); - const tokenSymbol = await token.symbol(); - - // confirm the token of the locking vault - const isConfirmed = await promptYesNo({ - message: `Deploy airdrop for ${tokenSymbol} (${tokenAddress})?`, - }); - - if (!isConfirmed) { - return promptAirdropVault(signer, deploymentsFile); - } - - return { token, tokenAddress, vault, vaultAddress }; -} - -async function promptMerkleRoot( - tokenDecimals: number, - tokenSymbol: string, -): Promise { - const accountsImport = await import("./accounts/accounts.json").catch(() => { - console.error( - `No accounts JSON found. Save your accounts JSON as ${path.resolve( - __dirname, - "./accounts/accounts.json and rerun.", - )}`, - ); - process.exit(1); - }); - - const accounts = accountsImport.default; - - const uniqueAddresses = new Set(accounts.map(({ address }) => address)); - const amountTotal = accounts.reduce( - (sum, { amount }) => sum.add(parseUnits(amount, tokenDecimals)), - BigNumber.from(0), - ); - - const isConfirmed = await promptYesNo({ - message: `Deploy airdrop for ${ - uniqueAddresses.size - } accounts totaling ${commify( - formatUnits(amountTotal, tokenDecimals), - )} ${tokenSymbol}?`, - }); - - if (!isConfirmed) { - process.exit(0); - } - - const merkleTree = getMerkleTree(accounts, tokenDecimals); - - writeFile( - path.resolve(__dirname, `./accounts/leavesWithProofs.json`), - accounts.map((account) => { - return { - leaf: account, - proof: merkleTree.getHexProof(hashAccount(account, tokenDecimals)), - }; - }), - ); - - return merkleTree.getHexRoot(); -} - -export interface Account { - address: string; - amount: string; -} - -function getMerkleTree(accounts: Account[], tokenDecimals: number) { - const leaves = accounts.map((account) => hashAccount(account, tokenDecimals)); - return new MerkleTree(leaves, merkleHashFn, { - hashLeaves: false, - sortPairs: true, - }); -} - -function hashAccount({ address, amount }: Account, tokenDecimals: number) { - return ethers.utils.solidityKeccak256( - ["address", "uint256"], - [address, parseUnits(amount, tokenDecimals)], - ); -} - -function merkleHashFn(bytes: Buffer) { - return ethers.utils.solidityKeccak256(["bytes"], [bytes]); -} - -async function promptExpirationTimestamp(): Promise { - const timestamp = await promptNumber({ - message: "Expiration Timestamp (unix timestamp in seconds)", - }); - - const isConfirmed = await promptYesNo({ - message: `Set expiration date to ${new Date(+timestamp * 1000)}?`, - }); - - if (!isConfirmed) { - return promptExpirationTimestamp(); - } - - return +timestamp; -} - -airdropDeployPrompt() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/packages/council-deploy/src/base/contractFactory.ts b/packages/council-deploy/src/base/contractFactory.ts deleted file mode 100644 index a78d1fdb..00000000 --- a/packages/council-deploy/src/base/contractFactory.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ContractFactory } from "ethers"; - -/** - * The required constructor args for deploying a contract. Useful when verifying - * contracts on etherscan. - */ -export type DeployArguments = - Parameters; - -/** - * The contract type the factory will deploy. - */ -export type ContractFromFactory = - Awaited>; - -/** - * An envelope containing the contract and the deployment args for a given - * contract factory. - */ - -export interface ContractWithDeploymentArgs< - TContractFactory extends ContractFactory, -> { - address: string; - name: string; - contract: ContractFromFactory; - deploymentArgs: DeployArguments; -} diff --git a/packages/council-deploy/src/base/prompts/promptNumber.ts b/packages/council-deploy/src/base/prompts/promptNumber.ts deleted file mode 100644 index d3d2e4e3..00000000 --- a/packages/council-deploy/src/base/prompts/promptNumber.ts +++ /dev/null @@ -1,32 +0,0 @@ -import prompt from "prompt"; -/** - * Returns a number string from stdin. - */ - -export async function promptNumber({ - message, - defaultNumber, - max, -}: { - message: string; - defaultNumber?: string; - max?: string; -}): Promise { - const schema: prompt.RevalidatorSchema = { - description: message, - name: "amount", - pattern: /^\d*\.?\d*$/, - required: true, - }; - - if (defaultNumber) { - schema.default = defaultNumber; - } - - if (max) { - schema.conform = (value) => Number(value) <= Number(max); - } - - const { amount } = await prompt.get(schema); - return amount as string; -} diff --git a/packages/council-deploy/src/base/prompts/promptString.ts b/packages/council-deploy/src/base/prompts/promptString.ts deleted file mode 100644 index d87973ad..00000000 --- a/packages/council-deploy/src/base/prompts/promptString.ts +++ /dev/null @@ -1,30 +0,0 @@ -import prompt from "prompt"; - -export async function promptString({ - message, - defaultValue, - choices, -}: { - message: string; - defaultValue?: string; - choices?: string[]; -}): Promise { - const schema: prompt.RevalidatorSchema = { - description: message, - name: "value", - type: "string", - required: true, - }; - - if (defaultValue) { - schema.default = defaultValue; - } - - if (choices) { - schema.enum = choices; - } - - const { value } = await prompt.get(schema); - - return value as string; -} diff --git a/packages/council-deploy/src/base/prompts/promptYesNo.ts b/packages/council-deploy/src/base/prompts/promptYesNo.ts deleted file mode 100644 index e694bb27..00000000 --- a/packages/council-deploy/src/base/prompts/promptYesNo.ts +++ /dev/null @@ -1,22 +0,0 @@ -import prompt from "prompt"; -export async function promptYesNo({ - message, -}: { - message: string; -}): Promise { - const schema: prompt.RevalidatorSchema = { - description: `${message} [y/n]`, - name: "yesNo", - pattern: /y[es]*|n[o]?/, - required: true, - default: "y", - }; - - const { yesNo } = await prompt.get(schema); - - if ((yesNo as string)[0].toLowerCase() === "y") { - return true; - } - - return false; -} diff --git a/packages/council-deploy/src/base/time.ts b/packages/council-deploy/src/base/time.ts deleted file mode 100644 index 124631f3..00000000 --- a/packages/council-deploy/src/base/time.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Simple util for waiting some amount of time. Useful for dealing with rate - * limits. - * - * Example: - * async function foo() { - * await delay(5000); - * console.log("Waited 5s"); - * } - */ -export function delay(ms: number): Promise { - return new Promise((res) => setTimeout(res, ms)); -} diff --git a/packages/council-deploy/src/base/writeFile.ts b/packages/council-deploy/src/base/writeFile.ts deleted file mode 100644 index e2afb133..00000000 --- a/packages/council-deploy/src/base/writeFile.ts +++ /dev/null @@ -1,5 +0,0 @@ -import fs from "fs"; -export function writeFile(outputPath: string, data: T): void { - const fileString = JSON.stringify(data, null, 2); - fs.writeFileSync(outputPath, fileString); -} diff --git a/packages/council-deploy/src/coreVoting/deployCoreVoting.ts b/packages/council-deploy/src/coreVoting/deployCoreVoting.ts deleted file mode 100644 index 202bd0dc..00000000 --- a/packages/council-deploy/src/coreVoting/deployCoreVoting.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { CoreVoting__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { parseEther } from "ethers/lib/utils"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployCoreVotingOptions { - signer: Signer; - votingVaultAddresses: string[]; - timelockAddress: string; - baseQuorum: string; - minProposalPower: string; - /** - * the GSC does not have a voting power requirement to submit a proposal - */ - gscCoreVotingAddress: string; - - /** - * Minimum number of blocks a proposal must be active for before executing - * Default: 10 blocks - */ - lockDuration?: number; - - /** - * The number of blocks after the proposal is unlocked during which voting can - * continue. - * - * Default: 15 blocks, this is reasonable for Goerli but probably not mainnet - */ - extraVotingTime?: number; -} - -export async function deployCoreVoting({ - signer, - votingVaultAddresses, - timelockAddress, - baseQuorum, - minProposalPower, - gscCoreVotingAddress, - lockDuration = 10, - extraVotingTime = 15, -}: DeployCoreVotingOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying CoreVoting..."); - const coreVotingFactory = new CoreVoting__factory(signer); - const deploymentArgs: DeployArguments = [ - await signer.getAddress(), - parseEther(baseQuorum).toHexString(), - parseEther(minProposalPower).toHexString(), - gscCoreVotingAddress, - votingVaultAddresses, - ]; - const coreVoting = await coreVotingFactory.deploy(...deploymentArgs); - await coreVoting.deployTransaction.wait(1); - console.log(`Deployed CoreVoting @ ${coreVoting.address}`); - - (await coreVoting.setLockDuration(lockDuration)).wait(1); - (await coreVoting.changeExtraVotingTime(extraVotingTime)).wait(1); - console.log("Set CoreVoting lockDuration and extraVoteTime"); - - await coreVoting.setOwner(timelockAddress); - console.log("Set owner of CoreVoting to Timelock"); - - return { - address: coreVoting.address, - name: "CoreVoting", - contract: coreVoting, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/coreVoting/deployGSCCoreVoting.ts b/packages/council-deploy/src/coreVoting/deployGSCCoreVoting.ts deleted file mode 100644 index e71e995f..00000000 --- a/packages/council-deploy/src/coreVoting/deployGSCCoreVoting.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { CoreVoting__factory } from "@council/typechain"; -import { ethers, Signer } from "ethers"; -import { parseEther } from "ethers/lib/utils"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployGSCCoreVotingOptions { - signer: Signer; - ownerAddress: string; - votingVaultAddresses: string[]; - /** - * The number of votes required to pass a proposal - */ - baseQuorum: string; - /** - * Minimum number of blocks a proposal must be active for before executing - */ - lockDuration: number; - /** - * The number of blocks after the proposal is unlocked during which voting can - * continue. - */ - extraVotingTime: number; -} - -export async function deployGSCCoreVoting({ - signer, - ownerAddress, - baseQuorum, - lockDuration, - extraVotingTime, - votingVaultAddresses, -}: DeployGSCCoreVotingOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying GSCCoreVoting..."); - const gscCoreVotingFactory = new CoreVoting__factory(signer); - const deploymentArgs: DeployArguments = [ - ownerAddress, - parseEther(baseQuorum).toHexString(), - // The GSC is authorized to create proposals without a minProposalPower. - // Setting this to "1" just to satisfy the required argument for deployment. - parseEther("1").toHexString(), - // There is no GSC for the GSC, otherwise it'd just be turtles all the way - // down. - ethers.constants.AddressZero, - // initial deployment without any voting vaults, later on the owner can call - // `GSCCoreVoting.changeVaultStatus()` to add approved vaults. - votingVaultAddresses, - ]; - - const gscCoreVoting = await gscCoreVotingFactory.deploy(...deploymentArgs); - await gscCoreVoting.deployTransaction.wait(1); - console.log(`Deployed GSCCoreVoting @ ${gscCoreVoting.address}`); - - (await gscCoreVoting.setLockDuration(lockDuration)).wait(1); - (await gscCoreVoting.changeExtraVotingTime(extraVotingTime)).wait(1); - console.log("Set GSCCoreVoting lockDuration and extraVoteTime"); - - return { - address: gscCoreVoting.address, - name: "GSCCoreVoting", - contract: gscCoreVoting, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/coreVoting/proposals/createCallHash.ts b/packages/council-deploy/src/coreVoting/proposals/createCallHash.ts deleted file mode 100644 index 8f8e52ee..00000000 --- a/packages/council-deploy/src/coreVoting/proposals/createCallHash.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BytesLike, ethers } from "ethers"; - -export async function createProposalCallHash( - targets: string[], - calldata: BytesLike[], -): Promise { - const toBeHashed = ethers.utils.defaultAbiCoder.encode( - ["address[]", "bytes[]"], - [targets, calldata], - ); - return ethers.utils.keccak256(toBeHashed); -} diff --git a/packages/council-deploy/src/coreVoting/proposals/createProposalRemoveVestingVault.ts b/packages/council-deploy/src/coreVoting/proposals/createProposalRemoveVestingVault.ts deleted file mode 100644 index ec7505e6..00000000 --- a/packages/council-deploy/src/coreVoting/proposals/createProposalRemoveVestingVault.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { ethers, Wallet } from "ethers"; - -// Helpers -import { CoreVoting__factory, Timelock__factory } from "@council/typechain"; -import { goerliDeployments } from "src/deployments"; -import { ContractDeploymentInfo } from "src/deployments/types"; -import hre from "hardhat"; -import { Provider } from "@ethersproject/providers"; -import { createProposalCallHash } from "./createCallHash"; - -const provider = hre.ethers.provider; -const signer = new Wallet( - // using danny.elf-goerli.eth since there's enough VP on it - process.env.GOERLI_DEPLOYER_PRIVATE_KEY as string, - provider, -); - -const DAY_IN_BLOCKS = 6496; -const YEAR_IN_DAYS = 365; -const ONE_WEEK_IN_DAYS = 7; - -const { contracts } = goerliDeployments[goerliDeployments.length - 1]; -const coreVoting = contracts.find( - ({ name }) => name === "CoreVoting", -) as ContractDeploymentInfo; -const timelock = contracts.find( - ({ name }) => name === "Timelock", -) as ContractDeploymentInfo; -const lockingVaultProxy = contracts.find( - ({ name }) => name === "LockingVaultProxy", -) as ContractDeploymentInfo; -const vestingVaultProxy = contracts.find( - ({ name }) => name === "VestingVaultProxy", -) as ContractDeploymentInfo; - -/******************************************************************************** - * Set up a new proposal. This proposal will update the wait time for the - * Timelock contract. The wait time is the number of blocks that must pass - * before a proposal can be executed* - ********************************************************************************/ -export async function createGoerliProposal( - owner: Wallet, - provider: Provider, -): Promise { - console.log(`Creating proposal from address: ${owner.address}`); - const coreVotingContract = CoreVoting__factory.connect( - coreVoting.address, - owner, - ); - const tInterface = new ethers.utils.Interface(Timelock__factory.abi); - const coreVotingInterface = new ethers.utils.Interface( - CoreVoting__factory.abi, - ); - - // setup calldata for timelock's setTime function. - const calldatasTimelock = [ - coreVotingInterface.encodeFunctionData("changeVaultStatus", [ - vestingVaultProxy.address, - false, - ]), - ]; - - // get the callhash, this is how Timelock determines if the call is valid before it executes it - const targetsTimelock = [timelock.address]; - const callHash = await createProposalCallHash( - targetsTimelock, - calldatasTimelock, - ); - - // calldata for the coreVoting contract - const calldataCoreVoting = tInterface.encodeFunctionData("registerCall", [ - callHash, - ]); - - // you must also vote when creating a proposal, this specifies which vaults to - // vote from - const votingVaults = [lockingVaultProxy.address]; - - // note that lockingVault/vestingVault doesn't require extra data when querying vote power, so we stub with "0x00" - const extraVaultData = ["0x00"]; - const targets = [timelock.address]; - const callDatas = [calldataCoreVoting]; - const currentBlock = await provider.getBlockNumber(); - - // set a large last call so we can execute when we want - // note that the extra vote time is one year right now, so setting last call to one year and one week - const lastCall = - currentBlock + - DAY_IN_BLOCKS * YEAR_IN_DAYS + - DAY_IN_BLOCKS * ONE_WEEK_IN_DAYS; - - /******************************************************************************** - * Create the proposal - ********************************************************************************/ - - const ballot = 2; // 2 is abstain - console.log(`Submitting proposal...`); - const tx = await coreVotingContract.proposal( - votingVaults, - extraVaultData, - targets, - callDatas, - lastCall, - ballot, - // overrides, - ); - await tx.wait(1); - - /******************************************************************************** - * Print data about the proposal - ********************************************************************************/ - const proposalCreatedEvents = await coreVotingContract.queryFilter( - coreVotingContract.filters.ProposalCreated(), - ); - - const proposalArgs = [ - ["proposalId", proposalCreatedEvents.length - 1], - ["votingVaults", votingVaults], - ["extraVaultData", extraVaultData], - ["callDatasTimelock", calldatasTimelock], - ["targetsTimelock", targetsTimelock], - ["targets", targets], - ["callDatas", callDatas], - ["lastCall", lastCall], - ["ballot", ballot], - ]; - - console.log("Proposal created with:"); - proposalArgs.forEach(([name, value]) => console.log(name, value)); -} - -createGoerliProposal(signer, provider) - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/packages/council-deploy/src/coreVoting/proposals/createProposalSetWaitTime.ts b/packages/council-deploy/src/coreVoting/proposals/createProposalSetWaitTime.ts deleted file mode 100644 index c388585c..00000000 --- a/packages/council-deploy/src/coreVoting/proposals/createProposalSetWaitTime.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { BytesLike, ethers, Wallet } from "ethers"; - -// Helpers -import { CoreVoting__factory, Timelock__factory } from "@council/typechain"; -import { goerliDeployments } from "src/deployments"; -import { ContractDeploymentInfo } from "src/deployments/types"; -import hre from "hardhat"; -import { Provider } from "@ethersproject/providers"; -import { createProposalCallHash } from "src/coreVoting/proposals/createCallHash"; - -const provider = hre.ethers.provider; -const signer = new Wallet( - // using danny.elf-goerli.eth since there's enough VP on it - process.env.GOERLI_DEPLOYER_PRIVATE_KEY as string, - provider, -); -const DAY_IN_BLOCKS = 6496; -const YEAR_IN_DAYS = 365; -const ONE_WEEK_IN_DAYS = 7; - -const { contracts } = goerliDeployments[goerliDeployments.length - 1]; -const coreVoting = contracts.find( - ({ name }) => name === "CoreVoting", -) as ContractDeploymentInfo; -const timelock = contracts.find( - ({ name }) => name === "Timelock", -) as ContractDeploymentInfo; -const lockingVaultProxy = contracts.find( - ({ name }) => name === "LockingVaultProxy", -) as ContractDeploymentInfo; - -/******************************************************************************** - * Set up a new proposal. This proposal will update the wait time for the - * Timelock contract. The wait time is the number of blocks that must pass - * before a proposal can be executed* - ********************************************************************************/ -export async function createGoerliProposal( - owner: Wallet, - provider: Provider, -): Promise { - const coreVotingContract = CoreVoting__factory.connect( - coreVoting.address, - owner, - ); - const tInterface = new ethers.utils.Interface(Timelock__factory.abi); - - // setup calldata for timelock's setTime function. - const newWaitTime = 1; - const calldatasTimelock = [ - tInterface.encodeFunctionData("setWaitTime", [newWaitTime]), - ]; - - // get the callhash, this is how Timelock determines if the call is valid before it executes it - const targetsTimelock = [timelock.address]; - const callHash = await createProposalCallHash( - targetsTimelock, - calldatasTimelock, - ); - - // calldata for the coreVoting contract - const calldataCoreVoting = tInterface.encodeFunctionData("registerCall", [ - callHash, - ]); - - // you must also vote when creating a proposal, this specifies which vaults to - // vote from - const votingVaults = [lockingVaultProxy.address]; - - // note that lockingVault/vestingVault doesn't require extra data when querying vote power, so we stub with "0x00" - const extraVaultData = ["0x00"]; - const targets = [timelock.address]; - const callDatas = [calldataCoreVoting]; - const currentBlock = await provider.getBlockNumber(); - - // set a large last call so we can execute when we want - // note that the extra vote time is one year right now, so setting last call to one year and one week - const lastCall = - currentBlock + - DAY_IN_BLOCKS * YEAR_IN_DAYS + - DAY_IN_BLOCKS * ONE_WEEK_IN_DAYS; - - /******************************************************************************** - * Create the proposal - ********************************************************************************/ - - const ballot = 2; // 2 is abstain - const tx = await coreVotingContract.proposal( - votingVaults, - extraVaultData, - targets, - callDatas, - lastCall, - ballot, - // overrides, - ); - await tx.wait(1); - - /******************************************************************************** - * Print data about the proposal - ********************************************************************************/ - const proposalCreatedEvents = await coreVotingContract.queryFilter( - coreVotingContract.filters.ProposalCreated(), - ); - - const proposalArgs = [ - ["proposalId", proposalCreatedEvents.length - 1], - ["votingVaults", votingVaults], - ["extraVaultData", extraVaultData], - ["callDatasTimelock", calldatasTimelock], - ["targetsTimelock", targetsTimelock], - ["targets", targets], - ["callDatas", callDatas], - ["lastCall", lastCall], - ["ballot", ballot], - ]; - - console.log("Proposal created with:"); - proposalArgs.forEach(([name, value]) => console.log(name, value)); -} - -createGoerliProposal(signer, provider) - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/packages/council-deploy/src/deployCouncil.ts b/packages/council-deploy/src/deployCouncil.ts deleted file mode 100644 index d3364670..00000000 --- a/packages/council-deploy/src/deployCouncil.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { deployCoreVoting } from "src/coreVoting/deployCoreVoting"; -import { deployTimelock } from "src/timelock/deployTimelock"; -import { deployTreasury } from "src/treasury/deployTreasury"; -import { deployVotingToken } from "src/votingToken/deployVotingToken"; -import { deployGSCVault } from "src/vaults/deployGSCVault"; -import { deployLockingVault } from "src/vaults/lockingVault/deployLockingVault"; -import { deployVestingVault } from "src/vaults/deployVestingVault"; -import { deployGSCCoreVoting } from "src/coreVoting/deployGSCCoreVoting"; -import { Contract, Signer, constants } from "ethers"; -import { config } from "dotenv"; -config(); - -export async function deployCouncil(signer: Signer): Promise< - { - address: string; - contract: Contract; - name: string; - deploymentArgs: unknown[]; - }[] -> { - const signerAddress = await signer.getAddress(); - console.log("Signer:", signerAddress); - - const chainId = await signer.getChainId(); - const isLocalHost = chainId === 31337; - - // Return all of the contracts that get deployed - const deployedContracts = []; - - // The voting token is used to determine voting power in the Locking Vault and - // Vesting Vault. It has no dependencies on any of the council contracts. - let votingTokenAddress = process.env.VOTING_TOKEN_ADDRESS; - if (!votingTokenAddress) { - const votingToken = await deployVotingToken({ - tokenName: "Council Voting Token", - tokenSymbol: "CVT", - signer, - }); - votingTokenAddress = votingToken.address; - deployedContracts.push(votingToken); - } - - // The GSC Core Voting is a privileged voting contract which enables a small - // number of people to create proposals and pass them without a general - // population vote. This is useful to combat voter fatigue on boring, - // operational upgrades or quickly respond to time-sensitive matters. - const gscCoreVoting = await deployGSCCoreVoting({ - signer, - // The GSCVault cannot be deployed before the GSCCoreVoting contract, so we - // set this to an empty array for now. We'll approve the GSCVault at the end - // of this script instead. - votingVaultAddresses: [], - // Temporarily set the owner as the current signer. This way we can approve - // the GSC Voting Vault once it's been created. At the end, we'll reassign - // the owner to the Timelock so upgrades to this contract have to go through - // the normal proposal flow. - ownerAddress: signerAddress, - // base quorum is 1 so it only takes 1 gsc member to pass a proposal - baseQuorum: process.env.GSC_BASE_QUORUM ?? "1", - lockDuration: +( - process.env.GSC_LOCK_DURATION ?? (isLocalHost ? "0" : "10") - ), - extraVotingTime: +(process.env.GSC_EXTRA_VOTING ?? "15"), - }); - - // The Timelock is in charge of executing proposals that upgrade the protocol. - // Here's how it works. First, a proposal is created and executed in - // CoreVoting which registers a call in the Timelock. After the - // waitTimeInBlocks has passed, anyone can call Timelock.execute() to complete - // the protocol upgrade. - const timelock = await deployTimelock({ - signer, - // can execute a call 10 blocks after it's registered - waitTimeInBlocks: +(process.env.WAIT_BLOCKS ?? (isLocalHost ? "0" : "10")), - // Temporarily set the owner as the current signer. We will reassign the - // owner to CoreVoting at the end so that only community votes can govern - // the system. - ownerAddress: signerAddress, - // The GSC has one special privilege in the Timelock. They can invoke a - // "speedbump" method to increase the waitTimeInBlocks for a given - // registered call. This is a security feature. - gscCoreVotingAddress: gscCoreVoting.address, - }); - - // The treasury holds the protocol funds. Proposals can be made to allocate - // these funds as the community sees fit. - let treasuryAddress = process.env.TREASURY_ADDRESS; - if (!treasuryAddress || treasuryAddress === constants.AddressZero) { - const treasury = await deployTreasury({ - signer, - ownerAddress: timelock.address, - }); - treasuryAddress = treasury.address; - deployedContracts.push(treasury); - } - - // The Locking Vault allows you to deposit voting tokens in exchange for - // voting power. This is actually a proxy contract so that the underlying - // Locking Vault contract can be upgraded as needed. - const { lockingVault, lockingVaultProxy } = await deployLockingVault({ - signer, - votingTokenAddress, - // Set the Timelock as the owner of the proxy contract so that upgrades must - // go through the normal proposal flow - proxyOwnerAddress: timelock.address, - // 300k blocks ~ 1 week on goerli - staleBlockLag: isLocalHost ? 10 : 300_000, - }); - - // The Vesting Vault is similar to the Locking Vault, however the voting power - // isn't 1:1 with the number of deposited voting tokens. There are also limits - // on withdrawing tokens as defined by a vesting schedule. - const { vestingVault, vestingVaultProxy } = await deployVestingVault({ - signer, - votingTokenAddress, - // Set the Timelock as the owner of the proxy contract so that upgrades must - // go through the normal proposal flow - proxyOwnerAddress: timelock.address, - timelockAddress: timelock.address, - // 300k blocks ~ 1 week on goerli - staleBlockLag: isLocalHost ? 10 : 300_000, - }); - - const coreVoting = await deployCoreVoting({ - signer, - timelockAddress: timelock.address, - votingVaultAddresses: [ - lockingVaultProxy.address, - vestingVaultProxy.address, - ], - // set quorum to 50 ELFI so any test account can pass a vote - baseQuorum: process.env.BASE_QUORUM ?? "50", - // set minProposalPower to 50 ELFI so any test account can make a proposal - minProposalPower: process.env.MIN_PROPOSAL_POWER ?? "50", - // the GSC does not have a voting power requirement to submit a proposal - gscCoreVotingAddress: gscCoreVoting.address, - // can execute a proposal 10 blocks after it gets created - lockDuration: +(process.env.LOCK_DURATION ?? isLocalHost ? 0 : 10), - // can still vote on a proposal for this many blocks after it unlocks - extraVotingTime: +( - process.env.EXTRA_VOTING ?? (isLocalHost ? "10" : "300000") - ), // ~ 1 week on goerli - }); - - const gscVault = await deployGSCVault({ - signer, - ownerAddress: timelock.address, - // GSC vault depends on core voting contract to prove that members meet the - // voting power minimum to be on the GSC. - coreVotingAddress: coreVoting.address, - // any test account can get onto GSC with this much vote power - votingPowerBound: process.env.GSC_VOTING_POWER_BOUND ?? "100", - // members are idle for 60 seconds after they join the GSC - idleDuration: +(process.env.GSC_IDLE_DURATION ?? "60"), - }); - - // The GSC Vault must be created *after* the GSCCoreVoting contract is - // deployed, so we approve the gsc vault after the fact. We can do this - // because the signer is still the owner. - await gscCoreVoting.contract.changeVaultStatus(gscVault.address, true); - console.log("Approved GSCVault on GSCCoreVoting"); - - // Now we transfer ownership to the Timelock, any future upgrades to - // GSCCoreVoting must go through the normal proposal flow. - await gscCoreVoting.contract.setOwner(timelock.address); - console.log("Set owner of GSCCoreVoting to Timelock"); - - // Setting the CoreVoting contract as the owner of the Timelock allows - // executed proposals to register calls on the Timelock. - await timelock.contract.setOwner(coreVoting.address); - console.log("Set owner of Timelock to CoreVoting"); - - console.log("All contracts deployed!"); - deployedContracts.push( - coreVoting, - gscCoreVoting, - gscVault, - lockingVault, - lockingVaultProxy, - timelock, - vestingVault, - vestingVaultProxy, - ); - return deployedContracts; -} diff --git a/packages/council-deploy/src/deployments/deployments.schema.json b/packages/council-deploy/src/deployments/deployments.schema.json deleted file mode 100644 index 93fd9b06..00000000 --- a/packages/council-deploy/src/deployments/deployments.schema.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "properties": { - "chainId": { - "type": "integer" - }, - "deployments": { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "timestamp": { - "type": "integer" - }, - "signer": { - "type": "string" - }, - "contracts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "name": { - "type": "string" - }, - "deploymentArgs": { - "type": "array", - "items": { - "oneOf": [ - { "type": "string" }, - { "type": "number" }, - { - "type": "array", - "items": { - "oneOf": [ - { "type": "string" }, - { "type": "number" } - ] - } - } - ] - } - } - }, - "required": ["address", "name", "deploymentArgs"] - } - } - }, - "required": ["name", "timestamp", "signer", "contracts"] - } - ] - } - }, - "required": ["chainId", "deployments"] -} diff --git a/packages/council-deploy/src/deployments/getDeployments.ts b/packages/council-deploy/src/deployments/getDeployments.ts deleted file mode 100644 index 203fcce0..00000000 --- a/packages/council-deploy/src/deployments/getDeployments.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { writeFile } from "src/base/writeFile"; -import { DeploymentInfo, DeploymentsJsonFile } from "src/deployments/types"; - -export function getDeploymentsFileName(networkName: string): string { - return `${networkName}.deployments.json`; -} - -export async function getDeploymentsFile( - networkName: string, - chainId: number | undefined, -): Promise { - const fileName = getDeploymentsFileName(networkName); - - const fileImport = await import(`src/deployments/${fileName}`).catch(() => { - const defaultDeploymentsFile = { - chainId: chainId ?? 0, - deployments: [], - }; - writeFile( - `./src/deployments/${fileName}`, - defaultDeploymentsFile, - ); - return { - default: defaultDeploymentsFile, - }; - }); - - return fileImport.default; -} - -/** - * Finds the deployment that the given contract is in. - */ -export function getDeploymentForContract( - contractAddress: string, - deployments: DeploymentInfo[], -): DeploymentInfo | undefined { - const deployment = deployments.find((deployment) => - deployment.contracts.find(({ address }) => address === contractAddress), - ); - - return deployment; -} diff --git a/packages/council-deploy/src/deployments/goerli.deployments.json b/packages/council-deploy/src/deployments/goerli.deployments.json deleted file mode 100644 index 69c7a597..00000000 --- a/packages/council-deploy/src/deployments/goerli.deployments.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "chainId": 5, - "deployments": [ - { - "name": "Goerli Deployment #1", - "timestamp": 1675281559454, - "signer": "0xcF3b7bcBbcEFF836F81f6EAd914706E699267bca", - "contracts": [ - { - "address": "0x1dcFAD45c31e0b4d9A3E3cb05013023d9A9Bbd11", - "name": "CoreVoting", - "deploymentArgs": [ - "0xcF3b7bcBbcEFF836F81f6EAd914706E699267bca", - "0x02b5e3af16b1880000", - "0x02b5e3af16b1880000", - "0xd3f84fc6f50e421502e9f8e36b519E0D156BE6C8", - [ - "0x4520da1DDFad1F48536A2a21CF5923dd2c2247e9", - "0x6dbE1aF34649d1efe5f6a708A1CF93bF2F422250" - ] - ] - }, - { - "address": "0x8e985C9c7727d7c6f16c5Fe57e9336368D66E801", - "name": "VotingToken", - "deploymentArgs": [ - "Council Voting Token", - "CVT", - "0xcF3b7bcBbcEFF836F81f6EAd914706E699267bca" - ] - }, - { - "address": "0xd3f84fc6f50e421502e9f8e36b519E0D156BE6C8", - "name": "GSCCoreVoting", - "deploymentArgs": [ - "0xcF3b7bcBbcEFF836F81f6EAd914706E699267bca", - "0x0de0b6b3a7640000", - "0x0de0b6b3a7640000", - "0x0000000000000000000000000000000000000000", - [] - ] - }, - { - "address": "0xCFb73f8D5D29e5d936AdF86A8A739AE12b882E8D", - "name": "GSCVault", - "deploymentArgs": [ - "0x1dcFAD45c31e0b4d9A3E3cb05013023d9A9Bbd11", - "0x056bc75e2d63100000", - "0xcF3b7bcBbcEFF836F81f6EAd914706E699267bca" - ] - }, - { - "address": "0xb3FD33DfA85d1D3c988D36522d20913424206168", - "name": "LockingVault", - "deploymentArgs": [ - "0x8e985C9c7727d7c6f16c5Fe57e9336368D66E801", - 300000 - ] - }, - { - "address": "0x4520da1DDFad1F48536A2a21CF5923dd2c2247e9", - "name": "LockingVaultProxy", - "deploymentArgs": [ - "0x7e7eEc56D2C53E9203d5cF48E01560Da52ff5214", - "0xb3FD33DfA85d1D3c988D36522d20913424206168" - ] - }, - { - "address": "0x7e7eEc56D2C53E9203d5cF48E01560Da52ff5214", - "name": "Timelock", - "deploymentArgs": [ - 10, - "0xcF3b7bcBbcEFF836F81f6EAd914706E699267bca", - "0xd3f84fc6f50e421502e9f8e36b519E0D156BE6C8" - ] - }, - { - "address": "0xAF02643580595188C563d4bd471Df292347abd9d", - "name": "Treasury", - "deploymentArgs": ["0x7e7eEc56D2C53E9203d5cF48E01560Da52ff5214"] - }, - { - "address": "0x8F0efB0EbFd9c59a70dC11985a1F16685ccC2d6F", - "name": "VestingVault", - "deploymentArgs": [ - "0x8e985C9c7727d7c6f16c5Fe57e9336368D66E801", - 300000 - ] - }, - { - "address": "0x6dbE1aF34649d1efe5f6a708A1CF93bF2F422250", - "name": "VestingVaultProxy", - "deploymentArgs": [ - "0x7e7eEc56D2C53E9203d5cF48E01560Da52ff5214", - "0x8F0efB0EbFd9c59a70dC11985a1F16685ccC2d6F" - ] - } - ] - }, - { - "name": "Airdrop Goerli Test", - "timestamp": 1681184201129, - "signer": "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "contracts": [ - { - "address": "0x25EFa0d768Dc9BDaAF937903EC74A44A69Bc896F", - "name": "CoreVoting", - "deploymentArgs": [ - "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "0x02b5e3af16b1880000", - "0x02b5e3af16b1880000", - "0xE27eF7033580b545530D28Ba739E5f651a5Be37A", - [ - "0x7B424CECfD3d7972cf7c0Cbffec7d990E91F4F80", - "0xa8b5f16500757baC1921eb1d3AdacfA2C56104Ca" - ] - ] - }, - { - "address": "0x9003EE3D89a658700304dcfdF7f329043a8A5fC8", - "name": "VotingToken", - "deploymentArgs": [ - "Council Voting Token", - "CVT", - "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434" - ] - }, - { - "address": "0xE27eF7033580b545530D28Ba739E5f651a5Be37A", - "name": "GSCCoreVoting", - "deploymentArgs": [ - "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "0x0de0b6b3a7640000", - "0x0de0b6b3a7640000", - "0x0000000000000000000000000000000000000000", - [] - ] - }, - { - "address": "0xeA59876eC9db53d63f97B650c0f566E8b5D45144", - "name": "GSCVault", - "deploymentArgs": [ - "0x25EFa0d768Dc9BDaAF937903EC74A44A69Bc896F", - "0x056bc75e2d63100000", - "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434" - ] - }, - { - "address": "0xcb155A27EfACcAf95720E8bd1849CB565AbEe2c6", - "name": "LockingVault", - "deploymentArgs": [ - "0x9003EE3D89a658700304dcfdF7f329043a8A5fC8", - 300000 - ] - }, - { - "address": "0x7B424CECfD3d7972cf7c0Cbffec7d990E91F4F80", - "name": "LockingVaultProxy", - "deploymentArgs": [ - "0x818E1AC09DC9D026211fF21263599BCEBC4DeB91", - "0xcb155A27EfACcAf95720E8bd1849CB565AbEe2c6" - ] - }, - { - "address": "0x818E1AC09DC9D026211fF21263599BCEBC4DeB91", - "name": "Timelock", - "deploymentArgs": [ - 10, - "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "0xE27eF7033580b545530D28Ba739E5f651a5Be37A" - ] - }, - { - "address": "0xA07230F0e78446F162f097d584737B5D0BF1da3a", - "name": "Treasury", - "deploymentArgs": ["0x818E1AC09DC9D026211fF21263599BCEBC4DeB91"] - }, - { - "address": "0x7BE7CcD06eE941306F9ab99DB0e4bF45545De356", - "name": "VestingVault", - "deploymentArgs": [ - "0x9003EE3D89a658700304dcfdF7f329043a8A5fC8", - 300000 - ] - }, - { - "address": "0xa8b5f16500757baC1921eb1d3AdacfA2C56104Ca", - "name": "VestingVaultProxy", - "deploymentArgs": [ - "0x818E1AC09DC9D026211fF21263599BCEBC4DeB91", - "0x7BE7CcD06eE941306F9ab99DB0e4bF45545De356" - ] - }, - { - "address": "0x8278a7951f9E3C88B1817223603635981D65bC63", - "deploymentArgs": [ - "0x00D5E029aFCE62738fa01EdCA21c9A4bAeabd434", - "0x801fa479e4f0012edb252aa984a5d55a6f7edb6a4b5b77b2d339bb0e03c1780b", - "0x9003EE3D89a658700304dcfdF7f329043a8A5fC8", - 1712725200, - "0x7B424CECfD3d7972cf7c0Cbffec7d990E91F4F80" - ], - "name": "Airdrop" - } - ] - } - ] -} diff --git a/packages/council-deploy/src/deployments/index.ts b/packages/council-deploy/src/deployments/index.ts deleted file mode 100644 index 2bb2daa2..00000000 --- a/packages/council-deploy/src/deployments/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import mainnet from "src/deployments/mainnet.deployments.json"; -import goerli from "src/deployments/goerli.deployments.json"; - -export const mainnetDeployments = mainnet.deployments; -export const goerliDeployments = goerli.deployments; diff --git a/packages/council-deploy/src/deployments/mainnet.deployments.json b/packages/council-deploy/src/deployments/mainnet.deployments.json deleted file mode 100644 index 11525766..00000000 --- a/packages/council-deploy/src/deployments/mainnet.deployments.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "chainId": 1, - "deployments": [] -} diff --git a/packages/council-deploy/src/deployments/types.ts b/packages/council-deploy/src/deployments/types.ts deleted file mode 100644 index d438baf8..00000000 --- a/packages/council-deploy/src/deployments/types.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface DeploymentsJsonFile { - chainId: number; - deployments: DeploymentInfo[]; -} - -export interface ContractDeploymentInfo { - address: string; - name: string; - deploymentArgs: unknown[]; -} - -export interface DeploymentInfo { - timestamp: number; - name: string; - signer: string; - contracts: ContractDeploymentInfo[]; -} diff --git a/packages/council-deploy/src/etherscan/urls.ts b/packages/council-deploy/src/etherscan/urls.ts deleted file mode 100644 index e651ac10..00000000 --- a/packages/council-deploy/src/etherscan/urls.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function makeGoerliTransactionUrl(txHash: string): string { - return `https://goerli.etherscan.io/tx/${txHash}`; -} diff --git a/packages/council-deploy/src/etherscan/verifyContract.ts b/packages/council-deploy/src/etherscan/verifyContract.ts deleted file mode 100644 index d0e58074..00000000 --- a/packages/council-deploy/src/etherscan/verifyContract.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Contract, ContractFactory } from "ethers"; -import hre from "hardhat"; -import { DeployArguments } from "src/base/contractFactory"; -import { delay } from "src/base/time"; - -// Number of blocks to wait before attempting to verify on etherscan. -const WAIT_BLOCK_CONFIRMATIONS = 6; - -export async function etherscanVerifyContracts( - contracts: { contract: Contract; deploymentArgs: unknown[] }[], -): Promise { - return Promise.all( - contracts.map(async ({ contract, deploymentArgs }) => { - // etherscan's FREE tier allows 5 api calls per second, so we should wait - // a little bit before each attempt to verify a contract - await delay(5000); - return etherscanVerifyContract(contract, deploymentArgs); - }), - ); -} - -export async function etherscanVerifyContract( - contract: Contract, - constructorArguments: DeployArguments, -): Promise { - // wait a couple of blocks so etherscan has enough time to index this - // contract, then attempt to verify it on Etherscan - await contract.deployTransaction.wait(WAIT_BLOCK_CONFIRMATIONS); - try { - await hre.run("verify:verify", { - address: contract.address, - constructorArguments, - }); - } catch (error) { - console.log(error); - } -} diff --git a/packages/council-deploy/src/index.ts b/packages/council-deploy/src/index.ts deleted file mode 100644 index ece1aa20..00000000 --- a/packages/council-deploy/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "src/deployments"; -export * from "src/deployments/types"; -export * from "src/airdrop/accounts"; -export * from "src/airdrop/accounts/types"; diff --git a/packages/council-deploy/src/promptDeploy.ts b/packages/council-deploy/src/promptDeploy.ts deleted file mode 100644 index 6abc92ff..00000000 --- a/packages/council-deploy/src/promptDeploy.ts +++ /dev/null @@ -1,74 +0,0 @@ -import hre from "hardhat"; -import { deployCouncil } from "src/deployCouncil"; -import prompt from "prompt"; -import { DeploymentsJsonFile } from "src/deployments/types"; -import { writeFile } from "src/base/writeFile"; -import { etherscanVerifyContracts } from "src/etherscan/verifyContract"; -import { - getDeploymentsFile, - getDeploymentsFileName, -} from "./deployments/getDeployments"; - -async function promptDeploy() { - const signers = await hre.ethers.getSigners(); - const signer = signers[0]; - - const chainId = hre.network.config.chainId; - const networkName = hre.network.name; - const deploymentsFile = await getDeploymentsFile(networkName, chainId); - - console.log({ - chainId, - networkName, - }); - - // Get a deployment name from the user - prompt.start(); - const { deploymentName } = await prompt.get({ - description: "Name this deployment", - name: "deploymentName", - default: `${hre.network.name} Deployment #${ - deploymentsFile.deployments.length + 1 - }`, - }); - - const deploymentsFileName = getDeploymentsFileName(networkName); - - // Deploy the contracts - const contractDeployments = await deployCouncil(signer); - - writeFile(`./src/deployments/${deploymentsFileName}`, { - ...deploymentsFile, - deployments: [ - ...deploymentsFile.deployments, - { - name: deploymentName as string, - timestamp: Date.now(), - signer: signer.address, - contracts: contractDeployments.map( - ({ address, name, deploymentArgs }) => ({ - address, - name, - deploymentArgs, - }), - ), - }, - ], - }); - console.log(`Updated ${deploymentsFileName}!`); - - if (chainId && chainId !== 31337) { - // Verifying contracts on etherscan at the end of this script is faster since - // it takes time for etherscan to index new contracts. Generally, it's good to - // wait a few blocks after a contract is deployed before trying to verify it. - console.log("Verifying contracts on etherscan..."); - await etherscanVerifyContracts(contractDeployments); - } -} - -promptDeploy() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/packages/council-deploy/src/timelock/deployTimelock.ts b/packages/council-deploy/src/timelock/deployTimelock.ts deleted file mode 100644 index ac61e844..00000000 --- a/packages/council-deploy/src/timelock/deployTimelock.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Timelock__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployTimelockOptions { - signer: Signer; - waitTimeInBlocks: number; - ownerAddress: string; - gscCoreVotingAddress: string; -} - -export async function deployTimelock({ - signer, - waitTimeInBlocks, - ownerAddress, - gscCoreVotingAddress, -}: DeployTimelockOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying Timelock..."); - const timeLockFactory = new Timelock__factory(signer); - const deploymentArgs: DeployArguments = [ - waitTimeInBlocks, - ownerAddress, - gscCoreVotingAddress, - ]; - const timelock = await timeLockFactory.deploy(...deploymentArgs); - await timelock.deployTransaction.wait(1); - console.log(`Deployed Timelock @ ${timelock.address}`); - - // gsc is authorized so that it can use its special privilege of being able - // to delay the execution of proposals in the timelock - await timelock.authorize(gscCoreVotingAddress); - - return { - address: timelock.address, - name: "Timelock", - contract: timelock, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/treasury/deployTreasury.ts b/packages/council-deploy/src/treasury/deployTreasury.ts deleted file mode 100644 index 9048409d..00000000 --- a/packages/council-deploy/src/treasury/deployTreasury.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Treasury__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployTreasuryOptions { - signer: Signer; - ownerAddress: string; -} - -export async function deployTreasury({ - signer, - ownerAddress, -}: DeployTreasuryOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying Treasury..."); - const treasuryFactory = new Treasury__factory(signer); - const deploymentArgs: DeployArguments = [ownerAddress]; - const treasury = await treasuryFactory.deploy(...deploymentArgs); - await treasury.deployTransaction.wait(1); - console.log(`Deployed Treasury @ ${treasury.address}`); - - return { - address: treasury.address, - name: "Treasury", - contract: treasury, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/vaults/deployGSCVault.ts b/packages/council-deploy/src/vaults/deployGSCVault.ts deleted file mode 100644 index 4e0c0497..00000000 --- a/packages/council-deploy/src/vaults/deployGSCVault.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { GSCVault__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { parseEther } from "ethers/lib/utils"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployGSCVaultOptions { - signer: Signer; - coreVotingAddress: string; - /** - * Voting power requirement in coreVoting to get onto the GSC - */ - votingPowerBound: string; - ownerAddress: string; - /** - * The duration (in seconds) during which new gsc members remain unable to - * vote - */ - idleDuration: number; -} - -export async function deployGSCVault({ - signer, - coreVotingAddress, - votingPowerBound, - ownerAddress, - idleDuration, -}: DeployGSCVaultOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying GSCVault..."); - const gscVaultFactory = new GSCVault__factory(signer); - const deploymentArgs: DeployArguments = [ - coreVotingAddress, - parseEther(votingPowerBound).toHexString(), - // deploy this with the signer as the owner so we can call setIdleDuration, - // after that we'll set the owner to the ownerAddress - await signer.getAddress(), - ]; - const gscVault = await gscVaultFactory.deploy(...deploymentArgs); - await gscVault.deployTransaction.wait(1); - - // This must be done after the contract is deployed - await gscVault.setIdleDuration(idleDuration); - - // Finalize the deployment by setting the owner - await gscVault.setOwner(ownerAddress); - - console.log(`Deployed GSCVault @ ${gscVault.address}`); - - return { - address: gscVault.address, - name: "GSCVault", - contract: gscVault, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/vaults/deployVestingVault.ts b/packages/council-deploy/src/vaults/deployVestingVault.ts deleted file mode 100644 index 0eb83b1a..00000000 --- a/packages/council-deploy/src/vaults/deployVestingVault.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { - SimpleProxy__factory, - VestingVault__factory, -} from "@council/typechain"; -import { Signer } from "ethers"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployVestingVaultOptions { - signer: Signer; - votingTokenAddress: string; - proxyOwnerAddress: string; - timelockAddress: string; - /** - * A user's vote power can be used on proposal for this long after the - * proposal is created. - */ - staleBlockLag: number; -} - -export async function deployVestingVault({ - signer, - votingTokenAddress, - staleBlockLag, - timelockAddress, - proxyOwnerAddress, -}: DeployVestingVaultOptions): Promise<{ - vestingVault: ContractWithDeploymentArgs; - vestingVaultProxy: ContractWithDeploymentArgs; -}> { - console.log("Deploying VestingVault..."); - const signerAddress = await signer.getAddress(); - const vestingVaultFactory = new VestingVault__factory(signer); - const deploymentArgs: DeployArguments = [ - votingTokenAddress, - staleBlockLag, - ]; - const vestingVault = await vestingVaultFactory.deploy(...deploymentArgs); - await vestingVault.deployTransaction.wait(1); - console.log(`Deployed VestingVault @ ${vestingVault.address}`); - - console.log("Initializing VestingVault..."); - const init = await vestingVault.initialize(signerAddress, signerAddress); - await init.wait(1); - - // Only the Timelock can update things like the unvestedMultiplier. - console.log("Setting timelock permissions on VestingVault..."); - const timelock = await vestingVault.setTimelock(timelockAddress); - await timelock.wait(1); - - // deploy vesting vault behind a proxy so it's upgradeable - console.log("Deploying VestingVault proxy..."); - const simpleProxyFactory = new SimpleProxy__factory(signer); - const vestingVaultProxyDeploymentArgs: DeployArguments = - [proxyOwnerAddress, vestingVault.address]; - - const vestingVaultProxy = await simpleProxyFactory.deploy( - ...vestingVaultProxyDeploymentArgs, - ); - await vestingVaultProxy.deployTransaction.wait(1); - console.log(`Deployed VestingVault proxy @ ${vestingVaultProxy.address}`); - - return { - vestingVault: { - address: vestingVault.address, - name: "VestingVault", - contract: vestingVault, - deploymentArgs, - }, - vestingVaultProxy: { - address: vestingVaultProxy.address, - name: "VestingVaultProxy", - contract: vestingVaultProxy, - deploymentArgs: vestingVaultProxyDeploymentArgs, - }, - }; -} diff --git a/packages/council-deploy/src/vaults/lockingVault/deployLockingVault.ts b/packages/council-deploy/src/vaults/lockingVault/deployLockingVault.ts deleted file mode 100644 index 0707d9c9..00000000 --- a/packages/council-deploy/src/vaults/lockingVault/deployLockingVault.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { - LockingVault__factory, - SimpleProxy__factory, -} from "@council/typechain"; -import { Signer } from "ethers"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployLockingVaultOptions { - signer: Signer; - votingTokenAddress: string; - proxyOwnerAddress: string; - /** - * A user's vote power can be used on proposal for this long after the - * proposal is created. - */ - staleBlockLag: number; -} - -export async function deployLockingVault({ - signer, - votingTokenAddress, - proxyOwnerAddress, - staleBlockLag, -}: DeployLockingVaultOptions): Promise<{ - lockingVault: ContractWithDeploymentArgs; - lockingVaultProxy: ContractWithDeploymentArgs; -}> { - console.log("Deploying LockingVault..."); - const lockingVaultFactory = new LockingVault__factory(signer); - const lockingVaultDeploymentArgs: DeployArguments = [ - votingTokenAddress, - staleBlockLag, - ]; - const lockingVault = await lockingVaultFactory.deploy( - ...lockingVaultDeploymentArgs, - ); - await lockingVault.deployTransaction.wait(1); - console.log(`Deployed LockingVault @ ${lockingVault.address}`); - - // deploy locking vault behind a proxy so it's upgradeable - console.log("Deploying LockingVault proxy..."); - const simpleProxyFactory = new SimpleProxy__factory(signer); - const lockingVaultProxyDeploymentArgs: DeployArguments = - [proxyOwnerAddress, lockingVault.address]; - - const lockingVaultProxy = await simpleProxyFactory.deploy( - ...lockingVaultProxyDeploymentArgs, - ); - await lockingVaultProxy.deployTransaction.wait(1); - console.log(`Deployed LockingVault proxy @ ${lockingVaultProxy.address}`); - - return { - lockingVault: { - address: lockingVault.address, - name: "LockingVault", - contract: lockingVault, - deploymentArgs: lockingVaultDeploymentArgs, - }, - lockingVaultProxy: { - address: lockingVaultProxy.address, - name: "LockingVaultProxy", - contract: lockingVaultProxy, - deploymentArgs: lockingVaultProxyDeploymentArgs, - }, - }; -} diff --git a/packages/council-deploy/src/vaults/lockingVault/getLockingVaults.ts b/packages/council-deploy/src/vaults/lockingVault/getLockingVaults.ts deleted file mode 100644 index a0b2c08d..00000000 --- a/packages/council-deploy/src/vaults/lockingVault/getLockingVaults.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ContractDeploymentInfo, DeploymentInfo } from "src/deployments/types"; - -export function getLockingVaults( - deployments: DeploymentInfo[], -): ContractDeploymentInfo[] { - const allDeployedContracts = deployments - .map((deployment) => deployment.contracts) - .flat(); - - return allDeployedContracts.filter( - (deployedContract) => deployedContract.name === "LockingVaultProxy", - ); -} diff --git a/packages/council-deploy/src/vaults/lockingVault/promptChooseLockingVaultAndDepositTokens.ts b/packages/council-deploy/src/vaults/lockingVault/promptChooseLockingVaultAndDepositTokens.ts deleted file mode 100644 index c1494b76..00000000 --- a/packages/council-deploy/src/vaults/lockingVault/promptChooseLockingVaultAndDepositTokens.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { LockingVault__factory, MockERC20__factory } from "@council/typechain"; -import { formatUnits, parseUnits } from "ethers/lib/utils"; -import { ethers, network } from "hardhat"; -import prompt from "prompt"; -import { - getDeploymentForContract, - getDeploymentsFile, -} from "src/deployments/getDeployments"; -import { promptString } from "src/base/prompts/promptString"; -import { promptMint } from "src/votingToken/promptMint"; -import { promptNumber } from "src/base/prompts/promptNumber"; -import { getLockingVaults } from "src/vaults/lockingVault/getLockingVaults"; -import { makeGoerliTransactionUrl } from "src/etherscan/urls"; -import { promptYesNo } from "src/base/prompts/promptYesNo"; -import { DeploymentInfo } from "src/deployments/types"; - -async function promptChooseLockingVaultAndDepositTokens() { - const signers = await ethers.getSigners(); - const signer = signers[0]; - const chainId = network.config.chainId; - - const deploymentsFile = await getDeploymentsFile(network.name, chainId); - const deployments = deploymentsFile.deployments; - const allLockingVaults = getLockingVaults(deployments); - const lockingVaultsTable = allLockingVaults.map((lockingVault) => ({ - "Deployment name": ( - getDeploymentForContract( - lockingVault.address, - deployments, - ) as DeploymentInfo - ).name, - "LockingVault address": lockingVault.address, - })); - - prompt.start(); - - // choose a locking vault - console.table(lockingVaultsTable); - const vaultAddress = await promptString({ - message: "Enter a LockingVault address", - choices: allLockingVaults.map(({ address }) => address), - }); - const vaultContract = LockingVault__factory.connect(vaultAddress, signer); - - // if user has no tokens, offer to mint them some - const votingTokenAddress = await vaultContract.token(); - const votingToken = MockERC20__factory.connect(votingTokenAddress, signer); - if ((await votingToken.balanceOf(signer.address)).isZero()) { - const shouldMint = await promptYesNo({ - message: - "Your wallet does not contain any tokens available to deposit, would you like to mint some?", - }); - - if (!shouldMint) { - console.log("No tokens to deposit."); - return; - } - - await promptMint(votingToken, signer.address); - } - - // Ask the user for the amount of tokens to deposit - const balanceAvailableToDeposit = await votingToken.balanceOf(signer.address); - const decimals = await votingToken.decimals(); - const tokenSymbol = await votingToken.symbol(); - const formattedWalletBalance = formatUnits( - balanceAvailableToDeposit, - decimals, - ); - const [, balanceInVault] = await vaultContract.deposits(signer.address); - const formattedVaultBalance = formatUnits(balanceInVault, decimals); - const amountToDeposit = await promptNumber({ - message: `Amount to deposit (Wallet balance: ${formattedWalletBalance} ${tokenSymbol}, Vault balance: ${formattedVaultBalance} ${tokenSymbol})`, - max: formattedWalletBalance, - }); - const amountToDepositBigNumber = parseUnits( - amountToDeposit.toString(), - decimals, - ); - - // set an allowance for the LockingVault to access the user's tokens - const allowance = await votingToken.allowance(signer.address, vaultAddress); - if (allowance.lt(amountToDepositBigNumber)) { - console.log( - "Insufficient allowance. Submitting an allowance for the LockingVault before depositing the tokens...", - ); - const approvalTx = await votingToken.approve( - vaultAddress, - amountToDepositBigNumber, - ); - await approvalTx.wait(1); - console.log(`Approval confirmed! ${approvalTx.hash}`); - } - - const depositTx = await vaultContract.deposit( - signer.address, - amountToDepositBigNumber, - // set first delegation to self, this will no-op if the signer is already - // delegated - signer.address, - ); - console.log("Deposit submitted, waiting 1 confirmation..."); - const minedTx = depositTx.wait(1); - - console.log(`Deposit confirmed! ${depositTx.hash}`); - return minedTx; -} - -promptChooseLockingVaultAndDepositTokens() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/packages/council-deploy/src/votingToken/deployVotingToken.ts b/packages/council-deploy/src/votingToken/deployVotingToken.ts deleted file mode 100644 index 6ed6d84b..00000000 --- a/packages/council-deploy/src/votingToken/deployVotingToken.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { MockERC20__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { - ContractWithDeploymentArgs, - DeployArguments, -} from "src/base/contractFactory"; - -interface DeployVotingTokenOptions { - tokenName: string; - tokenSymbol: string; - signer: Signer; -} - -export async function deployVotingToken({ - tokenName, - tokenSymbol, - signer, -}: DeployVotingTokenOptions): Promise< - ContractWithDeploymentArgs -> { - console.log("Deploying VotingToken..."); - const signerAddress = await signer.getAddress(); - const votingTokenFactory = new MockERC20__factory(signer); - const deploymentArgs: DeployArguments = [ - tokenName, - tokenSymbol, - // setting the owner to the Signer so that it's possible to mint tokens at - // any time using whatever wallet deployed the token. - signerAddress, - ]; - - const votingToken = await votingTokenFactory.deploy(...deploymentArgs); - await votingToken.deployTransaction.wait(1); - console.log(`Deployed VotingToken @ ${votingToken.address}`); - - return { - address: votingToken.address, - name: "VotingToken", - contract: votingToken, - deploymentArgs, - }; -} diff --git a/packages/council-deploy/src/votingToken/getVotingTokens.ts b/packages/council-deploy/src/votingToken/getVotingTokens.ts deleted file mode 100644 index fd7714d3..00000000 --- a/packages/council-deploy/src/votingToken/getVotingTokens.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ContractDeploymentInfo, DeploymentInfo } from "src/deployments/types"; - -export function getVotingTokens( - deployments: DeploymentInfo[], -): ContractDeploymentInfo[] { - const allDeployedContracts = deployments - .map((deployment) => deployment.contracts) - .flat(); - - return allDeployedContracts.filter( - (deployedContract) => deployedContract.name === "VotingToken", - ); -} diff --git a/packages/council-deploy/src/votingToken/promptMint.ts b/packages/council-deploy/src/votingToken/promptMint.ts deleted file mode 100644 index 551a05d9..00000000 --- a/packages/council-deploy/src/votingToken/promptMint.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { MockERC20 } from "@council/typechain"; -import { ContractReceipt } from "ethers"; -import { formatUnits, parseUnits } from "ethers/lib/utils"; -import prompt from "prompt"; -import { makeGoerliTransactionUrl } from "src/etherscan/urls"; - -/** - * Mints tokens to the recipient. The amount to mint is given via an interactive - * prompt. - */ -export async function promptMint( - tokenContract: MockERC20, - recipientAddress: string, -): Promise { - const tokenDecimals = await tokenContract.decimals(); - const tokenSymbol = await tokenContract.symbol(); - const currentBalance = formatUnits( - await tokenContract.balanceOf(recipientAddress), - tokenDecimals, - ); - const { amountToMint } = await prompt.get({ - description: `Amount to mint (Current balance: ${currentBalance} ${tokenSymbol})`, - name: "amountToMint", - type: "string", - default: "100", - required: true, - }); - - const tx = await tokenContract.mint( - recipientAddress, - parseUnits(amountToMint as string, tokenDecimals), - ); - - console.log("Mint submitted, waiting 1 confirmation..."); - const minedTx = await tx.wait(1); - - console.log(`Mint confirmed! ${tx.hash}`); - - return minedTx; -} diff --git a/packages/council-deploy/src/votingToken/promptMintFromListOfVotingTokens.ts b/packages/council-deploy/src/votingToken/promptMintFromListOfVotingTokens.ts deleted file mode 100644 index beed1207..00000000 --- a/packages/council-deploy/src/votingToken/promptMintFromListOfVotingTokens.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { MockERC20__factory } from "@council/typechain"; -import { ethers, network } from "hardhat"; -import prompt from "prompt"; -import { promptString } from "src/base/prompts/promptString"; -import { goerliDeployments } from "src/deployments"; -import { - getDeploymentForContract, - getDeploymentsFile, -} from "src/deployments/getDeployments"; -import { DeploymentInfo } from "src/deployments/types"; -import { getVotingTokens } from "src/votingToken/getVotingTokens"; -import { promptMint } from "src/votingToken/promptMint"; - -async function mintFromListOfVotingTokens() { - const signers = await ethers.getSigners(); - const signer = signers[0]; - const chainId = network.config.chainId; - - const deploymentsFile = await getDeploymentsFile(network.name, chainId); - const deployments = deploymentsFile.deployments; - const allVotingTokens = getVotingTokens(deployments); - const votingTokensTable = allVotingTokens.map((votingToken) => ({ - "Deployment name": ( - getDeploymentForContract( - votingToken.address, - deployments, - ) as DeploymentInfo - ).name, - "Voting token address": votingToken.address, - })); - - console.table(votingTokensTable); - prompt.start(); - const votingTokenAddress = await promptString({ - message: "Enter a voting token address", - choices: allVotingTokens.map(({ address }) => address), - }); - - const votingTokenContract = MockERC20__factory.connect( - votingTokenAddress, - signer, - ); - - const recipientAddress = await promptString({ - message: "Enter the recipient's address", - defaultValue: signer.address, - }); - - await promptMint(votingTokenContract, recipientAddress as string); -} - -mintFromListOfVotingTokens() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/packages/council-deploy/tsconfig.json b/packages/council-deploy/tsconfig.json deleted file mode 100644 index 8b3baf51..00000000 --- a/packages/council-deploy/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "esModuleInterop": true, - "moduleResolution": "node", - "strict": true, - "outDir": "./build/", - "baseUrl": "./", - "resolveJsonModule": true, - "paths": { - "src/*": ["./src/*"] - } - }, - // Include/Exclude is for collections or groups of files or folders, etc.. - "include": ["./src/**/*"], - // Specify separate files directly by their path - "files": ["./hardhat.config.ts"] -} diff --git a/packages/contract-stub/.eslintrc b/packages/council-ethers/.eslintrc similarity index 100% rename from packages/contract-stub/.eslintrc rename to packages/council-ethers/.eslintrc diff --git a/packages/council-ethers/.gitignore b/packages/council-ethers/.gitignore new file mode 100644 index 00000000..db4c6d9b --- /dev/null +++ b/packages/council-ethers/.gitignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/packages/council-ethers/CHANGELOG.md b/packages/council-ethers/CHANGELOG.md new file mode 100644 index 00000000..e95de59b --- /dev/null +++ b/packages/council-ethers/CHANGELOG.md @@ -0,0 +1,21 @@ +# @delvtech/council-ethers + +## 0.0.3 + +### Patch Changes + +- @delvtech/council-core@0.0.3 + +## 0.0.2 + +### Patch Changes + +- @delvtech/council-core@0.0.2 + +## 0.0.1 + +### Patch Changes + +- abebf3c: Initial release 🚀 +- Updated dependencies [abebf3c] + - @delvtech/council-core@0.0.1 diff --git a/packages/council-ethers/README.md b/packages/council-ethers/README.md new file mode 100644 index 00000000..2d1963d6 --- /dev/null +++ b/packages/council-ethers/README.md @@ -0,0 +1 @@ +# Viem integrations for the @delvtech/evm-client diff --git a/packages/council-sdk/src/example/ElementGoerliAddressList.json b/packages/council-ethers/example/ElementGoerliAddressList.json similarity index 100% rename from packages/council-sdk/src/example/ElementGoerliAddressList.json rename to packages/council-ethers/example/ElementGoerliAddressList.json diff --git a/packages/council-sdk/src/example/ElementMainnetAddressList.json b/packages/council-ethers/example/ElementMainnetAddressList.json similarity index 100% rename from packages/council-sdk/src/example/ElementMainnetAddressList.json rename to packages/council-ethers/example/ElementMainnetAddressList.json diff --git a/packages/council-ethers/package.json b/packages/council-ethers/package.json new file mode 100644 index 00000000..d66388f0 --- /dev/null +++ b/packages/council-ethers/package.json @@ -0,0 +1,39 @@ +{ + "name": "@delvtech/council-ethers", + "version": "0.0.3", + "license": "MIT", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup", + "watch": "tsup --watch", + "typecheck": "tsc --noEmit" + }, + "peerDependencies": { + "ethers": ">=6" + }, + "dependencies": { + "@delvtech/council-core": "0.0.3", + "@delvtech/evm-client-ethers": "^0.1.1" + }, + "devDependencies": { + "@council/eslint-config": "*", + "@council/tsconfig": "*", + "ethers": "^6.11.1", + "tsup": "^8.0.2", + "typescript": "^5.3.3" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ] +} diff --git a/packages/council-ethers/src/contract/createReadContractFactory.ts b/packages/council-ethers/src/contract/createReadContractFactory.ts new file mode 100644 index 00000000..856b11f6 --- /dev/null +++ b/packages/council-ethers/src/contract/createReadContractFactory.ts @@ -0,0 +1,42 @@ +import { + ReadContractFactory, + extendReadContract, +} from "@delvtech/council-core"; +import { + SimpleCache, + createNetwork, + createReadContract, +} from "@delvtech/evm-client-ethers"; +import { Provider } from "ethers"; + +export interface CreateReadContractFactoryOptions { + provider: Provider; + cache?: SimpleCache; + namespace?: string; +} + +export function createReadContractFactory( + factoryOptions: CreateReadContractFactoryOptions, +): ReadContractFactory { + return (instanceOptions) => { + const options = { + ...factoryOptions, + ...instanceOptions, + }; + + const viemReadContract = createReadContract({ + abi: options.abi, + address: options.address, + provider: options.provider, + }); + + const viemNetwork = createNetwork(options.provider); + + // Adds custom event fetching logic to the base contract before caching. + return extendReadContract({ + ...options, + contract: viemReadContract, + network: viemNetwork, + }); + }; +} diff --git a/packages/council-ethers/src/contract/createReadWriteContractFactory.ts b/packages/council-ethers/src/contract/createReadWriteContractFactory.ts new file mode 100644 index 00000000..91ebacb5 --- /dev/null +++ b/packages/council-ethers/src/contract/createReadWriteContractFactory.ts @@ -0,0 +1,42 @@ +import { + ReadWriteContractFactory, + extendReadWriteContract, +} from "@delvtech/council-core"; +import { + createNetwork, + createReadWriteContract, +} from "@delvtech/evm-client-ethers"; +import { Signer } from "ethers"; +import { CreateReadContractFactoryOptions } from "src/contract/createReadContractFactory"; + +export interface CreateReadWriteContractFactoryOptions + extends CreateReadContractFactoryOptions { + signer: Signer; +} + +export function createReadWriteContractFactory( + factoryOptions: CreateReadWriteContractFactoryOptions, +): ReadWriteContractFactory { + return (instanceOptions) => { + const options = { + ...factoryOptions, + ...instanceOptions, + }; + + const viemReadWriteContract = createReadWriteContract({ + abi: options.abi, + address: options.address, + provider: options.provider, + signer: options.signer, + }); + + const viemNetwork = createNetwork(options.provider); + + // Adds custom event fetching logic to the base contract before caching. + return extendReadWriteContract({ + ...options, + contract: viemReadWriteContract, + network: viemNetwork, + }); + }; +} diff --git a/packages/council-ethers/src/index.ts b/packages/council-ethers/src/index.ts new file mode 100644 index 00000000..e8500b4b --- /dev/null +++ b/packages/council-ethers/src/index.ts @@ -0,0 +1,39 @@ +// Client +export { + createReadContractFactory, + type CreateReadContractFactoryOptions, +} from "src/contract/createReadContractFactory"; +export { + createReadWriteContractFactory, + type CreateReadWriteContractFactoryOptions, +} from "src/contract/createReadWriteContractFactory"; + +// Client Re-exports +export * from "@delvtech/evm-client-ethers"; + +// Council +export { + ReadCouncil, + type ReadCouncilOptions, +} from "src/models/council/ReadCouncil"; +export { + ReadWriteCouncil, + type ReadWriteCouncilOptions, +} from "src/models/council/ReadWriteCouncil"; +export { + ReadWriteMockToken, + type ReadWriteMockTokenOptions, +} from "src/models/token/ReadWriteMockToken"; + +// Council Core Re-exports +export * from "@delvtech/council-core/airdrop"; +export * from "@delvtech/council-core/contract"; +export * from "@delvtech/council-core/errors"; +export * from "@delvtech/council-core/model"; +export * from "@delvtech/council-core/proposal"; +export { ReadToken, type ReadTokenOptions } from "@delvtech/council-core/token"; +export * from "@delvtech/council-core/utils"; +export * from "@delvtech/council-core/vaults"; +export * from "@delvtech/council-core/vote"; +export * from "@delvtech/council-core/voter"; +export * from "@delvtech/council-core/voting"; diff --git a/packages/council-ethers/src/models/council/ReadCouncil.ts b/packages/council-ethers/src/models/council/ReadCouncil.ts new file mode 100644 index 00000000..b09ef081 --- /dev/null +++ b/packages/council-ethers/src/models/council/ReadCouncil.ts @@ -0,0 +1,28 @@ +import { ReadCouncil as BaseReadCouncil } from "@delvtech/council-core"; +import { SimpleCache, createNetwork } from "@delvtech/evm-client-ethers"; +import { Provider } from "ethers"; +import { createReadContractFactory } from "src/contract/createReadContractFactory"; + +export interface ReadCouncilOptions { + provider: Provider; + cache?: SimpleCache; + /** + * A namespace to distinguish this instance from others in the cache by + * prefixing all cache keys. + */ + namespace?: string; +} + +export class ReadCouncil extends BaseReadCouncil { + constructor({ provider, cache, namespace }: ReadCouncilOptions) { + super({ + name: namespace, + network: createNetwork(provider), + contractFactory: createReadContractFactory({ + provider, + cache, + namespace, + }), + }); + } +} diff --git a/packages/council-ethers/src/models/council/ReadWriteCouncil.ts b/packages/council-ethers/src/models/council/ReadWriteCouncil.ts new file mode 100644 index 00000000..529076cf --- /dev/null +++ b/packages/council-ethers/src/models/council/ReadWriteCouncil.ts @@ -0,0 +1,24 @@ +import { ReadWriteCouncil as BaseReadWriteCouncil } from "@delvtech/council-core"; +import { createNetwork } from "@delvtech/evm-client-ethers"; +import { Signer } from "ethers"; +import { createReadWriteContractFactory } from "src/contract/createReadWriteContractFactory"; +import { ReadCouncilOptions } from "./ReadCouncil"; + +export interface ReadWriteCouncilOptions extends ReadCouncilOptions { + signer: Signer; +} + +export class ReadWriteCouncil extends BaseReadWriteCouncil { + constructor({ provider, signer, cache, namespace }: ReadWriteCouncilOptions) { + super({ + name: namespace, + network: createNetwork(provider), + contractFactory: createReadWriteContractFactory({ + provider, + signer, + cache, + namespace, + }), + }); + } +} diff --git a/packages/council-ethers/src/models/token/ReadWriteMockToken.ts b/packages/council-ethers/src/models/token/ReadWriteMockToken.ts new file mode 100644 index 00000000..03625a16 --- /dev/null +++ b/packages/council-ethers/src/models/token/ReadWriteMockToken.ts @@ -0,0 +1,38 @@ +import { ReadWriteMockToken as BaseReadWriteMockToken } from "@delvtech/council-core"; +import { SimpleCache, createNetwork } from "@delvtech/evm-client-ethers"; +import { Provider, Signer } from "ethers"; +import { createReadWriteContractFactory } from "src/contract/createReadWriteContractFactory"; + +export interface ReadWriteMockTokenOptions { + address: `0x${string}`; + provider: Provider; + signer: Signer; + cache?: SimpleCache; + /** + * A namespace to distinguish this instance from others in the cache by + * prefixing all cache keys. + */ + namespace?: string; +} + +export class ReadWriteMockToken extends BaseReadWriteMockToken { + constructor({ + address, + provider, + signer, + cache, + namespace, + }: ReadWriteMockTokenOptions) { + super({ + address, + name: namespace, + network: createNetwork(provider), + contractFactory: createReadWriteContractFactory({ + provider, + signer, + cache, + namespace, + }), + }); + } +} diff --git a/packages/contract-stub/tsconfig.json b/packages/council-ethers/tsconfig.json similarity index 56% rename from packages/contract-stub/tsconfig.json rename to packages/council-ethers/tsconfig.json index 38697782..161d563b 100644 --- a/packages/contract-stub/tsconfig.json +++ b/packages/council-ethers/tsconfig.json @@ -5,9 +5,12 @@ "compilerOptions": { "rootDir": ".", "baseUrl": ".", + "target": "esnext", + "module": "ESNext", + "moduleResolution": "Bundler", "paths": { - "src/*": ["src/*"] + "src/*": ["src/*"], }, - "resolveJsonModule": true - } + "resolveJsonModule": true, + }, } diff --git a/packages/council-cli/tsup.config.ts b/packages/council-ethers/tsup.config.ts similarity index 54% rename from packages/council-cli/tsup.config.ts rename to packages/council-ethers/tsup.config.ts index dc92b75a..7924d73c 100644 --- a/packages/council-cli/tsup.config.ts +++ b/packages/council-ethers/tsup.config.ts @@ -1,11 +1,12 @@ import { defineConfig } from "tsup"; export default defineConfig({ - entry: ["src/**/*.ts"], - format: ["cjs"], - sourcemap: false, - dts: false, + entry: ["src/index.ts"], + format: ["esm"], + sourcemap: true, + dts: true, clean: true, minify: true, shims: true, + cjsInterop: true, }); diff --git a/packages/council-sdk/.prettierignore b/packages/council-sdk/.prettierignore deleted file mode 100644 index 53c37a16..00000000 --- a/packages/council-sdk/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -dist \ No newline at end of file diff --git a/packages/council-sdk/.prettierrc.js b/packages/council-sdk/.prettierrc.js deleted file mode 100644 index 63336b33..00000000 --- a/packages/council-sdk/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), - plugins: [require("prettier-plugin-organize-imports")], -}; diff --git a/packages/council-sdk/docs/.nojekyll b/packages/council-sdk/docs/.nojekyll deleted file mode 100644 index e2ac6616..00000000 --- a/packages/council-sdk/docs/.nojekyll +++ /dev/null @@ -1 +0,0 @@ -TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/packages/council-sdk/docs/README.md b/packages/council-sdk/docs/README.md deleted file mode 100644 index f84f027c..00000000 --- a/packages/council-sdk/docs/README.md +++ /dev/null @@ -1,239 +0,0 @@ -@council/sdk / [Exports](modules.md) - -# Council SDK - -A TypeScript SDK built with [ethers v5](https://docs.ethers.org/v5/) for interfacing with the [Council protocol](https://github.com/delvtech/council). - -> _[Ethers v6](https://docs.ethers.org/v6/) and/or [viem](https://github.com/wagmi-dev/viem) support TBD soon._ - -- [Installation](#installation) -- [Basic Usage](#basic-usage) -- [Primary Concepts](#primary-concepts) - - [Models](#models) - - [Data Sources](#data-sources) - - [Context](#context) - - [Utils](#utils) -- [Extending](#extending) - - [Adding a new Voting Vault](#adding-a-new-voting-vault) -- [Reference](#reference) - - [Models](#models-1) - - [Data Sources](#data-sources-1) - - [Context](#context-1) - - [Utils](#utils-1) - -## Installation - -The Council SDK isn't currently available as a stand alone package but can be installed within the council monorepo. - -1. Clone the council-monorepo. -2. Add `"@council/sdk": "*"` to the app or package's package.json. -3. Run install: `yarn`. - -## Basic Usage - -```ts -import { providers } from "ethers"; -import { CouncilContext, VotingContract } from "@council/sdk"; - -const provider = new providers.JsonRpcProvider("http://localhost:8545"); - -// 1. Create a new context instance -const context = new CouncilContext(provider); - -// 2. Create model instances -const coreVoting = new VotingContract("0x0...", [], context); - -// 3. Call methods on the models -const aliceVotes = coreVoting.getVotes("0x..."); -``` - -## Primary Concepts - -The SDK is made up of 4 main concepts: - -- [Models](#models) -- [Data Sources](#data-sources) -- [Context](#context) -- [Utils (utilities)](#utils) - -### Models - -Models are the primary interface for the SDK. They're JavaScript classes that -represent specific entities within Council and include methods on them to fetch -data and submit transactions. - -When possible, these data fetching methods will return other models. For -example, fetching a proposal from a `VotingContract` model will return a new -`Proposal` model instance with it's own methods. This makes it easy to work with -return values rather than just returning addresses or ids like you might expect -from an API. - -```ts -// initiates a new VotingContract Model instance -const coreVoting = new VotingContract("0x0...", [], context); - -// returns a new Proposal Model instance -const proposal0 = await coreVoting.getProposal(0); - -// returns a plain string since there is no model for Quorum. -const quorum = await proposal.getCurrentQuorum(); -``` - -For more info, checkout the [Models reference](#models-1). - -### Data Sources - -Data sources are JavaScript classes that act as an interchangeable data access layer for the models. They handle querying and caching logic so the models can just focus on defining the shape of Council entities and their relationships. - -As an SDK user, you'll likely never touch the data sources directly. A basic data source takes arguments from a model, fetches and caches on-chain data, and returns it to the model for any further transformations or model construction. - -Data sources return basic values and objects. They'll never return other data sources or models (class instances). - -```ts -const coreVoting = new CoreVotingContractDataSource("0x...", context); - -// returns a plain JavaScript object of data from the contract -const proposal = await coreVoting.getProposal(0); -``` - -For more info, checkout the [DataSources reference](#data-sources-1). - -### Context - -The [`CouncilContext`](docs/classes/CouncilContext.md) stores common information used in model and data source methods including shared data sources and their cache. It also includes a couple utility methods for getting and registering new shared data sources. - -As an SDK user, you likely won't call any methods on the context. You'll just construct the Context and pass it to new Models. - -```ts -const context = new CouncilContext(provider); -``` - -For more info, checkout the [CouncilContext reference](docs/classes//CouncilContext.md). - -### Utils - -Utils are functions for common operations performed when building with the Council SDK. - -```ts -// Turn a block number into a Date object with the getBlockDate util. -const blockDate = getBlockDate(minedBlockNumber, provider); - -// Estimate future dates (e.g., expiration dates) with the estimateFutureDates option. -const estimatedDate = getBlockDate(futureBlockNumber, provider, { - estimateFutureDates: true, -}); -``` - -For more info, checkout the [Utils reference](#utils-1). - -## Extending - -The Council SDK is purpose built to be extended and modified in a number of ways. Some examples of what you could do: - -- Initiate models with a custom data source -- Add new model variations (e.g., new vault types) -- Extend existing models with custom properties or methods -- Modify the way context manages shared data sources. - -The Council Kit monorepo is a great starting point to get all the src code including packages that haven't been published to a registry yet. However, making modifications directly to the source code can make it difficult to upgrade to newer versions. Extensions should be made either in a new package such as `@myprotocol/council-vaults` or inside app code. - -Once version 1.0.0 of the sdk has been published to NPM, this package can be removed from the monorepo and the version updated in dependent apps and packages from `*` to `^1.0.0`. - -### Adding a new Voting Vault - -For this guide we'll assume you've already generated an [ethers v5 typechain](https://github.com/dethcrypto/TypeChain/tree/@typechain/ethers-v5@10.2.0/packages/target-ethers-v5) instances for your voting vault. See [@council/typechain](https://github.com/delvtech/council-kit/tree/main/packages/council-typechain) for an example. - -**1. Create a new DataSource class** - -To fetch data from the custom vault, add a new `DataSource` class for it. - -```ts -import { FooVault, FooVault__factory } from "@foo/typechain"; -import { CouncilContext, VotingVaultContractDataSource } from "@council/sdk"; - -// Extend the `VotingVaultContractDataSource` class to get data from on chain -// and inherit the `queryVotePower` method. -export class FooVaultDataSource extends VotingVaultContractDataSource { - constructor(address: string, context: CouncilContext) { - super(FooVault__factory.connect(address, context.provider), context); - } - - // Add some custom data fetching methods taking advantage of util methods on - // the super class like `this.call()` and `this.getEvents()` - getAmount(address: string) { - const [amount, delegate] = this.call("amount", [address]); - return { - amount: amount.toString(), - delegate, - }; - } -} -``` - -**2. Create the Model class** - -Create a new `Model` class to transform some values into other `Model` instances and make it possible to initiate many model instances in different parts of the code that will all share the same data source instance and its cached data. - -```ts -import { Voter } from "@council.typechain"; -import { FooVaultDataSouce } from "./FooVaultDataSouce"; - -export class FooVault extends VotingVault { - constructor(address: string, context: CouncilContext) { - super(address, context, { - name: "Foo Vault", - dataSource: context.registerDataSource( - { address }, - new FooVaultDataSource(address, context), - ), - }); - } - - // add some methods to use in an app - async getAmount() { - const { amount, delegate } = this.dataSource.getAmount(); - return { - amount, - delegate: new Voter(delegate, this.context.provider), - }; - } -} -``` - -## Reference - -### Models - -- [`VotingContract`](docs/classes/VotingContract.md) - - [`GSCVotingContract`](docs/classes/GSCVotingContract.md) -- [`VotingVault`](docs/classes/VotingVault.md) - - [`LockingVault`](docs/classes/LockingVault.md) - - [`VestingVault`](docs/classes/VestingVault.md) - - [`GSCVault`](docs/classes/GSCVault.md) -- [`Proposal`](docs/classes/Proposal.md) -- [`Token`](docs/classes/Token.md) -- [`Vote`](docs/classes/Vote.md) -- [`Voter`](docs/classes/Voter.md) - -### Data Sources - -- [`CachedDataSource`](docs/classes/CachedDataSource.md) - - [`ContractDataSource`](docs/classes/ContractDataSource.md) - - [`CoreVotingContractDataSource`](docs/classes/CoreVotingContractDataSource.md) - - [`VotingVaultContractDataSource`](docs/classes/VotingVaultContractDataSource.md) - - [`LockingVaultContractDataSource`](docs/classes/LockingVaultContractDataSource.md) - - [`VestingVaultContractDataSource`](docs/classes/VestingVaultContractDataSource.md) - - [`GSCVaultContractDataSource`](docs/classes/GSCVaultContractDataSource.md) - - [`ERC20ContractDataSource`](docs/classes/ERC20ContractDataSource.md) - - [`HTTPDataSource`](docs/classes/HTTPDataSource.md) - -### Context - -- [`CouncilContext`](docs/classes//CouncilContext.md) - -### Utils - -- [`cached`](docs/modules.md#cached) -- [`cachedKey`](docs/modules.md#cachedkey) -- [`getBlockDate`](docs/modules.md#getblockdate) -- [`sumStrings`](docs/modules.md#sumstrings) diff --git a/packages/council-sdk/docs/classes/Airdrop.md b/packages/council-sdk/docs/classes/Airdrop.md deleted file mode 100644 index e7e08106..00000000 --- a/packages/council-sdk/docs/classes/Airdrop.md +++ /dev/null @@ -1,250 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Airdrop - -# Class: Airdrop - -## Hierarchy - -- [`Model`](Model.md) - - ↳ **`Airdrop`** - -## Table of contents - -### Constructors - -- [constructor](Airdrop.md#constructor) - -### Properties - -- [address](Airdrop.md#address) -- [context](Airdrop.md#context) -- [dataSource](Airdrop.md#datasource) -- [name](Airdrop.md#name) - -### Methods - -- [claim](Airdrop.md#claim) -- [claimAndDelegate](Airdrop.md#claimanddelegate) -- [getClaimedAmount](Airdrop.md#getclaimedamount) -- [getExpiration](Airdrop.md#getexpiration) -- [getLockingVault](Airdrop.md#getlockingvault) -- [getMerkleRoot](Airdrop.md#getmerkleroot) -- [getToken](Airdrop.md#gettoken) - -## Constructors - -### constructor - -• **new Airdrop**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`AirdropOptions`](../interfaces/AirdropOptions.md) | - -#### Overrides - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:29](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L29) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:26](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L26) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`AirdropDataSource`](../interfaces/AirdropDataSource.md) - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:27](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L27) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### claim - -▸ **claim**(`signer`, `amount`, `totalGrant`, `merkleProof`, `destination?`, `options?`): `Promise`<`string`\> - -Claims tokens from the airdrop and sends them to the user. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `amount` | `string` | Amount of tokens to claim. | -| `totalGrant` | `string` | The total amount of tokens the user was granted. | -| `merkleProof` | `string`[] | A set of hashes that can be used to reconstruct the path from a user (leaf) node to the merkle root, verifying that the user is part of the tree. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:95](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L95) - -___ - -### claimAndDelegate - -▸ **claimAndDelegate**(`signer`, `amount`, `delegate`, `totalGrant`, `merkleProof`, `destination?`, `options?`): `Promise`<`string`\> - -Claims tokens from the airdrop, deposits it into the locking vault, and -delegates in a single transaction. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `amount` | `string` | Amount of tokens to claim. | -| `delegate` | `string` | The address the user will delegate to, WARNING - should not be zero. | -| `totalGrant` | `string` | The total amount of tokens the user was granted. | -| `merkleProof` | `string`[] | A set of hashes that can be used to reconstruct the path from a user (leaf) node to the merkle root, verifying that the user is part of the tree. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:126](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L126) - -___ - -### getClaimedAmount - -▸ **getClaimedAmount**(`address`): `Promise`<`string`\> - -Get the token balance of a given address - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:71](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L71) - -___ - -### getExpiration - -▸ **getExpiration**(): `Promise`<`Date`\> - -Get a timestamp (in MS) of when the tokens can be reclaimed (removed by the -owner). - -#### Returns - -`Promise`<`Date`\> - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:48](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L48) - -___ - -### getLockingVault - -▸ **getLockingVault**(): `Promise`<[`LockingVault`](LockingVault.md)\> - -Get the address of the locking vault into which tokens will be deposited -when someone claims and delegates in a single tx. - -#### Returns - -`Promise`<[`LockingVault`](LockingVault.md)\> - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:79](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L79) - -___ - -### getMerkleRoot - -▸ **getMerkleRoot**(): `Promise`<`string`\> - -Get The merkle root with deposits encoded into it as hash [address, amount] - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:56](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L56) - -___ - -### getToken - -▸ **getToken**(): `Promise`<[`Token`](Token.md)\> - -Get the token that will be paid out. - -#### Returns - -`Promise`<[`Token`](Token.md)\> - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:63](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L63) diff --git a/packages/council-sdk/docs/classes/AirdropContractDataSource.md b/packages/council-sdk/docs/classes/AirdropContractDataSource.md deleted file mode 100644 index 2644b786..00000000 --- a/packages/council-sdk/docs/classes/AirdropContractDataSource.md +++ /dev/null @@ -1,638 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / AirdropContractDataSource - -# Class: AirdropContractDataSource - -An interface for fetching data from any airdrop. - -## Hierarchy - -- [`ContractDataSource`](ContractDataSource.md)<`Airdrop`\> - - ↳ **`AirdropContractDataSource`** - -## Implements - -- [`AirdropDataSource`](../interfaces/AirdropDataSource.md) - -## Table of contents - -### Constructors - -- [constructor](AirdropContractDataSource.md#constructor) - -### Properties - -- [address](AirdropContractDataSource.md#address) -- [cache](AirdropContractDataSource.md#cache) -- [context](AirdropContractDataSource.md#context) -- [contract](AirdropContractDataSource.md#contract) -- [tokenDataSourceGetter](AirdropContractDataSource.md#tokendatasourcegetter) - -### Methods - -- [cached](AirdropContractDataSource.md#cached) -- [call](AirdropContractDataSource.md#call) -- [callStatic](AirdropContractDataSource.md#callstatic) -- [callWithSigner](AirdropContractDataSource.md#callwithsigner) -- [claim](AirdropContractDataSource.md#claim) -- [claimAndDelegate](AirdropContractDataSource.md#claimanddelegate) -- [clearCached](AirdropContractDataSource.md#clearcached) -- [deleteCached](AirdropContractDataSource.md#deletecached) -- [deleteCall](AirdropContractDataSource.md#deletecall) -- [getClaimedAmount](AirdropContractDataSource.md#getclaimedamount) -- [getEvents](AirdropContractDataSource.md#getevents) -- [getExpiration](AirdropContractDataSource.md#getexpiration) -- [getLockingVault](AirdropContractDataSource.md#getlockingvault) -- [getMerkleRoot](AirdropContractDataSource.md#getmerkleroot) -- [getToken](AirdropContractDataSource.md#gettoken) -- [getTokenDecimals](AirdropContractDataSource.md#gettokendecimals) -- [reclaim](AirdropContractDataSource.md#reclaim) - -## Constructors - -### constructor - -• **new AirdropContractDataSource**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`AirdropContractDataSourceOptions`](../interfaces/AirdropContractDataSourceOptions.md) | - -#### Overrides - -[ContractDataSource](ContractDataSource.md).[constructor](ContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:32](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L32) - -## Properties - -### address - -• **address**: `string` - -#### Implementation of - -[AirdropDataSource](../interfaces/AirdropDataSource.md).[address](../interfaces/AirdropDataSource.md#address) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[address](ContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cache](ContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Implementation of - -[AirdropDataSource](../interfaces/AirdropDataSource.md).[context](../interfaces/AirdropDataSource.md#context) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[context](ContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `Airdrop` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[contract](ContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -___ - -### tokenDataSourceGetter - -• `Private` **tokenDataSourceGetter**: `TokenDataSourceGetter` - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:30](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L30) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cached](ContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `Airdrop`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"claim(uint256,uint256,bytes32[],address)"`` \| ``"claimAndDelegate(uint256,address,uint256,bytes32[],address)"`` \| ``"claimed(address)"`` \| ``"expiration()"`` \| ``"lockingVault()"`` \| ``"reclaim(address)"`` \| ``"rewardsRoot()"`` \| ``"token()"`` \| ``"claim"`` \| ``"claimAndDelegate"`` \| ``"claimed"`` \| ``"expiration"`` \| ``"lockingVault"`` \| ``"reclaim"`` \| ``"rewardsRoot"`` \| ``"token"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `Airdrop`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`Airdrop`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[call](ContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<{ `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `claim`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim(uint256,uint256,bytes32[],address)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimAndDelegate`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `delegate`: `PromiseOrValue`<`string`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimAndDelegate(uint256,address,uint256,bytes32[],address)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `delegate`: `PromiseOrValue`<`string`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimed`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `claimed(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `expiration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `expiration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `lockingVault`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `lockingVault()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `reclaim`: (`destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `reclaim(address)`: (`destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `rewardsRoot`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `rewardsRoot()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> }[`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"claim(uint256,uint256,bytes32[],address)"`` \| ``"claimAndDelegate(uint256,address,uint256,bytes32[],address)"`` \| ``"claimed(address)"`` \| ``"expiration()"`` \| ``"lockingVault()"`` \| ``"reclaim(address)"`` \| ``"rewardsRoot()"`` \| ``"token()"`` \| ``"claim"`` \| ``"claimAndDelegate"`` \| ``"claimed"`` \| ``"expiration"`` \| ``"lockingVault"`` \| ``"reclaim"`` \| ``"rewardsRoot"`` \| ``"token"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | { `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `claim`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim(uint256,uint256,bytes32[],address)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimAndDelegate`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `delegate`: `PromiseOrValue`<`string`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimAndDelegate(uint256,address,uint256,bytes32[],address)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `delegate`: `PromiseOrValue`<`string`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimed`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `claimed(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `expiration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `expiration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `lockingVault`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `lockingVault()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `reclaim`: (`destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `reclaim(address)`: (`destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `rewardsRoot`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `rewardsRoot()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> }[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<{ `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `claim`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim(uint256,uint256,bytes32[],address)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimAndDelegate`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `delegate`: `PromiseOrValue`<`string`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimAndDelegate(uint256,address,uint256,bytes32[],address)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `delegate`: `PromiseOrValue`<`string`\>, `totalGrant`: `PromiseOrValue`<`BigNumberish`\>, `merkleProof`: `PromiseOrValue`<`BytesLike`\>[], `destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claimed`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `claimed(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `expiration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `expiration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `lockingVault`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `lockingVault()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `reclaim`: (`destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `reclaim(address)`: (`destination`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `rewardsRoot`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `rewardsRoot()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> }[`K`]\> - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callStatic](ContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"fallback"`` \| ``"authorize(address)"`` \| ``"deauthorize(address)"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"deauthorize"`` \| ``"setOwner"`` \| ``"claim(uint256,uint256,bytes32[],address)"`` \| ``"claimAndDelegate(uint256,address,uint256,bytes32[],address)"`` \| ``"reclaim(address)"`` \| ``"claim"`` \| ``"claimAndDelegate"`` \| ``"reclaim"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `Airdrop`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callWithSigner](ContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### claim - -▸ **claim**(`signer`, `amount`, `totalGrant`, `merkleProof`, `destination?`, `options?`): `Promise`<`string`\> - -Claims tokens from the airdrop and sends them to the user. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `amount` | `string` | Amount of tokens to claim. | -| `totalGrant` | `string` | The total amount of tokens the user was granted. | -| `merkleProof` | `string`[] | A set of hashes that can be used to reconstruct the path from a user (leaf) node to the merkle root, verifying that the user is part of the tree. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Implementation of - -AirdropDataSource.claim - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:75](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L75) - -___ - -### claimAndDelegate - -▸ **claimAndDelegate**(`signer`, `amount`, `delegate`, `totalGrant`, `merklProof`, `destination?`, `options?`): `Promise`<`string`\> - -Claims tokens from the airdrop, deposits it into the locking vault, and -delegates in a single transaction. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `amount` | `string` | Amount of tokens to claim. | -| `delegate` | `string` | The address the user will delegate to, WARNING - should not be zero. | -| `totalGrant` | `string` | The total amount of tokens the user was granted. | -| `merklProof` | `string`[] | A set of hashes that can be used to reconstruct the path from a user (leaf) node to the merkle root, verifying that the user is part of the tree. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Implementation of - -AirdropDataSource.claimAndDelegate - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:102](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L102) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[clearCached](ContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCached](ContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"claim(uint256,uint256,bytes32[],address)"`` \| ``"claimAndDelegate(uint256,address,uint256,bytes32[],address)"`` \| ``"claimed(address)"`` \| ``"expiration()"`` \| ``"lockingVault()"`` \| ``"reclaim(address)"`` \| ``"rewardsRoot()"`` \| ``"token()"`` \| ``"claim"`` \| ``"claimAndDelegate"`` \| ``"claimed"`` \| ``"expiration"`` \| ``"lockingVault"`` \| ``"reclaim"`` \| ``"rewardsRoot"`` \| ``"token"`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `Airdrop`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCall](ContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### getClaimedAmount - -▸ **getClaimedAmount**(`address`): `Promise`<`string`\> - -Get the amount that an address has already claimed. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -AirdropDataSource.getClaimedAmount - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:65](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L65) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[getEvents](ContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getExpiration - -▸ **getExpiration**(): `Promise`<`number`\> - -Get a timestamp (in MS) of when the tokens can be reclaimed (removed by the -owner). - -#### Returns - -`Promise`<`number`\> - -#### Implementation of - -AirdropDataSource.getExpiration - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:52](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L52) - -___ - -### getLockingVault - -▸ **getLockingVault**(): `Promise`<`string`\> - -Get the address of the locking vault into which tokens will be deposited -when someone claims and delegates in a single tx. - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -AirdropDataSource.getLockingVault - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:71](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L71) - -___ - -### getMerkleRoot - -▸ **getMerkleRoot**(): `Promise`<`string`\> - -Get The merkle root with deposits encoded into it as hash [address, amount] - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -AirdropDataSource.getMerkleRoot - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L57) - -___ - -### getToken - -▸ **getToken**(): `Promise`<`string`\> - -Get the address of the token that will be paid out. - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[AirdropDataSource](../interfaces/AirdropDataSource.md).[getToken](../interfaces/AirdropDataSource.md#gettoken) - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:61](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L61) - -___ - -### getTokenDecimals - -▸ `Private` **getTokenDecimals**(): `Promise`<`number`\> - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L43) - -___ - -### reclaim - -▸ **reclaim**(`signer`, `destination?`, `options?`): `Promise`<`string`\> - -Remove funds from the airdrop after expiration - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Implementation of - -AirdropDataSource.reclaim - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L131) diff --git a/packages/council-sdk/docs/classes/CachedDataSource.md b/packages/council-sdk/docs/classes/CachedDataSource.md deleted file mode 100644 index 1e3e2b04..00000000 --- a/packages/council-sdk/docs/classes/CachedDataSource.md +++ /dev/null @@ -1,151 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / CachedDataSource - -# Class: CachedDataSource - -A DataSource with methods for caching return values using an LRU cache. - -**`See`** - -https://github.com/isaacs/node-lru-cache - -## Hierarchy - -- **`CachedDataSource`** - - ↳ [`ContractDataSource`](ContractDataSource.md) - - ↳ [`HTTPDataSource`](HTTPDataSource.md) - -## Implements - -- [`DataSource`](../interfaces/DataSource.md) - -## Table of contents - -### Constructors - -- [constructor](CachedDataSource.md#constructor) - -### Properties - -- [cache](CachedDataSource.md#cache) -- [context](CachedDataSource.md#context) - -### Methods - -- [cached](CachedDataSource.md#cached) -- [clearCached](CachedDataSource.md#clearcached) -- [deleteCached](CachedDataSource.md#deletecached) - -## Constructors - -### constructor - -• **new CachedDataSource**(`context`, `cache?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `cache?` | `LRUCache`<`string`, `any`\> | - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:15](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L15) - -## Properties - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Implementation of - -[DataSource](../interfaces/DataSource.md).[context](../interfaces/DataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) diff --git a/packages/council-sdk/docs/classes/ContractDataSource.md b/packages/council-sdk/docs/classes/ContractDataSource.md deleted file mode 100644 index 42d4703d..00000000 --- a/packages/council-sdk/docs/classes/ContractDataSource.md +++ /dev/null @@ -1,383 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / ContractDataSource - -# Class: ContractDataSource - -A DataSource with methods for making cached calls to an ethers contract -instance. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/ - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends `Contract` | - -## Hierarchy - -- [`CachedDataSource`](CachedDataSource.md) - - ↳ **`ContractDataSource`** - - ↳↳ [`AirdropContractDataSource`](AirdropContractDataSource.md) - - ↳↳ [`ERC20ContractDataSource`](ERC20ContractDataSource.md) - - ↳↳ [`CoreVotingContractDataSource`](CoreVotingContractDataSource.md) - - ↳↳ [`VotingVaultContractDataSource`](VotingVaultContractDataSource.md) - -## Table of contents - -### Constructors - -- [constructor](ContractDataSource.md#constructor) - -### Properties - -- [address](ContractDataSource.md#address) -- [cache](ContractDataSource.md#cache) -- [context](ContractDataSource.md#context) -- [contract](ContractDataSource.md#contract) - -### Methods - -- [cached](ContractDataSource.md#cached) -- [call](ContractDataSource.md#call) -- [callStatic](ContractDataSource.md#callstatic) -- [callWithSigner](ContractDataSource.md#callwithsigner) -- [clearCached](ContractDataSource.md#clearcached) -- [deleteCached](ContractDataSource.md#deletecached) -- [deleteCall](ContractDataSource.md#deletecall) -- [getEvents](ContractDataSource.md#getevents) - -## Constructors - -### constructor - -• **new ContractDataSource**<`T`\>(`contract`, `context`, `cache?`) - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends `Contract`<`T`\> | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contract` | `T` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `cache?` | `LRUCache`<`string`, `any`\> | - -#### Overrides - -[CachedDataSource](CachedDataSource.md).[constructor](CachedDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:25](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L25) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[cache](CachedDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[context](CachedDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `T` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[cached](CachedDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `T`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `T`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`T`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<`T`[``"callStatic"``][`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `T`[``"callStatic"``][`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<`T`[``"callStatic"``][`K`]\> - -The value returned from the contract. - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `T`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[clearCached](CachedDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[deleteCached](CachedDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `T`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) diff --git a/packages/council-sdk/docs/classes/CoreVotingContractDataSource.md b/packages/council-sdk/docs/classes/CoreVotingContractDataSource.md deleted file mode 100644 index 926814ad..00000000 --- a/packages/council-sdk/docs/classes/CoreVotingContractDataSource.md +++ /dev/null @@ -1,798 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / CoreVotingContractDataSource - -# Class: CoreVotingContractDataSource - -A DataSource with methods for making cached calls to a `CoreVoting` contract -from the Council protocol. - -## Hierarchy - -- [`ContractDataSource`](ContractDataSource.md)<`CoreVoting`\> - - ↳ **`CoreVotingContractDataSource`** - -## Implements - -- [`VotingContractDataSource`](../interfaces/VotingContractDataSource.md) - -## Table of contents - -### Constructors - -- [constructor](CoreVotingContractDataSource.md#constructor) - -### Properties - -- [address](CoreVotingContractDataSource.md#address) -- [cache](CoreVotingContractDataSource.md#cache) -- [context](CoreVotingContractDataSource.md#context) -- [contract](CoreVotingContractDataSource.md#contract) - -### Methods - -- [cached](CoreVotingContractDataSource.md#cached) -- [call](CoreVotingContractDataSource.md#call) -- [callStatic](CoreVotingContractDataSource.md#callstatic) -- [callWithSigner](CoreVotingContractDataSource.md#callwithsigner) -- [clearCached](CoreVotingContractDataSource.md#clearcached) -- [createProposal](CoreVotingContractDataSource.md#createproposal) -- [deleteCached](CoreVotingContractDataSource.md#deletecached) -- [deleteCall](CoreVotingContractDataSource.md#deletecall) -- [executeProposal](CoreVotingContractDataSource.md#executeproposal) -- [getEvents](CoreVotingContractDataSource.md#getevents) -- [getExecutedProposalIds](CoreVotingContractDataSource.md#getexecutedproposalids) -- [getProposal](CoreVotingContractDataSource.md#getproposal) -- [getProposalCount](CoreVotingContractDataSource.md#getproposalcount) -- [getProposalCreatedBy](CoreVotingContractDataSource.md#getproposalcreatedby) -- [getProposalCreatedTransactionHash](CoreVotingContractDataSource.md#getproposalcreatedtransactionhash) -- [getProposalExecutedTransactionHash](CoreVotingContractDataSource.md#getproposalexecutedtransactionhash) -- [getProposals](CoreVotingContractDataSource.md#getproposals) -- [getResults](CoreVotingContractDataSource.md#getresults) -- [getTargetsAndCalldatas](CoreVotingContractDataSource.md#gettargetsandcalldatas) -- [getVote](CoreVotingContractDataSource.md#getvote) -- [getVotes](CoreVotingContractDataSource.md#getvotes) -- [vote](CoreVotingContractDataSource.md#vote) - -## Constructors - -### constructor - -• **new CoreVotingContractDataSource**(`address`, `context`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | - -#### Overrides - -[ContractDataSource](ContractDataSource.md).[constructor](ContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:37](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L37) - -## Properties - -### address - -• **address**: `string` - -#### Implementation of - -[VotingContractDataSource](../interfaces/VotingContractDataSource.md).[address](../interfaces/VotingContractDataSource.md#address) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[address](ContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cache](ContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Implementation of - -[VotingContractDataSource](../interfaces/VotingContractDataSource.md).[context](../interfaces/VotingContractDataSource.md#context) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[context](ContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `CoreVoting` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[contract](ContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cached](ContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `CoreVoting`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"DAY_IN_BLOCKS()"`` \| ``"approvedVaults(address)"`` \| ``"baseQuorum()"`` \| ``"changeExtraVotingTime(uint256)"`` \| ``"changeVaultStatus(address,bool)"`` \| ``"execute(uint256,address[],bytes[])"`` \| ``"extraVoteTime()"`` \| ``"getProposalVotingPower(uint256)"`` \| ``"lockDuration()"`` \| ``"minProposalPower()"`` \| ``"proposal(address[],bytes[],address[],bytes[],uint256,uint8)"`` \| ``"proposalCount()"`` \| ``"proposals(uint256)"`` \| ``"quorums(address,bytes4)"`` \| ``"setCustomQuorum(address,bytes4,uint256)"`` \| ``"setDefaultQuorum(uint256)"`` \| ``"setLockDuration(uint256)"`` \| ``"setMinProposalPower(uint256)"`` \| ``"vote(address[],bytes[],uint256,uint8)"`` \| ``"votes(address,uint256)"`` \| ``"DAY_IN_BLOCKS"`` \| ``"approvedVaults"`` \| ``"baseQuorum"`` \| ``"changeExtraVotingTime"`` \| ``"changeVaultStatus"`` \| ``"execute"`` \| ``"extraVoteTime"`` \| ``"getProposalVotingPower"`` \| ``"lockDuration"`` \| ``"minProposalPower"`` \| ``"proposal"`` \| ``"proposalCount"`` \| ``"proposals"`` \| ``"quorums"`` \| ``"setCustomQuorum"`` \| ``"setDefaultQuorum"`` \| ``"setLockDuration"`` \| ``"setMinProposalPower"`` \| ``"vote"`` \| ``"votes"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `CoreVoting`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`CoreVoting`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[call](ContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<{ `DAY_IN_BLOCKS`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `DAY_IN_BLOCKS()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `approvedVaults`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `approvedVaults(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `baseQuorum`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `baseQuorum()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `changeExtraVotingTime`: (`_extraVoteTime`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeExtraVotingTime(uint256)`: (`_extraVoteTime`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeVaultStatus`: (`vault`: `PromiseOrValue`<`string`\>, `isValid`: `PromiseOrValue`<`boolean`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeVaultStatus(address,bool)`: (`vault`: `PromiseOrValue`<`string`\>, `isValid`: `PromiseOrValue`<`boolean`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `execute`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `execute(uint256,address[],bytes[])`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `extraVoteTime`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `extraVoteTime()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `getProposalVotingPower`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `BigNumber`, `BigNumber`]\> ; `getProposalVotingPower(uint256)`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `BigNumber`, `BigNumber`]\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `lockDuration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `lockDuration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `minProposalPower`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `minProposalPower()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `proposal`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `lastCall`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proposal(address[],bytes[],address[],bytes[],uint256,uint8)`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `lastCall`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proposalCount`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `proposalCount()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `proposals`: (`arg0`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`] & { `created`: `BigNumber` ; `expiration`: `BigNumber` ; `lastCall`: `BigNumber` ; `proposalHash`: `string` ; `quorum`: `BigNumber` ; `unlock`: `BigNumber` }\> ; `proposals(uint256)`: (`arg0`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`] & { `created`: `BigNumber` ; `expiration`: `BigNumber` ; `lastCall`: `BigNumber` ; `proposalHash`: `string` ; `quorum`: `BigNumber` ; `unlock`: `BigNumber` }\> ; `quorums`: (`target`: `PromiseOrValue`<`string`\>, `functionSelector`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `quorums(address,bytes4)`: (`target`: `PromiseOrValue`<`string`\>, `functionSelector`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `setCustomQuorum`: (`target`: `PromiseOrValue`<`string`\>, `selector`: `PromiseOrValue`<`BytesLike`\>, `quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setCustomQuorum(address,bytes4,uint256)`: (`target`: `PromiseOrValue`<`string`\>, `selector`: `PromiseOrValue`<`BytesLike`\>, `quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setDefaultQuorum`: (`quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setDefaultQuorum(uint256)`: (`quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setLockDuration`: (`_lockDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setLockDuration(uint256)`: (`_lockDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setMinProposalPower`: (`_minProposalPower`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setMinProposalPower(uint256)`: (`_minProposalPower`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `vote`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `proposalId`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `vote(address[],bytes[],uint256,uint8)`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `proposalId`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `votes`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `number`] & { `castBallot`: `number` ; `votingPower`: `BigNumber` }\> ; `votes(address,uint256)`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `number`] & { `castBallot`: `number` ; `votingPower`: `BigNumber` }\> }[`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"DAY_IN_BLOCKS()"`` \| ``"approvedVaults(address)"`` \| ``"baseQuorum()"`` \| ``"changeExtraVotingTime(uint256)"`` \| ``"changeVaultStatus(address,bool)"`` \| ``"execute(uint256,address[],bytes[])"`` \| ``"extraVoteTime()"`` \| ``"getProposalVotingPower(uint256)"`` \| ``"lockDuration()"`` \| ``"minProposalPower()"`` \| ``"proposal(address[],bytes[],address[],bytes[],uint256,uint8)"`` \| ``"proposalCount()"`` \| ``"proposals(uint256)"`` \| ``"quorums(address,bytes4)"`` \| ``"setCustomQuorum(address,bytes4,uint256)"`` \| ``"setDefaultQuorum(uint256)"`` \| ``"setLockDuration(uint256)"`` \| ``"setMinProposalPower(uint256)"`` \| ``"vote(address[],bytes[],uint256,uint8)"`` \| ``"votes(address,uint256)"`` \| ``"DAY_IN_BLOCKS"`` \| ``"approvedVaults"`` \| ``"baseQuorum"`` \| ``"changeExtraVotingTime"`` \| ``"changeVaultStatus"`` \| ``"execute"`` \| ``"extraVoteTime"`` \| ``"getProposalVotingPower"`` \| ``"lockDuration"`` \| ``"minProposalPower"`` \| ``"proposal"`` \| ``"proposalCount"`` \| ``"proposals"`` \| ``"quorums"`` \| ``"setCustomQuorum"`` \| ``"setDefaultQuorum"`` \| ``"setLockDuration"`` \| ``"setMinProposalPower"`` \| ``"vote"`` \| ``"votes"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | { `DAY_IN_BLOCKS`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `DAY_IN_BLOCKS()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `approvedVaults`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `approvedVaults(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `baseQuorum`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `baseQuorum()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `changeExtraVotingTime`: (`_extraVoteTime`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeExtraVotingTime(uint256)`: (`_extraVoteTime`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeVaultStatus`: (`vault`: `PromiseOrValue`<`string`\>, `isValid`: `PromiseOrValue`<`boolean`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeVaultStatus(address,bool)`: (`vault`: `PromiseOrValue`<`string`\>, `isValid`: `PromiseOrValue`<`boolean`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `execute`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `execute(uint256,address[],bytes[])`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `extraVoteTime`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `extraVoteTime()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `getProposalVotingPower`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `BigNumber`, `BigNumber`]\> ; `getProposalVotingPower(uint256)`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `BigNumber`, `BigNumber`]\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `lockDuration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `lockDuration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `minProposalPower`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `minProposalPower()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `proposal`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `lastCall`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proposal(address[],bytes[],address[],bytes[],uint256,uint8)`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `lastCall`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proposalCount`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `proposalCount()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `proposals`: (`arg0`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`] & { `created`: `BigNumber` ; `expiration`: `BigNumber` ; `lastCall`: `BigNumber` ; `proposalHash`: `string` ; `quorum`: `BigNumber` ; `unlock`: `BigNumber` }\> ; `proposals(uint256)`: (`arg0`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`] & { `created`: `BigNumber` ; `expiration`: `BigNumber` ; `lastCall`: `BigNumber` ; `proposalHash`: `string` ; `quorum`: `BigNumber` ; `unlock`: `BigNumber` }\> ; `quorums`: (`target`: `PromiseOrValue`<`string`\>, `functionSelector`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `quorums(address,bytes4)`: (`target`: `PromiseOrValue`<`string`\>, `functionSelector`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `setCustomQuorum`: (`target`: `PromiseOrValue`<`string`\>, `selector`: `PromiseOrValue`<`BytesLike`\>, `quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setCustomQuorum(address,bytes4,uint256)`: (`target`: `PromiseOrValue`<`string`\>, `selector`: `PromiseOrValue`<`BytesLike`\>, `quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setDefaultQuorum`: (`quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setDefaultQuorum(uint256)`: (`quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setLockDuration`: (`_lockDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setLockDuration(uint256)`: (`_lockDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setMinProposalPower`: (`_minProposalPower`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setMinProposalPower(uint256)`: (`_minProposalPower`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `vote`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `proposalId`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `vote(address[],bytes[],uint256,uint8)`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `proposalId`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `votes`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `number`] & { `castBallot`: `number` ; `votingPower`: `BigNumber` }\> ; `votes(address,uint256)`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `number`] & { `castBallot`: `number` ; `votingPower`: `BigNumber` }\> }[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<{ `DAY_IN_BLOCKS`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `DAY_IN_BLOCKS()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `approvedVaults`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `approvedVaults(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `baseQuorum`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `baseQuorum()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `changeExtraVotingTime`: (`_extraVoteTime`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeExtraVotingTime(uint256)`: (`_extraVoteTime`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeVaultStatus`: (`vault`: `PromiseOrValue`<`string`\>, `isValid`: `PromiseOrValue`<`boolean`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeVaultStatus(address,bool)`: (`vault`: `PromiseOrValue`<`string`\>, `isValid`: `PromiseOrValue`<`boolean`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `execute`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `execute(uint256,address[],bytes[])`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `extraVoteTime`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `extraVoteTime()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `getProposalVotingPower`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `BigNumber`, `BigNumber`]\> ; `getProposalVotingPower(uint256)`: (`proposalId`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `BigNumber`, `BigNumber`]\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `lockDuration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `lockDuration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `minProposalPower`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `minProposalPower()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `proposal`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `lastCall`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proposal(address[],bytes[],address[],bytes[],uint256,uint8)`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `targets`: `PromiseOrValue`<`string`\>[], `calldatas`: `PromiseOrValue`<`BytesLike`\>[], `lastCall`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proposalCount`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `proposalCount()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `proposals`: (`arg0`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`] & { `created`: `BigNumber` ; `expiration`: `BigNumber` ; `lastCall`: `BigNumber` ; `proposalHash`: `string` ; `quorum`: `BigNumber` ; `unlock`: `BigNumber` }\> ; `proposals(uint256)`: (`arg0`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`, `BigNumber`] & { `created`: `BigNumber` ; `expiration`: `BigNumber` ; `lastCall`: `BigNumber` ; `proposalHash`: `string` ; `quorum`: `BigNumber` ; `unlock`: `BigNumber` }\> ; `quorums`: (`target`: `PromiseOrValue`<`string`\>, `functionSelector`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `quorums(address,bytes4)`: (`target`: `PromiseOrValue`<`string`\>, `functionSelector`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `setCustomQuorum`: (`target`: `PromiseOrValue`<`string`\>, `selector`: `PromiseOrValue`<`BytesLike`\>, `quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setCustomQuorum(address,bytes4,uint256)`: (`target`: `PromiseOrValue`<`string`\>, `selector`: `PromiseOrValue`<`BytesLike`\>, `quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setDefaultQuorum`: (`quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setDefaultQuorum(uint256)`: (`quorum`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setLockDuration`: (`_lockDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setLockDuration(uint256)`: (`_lockDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setMinProposalPower`: (`_minProposalPower`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setMinProposalPower(uint256)`: (`_minProposalPower`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `vote`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `proposalId`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `vote(address[],bytes[],uint256,uint8)`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraVaultData`: `PromiseOrValue`<`BytesLike`\>[], `proposalId`: `PromiseOrValue`<`BigNumberish`\>, `ballot`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `votes`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `number`] & { `castBallot`: `number` ; `votingPower`: `BigNumber` }\> ; `votes(address,uint256)`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<[`BigNumber`, `number`] & { `castBallot`: `number` ; `votingPower`: `BigNumber` }\> }[`K`]\> - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callStatic](ContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"fallback"`` \| ``"authorize(address)"`` \| ``"deauthorize(address)"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"deauthorize"`` \| ``"setOwner"`` \| ``"changeExtraVotingTime(uint256)"`` \| ``"changeVaultStatus(address,bool)"`` \| ``"execute(uint256,address[],bytes[])"`` \| ``"proposal(address[],bytes[],address[],bytes[],uint256,uint8)"`` \| ``"setCustomQuorum(address,bytes4,uint256)"`` \| ``"setDefaultQuorum(uint256)"`` \| ``"setLockDuration(uint256)"`` \| ``"setMinProposalPower(uint256)"`` \| ``"vote(address[],bytes[],uint256,uint8)"`` \| ``"changeExtraVotingTime"`` \| ``"changeVaultStatus"`` \| ``"execute"`` \| ``"proposal"`` \| ``"setCustomQuorum"`` \| ``"setDefaultQuorum"`` \| ``"setLockDuration"`` \| ``"setMinProposalPower"`` \| ``"vote"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `CoreVoting`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callWithSigner](ContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[clearCached](ContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### createProposal - -▸ **createProposal**(`signer`, `vaults`, `targets`, `calldatas`, `lastCall`, `ballot`, `options?`): `Promise`<`string`\> - -Create a new proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `vaults` | `string`[] | The addresses of the approved vaults to draw voting power from. | -| `targets` | `string`[] | The targets (contract addresses) to call. | -| `calldatas` | `BytesLike`[] | The calldatas to call each target with. | -| `lastCall` | `number` | - | -| `ballot` | [`Ballot`](../modules.md#ballot) | - | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Implementation of - -VotingContractDataSource.createProposal - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:244](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L244) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCached](ContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"DAY_IN_BLOCKS()"`` \| ``"approvedVaults(address)"`` \| ``"baseQuorum()"`` \| ``"changeExtraVotingTime(uint256)"`` \| ``"changeVaultStatus(address,bool)"`` \| ``"execute(uint256,address[],bytes[])"`` \| ``"extraVoteTime()"`` \| ``"getProposalVotingPower(uint256)"`` \| ``"lockDuration()"`` \| ``"minProposalPower()"`` \| ``"proposal(address[],bytes[],address[],bytes[],uint256,uint8)"`` \| ``"proposalCount()"`` \| ``"proposals(uint256)"`` \| ``"quorums(address,bytes4)"`` \| ``"setCustomQuorum(address,bytes4,uint256)"`` \| ``"setDefaultQuorum(uint256)"`` \| ``"setLockDuration(uint256)"`` \| ``"setMinProposalPower(uint256)"`` \| ``"vote(address[],bytes[],uint256,uint8)"`` \| ``"votes(address,uint256)"`` \| ``"DAY_IN_BLOCKS"`` \| ``"approvedVaults"`` \| ``"baseQuorum"`` \| ``"changeExtraVotingTime"`` \| ``"changeVaultStatus"`` \| ``"execute"`` \| ``"extraVoteTime"`` \| ``"getProposalVotingPower"`` \| ``"lockDuration"`` \| ``"minProposalPower"`` \| ``"proposal"`` \| ``"proposalCount"`` \| ``"proposals"`` \| ``"quorums"`` \| ``"setCustomQuorum"`` \| ``"setDefaultQuorum"`` \| ``"setLockDuration"`` \| ``"setMinProposalPower"`` \| ``"vote"`` \| ``"votes"`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `CoreVoting`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCall](ContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### executeProposal - -▸ **executeProposal**(`signer`, `id`, `options?`): `Promise`<`string`\> - -Execute a proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance. | -| `id` | `number` | - | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Implementation of - -VotingContractDataSource.executeProposal - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:274](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L274) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[getEvents](ContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getExecutedProposalIds - -▸ **getExecutedProposalIds**(`fromBlock?`, `toBlock?`): `Promise`<`number`[]\> - -Get the id of all executed proposals. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all proposals executed on or after this block number. | -| `toBlock?` | `number` | Include all proposals executed on or before this block number. | - -#### Returns - -`Promise`<`number`[]\> - -#### Implementation of - -VotingContractDataSource.getExecutedProposalIds - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:115](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L115) - -___ - -### getProposal - -▸ **getProposal**(`id`): `Promise`<``null`` \| [`ProposalData`](../interfaces/ProposalData.md)\> - -Get a proposal's `ProposalData` by `id` if it exists. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -#### Returns - -`Promise`<``null`` \| [`ProposalData`](../interfaces/ProposalData.md)\> - -#### Implementation of - -VotingContractDataSource.getProposal - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:79](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L79) - -___ - -### getProposalCount - -▸ **getProposalCount**(): `Promise`<`number`\> - -Get the total number of proposals created in this voting contract - -#### Returns - -`Promise`<`number`\> - -#### Implementation of - -VotingContractDataSource.getProposalCount - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:41](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L41) - -___ - -### getProposalCreatedBy - -▸ **getProposalCreatedBy**(`id`): `Promise`<``null`` \| `string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Implementation of - -VotingContractDataSource.getProposalCreatedBy - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:45](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L45) - -___ - -### getProposalCreatedTransactionHash - -▸ **getProposalCreatedTransactionHash**(`id`): `Promise`<``null`` \| `string`\> - -Returns the hash of the transaction that created the proposal. Returns null -if the id passed does not correspond to a valid proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `id` | `number` | The id of the proposal | - -#### Returns - -`Promise`<``null`` \| `string`\> - -The transaction hash - -#### Implementation of - -VotingContractDataSource.getProposalCreatedTransactionHash - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:66](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L66) - -___ - -### getProposalExecutedTransactionHash - -▸ **getProposalExecutedTransactionHash**(`id`): `Promise`<``null`` \| `string`\> - -Get the hash of the transaction that executed the proposal, or null if -the Proposal wasn't executed. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `id` | `number` | The proposal id. | - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Implementation of - -VotingContractDataSource.getProposalExecutedTransactionHash - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:127](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L127) - -___ - -### getProposals - -▸ **getProposals**(`fromBlock?`, `toBlock?`): `Promise`<[`ProposalDataPreview`](../interfaces/ProposalDataPreview.md)[]\> - -Get the `ProposalDataPreview` of all proposals ever created. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all proposals created on or after this block number. | -| `toBlock?` | `number` | Include all proposals created on or before this block number. | - -#### Returns - -`Promise`<[`ProposalDataPreview`](../interfaces/ProposalDataPreview.md)[]\> - -#### Implementation of - -VotingContractDataSource.getProposals - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:97](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L97) - -___ - -### getResults - -▸ **getResults**(`proposalId`): `Promise`<[`VoteResults`](../modules.md#voteresults)\> - -Get the total voting power of all votes on this proposal by their ballot. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `proposalId` | `number` | - -#### Returns - -`Promise`<[`VoteResults`](../modules.md#voteresults)\> - -#### Implementation of - -VotingContractDataSource.getResults - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:201](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L201) - -___ - -### getTargetsAndCalldatas - -▸ **getTargetsAndCalldatas**(`proposalId`): `Promise`<``null`` \| [`Actions`](../interfaces/Actions.md)\> - -Get the array of addresses that will be called (targets) and the data -they'll be called with (calldatas) by this proposal. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `proposalId` | `number` | - -#### Returns - -`Promise`<``null`` \| [`Actions`](../interfaces/Actions.md)\> - -#### Implementation of - -VotingContractDataSource.getTargetsAndCalldatas - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:141](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L141) - -___ - -### getVote - -▸ **getVote**(`address`, `proposalId`): `Promise`<``null`` \| [`VoteData`](../interfaces/VoteData.md)\> - -Get a casted vote for a given address on -a given proposal id. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `proposalId` | `number` | - -#### Returns - -`Promise`<``null`` \| [`VoteData`](../interfaces/VoteData.md)\> - -#### Implementation of - -VotingContractDataSource.getVote - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:163](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L163) - -___ - -### getVotes - -▸ **getVotes**(`address?`, `proposalId?`, `fromBlock?`, `toBlock?`): `Promise`<[`VoteData`](../interfaces/VoteData.md)[]\> - -Get all casted votes on this proposal - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | - | -| `proposalId?` | `number` | - | -| `fromBlock?` | `number` | Include all votes casted on or after this block number. | -| `toBlock?` | `number` | Include all votes casted on or before this block number. | - -#### Returns - -`Promise`<[`VoteData`](../interfaces/VoteData.md)[]\> - -#### Implementation of - -VotingContractDataSource.getVotes - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:178](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L178) - -___ - -### vote - -▸ **vote**(`signer`, `vaults`, `proposalId`, `ballot`, `options?`): `Promise`<`string`\> - -Vote on this proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `vaults` | `string`[] | The addresses of the approved vaults to draw voting power from. | -| `proposalId` | `number` | The id of the proposal to vote on. | -| `ballot` | [`Ballot`](../modules.md#ballot) | The ballot to cast. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Implementation of - -VotingContractDataSource.vote - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts:297](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts#L297) diff --git a/packages/council-sdk/docs/classes/CouncilContext.md b/packages/council-sdk/docs/classes/CouncilContext.md deleted file mode 100644 index 98adf81a..00000000 --- a/packages/council-sdk/docs/classes/CouncilContext.md +++ /dev/null @@ -1,132 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / CouncilContext - -# Class: CouncilContext - -The Context stores common information used in model and data source methods -including shared data sources and their cache. It also includes a couple -utility methods for getting and registering new shared data sources. - -## Table of contents - -### Constructors - -- [constructor](CouncilContext.md#constructor) - -### Properties - -- [dataSources](CouncilContext.md#datasources) -- [provider](CouncilContext.md#provider) - -### Methods - -- [getDataSource](CouncilContext.md#getdatasource) -- [registerDataSource](CouncilContext.md#registerdatasource) - -## Constructors - -### constructor - -• **new CouncilContext**(`provider`, `options?`) - -Create a new CouncilContext instance. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `provider` | `Provider` | An [ethers Provider](https://docs.ethers.org/v5/api/providers/) instance. | -| `options?` | [`CouncilContextOptions`](../interfaces/CouncilContextOptions.md) | - | - -#### Defined in - -[packages/council-sdk/src/context/context.ts:36](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/context/context.ts#L36) - -## Properties - -### dataSources - -• **dataSources**: [`DataSource`](../interfaces/DataSource.md)[] - -A shared array of `DataSource` instances and their caches that will be -reused by models. When a new model instance is created, it will add any -missing data source instances it requires to this list. - -#### Defined in - -[packages/council-sdk/src/context/context.ts:29](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/context/context.ts#L29) - -___ - -### provider - -• **provider**: `Provider` - -The [ethers Provider](https://docs.ethers.org/v5/api/providers/) instance -being used by data sources to fetch data from the blockchain. - -#### Defined in - -[packages/council-sdk/src/context/context.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/context/context.ts#L22) - -## Methods - -### getDataSource - -▸ **getDataSource**<`T`\>(`filter`): ``null`` \| `T` - -Get a shared `DataSource` who's properties match a given filter object. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends [`DataSource`](../interfaces/DataSource.md) | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `Partial`<`T`\> | An object of `DataSource` keys and values to look for. | - -#### Returns - -``null`` \| `T` - -The first `DataSource` instance in the `dataSources` array that -matches the `filter`, or `null` if no match is found. - -#### Defined in - -[packages/council-sdk/src/context/context.ts:48](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/context/context.ts#L48) - -___ - -### registerDataSource - -▸ **registerDataSource**<`T`\>(`filter`, `dataSource`): `T` - -Add a new shared `DataSource` if one matching a given filter object -doesn't already exist. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends [`DataSource`](../interfaces/DataSource.md) | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `Partial`<`T`\> | An object of `DataSource` keys and values to look for. | -| `dataSource` | `T` | The `DataSource` to add if one matching the filter isn't found. | - -#### Returns - -`T` - -The matching `DataSource` if found, else the added `DataSource`. - -#### Defined in - -[packages/council-sdk/src/context/context.ts:69](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/context/context.ts#L69) diff --git a/packages/council-sdk/docs/classes/ERC20ContractDataSource.md b/packages/council-sdk/docs/classes/ERC20ContractDataSource.md deleted file mode 100644 index 00ac8412..00000000 --- a/packages/council-sdk/docs/classes/ERC20ContractDataSource.md +++ /dev/null @@ -1,548 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / ERC20ContractDataSource - -# Class: ERC20ContractDataSource - -## Hierarchy - -- [`ContractDataSource`](ContractDataSource.md)<`MockERC20`\> - - ↳ **`ERC20ContractDataSource`** - -## Implements - -- [`TokenDataSource`](../interfaces/TokenDataSource.md) - -## Table of contents - -### Constructors - -- [constructor](ERC20ContractDataSource.md#constructor) - -### Properties - -- [address](ERC20ContractDataSource.md#address) -- [cache](ERC20ContractDataSource.md#cache) -- [context](ERC20ContractDataSource.md#context) -- [contract](ERC20ContractDataSource.md#contract) - -### Methods - -- [approve](ERC20ContractDataSource.md#approve) -- [cached](ERC20ContractDataSource.md#cached) -- [call](ERC20ContractDataSource.md#call) -- [callStatic](ERC20ContractDataSource.md#callstatic) -- [callWithSigner](ERC20ContractDataSource.md#callwithsigner) -- [clearCached](ERC20ContractDataSource.md#clearcached) -- [deleteCached](ERC20ContractDataSource.md#deletecached) -- [deleteCall](ERC20ContractDataSource.md#deletecall) -- [getAllowance](ERC20ContractDataSource.md#getallowance) -- [getBalanceOf](ERC20ContractDataSource.md#getbalanceof) -- [getDecimals](ERC20ContractDataSource.md#getdecimals) -- [getEvents](ERC20ContractDataSource.md#getevents) -- [getName](ERC20ContractDataSource.md#getname) -- [getSymbol](ERC20ContractDataSource.md#getsymbol) - -## Constructors - -### constructor - -• **new ERC20ContractDataSource**(`address`, `context`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | - -#### Overrides - -[ContractDataSource](ContractDataSource.md).[constructor](ContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:18](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L18) - -## Properties - -### address - -• **address**: `string` - -#### Implementation of - -[TokenDataSource](../interfaces/TokenDataSource.md).[address](../interfaces/TokenDataSource.md#address) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[address](ContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cache](ContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Implementation of - -[TokenDataSource](../interfaces/TokenDataSource.md).[context](../interfaces/TokenDataSource.md#context) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[context](ContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `MockERC20` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[contract](ContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -## Methods - -### approve - -▸ **approve**(`signer`, `spender`, `amount`, `options?`): `Promise`<`string`\> - -Sets approval of token access up to a certain amount - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `spender` | `string` | Address to approve access to. | -| `amount` | `BigNumber` | Amount approved for, defaults to maximum. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Implementation of - -TokenDataSource.approve - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:71](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L71) - -___ - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cached](ContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `MockERC20`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"symbol"`` \| ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"DOMAIN_SEPARATOR()"`` \| ``"PERMIT_TYPEHASH()"`` \| ``"allowance(address,address)"`` \| ``"approve(address,uint256)"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"balanceOf(address)"`` \| ``"burn(address,uint256)"`` \| ``"deauthorize(address)"`` \| ``"decimals()"`` \| ``"isAuthorized(address)"`` \| ``"mint(address,uint256)"`` \| ``"name()"`` \| ``"nonces(address)"`` \| ``"owner()"`` \| ``"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"`` \| ``"setAllowance(address,address,uint256)"`` \| ``"setBalance(address,uint256)"`` \| ``"setOwner(address)"`` \| ``"symbol()"`` \| ``"totalSupply()"`` \| ``"transfer(address,uint256)"`` \| ``"transferFrom(address,address,uint256)"`` \| ``"DOMAIN_SEPARATOR"`` \| ``"PERMIT_TYPEHASH"`` \| ``"allowance"`` \| ``"approve"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"balanceOf"`` \| ``"burn"`` \| ``"deauthorize"`` \| ``"decimals"`` \| ``"isAuthorized"`` \| ``"mint"`` \| ``"name"`` \| ``"nonces"`` \| ``"owner"`` \| ``"permit"`` \| ``"setAllowance"`` \| ``"setBalance"`` \| ``"setOwner"`` \| ``"totalSupply"`` \| ``"transfer"`` \| ``"transferFrom"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `MockERC20`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`MockERC20`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[call](ContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<{ `DOMAIN_SEPARATOR`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `DOMAIN_SEPARATOR()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `PERMIT_TYPEHASH`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `PERMIT_TYPEHASH()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `allowance`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `allowance(address,address)`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `approve`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `approve(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `balanceOf`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `balanceOf(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `burn`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `burn(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `decimals`: (`overrides?`: `CallOverrides`) => `Promise`<`number`\> ; `decimals()`: (`overrides?`: `CallOverrides`) => `Promise`<`number`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `mint`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `mint(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `name`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `name()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `nonces`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `nonces(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `permit`: (`owner`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `value`: `PromiseOrValue`<`BigNumberish`\>, `deadline`: `PromiseOrValue`<`BigNumberish`\>, `v`: `PromiseOrValue`<`BigNumberish`\>, `r`: `PromiseOrValue`<`BytesLike`\>, `s`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`: (`owner`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `value`: `PromiseOrValue`<`BigNumberish`\>, `deadline`: `PromiseOrValue`<`BigNumberish`\>, `v`: `PromiseOrValue`<`BigNumberish`\>, `r`: `PromiseOrValue`<`BytesLike`\>, `s`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setAllowance`: (`source`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setAllowance(address,address,uint256)`: (`source`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setBalance`: (`who`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setBalance(address,uint256)`: (`who`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `symbol`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `symbol()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `totalSupply`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `totalSupply()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `transfer`: (`recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transfer(address,uint256)`: (`recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transferFrom`: (`spender`: `PromiseOrValue`<`string`\>, `recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transferFrom(address,address,uint256)`: (`spender`: `PromiseOrValue`<`string`\>, `recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> }[`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"symbol"`` \| ``"DOMAIN_SEPARATOR()"`` \| ``"PERMIT_TYPEHASH()"`` \| ``"allowance(address,address)"`` \| ``"approve(address,uint256)"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"balanceOf(address)"`` \| ``"burn(address,uint256)"`` \| ``"deauthorize(address)"`` \| ``"decimals()"`` \| ``"isAuthorized(address)"`` \| ``"mint(address,uint256)"`` \| ``"name()"`` \| ``"nonces(address)"`` \| ``"owner()"`` \| ``"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"`` \| ``"setAllowance(address,address,uint256)"`` \| ``"setBalance(address,uint256)"`` \| ``"setOwner(address)"`` \| ``"symbol()"`` \| ``"totalSupply()"`` \| ``"transfer(address,uint256)"`` \| ``"transferFrom(address,address,uint256)"`` \| ``"DOMAIN_SEPARATOR"`` \| ``"PERMIT_TYPEHASH"`` \| ``"allowance"`` \| ``"approve"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"balanceOf"`` \| ``"burn"`` \| ``"deauthorize"`` \| ``"decimals"`` \| ``"isAuthorized"`` \| ``"mint"`` \| ``"name"`` \| ``"nonces"`` \| ``"owner"`` \| ``"permit"`` \| ``"setAllowance"`` \| ``"setBalance"`` \| ``"setOwner"`` \| ``"totalSupply"`` \| ``"transfer"`` \| ``"transferFrom"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | { `DOMAIN_SEPARATOR`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `DOMAIN_SEPARATOR()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `PERMIT_TYPEHASH`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `PERMIT_TYPEHASH()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `allowance`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `allowance(address,address)`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `approve`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `approve(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `balanceOf`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `balanceOf(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `burn`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `burn(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `decimals`: (`overrides?`: `CallOverrides`) => `Promise`<`number`\> ; `decimals()`: (`overrides?`: `CallOverrides`) => `Promise`<`number`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `mint`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `mint(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `name`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `name()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `nonces`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `nonces(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `permit`: (`owner`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `value`: `PromiseOrValue`<`BigNumberish`\>, `deadline`: `PromiseOrValue`<`BigNumberish`\>, `v`: `PromiseOrValue`<`BigNumberish`\>, `r`: `PromiseOrValue`<`BytesLike`\>, `s`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`: (`owner`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `value`: `PromiseOrValue`<`BigNumberish`\>, `deadline`: `PromiseOrValue`<`BigNumberish`\>, `v`: `PromiseOrValue`<`BigNumberish`\>, `r`: `PromiseOrValue`<`BytesLike`\>, `s`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setAllowance`: (`source`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setAllowance(address,address,uint256)`: (`source`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setBalance`: (`who`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setBalance(address,uint256)`: (`who`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `symbol`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `symbol()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `totalSupply`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `totalSupply()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `transfer`: (`recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transfer(address,uint256)`: (`recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transferFrom`: (`spender`: `PromiseOrValue`<`string`\>, `recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transferFrom(address,address,uint256)`: (`spender`: `PromiseOrValue`<`string`\>, `recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> }[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<{ `DOMAIN_SEPARATOR`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `DOMAIN_SEPARATOR()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `PERMIT_TYPEHASH`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `PERMIT_TYPEHASH()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `allowance`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `allowance(address,address)`: (`arg0`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `approve`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `approve(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `balanceOf`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `balanceOf(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `burn`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `burn(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `decimals`: (`overrides?`: `CallOverrides`) => `Promise`<`number`\> ; `decimals()`: (`overrides?`: `CallOverrides`) => `Promise`<`number`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `mint`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `mint(address,uint256)`: (`account`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `name`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `name()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `nonces`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `nonces(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `permit`: (`owner`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `value`: `PromiseOrValue`<`BigNumberish`\>, `deadline`: `PromiseOrValue`<`BigNumberish`\>, `v`: `PromiseOrValue`<`BigNumberish`\>, `r`: `PromiseOrValue`<`BytesLike`\>, `s`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`: (`owner`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `value`: `PromiseOrValue`<`BigNumberish`\>, `deadline`: `PromiseOrValue`<`BigNumberish`\>, `v`: `PromiseOrValue`<`BigNumberish`\>, `r`: `PromiseOrValue`<`BytesLike`\>, `s`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setAllowance`: (`source`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setAllowance(address,address,uint256)`: (`source`: `PromiseOrValue`<`string`\>, `spender`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setBalance`: (`who`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setBalance(address,uint256)`: (`who`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `symbol`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `symbol()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `totalSupply`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `totalSupply()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `transfer`: (`recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transfer(address,uint256)`: (`recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transferFrom`: (`spender`: `PromiseOrValue`<`string`\>, `recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `transferFrom(address,address,uint256)`: (`spender`: `PromiseOrValue`<`string`\>, `recipient`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> }[`K`]\> - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callStatic](ContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"fallback"`` \| ``"approve(address,uint256)"`` \| ``"authorize(address)"`` \| ``"burn(address,uint256)"`` \| ``"deauthorize(address)"`` \| ``"mint(address,uint256)"`` \| ``"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"`` \| ``"setAllowance(address,address,uint256)"`` \| ``"setBalance(address,uint256)"`` \| ``"setOwner(address)"`` \| ``"transfer(address,uint256)"`` \| ``"transferFrom(address,address,uint256)"`` \| ``"approve"`` \| ``"authorize"`` \| ``"burn"`` \| ``"deauthorize"`` \| ``"mint"`` \| ``"permit"`` \| ``"setAllowance"`` \| ``"setBalance"`` \| ``"setOwner"`` \| ``"transfer"`` \| ``"transferFrom"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `MockERC20`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callWithSigner](ContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[clearCached](ContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCached](ContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"symbol"`` \| ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"DOMAIN_SEPARATOR()"`` \| ``"PERMIT_TYPEHASH()"`` \| ``"allowance(address,address)"`` \| ``"approve(address,uint256)"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"balanceOf(address)"`` \| ``"burn(address,uint256)"`` \| ``"deauthorize(address)"`` \| ``"decimals()"`` \| ``"isAuthorized(address)"`` \| ``"mint(address,uint256)"`` \| ``"name()"`` \| ``"nonces(address)"`` \| ``"owner()"`` \| ``"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"`` \| ``"setAllowance(address,address,uint256)"`` \| ``"setBalance(address,uint256)"`` \| ``"setOwner(address)"`` \| ``"symbol()"`` \| ``"totalSupply()"`` \| ``"transfer(address,uint256)"`` \| ``"transferFrom(address,address,uint256)"`` \| ``"DOMAIN_SEPARATOR"`` \| ``"PERMIT_TYPEHASH"`` \| ``"allowance"`` \| ``"approve"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"balanceOf"`` \| ``"burn"`` \| ``"deauthorize"`` \| ``"decimals"`` \| ``"isAuthorized"`` \| ``"mint"`` \| ``"name"`` \| ``"nonces"`` \| ``"owner"`` \| ``"permit"`` \| ``"setAllowance"`` \| ``"setBalance"`` \| ``"setOwner"`` \| ``"totalSupply"`` \| ``"transfer"`` \| ``"transferFrom"`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `MockERC20`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCall](ContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### getAllowance - -▸ **getAllowance**(`owner`, `spender`): `Promise`<`string`\> - -Get the spending allowance of a given spender for a given owner of this -token. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `owner` | `string` | -| `spender` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -TokenDataSource.getAllowance - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:58](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L58) - -___ - -### getBalanceOf - -▸ **getBalanceOf**(`address`): `Promise`<`string`\> - -Get the amount of tokens owned by a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -TokenDataSource.getBalanceOf - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:48](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L48) - -___ - -### getDecimals - -▸ **getDecimals**(): `Promise`<`number`\> - -Get the number of decimals used to format a balance for display. For -example, if decimals equals 2, a balance of `505` tokens should be -displayed as `5.05` (`505 / 10 ** 2`). - -#### Returns - -`Promise`<`number`\> - -#### Implementation of - -TokenDataSource.getDecimals - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:41](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L41) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[getEvents](ContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getName - -▸ **getName**(): `Promise`<`string`\> - -Get the name of this token. - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -TokenDataSource.getName - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:25](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L25) - -___ - -### getSymbol - -▸ **getSymbol**(): `Promise`<`string`\> - -Get the symbol of this token, usually a shorter version of the name. - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -TokenDataSource.getSymbol - -#### Defined in - -[packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts:32](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts#L32) diff --git a/packages/council-sdk/docs/classes/GSCVault.md b/packages/council-sdk/docs/classes/GSCVault.md deleted file mode 100644 index b833faae..00000000 --- a/packages/council-sdk/docs/classes/GSCVault.md +++ /dev/null @@ -1,425 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / GSCVault - -# Class: GSCVault - -A VotingVault for the Governance Steering Council in which each member has a -single vote and must maintain a minimum required voting power in the core -voting vaults to remain eligible. - -## Hierarchy - -- [`VotingVault`](VotingVault.md)<[`GSCVaultContractDataSource`](GSCVaultContractDataSource.md)\> - - ↳ **`GSCVault`** - -## Table of contents - -### Constructors - -- [constructor](GSCVault.md#constructor) - -### Properties - -- [address](GSCVault.md#address) -- [context](GSCVault.md#context) -- [dataSource](GSCVault.md#datasource) -- [name](GSCVault.md#name) - -### Methods - -- [getIdleDuration](GSCVault.md#getidleduration) -- [getIsIdle](GSCVault.md#getisidle) -- [getIsMember](GSCVault.md#getismember) -- [getJoinDate](GSCVault.md#getjoindate) -- [getMemberVaults](GSCVault.md#getmembervaults) -- [getMembers](GSCVault.md#getmembers) -- [getRequiredVotingPower](GSCVault.md#getrequiredvotingpower) -- [getTotalVotingPower](GSCVault.md#gettotalvotingpower) -- [getVoters](GSCVault.md#getvoters) -- [getVotingPower](GSCVault.md#getvotingpower) -- [getVotingPowerBreakdown](GSCVault.md#getvotingpowerbreakdown) -- [join](GSCVault.md#join) -- [kick](GSCVault.md#kick) - -## Constructors - -### constructor - -• **new GSCVault**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`GSCVaultOptions`](../interfaces/GSCVaultOptions.md) | - -#### Overrides - -[VotingVault](VotingVault.md).[constructor](VotingVault.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L19) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingVault](VotingVault.md).[address](VotingVault.md#address) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:56](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L56) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingVault](VotingVault.md).[context](VotingVault.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`GSCVaultContractDataSource`](GSCVaultContractDataSource.md) - -#### Inherited from - -[VotingVault](VotingVault.md).[dataSource](VotingVault.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L57) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[VotingVault](VotingVault.md).[name](VotingVault.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### getIdleDuration - -▸ **getIdleDuration**(): `Promise`<`number`\> - -Get the time (in MS) that a new GSC member must wait after joining before -they can vote. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:81](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L81) - -___ - -### getIsIdle - -▸ **getIsIdle**(`address`): `Promise`<`boolean`\> - -Get a boolean indicating whether a member is still in the idle duration. -Idle members cannot vote. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:89](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L89) - -___ - -### getIsMember - -▸ **getIsMember**(`address`): `Promise`<`boolean`\> - -Get a boolean indicating whether a given address is a current member. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:73](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L73) - -___ - -### getJoinDate - -▸ **getJoinDate**(`address`): `Promise`<``null`` \| `Date`\> - -Get the join date of a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<``null`` \| `Date`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:65](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L65) - -___ - -### getMemberVaults - -▸ **getMemberVaults**(`address`): `Promise`<[`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[]\> - -Get the voting vaults a member joined with. Used to prove the member meets -the minimum voting power requirement. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:102](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L102) - -___ - -### getMembers - -▸ **getMembers**(`fromBlock?`, `toBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all current members of this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | The block number to start searching for members from. | -| `toBlock?` | `number` | The block number to stop searching for members at. | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:48](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L48) - -___ - -### getRequiredVotingPower - -▸ **getRequiredVotingPower**(): `Promise`<`string`\> - -Get the amount of voting power required to join this vault. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:39](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L39) - -___ - -### getTotalVotingPower - -▸ `Optional` **getTotalVotingPower**(`atBlock?`): `Promise`<`string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVault](VotingVault.md).[getTotalVotingPower](VotingVault.md#gettotalvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:38](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L38) - -___ - -### getVoters - -▸ **getVoters**(`fromBlock?`, `toBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all voters with voting power in this vault (alias for `getMembers`). - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | The block number to start searching for voters from. | -| `toBlock?` | `number` | The block number to stop searching for voters at. | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Overrides - -[VotingVault](VotingVault.md).[getVoters](VotingVault.md#getvoters) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:58](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L58) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the usable voting power owned by a given address in this vault. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVault](VotingVault.md).[getVotingPower](VotingVault.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L83) - -___ - -### getVotingPowerBreakdown - -▸ `Optional` **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address?` | `string` | -| `fromBlock?` | `number` | -| `toBlock?` | `number` | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Inherited from - -[VotingVault](VotingVault.md).[getVotingPowerBreakdown](VotingVault.md#getvotingpowerbreakdown) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:33](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L33) - -___ - -### join - -▸ **join**(`signer`, `vaults`, `options?`): `Promise`<`string`\> - -Become a member of this GSC vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the joining member. | -| `vaults` | (`string` \| [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>)[] | The addresses of the approved vaults the joining member has voting power in. This is used to prove the joining member meets the minimum voting power requirement. If voting power is moved to a different vault, the member will become ineligible until they join again with the new vault or risk being kicked. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:119](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L119) - -___ - -### kick - -▸ **kick**(`signer`, `member`, `options?`): `Promise`<`string`\> - -Remove a member that's become ineligible from this GSC vault. A member -becomes ineligible when the voting power in the vaults they joined with -drops below the required minimum. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet paying to kick. | -| `member` | `string` | The address of the ineligible member to kick. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:143](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L143) diff --git a/packages/council-sdk/docs/classes/GSCVaultContractDataSource.md b/packages/council-sdk/docs/classes/GSCVaultContractDataSource.md deleted file mode 100644 index 27cfbda9..00000000 --- a/packages/council-sdk/docs/classes/GSCVaultContractDataSource.md +++ /dev/null @@ -1,604 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / GSCVaultContractDataSource - -# Class: GSCVaultContractDataSource - -A DataSource with methods for making cached calls to a `GSCVault` contract -from the Council protocol. - -## Hierarchy - -- [`VotingVaultContractDataSource`](VotingVaultContractDataSource.md)<`GSCVault`\> - - ↳ **`GSCVaultContractDataSource`** - -## Table of contents - -### Constructors - -- [constructor](GSCVaultContractDataSource.md#constructor) - -### Properties - -- [address](GSCVaultContractDataSource.md#address) -- [cache](GSCVaultContractDataSource.md#cache) -- [context](GSCVaultContractDataSource.md#context) -- [contract](GSCVaultContractDataSource.md#contract) -- [type](GSCVaultContractDataSource.md#type) -- [type](GSCVaultContractDataSource.md#type-1) - -### Methods - -- [cached](GSCVaultContractDataSource.md#cached) -- [call](GSCVaultContractDataSource.md#call) -- [callStatic](GSCVaultContractDataSource.md#callstatic) -- [callWithSigner](GSCVaultContractDataSource.md#callwithsigner) -- [clearCached](GSCVaultContractDataSource.md#clearcached) -- [deleteCached](GSCVaultContractDataSource.md#deletecached) -- [deleteCall](GSCVaultContractDataSource.md#deletecall) -- [getEvents](GSCVaultContractDataSource.md#getevents) -- [getIdleDuration](GSCVaultContractDataSource.md#getidleduration) -- [getJoinTimestamp](GSCVaultContractDataSource.md#getjointimestamp) -- [getMemberVaults](GSCVaultContractDataSource.md#getmembervaults) -- [getMembers](GSCVaultContractDataSource.md#getmembers) -- [getRequiredVotingPower](GSCVaultContractDataSource.md#getrequiredvotingpower) -- [getVotingPower](GSCVaultContractDataSource.md#getvotingpower) -- [join](GSCVaultContractDataSource.md#join) -- [kick](GSCVaultContractDataSource.md#kick) - -## Constructors - -### constructor - -• **new GSCVaultContractDataSource**(`address`, `context`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | - -#### Overrides - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[constructor](VotingVaultContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L23) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[address](VotingVaultContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[cache](VotingVaultContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[context](VotingVaultContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `GSCVault` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[contract](VotingVaultContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -___ - -### type - -• **type**: `string` = `TYPE` - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:21](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L21) - -___ - -### type - -▪ `Static` **type**: `string` = `TYPE` - -A field that can be used for more specific filtering when registering an -instance of this data source with the council context. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L20) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[cached](VotingVaultContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `GSCVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"coreVoting()"`` \| ``"getUserVaults(address)"`` \| ``"idleDuration()"`` \| ``"kick(address,bytes[])"`` \| ``"members(address)"`` \| ``"proveMembership(address[],bytes[])"`` \| ``"setCoreVoting(address)"`` \| ``"setIdleDuration(uint256)"`` \| ``"setVotePowerBound(uint256)"`` \| ``"votingPowerBound()"`` \| ``"coreVoting"`` \| ``"getUserVaults"`` \| ``"idleDuration"`` \| ``"kick"`` \| ``"members"`` \| ``"proveMembership"`` \| ``"setCoreVoting"`` \| ``"setIdleDuration"`` \| ``"setVotePowerBound"`` \| ``"votingPowerBound"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `GSCVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`GSCVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[call](VotingVaultContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<{ `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `coreVoting`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `coreVoting()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `getUserVaults`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`string`[]\> ; `getUserVaults(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`string`[]\> ; `idleDuration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `idleDuration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `kick`: (`who`: `PromiseOrValue`<`string`\>, `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `kick(address,bytes[])`: (`who`: `PromiseOrValue`<`string`\>, `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `members`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `members(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `proveMembership`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proveMembership(address[],bytes[])`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `queryVotePower`: (`who`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`who`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `setCoreVoting`: (`_newVoting`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setCoreVoting(address)`: (`_newVoting`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setIdleDuration`: (`_idleDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setIdleDuration(uint256)`: (`_idleDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setVotePowerBound`: (`_newBound`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setVotePowerBound(uint256)`: (`_newBound`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `votingPowerBound`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `votingPowerBound()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> }[`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"coreVoting()"`` \| ``"getUserVaults(address)"`` \| ``"idleDuration()"`` \| ``"kick(address,bytes[])"`` \| ``"members(address)"`` \| ``"proveMembership(address[],bytes[])"`` \| ``"setCoreVoting(address)"`` \| ``"setIdleDuration(uint256)"`` \| ``"setVotePowerBound(uint256)"`` \| ``"votingPowerBound()"`` \| ``"coreVoting"`` \| ``"getUserVaults"`` \| ``"idleDuration"`` \| ``"kick"`` \| ``"members"`` \| ``"proveMembership"`` \| ``"setCoreVoting"`` \| ``"setIdleDuration"`` \| ``"setVotePowerBound"`` \| ``"votingPowerBound"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | { `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `coreVoting`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `coreVoting()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `getUserVaults`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`string`[]\> ; `getUserVaults(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`string`[]\> ; `idleDuration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `idleDuration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `kick`: (`who`: `PromiseOrValue`<`string`\>, `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `kick(address,bytes[])`: (`who`: `PromiseOrValue`<`string`\>, `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `members`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `members(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `proveMembership`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proveMembership(address[],bytes[])`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `queryVotePower`: (`who`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`who`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `setCoreVoting`: (`_newVoting`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setCoreVoting(address)`: (`_newVoting`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setIdleDuration`: (`_idleDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setIdleDuration(uint256)`: (`_idleDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setVotePowerBound`: (`_newBound`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setVotePowerBound(uint256)`: (`_newBound`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `votingPowerBound`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `votingPowerBound()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> }[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<{ `authorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `authorized`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `authorized(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `coreVoting`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `coreVoting()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `deauthorize`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deauthorize(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `getUserVaults`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`string`[]\> ; `getUserVaults(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`string`[]\> ; `idleDuration`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `idleDuration()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `isAuthorized`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `isAuthorized(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`boolean`\> ; `kick`: (`who`: `PromiseOrValue`<`string`\>, `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `kick(address,bytes[])`: (`who`: `PromiseOrValue`<`string`\>, `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `members`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `members(address)`: (`arg0`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `owner`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `owner()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `proveMembership`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `proveMembership(address[],bytes[])`: (`votingVaults`: `PromiseOrValue`<`string`\>[], `extraData`: `PromiseOrValue`<`BytesLike`\>[], `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `queryVotePower`: (`who`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`who`: `PromiseOrValue`<`string`\>, `arg1`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `setCoreVoting`: (`_newVoting`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setCoreVoting(address)`: (`_newVoting`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setIdleDuration`: (`_idleDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setIdleDuration(uint256)`: (`_idleDuration`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setOwner(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setVotePowerBound`: (`_newBound`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setVotePowerBound(uint256)`: (`_newBound`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `votingPowerBound`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `votingPowerBound()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> }[`K`]\> - -The value returned from the contract. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[callStatic](VotingVaultContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"fallback"`` \| ``"authorize(address)"`` \| ``"deauthorize(address)"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"deauthorize"`` \| ``"setOwner"`` \| ``"kick(address,bytes[])"`` \| ``"proveMembership(address[],bytes[])"`` \| ``"setCoreVoting(address)"`` \| ``"setIdleDuration(uint256)"`` \| ``"setVotePowerBound(uint256)"`` \| ``"kick"`` \| ``"proveMembership"`` \| ``"setCoreVoting"`` \| ``"setIdleDuration"`` \| ``"setVotePowerBound"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `GSCVault`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[callWithSigner](VotingVaultContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[clearCached](VotingVaultContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[deleteCached](VotingVaultContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"authorize(address)"`` \| ``"authorized(address)"`` \| ``"deauthorize(address)"`` \| ``"isAuthorized(address)"`` \| ``"owner()"`` \| ``"setOwner(address)"`` \| ``"authorize"`` \| ``"authorized"`` \| ``"deauthorize"`` \| ``"isAuthorized"`` \| ``"owner"`` \| ``"setOwner"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"coreVoting()"`` \| ``"getUserVaults(address)"`` \| ``"idleDuration()"`` \| ``"kick(address,bytes[])"`` \| ``"members(address)"`` \| ``"proveMembership(address[],bytes[])"`` \| ``"setCoreVoting(address)"`` \| ``"setIdleDuration(uint256)"`` \| ``"setVotePowerBound(uint256)"`` \| ``"votingPowerBound()"`` \| ``"coreVoting"`` \| ``"getUserVaults"`` \| ``"idleDuration"`` \| ``"kick"`` \| ``"members"`` \| ``"proveMembership"`` \| ``"setCoreVoting"`` \| ``"setIdleDuration"`` \| ``"setVotePowerBound"`` \| ``"votingPowerBound"`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `GSCVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[deleteCall](VotingVaultContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[getEvents](VotingVaultContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getIdleDuration - -▸ **getIdleDuration**(): `Promise`<`number`\> - -Get the time (in MS) that a new GSC member must wait after joining before -they can vote. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:39](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L39) - -___ - -### getJoinTimestamp - -▸ **getJoinTimestamp**(`address`): `Promise`<``null`` \| `number`\> - -Get a timestamp (in MS) of the join date of a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<``null`` \| `number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:101](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L101) - -___ - -### getMemberVaults - -▸ **getMemberVaults**(`address`): `Promise`<`string`[]\> - -Get the voting vaults a member joined with. Used to prove the member meets -the minimum voting power requirement. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:111](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L111) - -___ - -### getMembers - -▸ **getMembers**(`fromBlock?`, `toBlock?`): `Promise`<`string`[]\> - -Get the addresses of all current members of this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | The block number to start searching for members from. | -| `toBlock?` | `number` | The block number to stop searching for members at. | - -#### Returns - -`Promise`<`string`[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:49](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L49) - -___ - -### getRequiredVotingPower - -▸ **getRequiredVotingPower**(): `Promise`<`string`\> - -Get the amount of voting power required to join this GSC vault. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:30](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L30) - -___ - -### getVotingPower - -▸ **getVotingPower**(`this`, `address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this vault. Returns "0" if -the voting power is unable to be fetched. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `this` | [`ContractDataSource`](ContractDataSource.md)<`IVotingVault`\> | `undefined` | - | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[getVotingPower](VotingVaultContractDataSource.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts:44](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts#L44) - -___ - -### join - -▸ **join**(`signer`, `vaults`, `options?`): `Promise`<`string`\> - -Become a member of this GSC vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the joining member. | -| `vaults` | `string`[] | The addresses of the approved vaults the joining member has voting power in. This is used to prove the joining member meets the minimum voting power requirement. If voting power is moved to a different vault, the member will become ineligible until they join again with the new vault or risk being kicked. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:125](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L125) - -___ - -### kick - -▸ **kick**(`signer`, `member`, `options?`): `Promise`<`string`\> - -Remove a member that's become ineligible from this GSC vault. A member -becomes ineligible when the voting power in the vaults they joined with -drops below the required minimum. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet paying to kick. | -| `member` | `string` | The address of the ineligible member to kick. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts:153](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts#L153) diff --git a/packages/council-sdk/docs/classes/GSCVotingContract.md b/packages/council-sdk/docs/classes/GSCVotingContract.md deleted file mode 100644 index 1447af31..00000000 --- a/packages/council-sdk/docs/classes/GSCVotingContract.md +++ /dev/null @@ -1,575 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / GSCVotingContract - -# Class: GSCVotingContract - -A model of a CoreVoting contract intended to be used by the Governance -Steering Council. - -## Hierarchy - -- [`VotingContract`](VotingContract.md)<[[`GSCVault`](GSCVault.md)]\> - - ↳ **`GSCVotingContract`** - -## Table of contents - -### Constructors - -- [constructor](GSCVotingContract.md#constructor) - -### Properties - -- [address](GSCVotingContract.md#address) -- [context](GSCVotingContract.md#context) -- [dataSource](GSCVotingContract.md#datasource) -- [name](GSCVotingContract.md#name) -- [vaults](GSCVotingContract.md#vaults) - -### Methods - -- [createProposal](GSCVotingContract.md#createproposal) -- [getIdleDuration](GSCVotingContract.md#getidleduration) -- [getIsIdle](GSCVotingContract.md#getisidle) -- [getIsMember](GSCVotingContract.md#getismember) -- [getJoinDate](GSCVotingContract.md#getjoindate) -- [getMemberVaults](GSCVotingContract.md#getmembervaults) -- [getParticipation](GSCVotingContract.md#getparticipation) -- [getProposal](GSCVotingContract.md#getproposal) -- [getProposals](GSCVotingContract.md#getproposals) -- [getRequiredVotingPower](GSCVotingContract.md#getrequiredvotingpower) -- [getTotalVotingPower](GSCVotingContract.md#gettotalvotingpower) -- [getVoters](GSCVotingContract.md#getvoters) -- [getVotes](GSCVotingContract.md#getvotes) -- [getVotingPower](GSCVotingContract.md#getvotingpower) -- [getVotingPowerBreakdown](GSCVotingContract.md#getvotingpowerbreakdown) -- [join](GSCVotingContract.md#join) -- [kick](GSCVotingContract.md#kick) - -## Constructors - -### constructor - -• **new GSCVotingContract**(`address`, `gscVault`, `context`, `options?`) - -Create a new iGSCVotingContract model instance. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | The address of the deployed contract. | -| `gscVault` | `string` \| [`GSCVault`](GSCVault.md) | The GSCVault instance or address of the approved GSC vault. | -| `context` | [`CouncilContext`](CouncilContext.md) | - | -| `options?` | [`VotingContractOptions`](../interfaces/VotingContractOptions.md) | - | - -#### Overrides - -[VotingContract](VotingContract.md).[constructor](VotingContract.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L20) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingContract](VotingContract.md).[address](VotingContract.md#address) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:41](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L41) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingContract](VotingContract.md).[context](VotingContract.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`VotingContractDataSource`](../interfaces/VotingContractDataSource.md) - -#### Inherited from - -[VotingContract](VotingContract.md).[dataSource](VotingContract.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L42) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[VotingContract](VotingContract.md).[name](VotingContract.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -___ - -### vaults - -• **vaults**: [[`GSCVault`](GSCVault.md)] - -#### Inherited from - -[VotingContract](VotingContract.md).[vaults](VotingContract.md#vaults) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L43) - -## Methods - -### createProposal - -▸ **createProposal**(`signer`, `vaults`, `targets`, `calldatas`, `lastCall`, `ballot`, `options?`): `Promise`<`string`\> - -Create a new proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `vaults` | (`string` \| [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>)[] | The addresses of the approved vaults to draw voting power from. | -| `targets` | `string`[] | The targets (contract addresses) to call. | -| `calldatas` | `BytesLike`[] | The calldatas to call each target with. | -| `lastCall` | `number` | - | -| `ballot` | [`Ballot`](../modules.md#ballot) | - | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Inherited from - -[VotingContract](VotingContract.md).[createProposal](VotingContract.md#createproposal) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:106](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L106) - -___ - -### getIdleDuration - -▸ **getIdleDuration**(): `Promise`<`number`\> - -Get the time (in MS) that a new GSC member must wait after joining before -they can vote. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:75](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L75) - -___ - -### getIsIdle - -▸ **getIsIdle**(`address`): `Promise`<`boolean`\> - -Get a boolean indicating whether a member is still in the idle duration. -Idle members cannot vote. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L83) - -___ - -### getIsMember - -▸ **getIsMember**(`address`): `Promise`<`boolean`\> - -Get a boolean indicating whether a given address is a current member. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:67](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L67) - -___ - -### getJoinDate - -▸ **getJoinDate**(`address`): `Promise`<``null`` \| `Date`\> - -Get the join date of a given member. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<``null`` \| `Date`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:60](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L60) - -___ - -### getMemberVaults - -▸ **getMemberVaults**(`address`): `Promise`<[`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[]\> - -Get the voting vaults a member joined with. Used to prove the member meets -the minimum voting power requirement. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:91](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L91) - -___ - -### getParticipation - -▸ **getParticipation**(`address`): `Promise`<[`number`, `number`]\> - -Get the number of proposals an address has voted on and the number of -proposals that they were able to vote on. If the numbers are the same, then -the address has voted on every proposal they were able to. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`number`, `number`]\> - -#### Inherited from - -[VotingContract](VotingContract.md).[getParticipation](VotingContract.md#getparticipation) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:307](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L307) - -___ - -### getProposal - -▸ **getProposal**(`id`): [`Proposal`](Proposal.md) - -Get a proposal by id. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -#### Returns - -[`Proposal`](Proposal.md) - -#### Inherited from - -[VotingContract](VotingContract.md).[getProposal](VotingContract.md#getproposal) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:78](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L78) - -___ - -### getProposals - -▸ **getProposals**(`fromBlock?`, `toBlock?`): `Promise`<[`Proposal`](Proposal.md)[]\> - -Get all proposals ever created. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all proposals created on or after this block number. | -| `toBlock?` | `number` | Include all proposals created on or before this block number. | - -#### Returns - -`Promise`<[`Proposal`](Proposal.md)[]\> - -#### Inherited from - -[VotingContract](VotingContract.md).[getProposals](VotingContract.md#getproposals) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:87](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L87) - -___ - -### getRequiredVotingPower - -▸ **getRequiredVotingPower**(): `Promise`<`string`\> - -Get the amount of voting power required to join this voting contract. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:53](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L53) - -___ - -### getTotalVotingPower - -▸ **getTotalVotingPower**(`atBlock?`): `Promise`<`string`\> - -Get the sum of voting power held by all voters in this voting contract. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingContract](VotingContract.md).[getTotalVotingPower](VotingContract.md#gettotalvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:137](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L137) - -___ - -### getVoters - -▸ **getVoters**(`fromBlock?`, `toBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all participants that have voting power in this voting contract. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | The block number to start searching for voters from. | -| `toBlock?` | `number` | The block number to stop searching for voters at. | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Overrides - -[VotingContract](VotingContract.md).[getVoters](VotingContract.md#getvoters) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:46](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L46) - -___ - -### getVotes - -▸ **getVotes**(`address?`, `proposalId?`, `fromBlock?`, `toBlock?`): `Promise`<[`Vote`](Vote.md)[]\> - -Get all casted votes on proposals in this voting contract. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | - | -| `proposalId?` | `number` | - | -| `fromBlock?` | `number` | The starting block number for the range of blocks fetched. | -| `toBlock?` | `number` | The ending block number for the range of blocks fetched. | - -#### Returns - -`Promise`<[`Vote`](Vote.md)[]\> - -#### Inherited from - -[VotingContract](VotingContract.md).[getVotes](VotingContract.md#getvotes) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:278](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L278) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this voting contract. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | - | -| `atBlock?` | `number` | - | -| `extraData?` | `BytesLike`[] | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingContract](VotingContract.md).[getVotingPower](VotingContract.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:149](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L149) - -___ - -### getVotingPowerBreakdown - -▸ **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -Get all participants that have voting power in this voting contract along -with their voting power, the amount of voting power being delegated to -them, and the amount of power delegated to them by each delegator. This is -a convenience method to fetch voting power and delegation data for a large -number of voters in a single call. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Get a breakdown for a specific address. | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Inherited from - -[VotingContract](VotingContract.md).[getVotingPowerBreakdown](VotingContract.md#getvotingpowerbreakdown) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:185](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L185) - -___ - -### join - -▸ **join**(`signer`, `vaults`, `options?`): `Promise`<`string`\> - -Become a member of this GSC voting contract. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the joining member. | -| `vaults` | `string`[] | The addresses of the approved vaults the joining member has voting power in. This is used to prove the joining member meets the minimum voting power requirement. If voting power is moved to a different vault, the member will become ineligible until they join again with the new vault or risk being kicked. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:105](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L105) - -___ - -### kick - -▸ **kick**(`signer`, `member`, `options?`): `Promise`<`string`\> - -Remove a member that's become ineligible from this GSC vault. A member -becomes ineligible when the voting power in the vaults they joined with -drops below the required minimum. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet paying to kick. | -| `member` | `string` | The address of the ineligible member to kick. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingContract/GSCVotingContract.ts:126](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts#L126) diff --git a/packages/council-sdk/docs/classes/HTTPDataSource.md b/packages/council-sdk/docs/classes/HTTPDataSource.md deleted file mode 100644 index f94012f2..00000000 --- a/packages/council-sdk/docs/classes/HTTPDataSource.md +++ /dev/null @@ -1,428 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / HTTPDataSource - -# Class: HTTPDataSource - -A DataSource with methods for caching requests to an HTTP API. - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | `any` | - -## Hierarchy - -- [`CachedDataSource`](CachedDataSource.md) - - ↳ **`HTTPDataSource`** - -## Table of contents - -### Constructors - -- [constructor](HTTPDataSource.md#constructor) - -### Properties - -- [baseURL](HTTPDataSource.md#baseurl) -- [cache](HTTPDataSource.md#cache) -- [context](HTTPDataSource.md#context) -- [defaultDeleteOptions](HTTPDataSource.md#defaultdeleteoptions) -- [defaultGetOptions](HTTPDataSource.md#defaultgetoptions) -- [defaultPostOptions](HTTPDataSource.md#defaultpostoptions) -- [defaultPutOptions](HTTPDataSource.md#defaultputoptions) -- [defaultRequestOptions](HTTPDataSource.md#defaultrequestoptions) -- [onResponse](HTTPDataSource.md#onresponse) - -### Methods - -- [cached](HTTPDataSource.md#cached) -- [clearCached](HTTPDataSource.md#clearcached) -- [delete](HTTPDataSource.md#delete) -- [deleteCached](HTTPDataSource.md#deletecached) -- [get](HTTPDataSource.md#get) -- [post](HTTPDataSource.md#post) -- [put](HTTPDataSource.md#put) - -## Constructors - -### constructor - -• **new HTTPDataSource**<`T`\>(`baseURL`, `context`, `options?`) - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `baseURL` | `string` | - | -| `context` | [`CouncilContext`](CouncilContext.md) | - | -| `options?` | `Object` | - | -| `options.defaultDeleteOptions?` | `RequestInit` | The default options that are used for the `delete` method. This will be merged with and overwrite `defaultRequestOptions`. | -| `options.defaultGetOptions?` | `RequestInit` | The default options that are used for the `get` method. This will be merged with and overwrite `defaultRequestOptions`. | -| `options.defaultPostOptions?` | `RequestInit` | The default options that are used for the `post` method. This will be merged with and overwrite `defaultRequestOptions`. | -| `options.defaultPutOptions?` | `RequestInit` | The default options that are used for the `put` method. This will be merged with and overwrite `defaultRequestOptions`. | -| `options.defaultRequestOptions?` | `RequestInit` | The default options that are used for all request methods. | -| `options.onResponse?` | (`res`: `Response`) => `Promise`<`T`\> | A function that processes the API's responses and returns the desired data. The default implementation uses `response.json()` to parse the response as JSON. | - -#### Overrides - -[CachedDataSource](CachedDataSource.md).[constructor](CachedDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:53](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L53) - -## Properties - -### baseURL - -• **baseURL**: `string` - -The base URL prefixed to all method paths. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L12) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[cache](CachedDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[context](CachedDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### defaultDeleteOptions - -• **defaultDeleteOptions**: `RequestInit` - -The default options that are used for the `delete` method. -This will be merged with and overwrite the `defaultRequestOptions`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L42) - -___ - -### defaultGetOptions - -• **defaultGetOptions**: `RequestInit` - -The default options that are used for the `get` method. -This will be merged with and overwrite the `defaultRequestOptions`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:24](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L24) - -___ - -### defaultPostOptions - -• **defaultPostOptions**: `RequestInit` - -The default options that are used for the `post` method. -This will be merged with and overwrite the `defaultRequestOptions`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:30](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L30) - -___ - -### defaultPutOptions - -• **defaultPutOptions**: `RequestInit` - -The default options that are used for the `put` method. -This will be merged with and overwrite the `defaultRequestOptions`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:36](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L36) - -___ - -### defaultRequestOptions - -• **defaultRequestOptions**: `RequestInit` - -The default options that are used for all request methods. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:17](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L17) - -___ - -### onResponse - -• **onResponse**: (`res`: `Response`) => `Promise`<`T`\> - -#### Type declaration - -▸ (`res`): `Promise`<`T`\> - -A function that processes the API's responses and returns the desired data. -The default implementation uses `response.json()` to parse the response as -JSON. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `res` | `Response` | the response from the API. | - -##### Returns - -`Promise`<`T`\> - -a promise that resolves to the processed response data. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:51](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L51) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[cached](CachedDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[clearCached](CachedDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### delete - -▸ **delete**<`T`\>(`path`, `options?`): `Promise`<`T`\> - -Make a `DELETE` request to the API. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `path` | `string` | the path to append to the `baseURL`. | -| `options` | `RequestInit` | - | - -#### Returns - -`Promise`<`T`\> - -a promise that resolves to the response data processed by - `onResponse`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:202](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L202) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[CachedDataSource](CachedDataSource.md).[deleteCached](CachedDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### get - -▸ **get**<`T`\>(`path`, `options?`): `Promise`<`T`\> - -Make a `GET` request to the API and cache the result with a key made from -the method type and the path. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `path` | `string` | the path to append to the `baseURL`. | -| `options` | `RequestInit` | - | - -#### Returns - -`Promise`<`T`\> - -a promise that resolves to the response data processed by - `onResponse`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:161](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L161) - -___ - -### post - -▸ **post**<`T`\>(`path`, `options`): `Promise`<`T`\> - -Make a `POST` request to the API and cache the result with a key made from -the method type, the path, and the request body. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `path` | `string` | the path to append to the `baseURL`. | -| `options` | `RequestInit` | - | - -#### Returns - -`Promise`<`T`\> - -a promise that resolves to the response data processed by - `onResponse`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:140](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L140) - -___ - -### put - -▸ **put**<`T`\>(`path`, `options`): `Promise`<`T`\> - -Make a `PUT` request to the API and cache the result with a key made from -the method type, the path, and the request body. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `path` | `string` | the path to append to the `baseURL`. | -| `options` | `RequestInit` | - | - -#### Returns - -`Promise`<`T`\> - -a promise that resolves to the response data processed by - `onResponse`. - -#### Defined in - -[packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts:182](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts#L182) diff --git a/packages/council-sdk/docs/classes/LockingVault.md b/packages/council-sdk/docs/classes/LockingVault.md deleted file mode 100644 index 489c7939..00000000 --- a/packages/council-sdk/docs/classes/LockingVault.md +++ /dev/null @@ -1,437 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / LockingVault - -# Class: LockingVault - -A VotingVault that gives voting power for depositing tokens. - -## Hierarchy - -- [`VotingVault`](VotingVault.md)<[`LockingVaultContractDataSource`](LockingVaultContractDataSource.md)\> - - ↳ **`LockingVault`** - -## Table of contents - -### Constructors - -- [constructor](LockingVault.md#constructor) - -### Properties - -- [address](LockingVault.md#address) -- [context](LockingVault.md#context) -- [dataSource](LockingVault.md#datasource) -- [name](LockingVault.md#name) - -### Methods - -- [changeDelegate](LockingVault.md#changedelegate) -- [deposit](LockingVault.md#deposit) -- [getDelegate](LockingVault.md#getdelegate) -- [getDelegatorsTo](LockingVault.md#getdelegatorsto) -- [getDepositedBalance](LockingVault.md#getdepositedbalance) -- [getHistoricalVotingPower](LockingVault.md#gethistoricalvotingpower) -- [getStaleBlockLag](LockingVault.md#getstaleblocklag) -- [getToken](LockingVault.md#gettoken) -- [getTotalVotingPower](LockingVault.md#gettotalvotingpower) -- [getVoters](LockingVault.md#getvoters) -- [getVotingPower](LockingVault.md#getvotingpower) -- [getVotingPowerBreakdown](LockingVault.md#getvotingpowerbreakdown) -- [withdraw](LockingVault.md#withdraw) - -## Constructors - -### constructor - -• **new LockingVault**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`LockingVaultOptions`](../interfaces/LockingVaultOptions.md) | - -#### Overrides - -[VotingVault](VotingVault.md).[constructor](VotingVault.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:21](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L21) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingVault](VotingVault.md).[address](VotingVault.md#address) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:56](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L56) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingVault](VotingVault.md).[context](VotingVault.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`LockingVaultContractDataSource`](LockingVaultContractDataSource.md) - -#### Inherited from - -[VotingVault](VotingVault.md).[dataSource](VotingVault.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L57) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[VotingVault](VotingVault.md).[name](VotingVault.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### changeDelegate - -▸ **changeDelegate**(`signer`, `delegate`, `options?`): `Promise`<`string`\> - -Change current delegate. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the address delegating. | -| `delegate` | `string` | The address to delegate to. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:160](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L160) - -___ - -### deposit - -▸ **deposit**(`signer`, `account`, `amount`, `firstDelegate?`, `options?`): `Promise`<`string`\> - -Deposit tokens into this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet with the tokens. | -| `account` | `string` | The address to credit this deposit to. | -| `amount` | `string` | The amount of tokens to deposit. (formatted decimal string) | -| `firstDelegate?` | `string` | The address to delegate the resulting voting power to if the account doesn't already have a delegate. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:177](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L177) - -___ - -### getDelegate - -▸ **getDelegate**(`address`): `Promise`<[`Voter`](Voter.md)\> - -Get the current delegate of a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`Voter`](Voter.md)\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:141](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L141) - -___ - -### getDelegatorsTo - -▸ **getDelegatorsTo**(`address`, `atBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all voters delegated to a given address in this vault. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:149](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L149) - -___ - -### getDepositedBalance - -▸ **getDepositedBalance**(`address`): `Promise`<`string`\> - -Get the amount of tokens that a given `address` has deposited into this -vault. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L50) - -___ - -### getHistoricalVotingPower - -▸ **getHistoricalVotingPower**(`address`, `atBlock?`): `Promise`<`string`\> - -Get the voting power for a given address at a given block without -accounting for the stale block lag. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:118](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L118) - -___ - -### getStaleBlockLag - -▸ **getStaleBlockLag**(): `Promise`<`number`\> - -Get the number of blocks before the delegation history is forgotten. Voting -power from this vault can't be used on proposals that are older than the -stale block lag. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:110](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L110) - -___ - -### getToken - -▸ **getToken**(): `Promise`<[`Token`](Token.md)\> - -Get the associated token for this LockingVault. - -#### Returns - -`Promise`<[`Token`](Token.md)\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:41](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L41) - -___ - -### getTotalVotingPower - -▸ **getTotalVotingPower**(`atBlock?`): `Promise`<`string`\> - -Get the sum of voting power held by all voters in this Vesting Vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `atBlock?` | `number` | Get the total held at this block number. | - -#### Returns - -`Promise`<`string`\> - -#### Overrides - -[VotingVault](VotingVault.md).[getTotalVotingPower](VotingVault.md#gettotalvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:129](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L129) - -___ - -### getVoters - -▸ **getVoters**(`fromBlock?`, `toBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all participants with voting power in this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Overrides - -[VotingVault](VotingVault.md).[getVoters](VotingVault.md#getvoters) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:59](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L59) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the usable voting power owned by a given address in this vault. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVault](VotingVault.md).[getVotingPower](VotingVault.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L83) - -___ - -### getVotingPowerBreakdown - -▸ **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -Get all participants that have voting power in this vault along with their -voting power, the amount of voting power being delegated to them, and the -amount of power delegated to them by each delegator. This is a convenience -method to fetch voting power and delegation data for a large number of -voters in a single call. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Get a breakdown for a specific address. | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Overrides - -[VotingVault](VotingVault.md).[getVotingPowerBreakdown](VotingVault.md#getvotingpowerbreakdown) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:82](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L82) - -___ - -### withdraw - -▸ **withdraw**(`signer`, `amount`, `options?`): `Promise`<`string`\> - -Withdraw tokens from this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet with a deposited balance. | -| `amount` | `string` | The amount of tokens to withdraw. (formatted decimal string) | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:201](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L201) diff --git a/packages/council-sdk/docs/classes/LockingVaultContractDataSource.md b/packages/council-sdk/docs/classes/LockingVaultContractDataSource.md deleted file mode 100644 index c5caf627..00000000 --- a/packages/council-sdk/docs/classes/LockingVaultContractDataSource.md +++ /dev/null @@ -1,704 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / LockingVaultContractDataSource - -# Class: LockingVaultContractDataSource - -A DataSource with methods for making cached calls to a `LockingVault` -contract from the Council protocol. - -## Hierarchy - -- [`VotingVaultContractDataSource`](VotingVaultContractDataSource.md)<`LockingVault`\> - - ↳ **`LockingVaultContractDataSource`** - -## Table of contents - -### Constructors - -- [constructor](LockingVaultContractDataSource.md#constructor) - -### Properties - -- [address](LockingVaultContractDataSource.md#address) -- [cache](LockingVaultContractDataSource.md#cache) -- [context](LockingVaultContractDataSource.md#context) -- [contract](LockingVaultContractDataSource.md#contract) -- [type](LockingVaultContractDataSource.md#type) -- [type](LockingVaultContractDataSource.md#type-1) - -### Methods - -- [cached](LockingVaultContractDataSource.md#cached) -- [call](LockingVaultContractDataSource.md#call) -- [callStatic](LockingVaultContractDataSource.md#callstatic) -- [callWithSigner](LockingVaultContractDataSource.md#callwithsigner) -- [changeDelegate](LockingVaultContractDataSource.md#changedelegate) -- [clearCached](LockingVaultContractDataSource.md#clearcached) -- [clearTokenCached](LockingVaultContractDataSource.md#cleartokencached) -- [deleteCached](LockingVaultContractDataSource.md#deletecached) -- [deleteCall](LockingVaultContractDataSource.md#deletecall) -- [deposit](LockingVaultContractDataSource.md#deposit) -- [getDelegate](LockingVaultContractDataSource.md#getdelegate) -- [getDelegatorsTo](LockingVaultContractDataSource.md#getdelegatorsto) -- [getDepositedBalance](LockingVaultContractDataSource.md#getdepositedbalance) -- [getEvents](LockingVaultContractDataSource.md#getevents) -- [getHistoricalVotingPower](LockingVaultContractDataSource.md#gethistoricalvotingpower) -- [getStaleBlockLag](LockingVaultContractDataSource.md#getstaleblocklag) -- [getToken](LockingVaultContractDataSource.md#gettoken) -- [getVotingPower](LockingVaultContractDataSource.md#getvotingpower) -- [getVotingPowerBreakdown](LockingVaultContractDataSource.md#getvotingpowerbreakdown) -- [withdraw](LockingVaultContractDataSource.md#withdraw) - -## Constructors - -### constructor - -• **new LockingVaultContractDataSource**(`address`, `context`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | - -#### Overrides - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[constructor](VotingVaultContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:25](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L25) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[address](VotingVaultContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[cache](VotingVaultContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[context](VotingVaultContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `LockingVault` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[contract](VotingVaultContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -___ - -### type - -• **type**: `string` = `TYPE` - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L23) - -___ - -### type - -▪ `Static` **type**: `string` = `TYPE` - -A field that can be used for more specific filtering when registering an -instance of this data source with the council context. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L22) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[cached](VotingVaultContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `LockingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"token()"`` \| ``"token"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"changeDelegation"`` \| ``"changeDelegation(address)"`` \| ``"deposit"`` \| ``"deposit(address,uint256,address)"`` \| ``"deposits"`` \| ``"deposits(address)"`` \| ``"queryVotePowerView"`` \| ``"queryVotePowerView(address,uint256)"`` \| ``"staleBlockLag"`` \| ``"staleBlockLag()"`` \| ``"withdraw"`` \| ``"withdraw(uint256)"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `LockingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`LockingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[call](VotingVaultContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<{ `changeDelegation`: (`newDelegate`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeDelegation(address)`: (`newDelegate`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit`: (`fundedAccount`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `firstDelegation`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit(address,uint256,address)`: (`fundedAccount`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `firstDelegation`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposits`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`]\> ; `deposits(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`]\> ; `queryVotePower`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView(address,uint256)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `withdraw`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw(uint256)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> }[`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"token()"`` \| ``"token"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"changeDelegation"`` \| ``"changeDelegation(address)"`` \| ``"deposit"`` \| ``"deposit(address,uint256,address)"`` \| ``"deposits"`` \| ``"deposits(address)"`` \| ``"queryVotePowerView"`` \| ``"queryVotePowerView(address,uint256)"`` \| ``"staleBlockLag"`` \| ``"staleBlockLag()"`` \| ``"withdraw"`` \| ``"withdraw(uint256)"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | { `changeDelegation`: (`newDelegate`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeDelegation(address)`: (`newDelegate`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit`: (`fundedAccount`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `firstDelegation`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit(address,uint256,address)`: (`fundedAccount`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `firstDelegation`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposits`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`]\> ; `deposits(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`]\> ; `queryVotePower`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView(address,uint256)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `withdraw`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw(uint256)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> }[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<{ `changeDelegation`: (`newDelegate`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeDelegation(address)`: (`newDelegate`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit`: (`fundedAccount`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `firstDelegation`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit(address,uint256,address)`: (`fundedAccount`: `PromiseOrValue`<`string`\>, `amount`: `PromiseOrValue`<`BigNumberish`\>, `firstDelegation`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposits`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`]\> ; `deposits(address)`: (`who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<[`string`, `BigNumber`]\> ; `queryVotePower`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView(address,uint256)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `withdraw`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw(uint256)`: (`amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> }[`K`]\> - -The value returned from the contract. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[callStatic](VotingVaultContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"fallback"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"changeDelegation"`` \| ``"changeDelegation(address)"`` \| ``"deposit"`` \| ``"deposit(address,uint256,address)"`` \| ``"withdraw"`` \| ``"withdraw(uint256)"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `LockingVault`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[callWithSigner](VotingVaultContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### changeDelegate - -▸ **changeDelegate**(`signer`, `delegate`, `options?`): `Promise`<`string`\> - -Change current delegate. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the address delegating. | -| `delegate` | `string` | The address to delegate to. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:210](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L210) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[clearCached](VotingVaultContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### clearTokenCached - -▸ `Private` **clearTokenCached**(): `Promise`<`void`\> - -Checks the `context` for a `TokenDataSource` for this vault's -token and clears the cache if it's a `CachedDataSource`. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:278](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L278) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[deleteCached](VotingVaultContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"token()"`` \| ``"token"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"changeDelegation"`` \| ``"changeDelegation(address)"`` \| ``"deposit"`` \| ``"deposit(address,uint256,address)"`` \| ``"deposits"`` \| ``"deposits(address)"`` \| ``"queryVotePowerView"`` \| ``"queryVotePowerView(address,uint256)"`` \| ``"staleBlockLag"`` \| ``"staleBlockLag()"`` \| ``"withdraw"`` \| ``"withdraw(uint256)"`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `LockingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[deleteCall](VotingVaultContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### deposit - -▸ **deposit**(`signer`, `account`, `amount`, `firstDelegate`, `options?`): `Promise`<`string`\> - -Deposit tokens into this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet with the tokens. | -| `account` | `string` | The address to credit this deposit to. | -| `amount` | `BigNumber` | A BigNumber of the amount of tokens to deposit. | -| `firstDelegate` | `string` | The address to delegate the resulting voting power to if the account doesn't already have a delegate. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:234](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L234) - -___ - -### getDelegate - -▸ **getDelegate**(`address`): `Promise`<`string`\> - -Get the address of the current delegate of a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:49](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L49) - -___ - -### getDelegatorsTo - -▸ **getDelegatorsTo**(`address`, `atBlock?`): `Promise`<[`VoterAddressWithPower`](../interfaces/VoterAddressWithPower.md)[]\> - -Get the addresses of all voters delegated to a given address in this vault. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<[`VoterAddressWithPower`](../interfaces/VoterAddressWithPower.md)[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L57) - -___ - -### getDepositedBalance - -▸ **getDepositedBalance**(`address`): `Promise`<`string`\> - -Get the amount of tokens that a given `address` has deposited into this -vault. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:41](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L41) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[getEvents](VotingVaultContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getHistoricalVotingPower - -▸ **getHistoricalVotingPower**(`address`, `atBlock?`): `Promise`<`string`\> - -Get the voting power for a given address at a given block without -accounting for the stale block lag. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:100](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L100) - -___ - -### getStaleBlockLag - -▸ **getStaleBlockLag**(): `Promise`<`number`\> - -Get the number of blocks before the delegation history is forgotten. Voting -power from this vault can't be used on proposals that are older than the -stale block lag. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:91](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L91) - -___ - -### getToken - -▸ **getToken**(): `Promise`<`string`\> - -Get the address of the associated token for this vault. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:33](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L33) - -___ - -### getVotingPower - -▸ **getVotingPower**(`this`, `address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this vault. Returns "0" if -the voting power is unable to be fetched. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `this` | [`ContractDataSource`](ContractDataSource.md)<`IVotingVault`\> | `undefined` | - | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[getVotingPower](VotingVaultContractDataSource.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts:44](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts#L44) - -___ - -### getVotingPowerBreakdown - -▸ **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<[`VoterPowerBreakdown`](../interfaces/VoterPowerBreakdown.md)[]\> - -Get the address of all participants that have voting power in this vault -along with their voting power, the amount of voting power being delegated -to them, and the amount of power delegated to them by each delegator. This -is a convenience method to fetch voting power and delegation data for a -large number of voters in a single call. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Get a breakdown for a specific address. | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<[`VoterPowerBreakdown`](../interfaces/VoterPowerBreakdown.md)[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:135](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L135) - -___ - -### withdraw - -▸ **withdraw**(`signer`, `amount`, `options?`): `Promise`<`string`\> - -Withdraw tokens from this Locking Vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet with a deposited balance. | -| `amount` | `BigNumber` | A BigNumber of the amount of tokens to withdraw. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:258](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L258) diff --git a/packages/council-sdk/docs/classes/Model.md b/packages/council-sdk/docs/classes/Model.md deleted file mode 100644 index 0e552a9a..00000000 --- a/packages/council-sdk/docs/classes/Model.md +++ /dev/null @@ -1,71 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Model - -# Class: Model - -Base model class extended by all others - -## Hierarchy - -- **`Model`** - - ↳ [`Airdrop`](Airdrop.md) - - ↳ [`Proposal`](Proposal.md) - - ↳ [`Token`](Token.md) - - ↳ [`Vote`](Vote.md) - - ↳ [`Voter`](Voter.md) - - ↳ [`VotingContract`](VotingContract.md) - - ↳ [`VotingVault`](VotingVault.md) - -## Table of contents - -### Constructors - -- [constructor](Model.md#constructor) - -### Properties - -- [context](Model.md#context) -- [name](Model.md#name) - -## Constructors - -### constructor - -• **new Model**(`context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`ModelOptions`](../interfaces/ModelOptions.md) | - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L22) - -## Properties - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### name - -• **name**: `string` - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) diff --git a/packages/council-sdk/docs/classes/Proposal.md b/packages/council-sdk/docs/classes/Proposal.md deleted file mode 100644 index 62c620cd..00000000 --- a/packages/council-sdk/docs/classes/Proposal.md +++ /dev/null @@ -1,531 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Proposal - -# Class: Proposal - -A model of a Proposal in Council - -## Hierarchy - -- [`Model`](Model.md) - - ↳ **`Proposal`** - -## Table of contents - -### Constructors - -- [constructor](Proposal.md#constructor) - -### Properties - -- [context](Proposal.md#context) -- [id](Proposal.md#id) -- [name](Proposal.md#name) -- [votingContract](Proposal.md#votingcontract) - -### Methods - -- [execute](Proposal.md#execute) -- [getCreatedBlock](Proposal.md#getcreatedblock) -- [getCreatedBy](Proposal.md#getcreatedby) -- [getCreatedTransactionHash](Proposal.md#getcreatedtransactionhash) -- [getCurrentQuorum](Proposal.md#getcurrentquorum) -- [getData](Proposal.md#getdata) -- [getExecutedTransactionHash](Proposal.md#getexecutedtransactionhash) -- [getExpirationBlock](Proposal.md#getexpirationblock) -- [getHash](Proposal.md#gethash) -- [getIsActive](Proposal.md#getisactive) -- [getIsExecutable](Proposal.md#getisexecutable) -- [getIsExecuted](Proposal.md#getisexecuted) -- [getLastCallBlock](Proposal.md#getlastcallblock) -- [getRequiredQuorum](Proposal.md#getrequiredquorum) -- [getResults](Proposal.md#getresults) -- [getTargetsAndCalldatas](Proposal.md#gettargetsandcalldatas) -- [getUnlockBlock](Proposal.md#getunlockblock) -- [getVote](Proposal.md#getvote) -- [getVotes](Proposal.md#getvotes) -- [getVotingPower](Proposal.md#getvotingpower) -- [vote](Proposal.md#vote) - -## Constructors - -### constructor - -• **new Proposal**(`id`, `votingContract`, `context`, `options?`) - -Create a new Proposal model instance. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `id` | `number` | The id of the proposal in the voting contract. | -| `votingContract` | `string` \| [`VotingContract`](VotingContract.md)<[`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[]\> | the voting contract in which this proposal was created. | -| `context` | [`CouncilContext`](CouncilContext.md) | - | -| `options?` | [`ModelOptions`](../interfaces/ModelOptions.md) | - | - -#### Overrides - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:32](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L32) - -## Properties - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### id - -• **id**: `number` - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L23) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -___ - -### votingContract - -• **votingContract**: [`VotingContract`](VotingContract.md)<[`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[]\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:24](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L24) - -## Methods - -### execute - -▸ **execute**(`signer`, `options?`): `Promise`<`string`\> - -Execute a proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:286](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L286) - -___ - -### getCreatedBlock - -▸ **getCreatedBlock**(): `Promise`<``null`` \| `number`\> - -Get the block number of when this proposal was created. Will only be null -if this proposal instance was initiated with an invalid id. - -#### Returns - -`Promise`<``null`` \| `number`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:105](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L105) - -___ - -### getCreatedBy - -▸ **getCreatedBy**(): `Promise`<``null`` \| `string`\> - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:119](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L119) - -___ - -### getCreatedTransactionHash - -▸ **getCreatedTransactionHash**(): `Promise`<``null`` \| `string`\> - -Get the hash of the transaction that created the proposal, or null if -the Proposal doesn't exist. - -#### Returns - -`Promise`<``null`` \| `string`\> - -The transaction hash - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:128](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L128) - -___ - -### getCurrentQuorum - -▸ **getCurrentQuorum**(): `Promise`<`string`\> - -Get the current quorum of this proposal measured by summing the voting -power of all casted votes. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:249](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L249) - -___ - -### getData - -▸ **getData**(): `Promise`<`Partial`<[`ProposalData`](../interfaces/ProposalData.md)\>\> - -Get the base set of data returned from fetching a proposal. The data -returned will depend whether this proposal has been executed. Once -executed, the proposal is deleted from the voting contract and only a -preview of the data from the logs can be fetched. - -Additionally, if this proposal instance was initiated with an invalid id, -then only the id provided will be available. - -#### Returns - -`Promise`<`Partial`<[`ProposalData`](../interfaces/ProposalData.md)\>\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:58](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L58) - -___ - -### getExecutedTransactionHash - -▸ **getExecutedTransactionHash**(): `Promise`<``null`` \| `string`\> - -Get the hash of the transaction that executed the proposal, or null if -the Proposal wasn't executed. - -#### Returns - -`Promise`<``null`` \| `string`\> - -The transaction hash - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:186](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L186) - -___ - -### getExpirationBlock - -▸ **getExpirationBlock**(): `Promise`<``null`` \| `number`\> - -Get the block number of when this voting ends for this proposal. Will only -be null if this proposal instance was initiated with an invalid id. - -#### Returns - -`Promise`<``null`` \| `number`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:138](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L138) - -___ - -### getHash - -▸ **getHash**(): `Promise`<``null`` \| `string`\> - -Get the hash of this proposal, used by its voting contract to verify the -proposal data on execution. Not available on executed proposals. - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:85](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L85) - -___ - -### getIsActive - -▸ **getIsActive**(): `Promise`<`boolean`\> - -Get a boolean indicating whether this proposal is still active. Proposals -are active during their voting period, i.e., from creation block up to -expiration block or execution. Returns false if the current block is later -than this proposal's expiration or this proposal has been executed. - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:158](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L158) - -___ - -### getIsExecutable - -▸ **getIsExecutable**(): `Promise`<`boolean`\> - -Get a boolean indicating whether this proposal can be executed. Proposals -can only be executed if the quorum requirement has been met, there are more -yes votes than no votes, and the current block is between the unlock and -last call blocks. - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:260](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L260) - -___ - -### getIsExecuted - -▸ **getIsExecuted**(`atBlock?`): `Promise`<`boolean`\> - -Get a boolean indicating whether this proposal has been executed. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `atBlock?` | `number` | The block number to check. If this proposal was executed on or before this block, this will return true. | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:172](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L172) - -___ - -### getLastCallBlock - -▸ **getLastCallBlock**(): `Promise`<``null`` \| `number`\> - -Get the block number after which this proposal can no longer be executed. -Not available on executed proposals. - -#### Returns - -`Promise`<``null`` \| `number`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:147](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L147) - -___ - -### getRequiredQuorum - -▸ **getRequiredQuorum**(): `Promise`<``null`` \| `string`\> - -Get the required quorum for this proposal to be executed. If the sum of -voting power from all casted votes does not meet or exceed this number, -then the proposal is not passing quorum. Not available on executed -proposals. - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:96](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L96) - -___ - -### getResults - -▸ **getResults**(): `Promise`<[`VoteResults`](../modules.md#voteresults)\> - -Get the total voting power of all votes on this proposal by their ballot. - -#### Returns - -`Promise`<[`VoteResults`](../modules.md#voteresults)\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:241](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L241) - -___ - -### getTargetsAndCalldatas - -▸ **getTargetsAndCalldatas**(): `Promise`<``null`` \| [`Actions`](../interfaces/Actions.md)\> - -Get the array of addresses that will be called (targets) and the data -they'll be called with (calldatas) by a proposal. - -#### Returns - -`Promise`<``null`` \| [`Actions`](../interfaces/Actions.md)\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:77](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L77) - -___ - -### getUnlockBlock - -▸ **getUnlockBlock**(): `Promise`<``null`` \| `number`\> - -Get the block number of when this proposal can be executed. Will only be -null if this proposal instance was initiated with an invalid id. - -#### Returns - -`Promise`<``null`` \| `number`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:114](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L114) - -___ - -### getVote - -▸ **getVote**(`address`): `Promise`<``null`` \| [`Vote`](Vote.md)\> - -Get the casted vote for a given address on this proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | The address that casted the vote. | - -#### Returns - -`Promise`<``null`` \| [`Vote`](Vote.md)\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:196](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L196) - -___ - -### getVotes - -▸ **getVotes**(`fromBlock?`, `toBlock?`): `Promise`<[`Vote`](Vote.md)[]\> - -Get all casted votes on this proposal - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all votes casted on or after this block number. | -| `toBlock?` | `number` | Include all votes casted on or before this block number. | - -#### Returns - -`Promise`<[`Vote`](Vote.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:215](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L215) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `extraData?`): `Promise`<``null`` \| `string`\> - -Get the usable voting power of a given address for this proposal determined -by its creation block. Any changes to voting power after the creation block -of this proposal does not apply to this proposal and therefore will not be -reflected. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | - | -| `extraData?` | `BytesLike`[] | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:227](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L227) - -___ - -### vote - -▸ **vote**(`signer`, `ballot`, `options?`): `Promise`<`string`\> - -Vote on this proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `ballot` | [`Ballot`](../modules.md#ballot) | The ballot to cast. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/Proposal.ts:300](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Proposal.ts#L300) diff --git a/packages/council-sdk/docs/classes/Token.md b/packages/council-sdk/docs/classes/Token.md deleted file mode 100644 index d44abd34..00000000 --- a/packages/council-sdk/docs/classes/Token.md +++ /dev/null @@ -1,222 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Token - -# Class: Token - -## Hierarchy - -- [`Model`](Model.md) - - ↳ **`Token`** - -## Table of contents - -### Constructors - -- [constructor](Token.md#constructor) - -### Properties - -- [address](Token.md#address) -- [context](Token.md#context) -- [dataSource](Token.md#datasource) -- [name](Token.md#name) - -### Methods - -- [approve](Token.md#approve) -- [getAllowance](Token.md#getallowance) -- [getBalanceOf](Token.md#getbalanceof) -- [getDecimals](Token.md#getdecimals) -- [getName](Token.md#getname) -- [getSymbol](Token.md#getsymbol) - -## Constructors - -### constructor - -• **new Token**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`TokenOptions`](../interfaces/TokenOptions.md) | - -#### Overrides - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L28) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:25](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L25) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`TokenDataSource`](../interfaces/TokenDataSource.md) - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:26](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L26) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### approve - -▸ **approve**(`signer`, `spender`, `amount`, `options?`): `Promise`<`string`\> - -Give a spending allowance to a given spender. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the owner. | -| `spender` | `string` | The address of the spender. | -| `amount` | `string` | The amount of tokens the spender can spend. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:86](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L86) - -___ - -### getAllowance - -▸ **getAllowance**(`owner`, `spender`): `Promise`<`string`\> - -Get the spending allowance of a given spender for a given owner of this -token. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `owner` | `string` | -| `spender` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:68](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L68) - -___ - -### getBalanceOf - -▸ **getBalanceOf**(`address`): `Promise`<`string`\> - -Get the token balance of a given address - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:75](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L75) - -___ - -### getDecimals - -▸ **getDecimals**(): `Promise`<`number`\> - -Get the number of decimal places this token uses. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:53](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L53) - -___ - -### getName - -▸ **getName**(): `Promise`<`string`\> - -Get the name of this token - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:60](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L60) - -___ - -### getSymbol - -▸ **getSymbol**(): `Promise`<`string`\> - -Get the symbol for this token. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:46](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L46) diff --git a/packages/council-sdk/docs/classes/VestingVault.md b/packages/council-sdk/docs/classes/VestingVault.md deleted file mode 100644 index 0f353b45..00000000 --- a/packages/council-sdk/docs/classes/VestingVault.md +++ /dev/null @@ -1,455 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VestingVault - -# Class: VestingVault - -A VotingVault that gives voting power for receiving grants and applies a -multiplier on unvested tokens to reduce their voting power. - -## Hierarchy - -- [`VotingVault`](VotingVault.md)<[`VestingVaultContractDataSource`](VestingVaultContractDataSource.md)\> - - ↳ **`VestingVault`** - -## Table of contents - -### Constructors - -- [constructor](VestingVault.md#constructor) - -### Properties - -- [address](VestingVault.md#address) -- [context](VestingVault.md#context) -- [dataSource](VestingVault.md#datasource) -- [name](VestingVault.md#name) - -### Methods - -- [changeDelegate](VestingVault.md#changedelegate) -- [claim](VestingVault.md#claim) -- [getDelegate](VestingVault.md#getdelegate) -- [getDelegatorsTo](VestingVault.md#getdelegatorsto) -- [getGrant](VestingVault.md#getgrant) -- [getGrantWithdrawableAmount](VestingVault.md#getgrantwithdrawableamount) -- [getHistoricalVotingPower](VestingVault.md#gethistoricalvotingpower) -- [getStaleBlockLag](VestingVault.md#getstaleblocklag) -- [getToken](VestingVault.md#gettoken) -- [getTotalVotingPower](VestingVault.md#gettotalvotingpower) -- [getUnvestedMultiplier](VestingVault.md#getunvestedmultiplier) -- [getVoters](VestingVault.md#getvoters) -- [getVotingPower](VestingVault.md#getvotingpower) -- [getVotingPowerBreakdown](VestingVault.md#getvotingpowerbreakdown) - -## Constructors - -### constructor - -• **new VestingVault**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`VestingVaultOptions`](../interfaces/VestingVaultOptions.md) | - -#### Overrides - -[VotingVault](VotingVault.md).[constructor](VotingVault.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:24](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L24) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingVault](VotingVault.md).[address](VotingVault.md#address) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:56](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L56) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingVault](VotingVault.md).[context](VotingVault.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`VestingVaultContractDataSource`](VestingVaultContractDataSource.md) - -#### Inherited from - -[VotingVault](VotingVault.md).[dataSource](VotingVault.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L57) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[VotingVault](VotingVault.md).[name](VotingVault.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### changeDelegate - -▸ **changeDelegate**(`signer`, `delegate`, `options?`): `Promise`<`string`\> - -Change current delegate. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the address delegating. | -| `delegate` | `string` | The address to delegate to. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:209](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L209) - -___ - -### claim - -▸ **claim**(`signer`, `options?`): `Promise`<`string`\> - -Claim a grant and withdraw the tokens. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet with a grant to claim. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:222](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L222) - -___ - -### getDelegate - -▸ **getDelegate**(`address`): `Promise`<[`Voter`](Voter.md)\> - -Get the current delegate of a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`Voter`](Voter.md)\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:190](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L190) - -___ - -### getDelegatorsTo - -▸ **getDelegatorsTo**(`address`, `atBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all voters delegated to a given address in this vault. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:198](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L198) - -___ - -### getGrant - -▸ **getGrant**(`address`): `Promise`<[`GrantData`](../interfaces/GrantData.md)\> - -Get the grant data for a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`GrantData`](../interfaces/GrantData.md)\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L62) - -___ - -### getGrantWithdrawableAmount - -▸ **getGrantWithdrawableAmount**(`address`): `Promise`<`string`\> - -Gets the amount of tokens currently claimable from the grant. -Mimics internal function https://github.com/delvtech/council/blob/main/contracts/vaults/VestingVault.sol#L434 - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | The grantee address. | - -#### Returns - -`Promise`<`string`\> - -The amount of claimable tokens. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:72](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L72) - -___ - -### getHistoricalVotingPower - -▸ **getHistoricalVotingPower**(`address`, `atBlock?`): `Promise`<`string`\> - -Get the voting power for a given address at a given block without -accounting for the stale block lag. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -The historical voting power of the given address. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:167](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L167) - -___ - -### getStaleBlockLag - -▸ **getStaleBlockLag**(): `Promise`<`number`\> - -Get the number of blocks before the delegation history is forgotten. Voting -power from this vault can't be used on proposals that are older than the -stale block lag. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:156](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L156) - -___ - -### getToken - -▸ **getToken**(): `Promise`<[`Token`](Token.md)\> - -Get this vault's token. - -#### Returns - -`Promise`<[`Token`](Token.md)\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:44](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L44) - -___ - -### getTotalVotingPower - -▸ **getTotalVotingPower**(`atBlock?`): `Promise`<`string`\> - -Get the sum of voting power held by all voters in this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `atBlock?` | `number` | Get the total held at this block number. | - -#### Returns - -`Promise`<`string`\> - -#### Overrides - -[VotingVault](VotingVault.md).[getTotalVotingPower](VotingVault.md#gettotalvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:178](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L178) - -___ - -### getUnvestedMultiplier - -▸ **getUnvestedMultiplier**(): `Promise`<`number`\> - -Get this vault's unvested multiplier, a number that represents the voting -power of each unvested token as a percentage of a vested token. For example -if unvested tokens have 50% voting power compared to vested ones, this -value would be 50. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:55](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L55) - -___ - -### getVoters - -▸ **getVoters**(`fromBlock?`, `toBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -Get all participants that have voting power in this vault. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Overrides - -[VotingVault](VotingVault.md).[getVoters](VotingVault.md#getvoters) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:105](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L105) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the usable voting power owned by a given address in this vault. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVault](VotingVault.md).[getVotingPower](VotingVault.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L83) - -___ - -### getVotingPowerBreakdown - -▸ **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -Get all participants that have voting power in this vault along with their -voting power, the amount of voting power being delegated to them, and the -amount of power delegated to them by each delegator. This is a convenience -method to fetch voting power and delegation data for a large number of -voters in a single call. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Get a breakdown for a specific address. | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Overrides - -[VotingVault](VotingVault.md).[getVotingPowerBreakdown](VotingVault.md#getvotingpowerbreakdown) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:128](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L128) diff --git a/packages/council-sdk/docs/classes/VestingVaultContractDataSource.md b/packages/council-sdk/docs/classes/VestingVaultContractDataSource.md deleted file mode 100644 index 783bdb83..00000000 --- a/packages/council-sdk/docs/classes/VestingVaultContractDataSource.md +++ /dev/null @@ -1,677 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VestingVaultContractDataSource - -# Class: VestingVaultContractDataSource - -A DataSource with methods for making cached calls to a `VestingVault` -contract from the Council protocol. - -## Hierarchy - -- [`VotingVaultContractDataSource`](VotingVaultContractDataSource.md)<`VestingVault`\> - - ↳ **`VestingVaultContractDataSource`** - -## Table of contents - -### Constructors - -- [constructor](VestingVaultContractDataSource.md#constructor) - -### Properties - -- [address](VestingVaultContractDataSource.md#address) -- [cache](VestingVaultContractDataSource.md#cache) -- [context](VestingVaultContractDataSource.md#context) -- [contract](VestingVaultContractDataSource.md#contract) -- [type](VestingVaultContractDataSource.md#type) -- [type](VestingVaultContractDataSource.md#type-1) - -### Methods - -- [cached](VestingVaultContractDataSource.md#cached) -- [call](VestingVaultContractDataSource.md#call) -- [callStatic](VestingVaultContractDataSource.md#callstatic) -- [callWithSigner](VestingVaultContractDataSource.md#callwithsigner) -- [changeDelegate](VestingVaultContractDataSource.md#changedelegate) -- [claim](VestingVaultContractDataSource.md#claim) -- [clearCached](VestingVaultContractDataSource.md#clearcached) -- [deleteCached](VestingVaultContractDataSource.md#deletecached) -- [deleteCall](VestingVaultContractDataSource.md#deletecall) -- [getDelegate](VestingVaultContractDataSource.md#getdelegate) -- [getDelegatorsTo](VestingVaultContractDataSource.md#getdelegatorsto) -- [getEvents](VestingVaultContractDataSource.md#getevents) -- [getGrant](VestingVaultContractDataSource.md#getgrant) -- [getHistoricalVotingPower](VestingVaultContractDataSource.md#gethistoricalvotingpower) -- [getStaleBlockLag](VestingVaultContractDataSource.md#getstaleblocklag) -- [getToken](VestingVaultContractDataSource.md#gettoken) -- [getUnvestedMultiplier](VestingVaultContractDataSource.md#getunvestedmultiplier) -- [getVotingPower](VestingVaultContractDataSource.md#getvotingpower) -- [getVotingPowerBreakdown](VestingVaultContractDataSource.md#getvotingpowerbreakdown) - -## Constructors - -### constructor - -• **new VestingVaultContractDataSource**(`vault`, `context`) - -Create a new `VestingVaultContractDataSource` instance. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `vault` | `string` \| `VestingVault` | A `VestingVault` instance from the `@council/typechain` package or the address of the vesting vault contract. | -| `context` | [`CouncilContext`](CouncilContext.md) | - | - -#### Overrides - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[constructor](VotingVaultContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:29](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L29) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[address](VotingVaultContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[cache](VotingVaultContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[context](VotingVaultContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `VestingVault` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[contract](VotingVaultContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -___ - -### type - -• **type**: `string` = `TYPE` - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L22) - -___ - -### type - -▪ `Static` **type**: `string` = `TYPE` - -A field that can be used for more specific filtering when registering an -instance of this data source with the council context. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:21](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L21) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[cached](VotingVaultContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `VestingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"token()"`` \| ``"claim"`` \| ``"token"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"deposit"`` \| ``"queryVotePowerView"`` \| ``"queryVotePowerView(address,uint256)"`` \| ``"staleBlockLag"`` \| ``"staleBlockLag()"`` \| ``"withdraw"`` \| ``"delegate"`` \| ``"acceptGrant"`` \| ``"acceptGrant()"`` \| ``"addGrantAndDelegate"`` \| ``"addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"`` \| ``"changeUnvestedMultiplier"`` \| ``"changeUnvestedMultiplier(uint256)"`` \| ``"claim()"`` \| ``"delegate(address)"`` \| ``"deposit(uint256)"`` \| ``"getGrant"`` \| ``"getGrant(address)"`` \| ``"initialize"`` \| ``"initialize(address,address)"`` \| ``"manager"`` \| ``"manager()"`` \| ``"removeGrant"`` \| ``"removeGrant(address)"`` \| ``"setManager"`` \| ``"setManager(address)"`` \| ``"setTimelock"`` \| ``"setTimelock(address)"`` \| ``"timelock"`` \| ``"timelock()"`` \| ``"unvestedMultiplier"`` \| ``"unvestedMultiplier()"`` \| ``"updateVotingPower"`` \| ``"updateVotingPower(address)"`` \| ``"withdraw(uint256,address)"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `VestingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`VestingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[call](VotingVaultContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<{ `acceptGrant`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `acceptGrant()`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `addGrantAndDelegate`: (`_who`: `PromiseOrValue`<`string`\>, `_amount`: `PromiseOrValue`<`BigNumberish`\>, `_startTime`: `PromiseOrValue`<`BigNumberish`\>, `_expiration`: `PromiseOrValue`<`BigNumberish`\>, `_cliff`: `PromiseOrValue`<`BigNumberish`\>, `_delegatee`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)`: (`_who`: `PromiseOrValue`<`string`\>, `_amount`: `PromiseOrValue`<`BigNumberish`\>, `_startTime`: `PromiseOrValue`<`BigNumberish`\>, `_expiration`: `PromiseOrValue`<`BigNumberish`\>, `_cliff`: `PromiseOrValue`<`BigNumberish`\>, `_delegatee`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeUnvestedMultiplier`: (`_multiplier`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeUnvestedMultiplier(uint256)`: (`_multiplier`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim()`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `delegate`: (`_to`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `delegate(address)`: (`_to`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit(uint256)`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `getGrant`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`GrantStructOutput`\> ; `getGrant(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`GrantStructOutput`\> ; `initialize`: (`manager_`: `PromiseOrValue`<`string`\>, `timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `initialize(address,address)`: (`manager_`: `PromiseOrValue`<`string`\>, `timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `manager`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `manager()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `queryVotePower`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView(address,uint256)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `removeGrant`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `removeGrant(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setManager`: (`manager_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setManager(address)`: (`manager_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setTimelock`: (`timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setTimelock(address)`: (`timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `staleBlockLag`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `timelock`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `timelock()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `unvestedMultiplier`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `unvestedMultiplier()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `updateVotingPower`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `updateVotingPower(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `_recipient`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw(uint256,address)`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `_recipient`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> }[`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"token()"`` \| ``"claim"`` \| ``"token"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"deposit"`` \| ``"queryVotePowerView"`` \| ``"queryVotePowerView(address,uint256)"`` \| ``"staleBlockLag"`` \| ``"staleBlockLag()"`` \| ``"withdraw"`` \| ``"delegate"`` \| ``"acceptGrant"`` \| ``"acceptGrant()"`` \| ``"addGrantAndDelegate"`` \| ``"addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"`` \| ``"changeUnvestedMultiplier"`` \| ``"changeUnvestedMultiplier(uint256)"`` \| ``"claim()"`` \| ``"delegate(address)"`` \| ``"deposit(uint256)"`` \| ``"getGrant"`` \| ``"getGrant(address)"`` \| ``"initialize"`` \| ``"initialize(address,address)"`` \| ``"manager"`` \| ``"manager()"`` \| ``"removeGrant"`` \| ``"removeGrant(address)"`` \| ``"setManager"`` \| ``"setManager(address)"`` \| ``"setTimelock"`` \| ``"setTimelock(address)"`` \| ``"timelock"`` \| ``"timelock()"`` \| ``"unvestedMultiplier"`` \| ``"unvestedMultiplier()"`` \| ``"updateVotingPower"`` \| ``"updateVotingPower(address)"`` \| ``"withdraw(uint256,address)"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | { `acceptGrant`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `acceptGrant()`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `addGrantAndDelegate`: (`_who`: `PromiseOrValue`<`string`\>, `_amount`: `PromiseOrValue`<`BigNumberish`\>, `_startTime`: `PromiseOrValue`<`BigNumberish`\>, `_expiration`: `PromiseOrValue`<`BigNumberish`\>, `_cliff`: `PromiseOrValue`<`BigNumberish`\>, `_delegatee`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)`: (`_who`: `PromiseOrValue`<`string`\>, `_amount`: `PromiseOrValue`<`BigNumberish`\>, `_startTime`: `PromiseOrValue`<`BigNumberish`\>, `_expiration`: `PromiseOrValue`<`BigNumberish`\>, `_cliff`: `PromiseOrValue`<`BigNumberish`\>, `_delegatee`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeUnvestedMultiplier`: (`_multiplier`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeUnvestedMultiplier(uint256)`: (`_multiplier`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim()`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `delegate`: (`_to`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `delegate(address)`: (`_to`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit(uint256)`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `getGrant`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`GrantStructOutput`\> ; `getGrant(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`GrantStructOutput`\> ; `initialize`: (`manager_`: `PromiseOrValue`<`string`\>, `timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `initialize(address,address)`: (`manager_`: `PromiseOrValue`<`string`\>, `timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `manager`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `manager()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `queryVotePower`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView(address,uint256)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `removeGrant`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `removeGrant(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setManager`: (`manager_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setManager(address)`: (`manager_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setTimelock`: (`timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setTimelock(address)`: (`timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `staleBlockLag`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `timelock`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `timelock()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `unvestedMultiplier`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `unvestedMultiplier()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `updateVotingPower`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `updateVotingPower(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `_recipient`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw(uint256,address)`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `_recipient`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> }[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<{ `acceptGrant`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `acceptGrant()`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `addGrantAndDelegate`: (`_who`: `PromiseOrValue`<`string`\>, `_amount`: `PromiseOrValue`<`BigNumberish`\>, `_startTime`: `PromiseOrValue`<`BigNumberish`\>, `_expiration`: `PromiseOrValue`<`BigNumberish`\>, `_cliff`: `PromiseOrValue`<`BigNumberish`\>, `_delegatee`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)`: (`_who`: `PromiseOrValue`<`string`\>, `_amount`: `PromiseOrValue`<`BigNumberish`\>, `_startTime`: `PromiseOrValue`<`BigNumberish`\>, `_expiration`: `PromiseOrValue`<`BigNumberish`\>, `_cliff`: `PromiseOrValue`<`BigNumberish`\>, `_delegatee`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeUnvestedMultiplier`: (`_multiplier`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `changeUnvestedMultiplier(uint256)`: (`_multiplier`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `claim()`: (`overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `delegate`: (`_to`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `delegate(address)`: (`_to`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `deposit(uint256)`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `getGrant`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`GrantStructOutput`\> ; `getGrant(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`GrantStructOutput`\> ; `initialize`: (`manager_`: `PromiseOrValue`<`string`\>, `timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `initialize(address,address)`: (`manager_`: `PromiseOrValue`<`string`\>, `timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `manager`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `manager()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `queryVotePower`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePower(address,uint256,bytes)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `arg2`: `PromiseOrValue`<`BytesLike`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `queryVotePowerView(address,uint256)`: (`user`: `PromiseOrValue`<`string`\>, `blockNumber`: `PromiseOrValue`<`BigNumberish`\>, `overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `removeGrant`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `removeGrant(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setManager`: (`manager_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setManager(address)`: (`manager_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setTimelock`: (`timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `setTimelock(address)`: (`timelock_`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `staleBlockLag`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `staleBlockLag()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `timelock`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `timelock()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `token()`: (`overrides?`: `CallOverrides`) => `Promise`<`string`\> ; `unvestedMultiplier`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `unvestedMultiplier()`: (`overrides?`: `CallOverrides`) => `Promise`<`BigNumber`\> ; `updateVotingPower`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `updateVotingPower(address)`: (`_who`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `_recipient`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> ; `withdraw(uint256,address)`: (`_amount`: `PromiseOrValue`<`BigNumberish`\>, `_recipient`: `PromiseOrValue`<`string`\>, `overrides?`: `CallOverrides`) => `Promise`<`void`\> }[`K`]\> - -The value returned from the contract. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[callStatic](VotingVaultContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"fallback"`` \| ``"claim"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"deposit"`` \| ``"withdraw"`` \| ``"delegate"`` \| ``"acceptGrant"`` \| ``"acceptGrant()"`` \| ``"addGrantAndDelegate"`` \| ``"addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"`` \| ``"changeUnvestedMultiplier"`` \| ``"changeUnvestedMultiplier(uint256)"`` \| ``"claim()"`` \| ``"delegate(address)"`` \| ``"deposit(uint256)"`` \| ``"initialize"`` \| ``"initialize(address,address)"`` \| ``"removeGrant"`` \| ``"removeGrant(address)"`` \| ``"setManager"`` \| ``"setManager(address)"`` \| ``"setTimelock"`` \| ``"setTimelock(address)"`` \| ``"updateVotingPower"`` \| ``"updateVotingPower(address)"`` \| ``"withdraw(uint256,address)"`` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `VestingVault`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[callWithSigner](VotingVaultContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### changeDelegate - -▸ **changeDelegate**(`signer`, `delegate`, `options?`): `Promise`<`string`\> - -Change current delegate. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the address delegating. | -| `delegate` | `string` | The address to delegate to. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:245](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L245) - -___ - -### claim - -▸ **claim**(`signer`, `options?`): `Promise`<`string`\> - -Claim a grant and withdraw the tokens. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | The Signer of the wallet with a grant to claim. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:265](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L265) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[clearCached](VotingVaultContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[deleteCached](VotingVaultContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends ``"deployed"`` \| ``"_deployed"`` \| ``"fallback"`` \| ``"connect"`` \| ``"attach"`` \| ``"_checkRunningEvents"`` \| ``"_wrapEvent"`` \| ``"queryFilter"`` \| ``"on"`` \| ``"once"`` \| ``"emit"`` \| ``"listenerCount"`` \| ``"listeners"`` \| ``"removeAllListeners"`` \| ``"off"`` \| ``"removeListener"`` \| ``"token()"`` \| ``"claim"`` \| ``"token"`` \| ``"queryVotePower(address,uint256,bytes)"`` \| ``"queryVotePower"`` \| ``"deposit"`` \| ``"queryVotePowerView"`` \| ``"queryVotePowerView(address,uint256)"`` \| ``"staleBlockLag"`` \| ``"staleBlockLag()"`` \| ``"withdraw"`` \| ``"delegate"`` \| ``"acceptGrant"`` \| ``"acceptGrant()"`` \| ``"addGrantAndDelegate"`` \| ``"addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"`` \| ``"changeUnvestedMultiplier"`` \| ``"changeUnvestedMultiplier(uint256)"`` \| ``"claim()"`` \| ``"delegate(address)"`` \| ``"deposit(uint256)"`` \| ``"getGrant"`` \| ``"getGrant(address)"`` \| ``"initialize"`` \| ``"initialize(address,address)"`` \| ``"manager"`` \| ``"manager()"`` \| ``"removeGrant"`` \| ``"removeGrant(address)"`` \| ``"setManager"`` \| ``"setManager(address)"`` \| ``"setTimelock"`` \| ``"setTimelock(address)"`` \| ``"timelock"`` \| ``"timelock()"`` \| ``"unvestedMultiplier"`` \| ``"unvestedMultiplier()"`` \| ``"updateVotingPower"`` \| ``"updateVotingPower(address)"`` \| ``"withdraw(uint256,address)"`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `VestingVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[deleteCall](VotingVaultContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### getDelegate - -▸ **getDelegate**(`address`): `Promise`<`string`\> - -Get the address of the current delegate of a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:84](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L84) - -___ - -### getDelegatorsTo - -▸ **getDelegatorsTo**(`address`, `atBlock?`): `Promise`<`VoterAddressWithPower`[]\> - -Get the addresses of all voters delegated to a given address in this vault. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`VoterAddressWithPower`[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:92](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L92) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[getEvents](VotingVaultContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getGrant - -▸ **getGrant**(`address`): `Promise`<[`GrantData`](../interfaces/GrantData.md)\> - -Get the grant data for a given address. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`GrantData`](../interfaces/GrantData.md)\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:58](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L58) - -___ - -### getHistoricalVotingPower - -▸ **getHistoricalVotingPower**(`address`, `atBlock?`): `Promise`<`string`\> - -Get the voting power for a given address at a given block without -accounting for the stale block lag. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:135](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L135) - -___ - -### getStaleBlockLag - -▸ **getStaleBlockLag**(): `Promise`<`number`\> - -Get the number of blocks before the delegation history is forgotten. Voting -power from this vault can't be used on proposals that are older than the -stale block lag. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:126](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L126) - -___ - -### getToken - -▸ **getToken**(): `Promise`<`string`\> - -Get the address of the associated token for this vault. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:40](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L40) - -___ - -### getUnvestedMultiplier - -▸ **getUnvestedMultiplier**(): `Promise`<`number`\> - -Get this vault's unvested multiplier, a number that represents the voting -power of each unvested token as a percentage of a vested token. For example -if unvested tokens have 50% voting power compared to vested ones, this -value would be 50. - -#### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L50) - -___ - -### getVotingPower - -▸ **getVotingPower**(`this`, `address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this vault. Returns "0" if -the voting power is unable to be fetched. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `this` | [`ContractDataSource`](ContractDataSource.md)<`IVotingVault`\> | `undefined` | - | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -[VotingVaultContractDataSource](VotingVaultContractDataSource.md).[getVotingPower](VotingVaultContractDataSource.md#getvotingpower) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts:44](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts#L44) - -___ - -### getVotingPowerBreakdown - -▸ **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -Get the address of all participants that have voting power in this vault -along with their voting power, the amount of voting power being delegated -to them, and the amount of power delegated to them by each delegator. This -is a convenience method to fetch voting power and delegation data for a -large number of voters in a single call. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Get a breakdown for a specific address. | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:170](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L170) diff --git a/packages/council-sdk/docs/classes/Vote.md b/packages/council-sdk/docs/classes/Vote.md deleted file mode 100644 index 41a56557..00000000 --- a/packages/council-sdk/docs/classes/Vote.md +++ /dev/null @@ -1,117 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Vote - -# Class: Vote - -## Hierarchy - -- [`Model`](Model.md) - - ↳ **`Vote`** - -## Table of contents - -### Constructors - -- [constructor](Vote.md#constructor) - -### Properties - -- [ballot](Vote.md#ballot) -- [context](Vote.md#context) -- [name](Vote.md#name) -- [power](Vote.md#power) -- [proposal](Vote.md#proposal) -- [voter](Vote.md#voter) - -## Constructors - -### constructor - -• **new Vote**(`power`, `ballot`, `voter`, `proposal`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `power` | `string` | -| `ballot` | [`Ballot`](../modules.md#ballot) | -| `voter` | [`Voter`](Voter.md) | -| `proposal` | [`Proposal`](Proposal.md) | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`ModelOptions`](../interfaces/ModelOptions.md) | - -#### Overrides - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/Vote.ts:16](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Vote.ts#L16) - -## Properties - -### ballot - -• **ballot**: [`Ballot`](../modules.md#ballot) - -#### Defined in - -[packages/council-sdk/src/models/Vote.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Vote.ts#L12) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -___ - -### power - -• **power**: `string` - -#### Defined in - -[packages/council-sdk/src/models/Vote.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Vote.ts#L11) - -___ - -### proposal - -• **proposal**: [`Proposal`](Proposal.md) - -#### Defined in - -[packages/council-sdk/src/models/Vote.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Vote.ts#L13) - -___ - -### voter - -• **voter**: [`Voter`](Voter.md) - -#### Defined in - -[packages/council-sdk/src/models/Vote.ts:14](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Vote.ts#L14) diff --git a/packages/council-sdk/docs/classes/Voter.md b/packages/council-sdk/docs/classes/Voter.md deleted file mode 100644 index 8c2b4706..00000000 --- a/packages/council-sdk/docs/classes/Voter.md +++ /dev/null @@ -1,160 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Voter - -# Class: Voter - -A participant in Council - -## Hierarchy - -- [`Model`](Model.md) - - ↳ **`Voter`** - -## Table of contents - -### Constructors - -- [constructor](Voter.md#constructor) - -### Properties - -- [address](Voter.md#address) -- [context](Voter.md#context) -- [name](Voter.md#name) - -### Methods - -- [getParticipation](Voter.md#getparticipation) -- [getVotes](Voter.md#getvotes) -- [getVotingPower](Voter.md#getvotingpower) - -## Constructors - -### constructor - -• **new Voter**(`address`, `context`, `options?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`ModelOptions`](../interfaces/ModelOptions.md) | - -#### Overrides - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/Voter.ts:16](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Voter.ts#L16) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/models/Voter.ts:14](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Voter.ts#L14) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### getParticipation - -▸ **getParticipation**(`votingContractAddress`, `vaults`): `Promise`<[`number`, `number`]\> - -Get the number of proposals this Voter has voted on and the number of -proposals that they were able to vote on. If the numbers are the same, then -this Voter has voted on every proposal they were able to. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `votingContractAddress` | `string` | -| `vaults` | (`string` \| [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>)[] | - -#### Returns - -`Promise`<[`number`, `number`]\> - -#### Defined in - -[packages/council-sdk/src/models/Voter.ts:61](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Voter.ts#L61) - -___ - -### getVotes - -▸ **getVotes**(`votingContractAddress`): `Promise`<[`Vote`](Vote.md)[]\> - -Get the casted votes for this Voter in a given Voting Contract - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `votingContractAddress` | `string` | - -#### Returns - -`Promise`<[`Vote`](Vote.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/Voter.ts:47](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Voter.ts#L47) - -___ - -### getVotingPower - -▸ **getVotingPower**(`vaults`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the total voting power for this Voter from a given list of vaults. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `vaults` | (`string` \| [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>)[] | - | -| `atBlock?` | `number` | - | -| `extraData?` | `BytesLike`[] | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/Voter.ts:30](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Voter.ts#L30) diff --git a/packages/council-sdk/docs/classes/VotingContract.md b/packages/council-sdk/docs/classes/VotingContract.md deleted file mode 100644 index 2f20706f..00000000 --- a/packages/council-sdk/docs/classes/VotingContract.md +++ /dev/null @@ -1,348 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingContract - -# Class: VotingContract - -A model of a CoreVoting contract. - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `TVaults` | extends [`VotingVault`](VotingVault.md)[] = [`VotingVault`](VotingVault.md)[] | - -## Hierarchy - -- [`Model`](Model.md) - - ↳ **`VotingContract`** - - ↳↳ [`GSCVotingContract`](GSCVotingContract.md) - -## Table of contents - -### Constructors - -- [constructor](VotingContract.md#constructor) - -### Properties - -- [address](VotingContract.md#address) -- [context](VotingContract.md#context) -- [dataSource](VotingContract.md#datasource) -- [name](VotingContract.md#name) -- [vaults](VotingContract.md#vaults) - -### Methods - -- [createProposal](VotingContract.md#createproposal) -- [getParticipation](VotingContract.md#getparticipation) -- [getProposal](VotingContract.md#getproposal) -- [getProposals](VotingContract.md#getproposals) -- [getTotalVotingPower](VotingContract.md#gettotalvotingpower) -- [getVoters](VotingContract.md#getvoters) -- [getVotes](VotingContract.md#getvotes) -- [getVotingPower](VotingContract.md#getvotingpower) -- [getVotingPowerBreakdown](VotingContract.md#getvotingpowerbreakdown) - -## Constructors - -### constructor - -• **new VotingContract**<`TVaults`\>(`address`, `vaults`, `context`, `options?`) - -Create a new VotingContract model instance. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TVaults` | extends [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[] = [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>[] | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | The address of the deployed contract. | -| `vaults` | (`string` \| [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>)[] | The VotingVault instances or addresses of the vaults that are approved for this voting contract. | -| `context` | [`CouncilContext`](CouncilContext.md) | - | -| `options?` | [`VotingContractOptions`](../interfaces/VotingContractOptions.md) | - | - -#### Overrides - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:51](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L51) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:41](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L41) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: [`VotingContractDataSource`](../interfaces/VotingContractDataSource.md) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L42) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -___ - -### vaults - -• **vaults**: `TVaults` - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L43) - -## Methods - -### createProposal - -▸ **createProposal**(`signer`, `vaults`, `targets`, `calldatas`, `lastCall`, `ballot`, `options?`): `Promise`<`string`\> - -Create a new proposal. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `vaults` | (`string` \| [`VotingVault`](VotingVault.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\>)[] | The addresses of the approved vaults to draw voting power from. | -| `targets` | `string`[] | The targets (contract addresses) to call. | -| `calldatas` | `BytesLike`[] | The calldatas to call each target with. | -| `lastCall` | `number` | - | -| `ballot` | [`Ballot`](../modules.md#ballot) | - | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -#### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:106](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L106) - -___ - -### getParticipation - -▸ **getParticipation**(`address`): `Promise`<[`number`, `number`]\> - -Get the number of proposals an address has voted on and the number of -proposals that they were able to vote on. If the numbers are the same, then -the address has voted on every proposal they were able to. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`Promise`<[`number`, `number`]\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:307](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L307) - -___ - -### getProposal - -▸ **getProposal**(`id`): [`Proposal`](Proposal.md) - -Get a proposal by id. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -#### Returns - -[`Proposal`](Proposal.md) - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:78](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L78) - -___ - -### getProposals - -▸ **getProposals**(`fromBlock?`, `toBlock?`): `Promise`<[`Proposal`](Proposal.md)[]\> - -Get all proposals ever created. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all proposals created on or after this block number. | -| `toBlock?` | `number` | Include all proposals created on or before this block number. | - -#### Returns - -`Promise`<[`Proposal`](Proposal.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:87](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L87) - -___ - -### getTotalVotingPower - -▸ **getTotalVotingPower**(`atBlock?`): `Promise`<`string`\> - -Get the sum of voting power held by all voters in this voting contract. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:137](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L137) - -___ - -### getVoters - -▸ **getVoters**(): `Promise`<[`Voter`](Voter.md)[]\> - -Get all participants that have voting power in this voting contract. - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:165](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L165) - -___ - -### getVotes - -▸ **getVotes**(`address?`, `proposalId?`, `fromBlock?`, `toBlock?`): `Promise`<[`Vote`](Vote.md)[]\> - -Get all casted votes on proposals in this voting contract. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | - | -| `proposalId?` | `number` | - | -| `fromBlock?` | `number` | The starting block number for the range of blocks fetched. | -| `toBlock?` | `number` | The ending block number for the range of blocks fetched. | - -#### Returns - -`Promise`<[`Vote`](Vote.md)[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:278](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L278) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this voting contract. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | - | -| `atBlock?` | `number` | - | -| `extraData?` | `BytesLike`[] | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:149](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L149) - -___ - -### getVotingPowerBreakdown - -▸ **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -Get all participants that have voting power in this voting contract along -with their voting power, the amount of voting power being delegated to -them, and the amount of power delegated to them by each delegator. This is -a convenience method to fetch voting power and delegation data for a large -number of voters in a single call. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Get a breakdown for a specific address. | -| `fromBlock?` | `number` | Include all voters that had power on or after this block number. | -| `toBlock?` | `number` | Include all voters that had power on or before this block number. | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:185](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L185) diff --git a/packages/council-sdk/docs/classes/VotingVault.md b/packages/council-sdk/docs/classes/VotingVault.md deleted file mode 100644 index bdd3d386..00000000 --- a/packages/council-sdk/docs/classes/VotingVault.md +++ /dev/null @@ -1,232 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingVault - -# Class: VotingVault - -A vault which stores voting power by address - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `TDataSource` | extends [`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md) = [`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md) | - -## Hierarchy - -- `IVotingVault` - -- [`Model`](Model.md) - - ↳ **`VotingVault`** - - ↳↳ [`GSCVault`](GSCVault.md) - - ↳↳ [`LockingVault`](LockingVault.md) - - ↳↳ [`VestingVault`](VestingVault.md) - -## Implements - -- `IVotingVault` - -## Table of contents - -### Constructors - -- [constructor](VotingVault.md#constructor) - -### Properties - -- [address](VotingVault.md#address) -- [context](VotingVault.md#context) -- [dataSource](VotingVault.md#datasource) -- [name](VotingVault.md#name) - -### Methods - -- [getTotalVotingPower](VotingVault.md#gettotalvotingpower) -- [getVoters](VotingVault.md#getvoters) -- [getVotingPower](VotingVault.md#getvotingpower) -- [getVotingPowerBreakdown](VotingVault.md#getvotingpowerbreakdown) - -## Constructors - -### constructor - -• **new VotingVault**<`TDataSource`\>(`address`, `context`, `options?`) - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TDataSource` | extends [`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md) = [`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md) | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `context` | [`CouncilContext`](CouncilContext.md) | -| `options?` | [`VotingVaultOptions`](../interfaces/VotingVaultOptions.md)<[`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md)\> | - -#### Inherited from - -[Model](Model.md).[constructor](Model.md#constructor) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:59](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L59) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -IVotingVault.address - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:56](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L56) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Inherited from - -[Model](Model.md).[context](Model.md#context) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L19) - -___ - -### dataSource - -• **dataSource**: `TDataSource` - -#### Inherited from - -IVotingVault.dataSource - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L57) - -___ - -### name - -• **name**: `string` - -#### Inherited from - -[Model](Model.md).[name](Model.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L20) - -## Methods - -### getTotalVotingPower - -▸ `Optional` **getTotalVotingPower**(`atBlock?`): `Promise`<`string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `atBlock?` | `number` | - -#### Returns - -`Promise`<`string`\> - -#### Inherited from - -IVotingVault.getTotalVotingPower - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:38](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L38) - -___ - -### getVoters - -▸ `Optional` **getVoters**(`fromBlock?`, `toBlock?`): `Promise`<[`Voter`](Voter.md)[]\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `fromBlock?` | `number` | -| `toBlock?` | `number` | - -#### Returns - -`Promise`<[`Voter`](Voter.md)[]\> - -#### Inherited from - -IVotingVault.getVoters - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:32](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L32) - -___ - -### getVotingPower - -▸ **getVotingPower**(`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the usable voting power owned by a given address in this vault. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L83) - -___ - -### getVotingPowerBreakdown - -▸ `Optional` **getVotingPowerBreakdown**(`address?`, `fromBlock?`, `toBlock?`): `Promise`<`VoterPowerBreakdown`[]\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address?` | `string` | -| `fromBlock?` | `number` | -| `toBlock?` | `number` | - -#### Returns - -`Promise`<`VoterPowerBreakdown`[]\> - -#### Inherited from - -IVotingVault.getVotingPowerBreakdown - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:33](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L33) diff --git a/packages/council-sdk/docs/classes/VotingVaultContractDataSource.md b/packages/council-sdk/docs/classes/VotingVaultContractDataSource.md deleted file mode 100644 index 09cb68aa..00000000 --- a/packages/council-sdk/docs/classes/VotingVaultContractDataSource.md +++ /dev/null @@ -1,450 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingVaultContractDataSource - -# Class: VotingVaultContractDataSource - -A DataSource with methods for making cached calls to any voting vault -contract that implements `IVotingVault` or `GSCVault` from the Council -protocol. - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `TVault` | extends `IVotingVault` \| `GSCVault` = `IVotingVault` | - -## Hierarchy - -- [`ContractDataSource`](ContractDataSource.md)<`TVault`\> - - ↳ **`VotingVaultContractDataSource`** - - ↳↳ [`GSCVaultContractDataSource`](GSCVaultContractDataSource.md) - - ↳↳ [`LockingVaultContractDataSource`](LockingVaultContractDataSource.md) - - ↳↳ [`VestingVaultContractDataSource`](VestingVaultContractDataSource.md) - -## Implements - -- [`VotingVaultDataSource`](../interfaces/VotingVaultDataSource.md) - -## Table of contents - -### Constructors - -- [constructor](VotingVaultContractDataSource.md#constructor) - -### Properties - -- [address](VotingVaultContractDataSource.md#address) -- [cache](VotingVaultContractDataSource.md#cache) -- [context](VotingVaultContractDataSource.md#context) -- [contract](VotingVaultContractDataSource.md#contract) - -### Methods - -- [cached](VotingVaultContractDataSource.md#cached) -- [call](VotingVaultContractDataSource.md#call) -- [callStatic](VotingVaultContractDataSource.md#callstatic) -- [callWithSigner](VotingVaultContractDataSource.md#callwithsigner) -- [clearCached](VotingVaultContractDataSource.md#clearcached) -- [deleteCached](VotingVaultContractDataSource.md#deletecached) -- [deleteCall](VotingVaultContractDataSource.md#deletecall) -- [getEvents](VotingVaultContractDataSource.md#getevents) -- [getVotingPower](VotingVaultContractDataSource.md#getvotingpower) - -## Constructors - -### constructor - -• **new VotingVaultContractDataSource**<`TVault`\>(`vault`, `context`) - -Create a new `VotingVaultContractDataSource` instance. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TVault` | extends `IVotingVault` \| `GSCVault` = `IVotingVault` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `vault` | `string` \| `TVault` | An `IVotingVault` or `GSCVault` instance from the `@council/typechain` package or the address of the vault contract. | -| `context` | [`CouncilContext`](CouncilContext.md) | - | - -#### Overrides - -[ContractDataSource](ContractDataSource.md).[constructor](ContractDataSource.md#constructor) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts:29](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts#L29) - -## Properties - -### address - -• **address**: `string` - -#### Implementation of - -[VotingVaultDataSource](../interfaces/VotingVaultDataSource.md).[address](../interfaces/VotingVaultDataSource.md#address) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[address](ContractDataSource.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:22](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L22) - -___ - -### cache - -• **cache**: `LRUCache`<`string`, `any`\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cache](ContractDataSource.md#cache) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L13) - -___ - -### context - -• **context**: [`CouncilContext`](CouncilContext.md) - -#### Implementation of - -[VotingVaultDataSource](../interfaces/VotingVaultDataSource.md).[context](../interfaces/VotingVaultDataSource.md#context) - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[context](ContractDataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:12](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L12) - -___ - -### contract - -• **contract**: `TVault` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[contract](ContractDataSource.md#contract) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L23) - -## Methods - -### cached - -▸ **cached**<`T`, `TKey`\>(`cacheKey`, `callback`): `ReturnType`<`T`\> - -Cache the result of a callback using a given key. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `T` | extends (...`args`: `any`) => `any` | -| `TKey` | `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `TKey` | The key to use for the cache entry. The key will be reduced to a string. | -| `callback` | `T` | The function to be cached. The return type of the `cached` method will match the return type of this function. | - -#### Returns - -`ReturnType`<`T`\> - -The cached result of the callback function. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[cached](ContractDataSource.md#cached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:28](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L28) - -___ - -### call - -▸ **call**<`K`\>(`method`, `args`): `TVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -Call a method on the contract and cache the result with a key made from the -method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `TVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`TVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `ReturnType`<`any`[`any`]\> : `never` - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[call](ContractDataSource.md#call) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:43](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L43) - -___ - -### callStatic - -▸ **callStatic**<`K`\>(`method`, `args`): `ReturnType`<`TVault`[``"callStatic"``][`K`]\> - -Call a method on the contract using `callStatic` and cache the result with -a key made from the method name and arguments. - -**`See`** - -https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the method to call on the contract. | -| `args` | `TVault`[``"callStatic"``][`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | - -#### Returns - -`ReturnType`<`TVault`[``"callStatic"``][`K`]\> - -The value returned from the contract. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callStatic](ContractDataSource.md#callstatic) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:62](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L62) - -___ - -### callWithSigner - -▸ **callWithSigner**<`K`\>(`method`, `args`, `signer`, `options?`): `Promise`<`ContractTransaction`\> - -Call a write method on the contract with a signer and wait for the -transaction to resolve. If the transaction fails, this will throw an error. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `K` | The name of the write method to call on the contract. | -| `args` | `TVault`[`K`] extends [`TransactionFunction`](../modules.md#transactionfunction) ? `Parameters`<`any`[`any`]\> : `never` | The array of arguments to pass to the method. | -| `signer` | `Signer` | The Signer to connect to the contract with before calling. | -| `options?` | [`TransactionOptions`](../interfaces/TransactionOptions.md) | - | - -#### Returns - -`Promise`<`ContractTransaction`\> - -A promise that resolves to the `ContractTransaction`. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[callWithSigner](ContractDataSource.md#callwithsigner) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:83](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L83) - -___ - -### clearCached - -▸ **clearCached**(): `void` - -Delete all entries from the cache. - -#### Returns - -`void` - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[clearCached](ContractDataSource.md#clearcached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:42](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L42) - -___ - -### deleteCached - -▸ **deleteCached**(`cacheKey`): `boolean` - -Delete a single entry from the cache. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `any` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCached](ContractDataSource.md#deletecached) - -#### Defined in - -[packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts#L50) - -___ - -### deleteCall - -▸ **deleteCall**<`K`\>(`method`, `args`): `boolean` - -Delete the cache entry for a call to a given method with the given args. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends `string` \| `number` \| `symbol` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `method` | `K` | -| `args` | `TVault`[`K`] extends [`AnyFunction`](../modules.md#anyfunction) ? `Parameters`<`any`[`any`]\> : `never` | - -#### Returns - -`boolean` - -A boolean indicating whether the entry was successfully deleted. - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[deleteCall](ContractDataSource.md#deletecall) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:131](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L131) - -___ - -### getEvents - -▸ **getEvents**<`TEvent`\>(`filter`, `fromBlock?`, `toBlock?`): `Promise`<`TEvent`[]\> - -Get events from the contract and cache the results with a key made from the -filter and block range. If the request fails, the block range will be split -in 2 recursively until all events within the requested range are fetched. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEvent` | extends `TypedEvent`<`any`, `any`, `TEvent`\> | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `TypedEventFilter`<`TEvent`\> | The TypedEventFilter of the event to fetch. | -| `fromBlock?` | `number` | Include all events on or after this block. | -| `toBlock?` | `number` | Include all events on or before this block. | - -#### Returns - -`Promise`<`TEvent`[]\> - -#### Inherited from - -[ContractDataSource](ContractDataSource.md).[getEvents](ContractDataSource.md#getevents) - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:146](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L146) - -___ - -### getVotingPower - -▸ **getVotingPower**(`this`, `address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this vault. Returns "0" if -the voting power is unable to be fetched. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `this` | [`ContractDataSource`](ContractDataSource.md)<`IVotingVault`\> | `undefined` | - | -| `address` | `string` | `undefined` | - | -| `atBlock?` | `number` | `undefined` | - | -| `extraData` | `BytesLike` | `"0x00"` | ABI encoded optional extra data used by some vaults, such as merkle proofs. | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -VotingVaultDataSource.getVotingPower - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts:44](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts#L44) diff --git a/packages/council-sdk/docs/interfaces/Actions.md b/packages/council-sdk/docs/interfaces/Actions.md deleted file mode 100644 index f8a95469..00000000 --- a/packages/council-sdk/docs/interfaces/Actions.md +++ /dev/null @@ -1,32 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / Actions - -# Interface: Actions - -The actions a proposal will perform. - -## Table of contents - -### Properties - -- [calldatas](Actions.md#calldatas) -- [targets](Actions.md#targets) - -## Properties - -### calldatas - -• **calldatas**: `string`[] - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:169](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L169) - -___ - -### targets - -• **targets**: `string`[] - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:168](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L168) diff --git a/packages/council-sdk/docs/interfaces/AirdropContractDataSourceOptions.md b/packages/council-sdk/docs/interfaces/AirdropContractDataSourceOptions.md deleted file mode 100644 index a4182fa1..00000000 --- a/packages/council-sdk/docs/interfaces/AirdropContractDataSourceOptions.md +++ /dev/null @@ -1,22 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / AirdropContractDataSourceOptions - -# Interface: AirdropContractDataSourceOptions - -## Table of contents - -### Properties - -- [tokenDataSourceGetter](AirdropContractDataSourceOptions.md#tokendatasourcegetter) - -## Properties - -### tokenDataSourceGetter - -• `Optional` **tokenDataSourceGetter**: `TokenDataSourceGetter` - -A function to get a token data source which will be used by methods that -require data from the the airdrop token (e.g., decimals). - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts#L23) diff --git a/packages/council-sdk/docs/interfaces/AirdropDataSource.md b/packages/council-sdk/docs/interfaces/AirdropDataSource.md deleted file mode 100644 index f6f7f1f0..00000000 --- a/packages/council-sdk/docs/interfaces/AirdropDataSource.md +++ /dev/null @@ -1,259 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / AirdropDataSource - -# Interface: AirdropDataSource - -An interface for fetching data from any airdrop. - -## Hierarchy - -- [`DataSource`](DataSource.md) - - ↳ **`AirdropDataSource`** - -## Implemented by - -- [`AirdropContractDataSource`](../classes/AirdropContractDataSource.md) - -## Table of contents - -### Properties - -- [address](AirdropDataSource.md#address) -- [claim](AirdropDataSource.md#claim) -- [claimAndDelegate](AirdropDataSource.md#claimanddelegate) -- [context](AirdropDataSource.md#context) -- [getClaimedAmount](AirdropDataSource.md#getclaimedamount) -- [getExpiration](AirdropDataSource.md#getexpiration) -- [getLockingVault](AirdropDataSource.md#getlockingvault) -- [getMerkleRoot](AirdropDataSource.md#getmerkleroot) -- [reclaim](AirdropDataSource.md#reclaim) - -### Methods - -- [getToken](AirdropDataSource.md#gettoken) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:10](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L10) - -___ - -### claim - -• **claim**: (`signer`: `Signer`, `amount`: `string`, `totalGrant`: `string`, `merkleProof`: `string`[], `destination?`: `string`, `options?`: [`TransactionOptions`](TransactionOptions.md)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `amount`, `totalGrant`, `merkleProof`, `destination?`, `options?`): `Promise`<`string`\> - -Claims tokens from the airdrop and sends them to the user. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `amount` | `string` | Amount of tokens to claim. | -| `totalGrant` | `string` | The total amount of tokens the user was granted. | -| `merkleProof` | `string`[] | A set of hashes that can be used to reconstruct the path from a user (leaf) node to the merkle root, verifying that the user is part of the tree. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](TransactionOptions.md) | - | - -##### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:50](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L50) - -___ - -### claimAndDelegate - -• **claimAndDelegate**: (`signer`: `Signer`, `amount`: `string`, `delegate`: `string`, `totalGrant`: `string`, `merkleProof`: `string`[], `destination?`: `string`, `options?`: [`TransactionOptions`](TransactionOptions.md)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `amount`, `delegate`, `totalGrant`, `merkleProof`, `destination?`, `options?`): `Promise`<`string`\> - -Claims tokens from the airdrop, deposits it into the locking vault, and -delegates in a single transaction. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `amount` | `string` | Amount of tokens to claim. | -| `delegate` | `string` | The address the user will delegate to, WARNING - should not be zero. | -| `totalGrant` | `string` | The total amount of tokens the user was granted. | -| `merkleProof` | `string`[] | A set of hashes that can be used to reconstruct the path from a user (leaf) node to the merkle root, verifying that the user is part of the tree. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](TransactionOptions.md) | - | - -##### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:72](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L72) - -___ - -### context - -• **context**: [`CouncilContext`](../classes/CouncilContext.md) - -#### Inherited from - -[DataSource](DataSource.md).[context](DataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/DataSource.ts:8](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/DataSource.ts#L8) - -___ - -### getClaimedAmount - -• **getClaimedAmount**: (`address`: `string`) => `Promise`<`string`\> - -#### Type declaration - -▸ (`address`): `Promise`<`string`\> - -Get the amount that an address has already claimed. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:31](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L31) - -___ - -### getExpiration - -• **getExpiration**: () => `Promise`<`number`\> - -#### Type declaration - -▸ (): `Promise`<`number`\> - -Get a timestamp (in MS) of when the tokens can be reclaimed (removed by the -owner). - -##### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:16](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L16) - -___ - -### getLockingVault - -• **getLockingVault**: () => `Promise`<`string`\> - -#### Type declaration - -▸ (): `Promise`<`string`\> - -Get the address of the locking vault into which tokens will be deposited -when someone claims and delegates in a single tx. - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:37](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L37) - -___ - -### getMerkleRoot - -• **getMerkleRoot**: () => `Promise`<`string`\> - -#### Type declaration - -▸ (): `Promise`<`string`\> - -Get The merkle root with deposits encoded into it as hash [address, amount] - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:21](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L21) - -___ - -### reclaim - -• **reclaim**: (`signer`: `Signer`, `destination?`: `string`, `options?`: [`TransactionOptions`](TransactionOptions.md)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `destination?`, `options?`): `Promise`<`string`\> - -Remove funds from the airdrop after expiration - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `destination?` | `string` | The address which will be credited with funds. | -| `options?` | [`TransactionOptions`](TransactionOptions.md) | - | - -##### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:88](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L88) - -## Methods - -### getToken - -▸ **getToken**(): `Promise`<`string`\> - -Get the address of the token that will be paid out. - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts:26](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts#L26) diff --git a/packages/council-sdk/docs/interfaces/AirdropOptions.md b/packages/council-sdk/docs/interfaces/AirdropOptions.md deleted file mode 100644 index 1db138f9..00000000 --- a/packages/council-sdk/docs/interfaces/AirdropOptions.md +++ /dev/null @@ -1,47 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / AirdropOptions - -# Interface: AirdropOptions - -## Hierarchy - -- [`ModelOptions`](ModelOptions.md) - - ↳ **`AirdropOptions`** - -## Table of contents - -### Properties - -- [dataSource](AirdropOptions.md#datasource) -- [name](AirdropOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: [`AirdropDataSource`](AirdropDataSource.md) - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Defined in - -[packages/council-sdk/src/models/Airdrop.ts:19](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Airdrop.ts#L19) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[ModelOptions](ModelOptions.md).[name](ModelOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/CouncilContextOptions.md b/packages/council-sdk/docs/interfaces/CouncilContextOptions.md deleted file mode 100644 index 9ed79aca..00000000 --- a/packages/council-sdk/docs/interfaces/CouncilContextOptions.md +++ /dev/null @@ -1,19 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / CouncilContextOptions - -# Interface: CouncilContextOptions - -## Table of contents - -### Properties - -- [dataSources](CouncilContextOptions.md#datasources) - -## Properties - -### dataSources - -• `Optional` **dataSources**: [`DataSource`](DataSource.md)[] - -#### Defined in - -[packages/council-sdk/src/context/context.ts:8](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/context/context.ts#L8) diff --git a/packages/council-sdk/docs/interfaces/DataSource.md b/packages/council-sdk/docs/interfaces/DataSource.md deleted file mode 100644 index e5b30879..00000000 --- a/packages/council-sdk/docs/interfaces/DataSource.md +++ /dev/null @@ -1,37 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / DataSource - -# Interface: DataSource - -The base DataSource interface which simply requires a context instance. - -## Hierarchy - -- **`DataSource`** - - ↳ [`AirdropDataSource`](AirdropDataSource.md) - - ↳ [`TokenDataSource`](TokenDataSource.md) - - ↳ [`VotingContractDataSource`](VotingContractDataSource.md) - - ↳ [`VotingVaultDataSource`](VotingVaultDataSource.md) - -## Implemented by - -- [`CachedDataSource`](../classes/CachedDataSource.md) - -## Table of contents - -### Properties - -- [context](DataSource.md#context) - -## Properties - -### context - -• **context**: [`CouncilContext`](../classes/CouncilContext.md) - -#### Defined in - -[packages/council-sdk/src/datasources/base/DataSource.ts:8](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/DataSource.ts#L8) diff --git a/packages/council-sdk/docs/interfaces/GSCVaultOptions.md b/packages/council-sdk/docs/interfaces/GSCVaultOptions.md deleted file mode 100644 index 787543b8..00000000 --- a/packages/council-sdk/docs/interfaces/GSCVaultOptions.md +++ /dev/null @@ -1,51 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / GSCVaultOptions - -# Interface: GSCVaultOptions - -## Hierarchy - -- [`VotingVaultOptions`](VotingVaultOptions.md) - - ↳ **`GSCVaultOptions`** - -## Table of contents - -### Properties - -- [dataSource](GSCVaultOptions.md#datasource) -- [name](GSCVaultOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: [`GSCVaultContractDataSource`](../classes/GSCVaultContractDataSource.md) - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Overrides - -[VotingVaultOptions](VotingVaultOptions.md).[dataSource](VotingVaultOptions.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/GSCVault.ts:9](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/GSCVault.ts#L9) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[VotingVaultOptions](VotingVaultOptions.md).[name](VotingVaultOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/GetBlockDateOptions.md b/packages/council-sdk/docs/interfaces/GetBlockDateOptions.md deleted file mode 100644 index b503efc5..00000000 --- a/packages/council-sdk/docs/interfaces/GetBlockDateOptions.md +++ /dev/null @@ -1,43 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / GetBlockDateOptions - -# Interface: GetBlockDateOptions - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `TEstimate` | extends `boolean` = ``false`` | - -## Table of contents - -### Properties - -- [blockTime](GetBlockDateOptions.md#blocktime) -- [estimateFutureDates](GetBlockDateOptions.md#estimatefuturedates) - -## Properties - -### blockTime - -• `Optional` **blockTime**: `number` - -The number of seconds it takes to mine a block; used when estimating the -date of a block that hasn't been mined yet. Defaults to 12.07 - -#### Defined in - -[packages/council-sdk/src/utils/getBlockDate.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/getBlockDate.ts#L20) - -___ - -### estimateFutureDates - -• `Optional` **estimateFutureDates**: `TEstimate` - -If true, dates for blocks that haven't been mined yet will be estimated -based on the `blockTime` option. If false, blocks that haven't been mined -yet will return `null`. - -#### Defined in - -[packages/council-sdk/src/utils/getBlockDate.ts:15](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/getBlockDate.ts#L15) diff --git a/packages/council-sdk/docs/interfaces/GrantData.md b/packages/council-sdk/docs/interfaces/GrantData.md deleted file mode 100644 index b3b4279d..00000000 --- a/packages/council-sdk/docs/interfaces/GrantData.md +++ /dev/null @@ -1,116 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / GrantData - -# Interface: GrantData - -A grant as it's stored in the contract. - -## Table of contents - -### Properties - -- [allocation](GrantData.md#allocation) -- [delegate](GrantData.md#delegate) -- [expirationBlock](GrantData.md#expirationblock) -- [range](GrantData.md#range) -- [startBlock](GrantData.md#startblock) -- [unlockBlock](GrantData.md#unlockblock) -- [votingPower](GrantData.md#votingpower) -- [withdrawn](GrantData.md#withdrawn) - -## Properties - -### allocation - -• **allocation**: `string` - -The total amount of tokens granted. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:280](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L280) - -___ - -### delegate - -• **delegate**: `string` - -The address that can vote with this grant's voting power. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:311](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L311) - -___ - -### expirationBlock - -• **expirationBlock**: `number` - -The block number of when the full allocation is vested and any -remaining balance can be withdrawn. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:296](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L296) - -___ - -### range - -• **range**: [`string`, `string`] - -The specific range of enumerated tokens in the vault that belong to this -grant. This is set when a grant is accepted with the `acceptGrant` method. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:317](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L317) - -___ - -### startBlock - -• **startBlock**: `number` - -The block number of when the grant starts. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:290](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L290) - -___ - -### unlockBlock - -• **unlockBlock**: `number` - -The block number after which any withdrawable tokens can be withdrawn. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:301](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L301) - -___ - -### votingPower - -• **votingPower**: `string` - -The voting power provided by the grant. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:306](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L306) - -___ - -### withdrawn - -• **withdrawn**: `string` - -The amount of tokens that have been withdrawn. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts:285](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts#L285) diff --git a/packages/council-sdk/docs/interfaces/LockingVaultOptions.md b/packages/council-sdk/docs/interfaces/LockingVaultOptions.md deleted file mode 100644 index 99a173ee..00000000 --- a/packages/council-sdk/docs/interfaces/LockingVaultOptions.md +++ /dev/null @@ -1,51 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / LockingVaultOptions - -# Interface: LockingVaultOptions - -## Hierarchy - -- [`VotingVaultOptions`](VotingVaultOptions.md) - - ↳ **`LockingVaultOptions`** - -## Table of contents - -### Properties - -- [dataSource](LockingVaultOptions.md#datasource) -- [name](LockingVaultOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: [`LockingVaultContractDataSource`](../classes/LockingVaultContractDataSource.md) - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Overrides - -[VotingVaultOptions](VotingVaultOptions.md).[dataSource](VotingVaultOptions.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/LockingVault.ts:13](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/LockingVault.ts#L13) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[VotingVaultOptions](VotingVaultOptions.md).[name](VotingVaultOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/ModelOptions.md b/packages/council-sdk/docs/interfaces/ModelOptions.md deleted file mode 100644 index 7cb5cc28..00000000 --- a/packages/council-sdk/docs/interfaces/ModelOptions.md +++ /dev/null @@ -1,34 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / ModelOptions - -# Interface: ModelOptions - -## Hierarchy - -- **`ModelOptions`** - - ↳ [`AirdropOptions`](AirdropOptions.md) - - ↳ [`TokenOptions`](TokenOptions.md) - - ↳ [`VotingContractOptions`](VotingContractOptions.md) - - ↳ [`VotingVaultOptions`](VotingVaultOptions.md) - -## Table of contents - -### Properties - -- [name](ModelOptions.md#name) - -## Properties - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/ProposalData.md b/packages/council-sdk/docs/interfaces/ProposalData.md deleted file mode 100644 index 1e1f145f..00000000 --- a/packages/council-sdk/docs/interfaces/ProposalData.md +++ /dev/null @@ -1,109 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / ProposalData - -# Interface: ProposalData - -A proposal as it's stored in the contract. - -## Hierarchy - -- [`ProposalDataPreview`](ProposalDataPreview.md) - - ↳ **`ProposalData`** - -## Table of contents - -### Properties - -- [createdBlock](ProposalData.md#createdblock) -- [expirationBlock](ProposalData.md#expirationblock) -- [hash](ProposalData.md#hash) -- [id](ProposalData.md#id) -- [lastCallBlock](ProposalData.md#lastcallblock) -- [requiredQuorum](ProposalData.md#requiredquorum) -- [unlockBlock](ProposalData.md#unlockblock) - -## Properties - -### createdBlock - -• **createdBlock**: `number` - -#### Inherited from - -[ProposalDataPreview](ProposalDataPreview.md).[createdBlock](ProposalDataPreview.md#createdblock) - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:149](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L149) - -___ - -### expirationBlock - -• **expirationBlock**: `number` - -#### Inherited from - -[ProposalDataPreview](ProposalDataPreview.md).[expirationBlock](ProposalDataPreview.md#expirationblock) - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:151](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L151) - -___ - -### hash - -• **hash**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:159](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L159) - -___ - -### id - -• **id**: `number` - -#### Inherited from - -[ProposalDataPreview](ProposalDataPreview.md).[id](ProposalDataPreview.md#id) - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:148](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L148) - -___ - -### lastCallBlock - -• **lastCallBlock**: `number` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:161](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L161) - -___ - -### requiredQuorum - -• **requiredQuorum**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:160](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L160) - -___ - -### unlockBlock - -• **unlockBlock**: `number` - -#### Inherited from - -[ProposalDataPreview](ProposalDataPreview.md).[unlockBlock](ProposalDataPreview.md#unlockblock) - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:150](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L150) diff --git a/packages/council-sdk/docs/interfaces/ProposalDataPreview.md b/packages/council-sdk/docs/interfaces/ProposalDataPreview.md deleted file mode 100644 index 92cedd57..00000000 --- a/packages/council-sdk/docs/interfaces/ProposalDataPreview.md +++ /dev/null @@ -1,60 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / ProposalDataPreview - -# Interface: ProposalDataPreview - -A preview of `ProposalData`, emitted in logs. - -## Hierarchy - -- **`ProposalDataPreview`** - - ↳ [`ProposalData`](ProposalData.md) - -## Table of contents - -### Properties - -- [createdBlock](ProposalDataPreview.md#createdblock) -- [expirationBlock](ProposalDataPreview.md#expirationblock) -- [id](ProposalDataPreview.md#id) -- [unlockBlock](ProposalDataPreview.md#unlockblock) - -## Properties - -### createdBlock - -• **createdBlock**: `number` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:149](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L149) - -___ - -### expirationBlock - -• **expirationBlock**: `number` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:151](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L151) - -___ - -### id - -• **id**: `number` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:148](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L148) - -___ - -### unlockBlock - -• **unlockBlock**: `number` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:150](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L150) diff --git a/packages/council-sdk/docs/interfaces/TokenDataSource.md b/packages/council-sdk/docs/interfaces/TokenDataSource.md deleted file mode 100644 index 71fd30ab..00000000 --- a/packages/council-sdk/docs/interfaces/TokenDataSource.md +++ /dev/null @@ -1,199 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / TokenDataSource - -# Interface: TokenDataSource - -An interface for fetching data from any token. - -## Hierarchy - -- [`DataSource`](DataSource.md) - - ↳ **`TokenDataSource`** - -## Implemented by - -- [`ERC20ContractDataSource`](../classes/ERC20ContractDataSource.md) - -## Table of contents - -### Properties - -- [address](TokenDataSource.md#address) -- [approve](TokenDataSource.md#approve) -- [context](TokenDataSource.md#context) -- [getAllowance](TokenDataSource.md#getallowance) -- [getBalanceOf](TokenDataSource.md#getbalanceof) -- [getDecimals](TokenDataSource.md#getdecimals) -- [getName](TokenDataSource.md#getname) -- [getSymbol](TokenDataSource.md#getsymbol) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:10](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L10) - -___ - -### approve - -• **approve**: (`signer`: `Signer`, `spender`: `string`, `amount`: `BigNumber`, `options?`: [`TransactionOptions`](TransactionOptions.md)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `spender`, `amount`, `options?`): `Promise`<`string`\> - -Sets approval of token access up to a certain amount - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | Signer. | -| `spender` | `string` | Address to approve access to. | -| `amount` | `BigNumber` | Amount approved for, defaults to maximum. | -| `options?` | [`TransactionOptions`](TransactionOptions.md) | - | - -##### Returns - -`Promise`<`string`\> - -- The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:47](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L47) - -___ - -### context - -• **context**: [`CouncilContext`](../classes/CouncilContext.md) - -#### Inherited from - -[DataSource](DataSource.md).[context](DataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/DataSource.ts:8](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/DataSource.ts#L8) - -___ - -### getAllowance - -• **getAllowance**: (`owner`: `string`, `spender`: `string`) => `Promise`<`string`\> - -#### Type declaration - -▸ (`owner`, `spender`): `Promise`<`string`\> - -Get the spending allowance of a given spender for a given owner of this -token. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `owner` | `string` | -| `spender` | `string` | - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:33](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L33) - -___ - -### getBalanceOf - -• **getBalanceOf**: (`address`: `string`) => `Promise`<`string`\> - -#### Type declaration - -▸ (`address`): `Promise`<`string`\> - -Get the amount of tokens owned by a given address. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:38](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L38) - -___ - -### getDecimals - -• **getDecimals**: () => `Promise`<`number`\> - -#### Type declaration - -▸ (): `Promise`<`number`\> - -Get the number of decimals used to format a balance for display. For -example, if decimals equals 2, a balance of `505` tokens should be -displayed as `5.05` (`505 / 10 ** 2`). - -##### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:27](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L27) - -___ - -### getName - -• **getName**: () => `Promise`<`string`\> - -#### Type declaration - -▸ (): `Promise`<`string`\> - -Get the name of this token. - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L20) - -___ - -### getSymbol - -• **getSymbol**: () => `Promise`<`string`\> - -#### Type declaration - -▸ (): `Promise`<`string`\> - -Get the symbol of this token, usually a shorter version of the name. - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/token/TokenDataSource.ts:15](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/token/TokenDataSource.ts#L15) diff --git a/packages/council-sdk/docs/interfaces/TokenOptions.md b/packages/council-sdk/docs/interfaces/TokenOptions.md deleted file mode 100644 index 2312db1d..00000000 --- a/packages/council-sdk/docs/interfaces/TokenOptions.md +++ /dev/null @@ -1,47 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / TokenOptions - -# Interface: TokenOptions - -## Hierarchy - -- [`ModelOptions`](ModelOptions.md) - - ↳ **`TokenOptions`** - -## Table of contents - -### Properties - -- [dataSource](TokenOptions.md#datasource) -- [name](TokenOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: [`TokenDataSource`](TokenDataSource.md) - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Defined in - -[packages/council-sdk/src/models/Token.ts:18](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Token.ts#L18) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[ModelOptions](ModelOptions.md).[name](ModelOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/TransactionOptions.md b/packages/council-sdk/docs/interfaces/TransactionOptions.md deleted file mode 100644 index 89cfe634..00000000 --- a/packages/council-sdk/docs/interfaces/TransactionOptions.md +++ /dev/null @@ -1,89 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / TransactionOptions - -# Interface: TransactionOptions - -## Table of contents - -### Properties - -- [onCancelled](TransactionOptions.md#oncancelled) -- [onRepriced](TransactionOptions.md#onrepriced) -- [onSubmitted](TransactionOptions.md#onsubmitted) - -## Properties - -### onCancelled - -• `Optional` **onCancelled**: (`transaction`: `string`) => `void` - -#### Type declaration - -▸ (`transaction`): `void` - -A function called when the transaction is canceled. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `transaction` | `string` | The transaction hash. | - -##### Returns - -`void` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:194](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L194) - -___ - -### onRepriced - -• `Optional` **onRepriced**: (`transaction`: `string`) => `void` - -#### Type declaration - -▸ (`transaction`): `void` - -A function called when the transaction is repriced. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `transaction` | `string` | The transaction hash. | - -##### Returns - -`void` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:200](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L200) - -___ - -### onSubmitted - -• `Optional` **onSubmitted**: (`transaction`: `string`) => `void` - -#### Type declaration - -▸ (`transaction`): `void` - -A function called when the transaction is submitted to the blockchain. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `transaction` | `string` | The transaction hash. | - -##### Returns - -`void` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:188](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L188) diff --git a/packages/council-sdk/docs/interfaces/TransactionReplacedError.md b/packages/council-sdk/docs/interfaces/TransactionReplacedError.md deleted file mode 100644 index 9fe1b2db..00000000 --- a/packages/council-sdk/docs/interfaces/TransactionReplacedError.md +++ /dev/null @@ -1,114 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / TransactionReplacedError - -# Interface: TransactionReplacedError - -## Hierarchy - -- `Error` - - ↳ **`TransactionReplacedError`** - -## Table of contents - -### Properties - -- [cancelled](TransactionReplacedError.md#cancelled) -- [code](TransactionReplacedError.md#code) -- [message](TransactionReplacedError.md#message) -- [name](TransactionReplacedError.md#name) -- [reason](TransactionReplacedError.md#reason) -- [receipt](TransactionReplacedError.md#receipt) -- [replacement](TransactionReplacedError.md#replacement) -- [stack](TransactionReplacedError.md#stack) - -## Properties - -### cancelled - -• **cancelled**: `boolean` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:247](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L247) - -___ - -### code - -• **code**: ``"TRANSACTION_REPLACED"`` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:236](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L236) - -___ - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/typescript/lib/lib.es5.d.ts:1029 - -___ - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/typescript/lib/lib.es5.d.ts:1028 - -___ - -### reason - -• **reason**: ``"repriced"`` \| ``"cancelled"`` \| ``"replaced"`` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:244](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L244) - -___ - -### receipt - -• **receipt**: `ContractReceipt` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:251](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L251) - -___ - -### replacement - -• **replacement**: `ContractTransaction` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:249](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L249) - -___ - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/typescript/lib/lib.es5.d.ts:1030 diff --git a/packages/council-sdk/docs/interfaces/VestingVaultOptions.md b/packages/council-sdk/docs/interfaces/VestingVaultOptions.md deleted file mode 100644 index 99b34592..00000000 --- a/packages/council-sdk/docs/interfaces/VestingVaultOptions.md +++ /dev/null @@ -1,51 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VestingVaultOptions - -# Interface: VestingVaultOptions - -## Hierarchy - -- [`VotingVaultOptions`](VotingVaultOptions.md) - - ↳ **`VestingVaultOptions`** - -## Table of contents - -### Properties - -- [dataSource](VestingVaultOptions.md#datasource) -- [name](VestingVaultOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: [`VestingVaultContractDataSource`](../classes/VestingVaultContractDataSource.md) - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Overrides - -[VotingVaultOptions](VotingVaultOptions.md).[dataSource](VotingVaultOptions.md#datasource) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VestingVault.ts:15](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VestingVault.ts#L15) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[VotingVaultOptions](VotingVaultOptions.md).[name](VotingVaultOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/VoteData.md b/packages/council-sdk/docs/interfaces/VoteData.md deleted file mode 100644 index f32e3770..00000000 --- a/packages/council-sdk/docs/interfaces/VoteData.md +++ /dev/null @@ -1,54 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VoteData - -# Interface: VoteData - -The vote data emitted in logs. - -## Table of contents - -### Properties - -- [address](VoteData.md#address) -- [ballot](VoteData.md#ballot) -- [power](VoteData.md#power) -- [proposalId](VoteData.md#proposalid) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:183](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L183) - -___ - -### ballot - -• **ballot**: [`Ballot`](../modules.md#ballot) - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:186](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L186) - -___ - -### power - -• **power**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:185](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L185) - -___ - -### proposalId - -• **proposalId**: `number` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:184](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L184) diff --git a/packages/council-sdk/docs/interfaces/VoterAddressWithPower.md b/packages/council-sdk/docs/interfaces/VoterAddressWithPower.md deleted file mode 100644 index 55d8e21c..00000000 --- a/packages/council-sdk/docs/interfaces/VoterAddressWithPower.md +++ /dev/null @@ -1,36 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VoterAddressWithPower - -# Interface: VoterAddressWithPower - -## Hierarchy - -- **`VoterAddressWithPower`** - - ↳ [`VoterPowerBreakdown`](VoterPowerBreakdown.md) - -## Table of contents - -### Properties - -- [address](VoterAddressWithPower.md#address) -- [votingPower](VoterAddressWithPower.md#votingpower) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:292](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L292) - -___ - -### votingPower - -• **votingPower**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:293](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L293) diff --git a/packages/council-sdk/docs/interfaces/VoterPowerBreakdown.md b/packages/council-sdk/docs/interfaces/VoterPowerBreakdown.md deleted file mode 100644 index 88da4b17..00000000 --- a/packages/council-sdk/docs/interfaces/VoterPowerBreakdown.md +++ /dev/null @@ -1,72 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VoterPowerBreakdown - -# Interface: VoterPowerBreakdown - -## Hierarchy - -- [`VoterAddressWithPower`](VoterAddressWithPower.md) - - ↳ **`VoterPowerBreakdown`** - -## Table of contents - -### Properties - -- [address](VoterPowerBreakdown.md#address) -- [delegators](VoterPowerBreakdown.md#delegators) -- [votingPower](VoterPowerBreakdown.md#votingpower) -- [votingPowerFromDelegators](VoterPowerBreakdown.md#votingpowerfromdelegators) - -## Properties - -### address - -• **address**: `string` - -#### Inherited from - -[VoterAddressWithPower](VoterAddressWithPower.md).[address](VoterAddressWithPower.md#address) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:292](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L292) - -___ - -### delegators - -• **delegators**: [`VoterAddressWithPower`](VoterAddressWithPower.md)[] - -All wallets delegated to this voter with the power they're delegating. Does -not include self-delegation. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:309](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L309) - -___ - -### votingPower - -• **votingPower**: `string` - -#### Inherited from - -[VoterAddressWithPower](VoterAddressWithPower.md).[votingPower](VoterAddressWithPower.md#votingpower) - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:293](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L293) - -___ - -### votingPowerFromDelegators - -• **votingPowerFromDelegators**: `string` - -The total voting power from all wallets delegated to this voter. Does not -include self-delegation. - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts:304](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts#L304) diff --git a/packages/council-sdk/docs/interfaces/VoterWithPower.md b/packages/council-sdk/docs/interfaces/VoterWithPower.md deleted file mode 100644 index a9149dc2..00000000 --- a/packages/council-sdk/docs/interfaces/VoterWithPower.md +++ /dev/null @@ -1,30 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VoterWithPower - -# Interface: VoterWithPower - -## Table of contents - -### Properties - -- [voter](VoterWithPower.md#voter) -- [votingPower](VoterWithPower.md#votingpower) - -## Properties - -### voter - -• **voter**: [`Voter`](../classes/Voter.md) - -#### Defined in - -[packages/council-sdk/src/models/votingVault/types.ts:4](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/types.ts#L4) - -___ - -### votingPower - -• **votingPower**: `string` - -#### Defined in - -[packages/council-sdk/src/models/votingVault/types.ts:5](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/types.ts#L5) diff --git a/packages/council-sdk/docs/interfaces/VotingContractDataSource.md b/packages/council-sdk/docs/interfaces/VotingContractDataSource.md deleted file mode 100644 index 4b285b23..00000000 --- a/packages/council-sdk/docs/interfaces/VotingContractDataSource.md +++ /dev/null @@ -1,441 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingContractDataSource - -# Interface: VotingContractDataSource - -An interface for fetching data from any voting contract. - -## Hierarchy - -- [`DataSource`](DataSource.md) - - ↳ **`VotingContractDataSource`** - -## Implemented by - -- [`CoreVotingContractDataSource`](../classes/CoreVotingContractDataSource.md) - -## Table of contents - -### Properties - -- [address](VotingContractDataSource.md#address) -- [context](VotingContractDataSource.md#context) -- [createProposal](VotingContractDataSource.md#createproposal) -- [executeProposal](VotingContractDataSource.md#executeproposal) -- [getExecutedProposalIds](VotingContractDataSource.md#getexecutedproposalids) -- [getProposal](VotingContractDataSource.md#getproposal) -- [getProposalCount](VotingContractDataSource.md#getproposalcount) -- [getProposalCreatedBy](VotingContractDataSource.md#getproposalcreatedby) -- [getProposalCreatedTransactionHash](VotingContractDataSource.md#getproposalcreatedtransactionhash) -- [getProposalExecutedTransactionHash](VotingContractDataSource.md#getproposalexecutedtransactionhash) -- [getProposals](VotingContractDataSource.md#getproposals) -- [getResults](VotingContractDataSource.md#getresults) -- [getTargetsAndCalldatas](VotingContractDataSource.md#gettargetsandcalldatas) -- [getVote](VotingContractDataSource.md#getvote) -- [getVotes](VotingContractDataSource.md#getvotes) -- [vote](VotingContractDataSource.md#vote) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:10](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L10) - -___ - -### context - -• **context**: [`CouncilContext`](../classes/CouncilContext.md) - -#### Inherited from - -[DataSource](DataSource.md).[context](DataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/DataSource.ts:8](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/DataSource.ts#L8) - -___ - -### createProposal - -• **createProposal**: (`signer`: `Signer`, `vaults`: `string`[], `targets`: `string`[], `calldatas`: `BytesLike`[], `lastCall`: `number`, `ballot`: [`Ballot`](../modules.md#ballot), `options?`: [`TransactionOptions`](TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] }) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `vaults`, `targets`, `calldatas`, `lastCall`, `ballot`, `options?`): `Promise`<`string`\> - -Create a new proposal. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `vaults` | `string`[] | The addresses of the approved vaults to draw voting power from. | -| `targets` | `string`[] | The targets (contract addresses) to call. | -| `calldatas` | `BytesLike`[] | The calldatas to call each target with. | -| `lastCall` | `number` | - | -| `ballot` | [`Ballot`](../modules.md#ballot) | - | -| `options?` | [`TransactionOptions`](TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -##### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:93](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L93) - -___ - -### executeProposal - -• **executeProposal**: (`signer`: `Signer`, `id`: `number`, `options?`: [`TransactionOptions`](TransactionOptions.md)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `id`, `options?`): `Promise`<`string`\> - -Execute a proposal. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance. | -| `id` | `number` | - | -| `options?` | [`TransactionOptions`](TransactionOptions.md) | - | - -##### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:114](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L114) - -___ - -### getExecutedProposalIds - -• **getExecutedProposalIds**: (`fromBlock?`: `number`, `toBlock?`: `number`) => `Promise`<`number`[]\> - -#### Type declaration - -▸ (`fromBlock?`, `toBlock?`): `Promise`<`number`[]\> - -Get the id of all executed proposals. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all proposals executed on or after this block number. | -| `toBlock?` | `number` | Include all proposals executed on or before this block number. | - -##### Returns - -`Promise`<`number`[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:47](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L47) - -___ - -### getProposal - -• **getProposal**: (`id`: `number`) => `Promise`<``null`` \| [`ProposalData`](ProposalData.md)\> - -#### Type declaration - -▸ (`id`): `Promise`<``null`` \| [`ProposalData`](ProposalData.md)\> - -Get a proposal's `ProposalData` by `id` if it exists. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -##### Returns - -`Promise`<``null`` \| [`ProposalData`](ProposalData.md)\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:23](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L23) - -___ - -### getProposalCount - -• **getProposalCount**: () => `Promise`<`number`\> - -#### Type declaration - -▸ (): `Promise`<`number`\> - -Get the total number of proposals created in this voting contract - -##### Returns - -`Promise`<`number`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:15](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L15) - -___ - -### getProposalCreatedBy - -• **getProposalCreatedBy**: (`id`: `number`) => `Promise`<``null`` \| `string`\> - -#### Type declaration - -▸ (`id`): `Promise`<``null`` \| `string`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -##### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:17](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L17) - -___ - -### getProposalCreatedTransactionHash - -• **getProposalCreatedTransactionHash**: (`id`: `number`) => `Promise`<``null`` \| `string`\> - -#### Type declaration - -▸ (`id`): `Promise`<``null`` \| `string`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `number` | - -##### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:18](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L18) - -___ - -### getProposalExecutedTransactionHash - -• **getProposalExecutedTransactionHash**: (`id`: `number`) => `Promise`<``null`` \| `string`\> - -#### Type declaration - -▸ (`id`): `Promise`<``null`` \| `string`\> - -Get the hash of the transaction that executed the proposal, or null if -the Proposal wasn't executed. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `id` | `number` | The proposal id. | - -##### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:57](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L57) - -___ - -### getProposals - -• **getProposals**: (`fromBlock?`: `number`, `toBlock?`: `number`) => `Promise`<[`ProposalDataPreview`](ProposalDataPreview.md)[]\> - -#### Type declaration - -▸ (`fromBlock?`, `toBlock?`): `Promise`<[`ProposalDataPreview`](ProposalDataPreview.md)[]\> - -Get the `ProposalDataPreview` of all proposals ever created. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `fromBlock?` | `number` | Include all proposals created on or after this block number. | -| `toBlock?` | `number` | Include all proposals created on or before this block number. | - -##### Returns - -`Promise`<[`ProposalDataPreview`](ProposalDataPreview.md)[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:30](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L30) - -___ - -### getResults - -• **getResults**: (`proposalId`: `number`) => `Promise`<[`VoteResults`](../modules.md#voteresults)\> - -#### Type declaration - -▸ (`proposalId`): `Promise`<[`VoteResults`](../modules.md#voteresults)\> - -Get the total voting power of all votes on this proposal by their ballot. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `proposalId` | `number` | - -##### Returns - -`Promise`<[`VoteResults`](../modules.md#voteresults)\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:80](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L80) - -___ - -### getTargetsAndCalldatas - -• **getTargetsAndCalldatas**: (`proposalId`: `number`) => `Promise`<``null`` \| [`Actions`](Actions.md)\> - -#### Type declaration - -▸ (`proposalId`): `Promise`<``null`` \| [`Actions`](Actions.md)\> - -Get the array of addresses that will be called (targets) and the data -they'll be called with (calldatas) by this proposal. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `proposalId` | `number` | - -##### Returns - -`Promise`<``null`` \| [`Actions`](Actions.md)\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:39](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L39) - -___ - -### getVote - -• **getVote**: (`address`: `string`, `proposalId`: `number`) => `Promise`<``null`` \| [`VoteData`](VoteData.md)\> - -#### Type declaration - -▸ (`address`, `proposalId`): `Promise`<``null`` \| [`VoteData`](VoteData.md)\> - -Get a casted vote for a given address on -a given proposal id. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `proposalId` | `number` | - -##### Returns - -`Promise`<``null`` \| [`VoteData`](VoteData.md)\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:63](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L63) - -___ - -### getVotes - -• **getVotes**: (`address?`: `string`, `proposalId?`: `number`, `fromBlock?`: `number`, `toBlock?`: `number`) => `Promise`<[`VoteData`](VoteData.md)[]\> - -#### Type declaration - -▸ (`address?`, `proposalId?`, `fromBlock?`, `toBlock?`): `Promise`<[`VoteData`](VoteData.md)[]\> - -Get all casted votes on this proposal - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | - | -| `proposalId?` | `number` | - | -| `fromBlock?` | `number` | Include all votes casted on or after this block number. | -| `toBlock?` | `number` | Include all votes casted on or before this block number. | - -##### Returns - -`Promise`<[`VoteData`](VoteData.md)[]\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:70](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L70) - -___ - -### vote - -• **vote**: (`signer`: `Signer`, `vaults`: `string`[], `proposalId`: `number`, `ballot`: [`Ballot`](../modules.md#ballot), `options?`: [`TransactionOptions`](TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] }) => `Promise`<`string`\> - -#### Type declaration - -▸ (`signer`, `vaults`, `proposalId`, `ballot`, `options?`): `Promise`<`string`\> - -Vote on this proposal. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signer` | `Signer` | An ethers Signer instance for the voter. | -| `vaults` | `string`[] | The addresses of the approved vaults to draw voting power from. | -| `proposalId` | `number` | The id of the proposal to vote on. | -| `ballot` | [`Ballot`](../modules.md#ballot) | The ballot to cast. | -| `options?` | [`TransactionOptions`](TransactionOptions.md) & { `extraVaultData?`: `BytesLike`[] } | - | - -##### Returns - -`Promise`<`string`\> - -The transaction hash. - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:129](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L129) diff --git a/packages/council-sdk/docs/interfaces/VotingContractOptions.md b/packages/council-sdk/docs/interfaces/VotingContractOptions.md deleted file mode 100644 index dd80d1cd..00000000 --- a/packages/council-sdk/docs/interfaces/VotingContractOptions.md +++ /dev/null @@ -1,47 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingContractOptions - -# Interface: VotingContractOptions - -## Hierarchy - -- [`ModelOptions`](ModelOptions.md) - - ↳ **`VotingContractOptions`** - -## Table of contents - -### Properties - -- [dataSource](VotingContractOptions.md#datasource) -- [name](VotingContractOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: [`VotingContractDataSource`](VotingContractDataSource.md) - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Defined in - -[packages/council-sdk/src/models/votingContract/VotingContract.ts:31](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingContract/VotingContract.ts#L31) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[ModelOptions](ModelOptions.md).[name](ModelOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/interfaces/VotingVaultDataSource.md b/packages/council-sdk/docs/interfaces/VotingVaultDataSource.md deleted file mode 100644 index 805ce385..00000000 --- a/packages/council-sdk/docs/interfaces/VotingVaultDataSource.md +++ /dev/null @@ -1,75 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingVaultDataSource - -# Interface: VotingVaultDataSource - -An interface for fetching data from any voting vault. - -## Hierarchy - -- [`DataSource`](DataSource.md) - - ↳ **`VotingVaultDataSource`** - -## Implemented by - -- [`VotingVaultContractDataSource`](../classes/VotingVaultContractDataSource.md) - -## Table of contents - -### Properties - -- [address](VotingVaultDataSource.md#address) -- [context](VotingVaultDataSource.md#context) -- [getVotingPower](VotingVaultDataSource.md#getvotingpower) - -## Properties - -### address - -• **address**: `string` - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts:9](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts#L9) - -___ - -### context - -• **context**: [`CouncilContext`](../classes/CouncilContext.md) - -#### Inherited from - -[DataSource](DataSource.md).[context](DataSource.md#context) - -#### Defined in - -[packages/council-sdk/src/datasources/base/DataSource.ts:8](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/DataSource.ts#L8) - -___ - -### getVotingPower - -• **getVotingPower**: (`address`: `string`, `atBlock?`: `number`, `extraData?`: `BytesLike`) => `Promise`<`string`\> - -#### Type declaration - -▸ (`address`, `atBlock?`, `extraData?`): `Promise`<`string`\> - -Get the voting power owned by a given address in this vault. - -##### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | - | -| `atBlock?` | `number` | - | -| `extraData?` | `BytesLike` | Abi encoded optional extra data used by some vaults, such as merkle proofs | - -##### Returns - -`Promise`<`string`\> - -#### Defined in - -[packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts:16](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts#L16) diff --git a/packages/council-sdk/docs/interfaces/VotingVaultOptions.md b/packages/council-sdk/docs/interfaces/VotingVaultOptions.md deleted file mode 100644 index 00cec15c..00000000 --- a/packages/council-sdk/docs/interfaces/VotingVaultOptions.md +++ /dev/null @@ -1,59 +0,0 @@ -[@council/sdk](../README.md) / [Exports](../modules.md) / VotingVaultOptions - -# Interface: VotingVaultOptions - -## Type parameters - -| Name | Type | -| :------ | :------ | -| `TDataSource` | extends [`VotingVaultDataSource`](VotingVaultDataSource.md) = [`VotingVaultDataSource`](VotingVaultDataSource.md) | - -## Hierarchy - -- [`ModelOptions`](ModelOptions.md) - - ↳ **`VotingVaultOptions`** - - ↳↳ [`GSCVaultOptions`](GSCVaultOptions.md) - - ↳↳ [`LockingVaultOptions`](LockingVaultOptions.md) - - ↳↳ [`VestingVaultOptions`](VestingVaultOptions.md) - -## Table of contents - -### Properties - -- [dataSource](VotingVaultOptions.md#datasource) -- [name](VotingVaultOptions.md#name) - -## Properties - -### dataSource - -• `Optional` **dataSource**: `TDataSource` - -A data source to use instead of registering one with the `context`. If you -pass in a data source, you take over the responsibility of registering it -with the `context` to make it available to other models and data sources. - -#### Defined in - -[packages/council-sdk/src/models/votingVault/VotingVault.ts:20](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/votingVault/VotingVault.ts#L20) - -___ - -### name - -• `Optional` **name**: `string` - -An arbitrary name for the instance. This is for convenience only (e.g., -display name, debugging) and has no affect on the model's behavior. - -#### Inherited from - -[ModelOptions](ModelOptions.md).[name](ModelOptions.md#name) - -#### Defined in - -[packages/council-sdk/src/models/Model.ts:11](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/models/Model.ts#L11) diff --git a/packages/council-sdk/docs/modules.md b/packages/council-sdk/docs/modules.md deleted file mode 100644 index 1e1a1a66..00000000 --- a/packages/council-sdk/docs/modules.md +++ /dev/null @@ -1,337 +0,0 @@ -[@council/sdk](README.md) / Exports - -# @council/sdk - -## Table of contents - -### Classes - -- [Airdrop](classes/Airdrop.md) -- [AirdropContractDataSource](classes/AirdropContractDataSource.md) -- [CachedDataSource](classes/CachedDataSource.md) -- [ContractDataSource](classes/ContractDataSource.md) -- [CoreVotingContractDataSource](classes/CoreVotingContractDataSource.md) -- [CouncilContext](classes/CouncilContext.md) -- [ERC20ContractDataSource](classes/ERC20ContractDataSource.md) -- [GSCVault](classes/GSCVault.md) -- [GSCVaultContractDataSource](classes/GSCVaultContractDataSource.md) -- [GSCVotingContract](classes/GSCVotingContract.md) -- [HTTPDataSource](classes/HTTPDataSource.md) -- [LockingVault](classes/LockingVault.md) -- [LockingVaultContractDataSource](classes/LockingVaultContractDataSource.md) -- [Model](classes/Model.md) -- [Proposal](classes/Proposal.md) -- [Token](classes/Token.md) -- [VestingVault](classes/VestingVault.md) -- [VestingVaultContractDataSource](classes/VestingVaultContractDataSource.md) -- [Vote](classes/Vote.md) -- [Voter](classes/Voter.md) -- [VotingContract](classes/VotingContract.md) -- [VotingVault](classes/VotingVault.md) -- [VotingVaultContractDataSource](classes/VotingVaultContractDataSource.md) - -### Interfaces - -- [Actions](interfaces/Actions.md) -- [AirdropContractDataSourceOptions](interfaces/AirdropContractDataSourceOptions.md) -- [AirdropDataSource](interfaces/AirdropDataSource.md) -- [AirdropOptions](interfaces/AirdropOptions.md) -- [CouncilContextOptions](interfaces/CouncilContextOptions.md) -- [DataSource](interfaces/DataSource.md) -- [GSCVaultOptions](interfaces/GSCVaultOptions.md) -- [GetBlockDateOptions](interfaces/GetBlockDateOptions.md) -- [GrantData](interfaces/GrantData.md) -- [LockingVaultOptions](interfaces/LockingVaultOptions.md) -- [ModelOptions](interfaces/ModelOptions.md) -- [ProposalData](interfaces/ProposalData.md) -- [ProposalDataPreview](interfaces/ProposalDataPreview.md) -- [TokenDataSource](interfaces/TokenDataSource.md) -- [TokenOptions](interfaces/TokenOptions.md) -- [TransactionOptions](interfaces/TransactionOptions.md) -- [TransactionReplacedError](interfaces/TransactionReplacedError.md) -- [VestingVaultOptions](interfaces/VestingVaultOptions.md) -- [VoteData](interfaces/VoteData.md) -- [VoterAddressWithPower](interfaces/VoterAddressWithPower.md) -- [VoterPowerBreakdown](interfaces/VoterPowerBreakdown.md) -- [VoterWithPower](interfaces/VoterWithPower.md) -- [VotingContractDataSource](interfaces/VotingContractDataSource.md) -- [VotingContractOptions](interfaces/VotingContractOptions.md) -- [VotingVaultDataSource](interfaces/VotingVaultDataSource.md) -- [VotingVaultOptions](interfaces/VotingVaultOptions.md) - -### Type Aliases - -- [AnyFunction](modules.md#anyfunction) -- [Ballot](modules.md#ballot) -- [FunctionKeys](modules.md#functionkeys) -- [GetAndSetOptions](modules.md#getandsetoptions) -- [TransactionFunction](modules.md#transactionfunction) -- [TransactionKeys](modules.md#transactionkeys) -- [VoteResults](modules.md#voteresults) - -### Functions - -- [cached](modules.md#cached) -- [cachedKey](modules.md#cachedkey) -- [getBlockDate](modules.md#getblockdate) -- [getVaultsWithPower](modules.md#getvaultswithpower) -- [sumStrings](modules.md#sumstrings) - -## Data Sources - -### Ballot - -Ƭ **Ballot**: ``"yes"`` \| ``"no"`` \| ``"maybe"`` - -A valid ballot option. - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:176](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L176) - -___ - -### FunctionKeys - -Ƭ **FunctionKeys**<`T`\>: `Exclude`<{ [K in keyof T]: T[K] extends AnyFunction ? K : undefined }[keyof `T`], `undefined`\> - -Get a union of all keys/properties on T that are functions. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:209](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L209) - -___ - -### TransactionKeys - -Ƭ **TransactionKeys**<`T`\>: `Exclude`<{ [K in keyof T]: T[K] extends TransactionFunction ? K : undefined }[keyof `T`], `undefined`\> - -Get a union of all keys/properties on T that are functions and return a -`ContractTransaction`. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:225](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L225) - -___ - -### VoteResults - -Ƭ **VoteResults**: `Record`<[`Ballot`](modules.md#ballot), `string`\> - -The amount of voting power casted by ballot. - -#### Defined in - -[packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts:193](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts#L193) - -## Utils - -### cached - -▸ **cached**<`TCallback`\>(`options`): `ReturnType`<`TCallback`\> - -A utility for wrapping a callback with caching logic. - -**`See`** - -https://github.com/isaacs/node-lru-cache - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TCallback` | extends (...`args`: `any`[]) => `any` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `options` | `Object` | | -| `options.cache?` | `LRUCache`<`string`, `any`\> | An optional `lru-cache` instance to use for the callback's result. A new instance with `max: 500` is created by default. | -| `options.cacheKey` | `any` | The value to stringify and use to identify the cached result. | -| `options.callback` | `TCallback` | A function with a return value that will be cached and reused based on the cache's options. | -| `options.options?` | [`GetAndSetOptions`](modules.md#getandsetoptions) | LRUCache's `get` and `set` options merged. | - -#### Returns - -`ReturnType`<`TCallback`\> - -The return value of the callback function. - -#### Defined in - -[packages/council-sdk/src/utils/cached.ts:21](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/cached.ts#L21) - -___ - -### cachedKey - -▸ **cachedKey**(`cacheKey`): `string` - -Returns a key stringified in the same way as the `cached` utility. -This will not modify strings so -`cachedKey('foo') === cachedKey(cachedKey('foo'))`. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `cacheKey` | `any` | The value to stringify. | - -#### Returns - -`string` - -#### Defined in - -[packages/council-sdk/src/utils/cached.ts:51](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/cached.ts#L51) - -___ - -### getBlockDate - -▸ **getBlockDate**<`TEstimate`\>(`blockNumber`, `provider`, `options?`): `Promise`<`PossibleDate`<`TEstimate`\>\> - -Get the date of a given block by it's block number - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TEstimate` | extends `boolean` = ``false`` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `blockNumber` | `number` | -| `provider` | `Provider` | -| `options?` | [`GetBlockDateOptions`](interfaces/GetBlockDateOptions.md)<`TEstimate`\> | - -#### Returns - -`Promise`<`PossibleDate`<`TEstimate`\>\> - -#### Defined in - -[packages/council-sdk/src/utils/getBlockDate.ts:30](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/getBlockDate.ts#L30) - -___ - -### sumStrings - -▸ **sumStrings**(`numberStrings`): `string` - -Takes a group of numbers represented as strings and sums them together using -`ethers.BigNumber`. - -**`See`** - -https://docs.ethers.org/v5/api/utils/bignumber - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `numberStrings` | `string`[] | - -#### Returns - -`string` - -#### Defined in - -[packages/council-sdk/src/utils/sumStrings.ts:9](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/sumStrings.ts#L9) - -## Other - -### AnyFunction - -Ƭ **AnyFunction**: (...`args`: `any`) => `any` - -#### Type declaration - -▸ (`...args`): `any` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | `any` | - -##### Returns - -`any` - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:203](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L203) - -___ - -### GetAndSetOptions - -Ƭ **GetAndSetOptions**: `Parameters`<`LRUCache`<`string`, `any`\>[``"get"``]\>[``1``] & `Parameters`<`LRUCache`<`string`, `any`\>[``"set"``]\>[``2``] - -#### Defined in - -[packages/council-sdk/src/utils/cached.ts:4](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/cached.ts#L4) - -___ - -### TransactionFunction - -Ƭ **TransactionFunction**: (...`args`: `any`) => `ContractTransaction` \| `Promise`<`ContractTransaction`\> - -#### Type declaration - -▸ (`...args`): `ContractTransaction` \| `Promise`<`ContractTransaction`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | `any` | - -##### Returns - -`ContractTransaction` \| `Promise`<`ContractTransaction`\> - -#### Defined in - -[packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts:216](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts#L216) - -___ - -### getVaultsWithPower - -▸ **getVaultsWithPower**(`account`, `vaults`): `Promise`<[`VotingVault`](classes/VotingVault.md)[]\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `account` | `string` | -| `vaults` | [`VotingVault`](classes/VotingVault.md)<[`VotingVaultDataSource`](interfaces/VotingVaultDataSource.md)\>[] | - -#### Returns - -`Promise`<[`VotingVault`](classes/VotingVault.md)[]\> - -#### Defined in - -[packages/council-sdk/src/utils/getVaultsWithPower.ts:3](https://github.com/delvtech/council-monorepo/blob/c29492c/packages/council-sdk/src/utils/getVaultsWithPower.ts#L3) diff --git a/packages/council-sdk/jest.config.js b/packages/council-sdk/jest.config.js deleted file mode 100644 index 9c27895d..00000000 --- a/packages/council-sdk/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: "ts-jest/presets/default-esm", - // load environment variables from .env - setupFiles: ["dotenv/config"], - moduleNameMapper: { - // rewrite paths configured in tsconfig - "src/(.*)": "/src/$1", - }, - transform: { - // transform .ts files into es modules - "^.+\\.ts$": [ - "ts-jest", - { - // use a tsconfig with an es5 target - tsconfig: "tsconfig.test.json", - useESM: true, - }, - ], - }, - // get coverage for all of source except the example dir - collectCoverageFrom: ["./src/{!(example),}/**/*.ts"], -}; diff --git a/packages/council-sdk/package.json b/packages/council-sdk/package.json deleted file mode 100644 index 1044b431..00000000 --- a/packages/council-sdk/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@council/sdk", - "version": "0.0.1", - "license": "MIT", - "source": "src/index.ts", - "main": "dist/main.js", - "types": "dist/types.d.ts", - "files": [ - "dist" - ], - "alias": { - "src": "./src" - }, - "scripts": { - "watch": "parcel watch", - "build": "parcel build", - "docs": "typedoc", - "watch:docs": "typedoc --watch", - "example": "ts-node -r dotenv/config -r tsconfig-paths/register src/example/index.ts", - "watch:example": "nodemon -r dotenv/config -r tsconfig-paths/register src/example/index.ts", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage" - }, - "dependencies": { - "@council/typechain": "*", - "fast-json-stable-stringify": "^2.1.0", - "lodash.uniqby": "^4.7.0", - "lru-cache": "^7.14.1" - }, - "devDependencies": { - "@council/contract-stub": "*", - "@council/eslint-config": "*", - "@council/prettier-config": "*", - "@council/tsconfig": "*", - "@jest/globals": "^29.4.3", - "@types/lodash.uniqby": "^4.7.7", - "@wagmi/connectors": "^0.3.0", - "dotenv": "^16.0.3", - "ethers": "^5.7.2", - "jest": "^29.4.3", - "nodemon": "^2.0.20", - "parcel": "^2.8.0", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-jest": "^29.0.5", - "ts-node": "^10.9.1", - "tsconfig-paths": "^4.1.0", - "typedoc": "^0.23.24", - "typedoc-plugin-markdown": "^3.14.0", - "typescript": "^4.7.4" - }, - "peerDependencies": { - "ethers": ">=5.6" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/council-sdk/src/context/context.test.ts b/packages/council-sdk/src/context/context.test.ts deleted file mode 100644 index 53a8aef1..00000000 --- a/packages/council-sdk/src/context/context.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { expect, test } from "@jest/globals"; -import { MockDataSource } from "src/datasources/mocks/MockDataSource"; -import { mockProvider } from "src/testing/mockProvider"; -import { CouncilContext } from "./context"; - -test("Gets data sources correctly", () => { - const context = new CouncilContext(mockProvider); - const dataSource = new MockDataSource(0, context); - context.registerDataSource({}, dataSource); - const fetchedDataSource = context.getDataSource({ - id: dataSource.id, - }); - - expect(fetchedDataSource).toEqual(dataSource); -}); - -test("Registers data sources correctly", () => { - const context = new CouncilContext(mockProvider); - expect(context.dataSources.length).toBe(0); - - const dataSource0 = new MockDataSource(0, context); - context.registerDataSource({ id: 0 }, dataSource0); - expect(context.dataSources.length).toBe(1); - - const dataSource1 = new MockDataSource(1, context); - context.registerDataSource({ id: dataSource0.id }, dataSource1); - expect(context.dataSources.length).toBe(1); - - const fetchedDataSource = context.getDataSource({ - id: dataSource0.id, - }); - - expect(fetchedDataSource).toEqual(dataSource0); -}); diff --git a/packages/council-sdk/src/context/context.ts b/packages/council-sdk/src/context/context.ts deleted file mode 100644 index 0158d44b..00000000 --- a/packages/council-sdk/src/context/context.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { providers } from "ethers"; -import { DataSource } from "src/datasources/base/DataSource"; - -/** - * @category Context - */ -export interface CouncilContextOptions { - dataSources?: DataSource[]; -} - -/** - * The Context stores common information used in model and data source methods - * including shared data sources and their cache. It also includes a couple - * utility methods for getting and registering new shared data sources. - * @category Context - */ -export class CouncilContext { - /** - * The [ethers Provider](https://docs.ethers.org/v5/api/providers/) instance - * being used by data sources to fetch data from the blockchain. - */ - provider: providers.Provider; - - /** - * A shared array of `DataSource` instances and their caches that will be - * reused by models. When a new model instance is created, it will add any - * missing data source instances it requires to this list. - */ - dataSources: DataSource[]; - - /** - * Create a new CouncilContext instance. - * @param provider - An [ethers Provider](https://docs.ethers.org/v5/api/providers/) - * instance. - */ - constructor(provider: providers.Provider, options?: CouncilContextOptions) { - this.provider = provider; - this.dataSources = options?.dataSources || []; - } - - /** - * Get a shared `DataSource` who's properties match a given filter object. - * @param filter - An object of `DataSource` keys and values to look for. - * @returns The first `DataSource` instance in the `dataSources` array that - * matches the `filter`, or `null` if no match is found. - */ - // TODO: How can we make this more efficient, yet still flexible - getDataSource(filter: Partial): T | null { - const dataSource = this.dataSources.find((dataSource) => { - let isMatch = true; - for (const [key, value] of Object.entries(filter)) { - if (dataSource[key as keyof DataSource] !== value) { - isMatch = false; - } - } - return isMatch; - }); - return (dataSource as T) ?? null; - } - - /** - * Add a new shared `DataSource` if one matching a given filter object - * doesn't already exist. - * @param filter - An object of `DataSource` keys and values to look for. - * @param dataSource - The `DataSource` to add if one matching the filter - * isn't found. - * @returns The matching `DataSource` if found, else the added `DataSource`. - */ - registerDataSource( - filter: Partial, - dataSource: T, - ): T { - const existing = this.getDataSource(filter); - if (existing) { - return existing; - } - this.dataSources.push(dataSource); - return dataSource; - } -} diff --git a/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts b/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts deleted file mode 100644 index b5a16b8d..00000000 --- a/packages/council-sdk/src/datasources/airdrop/AirdropContractDataSource.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { Airdrop, Airdrop__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { formatUnits, parseUnits } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { - ContractDataSource, - TransactionOptions, -} from "src/datasources/base/contract/ContractDataSource"; -import { ERC20ContractDataSource } from "src/datasources/token/ERC20ContractDataSource"; -import { TokenDataSource } from "src/datasources/token/TokenDataSource"; -import { AirdropDataSource } from "./AirdropDataSource"; - -type TokenDataSourceGetter = ( - address: string, - context: CouncilContext, -) => TokenDataSource; - -export interface AirdropContractDataSourceOptions { - /** - * A function to get a token data source which will be used by methods that - * require data from the the airdrop token (e.g., decimals). - */ - tokenDataSourceGetter?: TokenDataSourceGetter; -} - -export class AirdropContractDataSource - extends ContractDataSource - implements AirdropDataSource -{ - private tokenDataSourceGetter: TokenDataSourceGetter; - - constructor( - address: string, - context: CouncilContext, - options?: AirdropContractDataSourceOptions, - ) { - super(Airdrop__factory.connect(address, context.provider), context); - - this.tokenDataSourceGetter = - options?.tokenDataSourceGetter || defaultTokenDataSourceGetter; - } - - private async getTokenDecimals(): Promise { - const tokenAddress = await this.getToken(); - const tokenDataSource = this.tokenDataSourceGetter( - tokenAddress, - this.context, - ); - return tokenDataSource.getDecimals(); - } - - async getExpiration(): Promise { - const expiration = await this.call("expiration", []); - return expiration.toNumber(); - } - - getMerkleRoot(): Promise { - return this.call("rewardsRoot", []); - } - - getToken(): Promise { - return this.call("token", []); - } - - async getClaimedAmount(address: string): Promise { - const amount = await this.call("claimed", [address]); - const decimals = await this.getTokenDecimals(); - return formatUnits(amount, decimals); - } - - getLockingVault(): Promise { - return this.call("lockingVault", []); - } - - async claim( - signer: Signer, - amount: string, - totalGrant: string, - merkleProof: string[], - destination?: string, - options?: TransactionOptions, - ): Promise { - const address = await signer.getAddress(); - const decimals = await this.getTokenDecimals(); - - const transaction = await this.callWithSigner( - "claim", - [ - parseUnits(amount, decimals), - parseUnits(totalGrant, decimals), - merkleProof, - destination || address, - ], - signer, - options, - ); - this.deleteCall("claimed", [address]); - - return transaction.hash; - } - - async claimAndDelegate( - signer: Signer, - amount: string, - delegate: string, - totalGrant: string, - merklProof: string[], - destination?: string, - options?: TransactionOptions, - ): Promise { - const address = await signer.getAddress(); - const decimals = await this.getTokenDecimals(); - - const transaction = await this.callWithSigner( - "claimAndDelegate", - [ - parseUnits(amount, decimals), - delegate, - parseUnits(totalGrant, decimals), - merklProof, - destination || address, - ], - signer, - options, - ); - this.deleteCall("claimed", [address]); - - return transaction.hash; - } - - async reclaim( - signer: Signer, - destination?: string, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "reclaim", - [destination || (await signer.getAddress())], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } -} - -function defaultTokenDataSourceGetter( - address: string, - context: CouncilContext, -) { - return context.registerDataSource( - { address }, - new ERC20ContractDataSource(address, context), - ); -} diff --git a/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts b/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts deleted file mode 100644 index 2ce25a60..00000000 --- a/packages/council-sdk/src/datasources/airdrop/AirdropDataSource.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { Signer } from "ethers"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { DataSource } from "src/datasources/base/DataSource"; - -/** - * An interface for fetching data from any airdrop. - * @category Data Sources - */ -export interface AirdropDataSource extends DataSource { - address: string; - - /** - * Get a timestamp (in MS) of when the tokens can be reclaimed (removed by the - * owner). - */ - getExpiration: () => Promise; - - /** - * Get The merkle root with deposits encoded into it as hash [address, amount] - */ - getMerkleRoot: () => Promise; - - /** - * Get the address of the token that will be paid out. - */ - getToken(): Promise; - - /** - * Get the amount that an address has already claimed. - */ - getClaimedAmount: (address: string) => Promise; - - /** - * Get the address of the locking vault into which tokens will be deposited - * when someone claims and delegates in a single tx. - */ - getLockingVault: () => Promise; - - /** - * Claims tokens from the airdrop and sends them to the user. - * @param signer - Signer. - * @param amount - Amount of tokens to claim. - * @param totalGrant - The total amount of tokens the user was granted. - * @param merkleProof - A set of hashes that can be used to reconstruct the - * path from a user (leaf) node to the merkle root, verifying that the user is - * part of the tree. - * @param destination - The address which will be credited with funds. - * @return - The transaction hash. - */ - claim: ( - signer: Signer, - amount: string, - totalGrant: string, - merkleProof: string[], - destination?: string, - options?: TransactionOptions, - ) => Promise; - - /** - * Claims tokens from the airdrop, deposits it into the locking vault, and - * delegates in a single transaction. - * @param signer - Signer. - * @param amount - Amount of tokens to claim. - * @param delegate - The address the user will delegate to, WARNING - should not be zero. - * @param totalGrant - The total amount of tokens the user was granted. - * @param merkleProof - A set of hashes that can be used to reconstruct the - * path from a user (leaf) node to the merkle root, verifying that the user is - * part of the tree. - * @param destination - The address which will be credited with funds. - * @return - The transaction hash. - */ - claimAndDelegate: ( - signer: Signer, - amount: string, - delegate: string, - totalGrant: string, - merkleProof: string[], - destination?: string, - options?: TransactionOptions, - ) => Promise; - - /** - * Remove funds from the airdrop after expiration - * @param signer - Signer. - * @param destination - The address which will be credited with funds. - * @return - The transaction hash. - */ - reclaim: ( - signer: Signer, - destination?: string, - options?: TransactionOptions, - ) => Promise; -} diff --git a/packages/council-sdk/src/datasources/base/DataSource.ts b/packages/council-sdk/src/datasources/base/DataSource.ts deleted file mode 100644 index 4c0afc68..00000000 --- a/packages/council-sdk/src/datasources/base/DataSource.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CouncilContext } from "src/context/context"; - -/** - * The base DataSource interface which simply requires a context instance. - * @category Data Sources - */ -export interface DataSource { - context: CouncilContext; -} diff --git a/packages/council-sdk/src/datasources/base/cached/CachedDataSource.test.ts b/packages/council-sdk/src/datasources/base/cached/CachedDataSource.test.ts deleted file mode 100644 index 7c927404..00000000 --- a/packages/council-sdk/src/datasources/base/cached/CachedDataSource.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { expect, jest, test } from "@jest/globals"; -import { CouncilContext } from "src/context/context"; -import { mockProvider } from "src/testing/mockProvider"; -import { CachedDataSource } from "./CachedDataSource"; - -test("Caches values correctly", () => { - const { dataSource, key, callBack, returnValue } = setup(); - - const value = dataSource.cached(key, callBack); - const valueAgain = dataSource.cached(key, callBack); - - expect(callBack.mock.calls).toHaveLength(1); - - expect(value).toEqual(returnValue); - expect(valueAgain).toEqual(returnValue); - expect(valueAgain).toBe(value); -}); - -test("Deletes cache entries correctly", () => { - const { dataSource, key, callBack } = setup(); - - dataSource.cached(key, callBack); - dataSource.deleteCached(key); - dataSource.cached(key, callBack); - - expect(callBack.mock.calls).toHaveLength(2); -}); - -test("Clears cache correctly", () => { - const { dataSource, key, callBack } = setup(); - - const key2 = "key2"; - const returnValue2 = "foo2"; - const callBack2 = jest.fn(() => returnValue2); - - dataSource.cached(key, callBack); - dataSource.cached(key2, callBack2); - - dataSource.clearCached(); - - dataSource.cached(key, callBack); - dataSource.cached(key2, callBack2); - - expect(callBack.mock.calls).toHaveLength(2); - expect(callBack2.mock.calls).toHaveLength(2); -}); - -function setup() { - const context = new CouncilContext(mockProvider); - const dataSource = new CachedDataSource(context); - - const key = ["foo", 0, ["foo"], { foo: "baz" }]; - const returnValue = { foo: "foo" }; - const callBack = jest.fn(() => returnValue); - - return { - context, - dataSource, - key, - returnValue, - callBack, - }; -} diff --git a/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts b/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts deleted file mode 100644 index 52695ffa..00000000 --- a/packages/council-sdk/src/datasources/base/cached/CachedDataSource.ts +++ /dev/null @@ -1,53 +0,0 @@ -import LRUCache from "lru-cache"; -import { CouncilContext } from "src/context/context"; -import { DataSource } from "src/datasources/base/DataSource"; -import { cached, cachedKey } from "src/utils/cached"; - -/** - * A DataSource with methods for caching return values using an LRU cache. - * @see https://github.com/isaacs/node-lru-cache - * @category Data Sources - */ -export class CachedDataSource implements DataSource { - context: CouncilContext; - cache: LRUCache; - - constructor(context: CouncilContext, cache?: LRUCache) { - this.context = context; - this.cache = cache ?? new LRUCache({ max: 500 }); - } - - /** - * Cache the result of a callback using a given key. - * @param cacheKey - The key to use for the cache entry. The key will be reduced - * to a string. - * @param callback - The function to be cached. The return type of the `cached` - * method will match the return type of this function. - * @returns The cached result of the callback function. - */ - cached any, TKey = any>( - cacheKey: TKey, - callback: T, - ): ReturnType { - return cached({ - cacheKey, - cache: this.cache, - callback, - }); - } - - /** - * Delete all entries from the cache. - */ - clearCached(): void { - return this.cache.clear(); - } - - /** - * Delete a single entry from the cache. - * @returns A boolean indicating whether the entry was successfully deleted. - */ - deleteCached(cacheKey: string | any): boolean { - return this.cache.delete(cachedKey(cacheKey)); - } -} diff --git a/packages/council-sdk/src/datasources/base/contract/ContractDataSource.test.ts b/packages/council-sdk/src/datasources/base/contract/ContractDataSource.test.ts deleted file mode 100644 index 8a1b709a..00000000 --- a/packages/council-sdk/src/datasources/base/contract/ContractDataSource.test.ts +++ /dev/null @@ -1,88 +0,0 @@ -// TODO: Testing breaks when named imports are used for this package -import contractStub from "@council/contract-stub"; -import { MockERC20__factory } from "@council/typechain"; -import { expect, test } from "@jest/globals"; -import { BigNumber, ethers } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { mockEvent } from "src/testing/mockEvent"; -import { mockProvider } from "src/testing/mockProvider"; -import { mockSigner } from "src/testing/mockSigner"; -import { mockTransaction } from "src/testing/mockTransaction"; -import { ContractDataSource } from "./ContractDataSource"; - -test("Makes calls correctly", async () => { - const erc20Contract = setupMockERC20(); - erc20Contract.decimals.resolves(18); - - const context = new CouncilContext(mockProvider); - const dataSource = new ContractDataSource(erc20Contract, context); - const value = await dataSource.call("decimals", []); - - expect(value).toEqual(18); -}); - -test("Uses callStatic correctly", async () => { - const erc20Contract = setupMockERC20(); - erc20Contract.callStatic.decimals.resolves(18); - - const context = new CouncilContext(mockProvider); - const dataSource = new ContractDataSource(erc20Contract, context); - const value = await dataSource.callStatic("decimals", []); - - expect(value).toEqual(18); -}); - -test("Submits transactions correctly", async () => { - const erc20Contract = setupMockERC20(); - erc20Contract.approve.resolves(mockTransaction); - - const context = new CouncilContext(mockProvider); - const dataSource = new ContractDataSource(erc20Contract, context); - const signerAddress = await mockSigner.getAddress(); - - const value = await dataSource.callWithSigner( - "approve", - [signerAddress, 100], - mockSigner, - ); - - expect(value).toEqual(mockTransaction); -}); - -test("Deletes cached calls correctly", async () => { - const erc20Contract = setupMockERC20(); - erc20Contract.balanceOf.resolves(BigNumber.from(100)); - - const context = new CouncilContext(mockProvider); - const dataSource = new ContractDataSource(erc20Contract, context); - - await dataSource.call("balanceOf", ["0x0"]); - dataSource.deleteCall("balanceOf", ["0x1"]); - await dataSource.call("balanceOf", ["0x0"]); - - expect(erc20Contract.balanceOf.callCount).toBe(1); - - dataSource.deleteCall("balanceOf", ["0x0"]); - await dataSource.call("balanceOf", ["0x0"]); - - expect(erc20Contract.balanceOf.callCount).toBe(2); -}); - -test("Gets events correctly", async () => { - const erc20Contract = setupMockERC20(); - erc20Contract.queryFilter.resolves([mockEvent]); - - const context = new CouncilContext(mockProvider); - const dataSource = new ContractDataSource(erc20Contract, context); - - const filter = dataSource.contract.filters.Approval(); - const events = await dataSource.getEvents(filter, 0, 1); - - expect(events).toEqual([mockEvent]); -}); - -function setupMockERC20() { - return contractStub.stubContract( - MockERC20__factory.connect(ethers.constants.AddressZero, mockProvider), - ); -} diff --git a/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts b/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts deleted file mode 100644 index 887c22ec..00000000 --- a/packages/council-sdk/src/datasources/base/contract/ContractDataSource.ts +++ /dev/null @@ -1,261 +0,0 @@ -import { TypedEvent, TypedEventFilter } from "@council/typechain/dist/common"; -import { - Contract, - ContractReceipt, - ethers, - Signer, - type ContractTransaction, -} from "ethers"; -import { Logger } from "ethers/lib/utils"; -import LRUCache from "lru-cache"; -import { CouncilContext } from "src"; -import { CachedDataSource } from "src/datasources/base/cached/CachedDataSource"; - -/** - * A DataSource with methods for making cached calls to an ethers contract - * instance. - * @see https://docs.ethers.org/v5/api/contract/contract/ - * @category Data Sources - */ -// TODO: add a method for event queries -export class ContractDataSource extends CachedDataSource { - address: string; - contract: T; - - constructor( - contract: T, - context: CouncilContext, - cache?: LRUCache, - ) { - super(context, cache); - this.address = contract.address; - this.contract = contract; - } - - /** - * Call a method on the contract and cache the result with a key made from the - * method name and arguments. - * @param method - The name of the method to call on the contract. - * @param args - The array of arguments to pass to the method. - * @returns The value returned from the contract. - * @see https://docs.ethers.org/v5/api/contract/contract/#Contract-functionsCall - */ - call>( - method: K, - args: T[K] extends AnyFunction ? Parameters : never, - ): T[K] extends AnyFunction ? ReturnType : never { - return this.cached([method, ...args], () => { - const contract = this.contract as T; - const fn = contract[method] as unknown as AnyFunction; - return fn(...args); - }); - } - - /** - * Call a method on the contract using `callStatic` and cache the result with - * a key made from the method name and arguments. - * @param method - The name of the method to call on the contract. - * @param args - The array of arguments to pass to the method. - * @returns The value returned from the contract. - * @see https://docs.ethers.org/v5/api/contract/contract/#contract-callStatic - */ - callStatic>( - method: K, - args: T["callStatic"][K] extends AnyFunction - ? Parameters - : never, - ): ReturnType { - return this.cached([method, ...args], () => { - const contract = this.contract as T; - const fn = contract.callStatic[method as string] as AnyFunction; - return fn(...args); - }); - } - - /** - * Call a write method on the contract with a signer and wait for the - * transaction to resolve. If the transaction fails, this will throw an error. - * @param method - The name of the write method to call on the contract. - * @param args - The array of arguments to pass to the method. - * @param signer - The Signer to connect to the contract with before calling. - * @returns A promise that resolves to the `ContractTransaction`. - */ - async callWithSigner>( - method: K, - args: T[K] extends TransactionFunction ? Parameters : never, - signer: Signer, - options?: TransactionOptions, - ): Promise { - const contract = this.contract.connect(signer) as T; - const fn = contract[method] as unknown as TransactionFunction; - const transaction = await fn(...args); - options?.onSubmitted?.(transaction.hash); - - try { - await transaction.wait(); // will throw an error if transaction fails - } catch (error: unknown) { - if (isTransactionReplacedError(error)) { - if (error.reason === "cancelled" && options?.onCancelled) { - options.onCancelled(transaction.hash); - return transaction; - } - if (error.reason === "repriced" && options?.onRepriced) { - options.onRepriced(transaction.hash); - return transaction; - } - } - - // null is an object, but isn't truthy - if (error && typeof error === "object") { - throw error; - } - - if (typeof error === "string") { - throw new Error(error); - } - - throw new Error( - `Unknown error calling ${method as string} on: ${ - this.contract.address - } with arguments: ${args}`, - ); - } - - return transaction; - } - - /** - * Delete the cache entry for a call to a given method with the given args. - * @returns A boolean indicating whether the entry was successfully deleted. - */ - deleteCall>( - method: K, - args: T[K] extends AnyFunction ? Parameters : never, - ): boolean { - return this.deleteCached([method, ...args]); - } - - /** - * Get events from the contract and cache the results with a key made from the - * filter and block range. If the request fails, the block range will be split - * in 2 recursively until all events within the requested range are fetched. - * @param filter - The TypedEventFilter of the event to fetch. - * @param fromBlock - Include all events on or after this block. - * @param toBlock - Include all events on or before this block. - */ - getEvents( - filter: TypedEventFilter, - fromBlock?: number, - toBlock?: number, - ): Promise { - return this.cached(["getEvents", filter, fromBlock, toBlock], async () => { - const start = fromBlock ?? 0; - const end = toBlock ?? (await this.context.provider.getBlockNumber()); - const blockRange = end - start; - try { - // TODO: find a better solution for this. - // ethers.js will spit out an error message that we can't disable without turning off the - // logger. because the smart contract code for queryVotePower returns an error if the - // account is not found, it can flood the console with errors. this is a workaround until a - // better solution is found. - ethers.utils.Logger.setLogLevel(ethers.utils.Logger.levels.OFF); - const events = await this.contract.queryFilter( - filter, - fromBlock, - toBlock, - ); - ethers.utils.Logger.setLogLevel(ethers.utils.Logger.levels.WARNING); - return events as TEvent[]; - } catch (err) { - const midPoint = start + Math.floor(blockRange / 2); - const firstHalf = await this.getEvents(filter, start, midPoint); - const secondHalf = await this.getEvents(filter, midPoint + 1, end); - - return [...firstHalf, ...secondHalf] as TEvent[]; - } - }); - } -} - -/** - * @category Data Sources - */ -export interface TransactionOptions { - /** - * A function called when the transaction is submitted to the blockchain. - * @param transaction - The transaction hash. - */ - onSubmitted?: (transaction: string) => void; - - /** - * A function called when the transaction is canceled. - * @param transaction - The transaction hash. - */ - onCancelled?: (transaction: string) => void; - - /** - * A function called when the transaction is repriced. - * @param transaction - The transaction hash. - */ - onRepriced?: (transaction: string) => void; -} - -export type AnyFunction = (...args: any) => any; - -/** - * Get a union of all keys/properties on T that are functions. - * @category Data Sources - */ -export type FunctionKeys = Exclude< - { - [K in keyof T]: T[K] extends AnyFunction ? K : undefined; - }[keyof T], - undefined ->; - -export type TransactionFunction = ( - ...args: any -) => ContractTransaction | Promise; - -/** - * Get a union of all keys/properties on T that are functions and return a - * `ContractTransaction`. - * @category Data Sources - */ -export type TransactionKeys = Exclude< - { - [K in keyof T]: T[K] extends TransactionFunction ? K : undefined; - }[keyof T], - undefined ->; - -/** - * @category Data Sources - */ -export interface TransactionReplacedError extends Error { - code: "TRANSACTION_REPLACED"; - // The reason why the transaction was replaced - // - "repriced" is generally nothing of concern, the - // only difference in the transaction is the gasPrice - // - "cancelled" means the `to` has been set to the `from`, - // the data has been set to `0x` and value set to 0 - // - "replaced" means that the transaction is unrelated to - // the original transaction - reason: "repriced" | "cancelled" | "replaced"; - // This is a short-hand property as the effects of either a - // "cancelled" or "replaced" tx are effectively cancelled - cancelled: boolean; - // The TransactionResponse which replaced the original - replacement: ContractTransaction; - // The TransactionReceipt of the replacement transaction - receipt: ContractReceipt; -} - -function isTransactionReplacedError( - error: TransactionReplacedError | any, -): error is TransactionReplacedError { - if (error?.code === Logger.errors.TRANSACTION_REPLACED) { - return true; - } - return false; -} diff --git a/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts b/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts deleted file mode 100644 index ae5f4c76..00000000 --- a/packages/council-sdk/src/datasources/base/http/HTTPDataSource.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { CouncilContext } from "src/context/context"; -import { CachedDataSource } from "src/datasources/base/cached/CachedDataSource"; - -/** - * A DataSource with methods for caching requests to an HTTP API. - * @category Data Sources - */ -export class HTTPDataSource extends CachedDataSource { - /** - * The base URL prefixed to all method paths. - */ - baseURL: string; - - /** - * The default options that are used for all request methods. - */ - defaultRequestOptions: RequestInit; - - /** - * The default options that are used for the `get` method. - * This will be merged with and overwrite the `defaultRequestOptions`. - * - */ - defaultGetOptions: RequestInit; - - /** - * The default options that are used for the `post` method. - * This will be merged with and overwrite the `defaultRequestOptions`. - */ - defaultPostOptions: RequestInit; - - /** - * The default options that are used for the `put` method. - * This will be merged with and overwrite the `defaultRequestOptions`. - */ - defaultPutOptions: RequestInit; - - /** - * The default options that are used for the `delete` method. - * This will be merged with and overwrite the `defaultRequestOptions`. - */ - defaultDeleteOptions: RequestInit; - - /** - * A function that processes the API's responses and returns the desired data. - * The default implementation uses `response.json()` to parse the response as - * JSON. - * @param res - the response from the API. - * @returns a promise that resolves to the processed response data. - */ - onResponse: (res: Response) => Promise = (res: Response) => res.json(); - - constructor( - baseURL: string, - context: CouncilContext, - options?: { - /** - * The default options that are used for all request methods. - */ - defaultRequestOptions?: RequestInit; - - /** - * The default options that are used for the `get` method. - * This will be merged with and overwrite `defaultRequestOptions`. - */ - defaultGetOptions?: RequestInit; - - /** - * The default options that are used for the `post` method. - * This will be merged with and overwrite `defaultRequestOptions`. - */ - defaultPostOptions?: RequestInit; - - /** - * The default options that are used for the `put` method. - * This will be merged with and overwrite `defaultRequestOptions`. - */ - defaultPutOptions?: RequestInit; - - /** - * The default options that are used for the `delete` method. - * This will be merged with and overwrite `defaultRequestOptions`. - */ - defaultDeleteOptions?: RequestInit; - - /** - * A function that processes the API's responses and returns the desired - * data. The default implementation uses `response.json()` to parse the - * response as JSON. - * @param res - the response from the API. - * @returns a promise that resolves to the processed response data. - */ - onResponse?: (res: Response) => Promise; - }, - ) { - super(context); - this.baseURL = baseURL; - - const { - defaultRequestOptions = {}, - defaultGetOptions = {}, - defaultPostOptions = {}, - defaultPutOptions = {}, - defaultDeleteOptions = {}, - onResponse, - } = options || {}; - - this.defaultRequestOptions = defaultRequestOptions; - this.defaultGetOptions = { - ...defaultGetOptions, - method: "GET", - }; - this.defaultPostOptions = { - ...defaultPostOptions, - method: "POST", - }; - this.defaultPutOptions = { - ...defaultPutOptions, - method: "PUT", - }; - this.defaultDeleteOptions = { - ...defaultDeleteOptions, - method: "DELETE", - }; - - if (onResponse) { - this.onResponse = onResponse; - } - } - - /** - * Make a `POST` request to the API and cache the result with a key made from - * the method type, the path, and the request body. - * @param path - the path to append to the `baseURL`. - * @param requestOptions - options for the request. This will be merged with - * and overwrite `defaultRequestOptions` and `defaultPostOptions`. - * @returns a promise that resolves to the response data processed by - * `onResponse`. - */ - post(path: string, options: RequestInit): Promise { - return this.cached( - ["post", path, options.body], - () => - fetch(`${this.baseURL}${path}`, { - ...this.defaultRequestOptions, - ...this.defaultPostOptions, - ...options, - }).then(this.onResponse) as Promise, - ); - } - - /** - * Make a `GET` request to the API and cache the result with a key made from - * the method type and the path. - * @param path - the path to append to the `baseURL`. - * @param requestOptions - options for the request. This will be merged with - * and overwrite `defaultRequestOptions` and `defaultGetOptions`. - * @returns a promise that resolves to the response data processed by - * `onResponse`. - */ - get(path: string, options: RequestInit = {}): Promise { - return this.cached( - ["get", path], - () => - fetch(`${this.baseURL}${path}`, { - ...this.defaultRequestOptions, - ...this.defaultGetOptions, - ...options, - }).then(this.onResponse) as Promise, - ); - } - - /** - * Make a `PUT` request to the API and cache the result with a key made from - * the method type, the path, and the request body. - * @param path - the path to append to the `baseURL`. - * @param requestOptions - options for the request. This will be merged with - * and overwrite `defaultRequestOptions` and `defaultPutOptions`. - * @returns a promise that resolves to the response data processed by - * `onResponse`. - */ - put(path: string, options: RequestInit): Promise { - return this.cached( - ["put", path, options.body], - () => - fetch(`${this.baseURL}${path}`, { - ...this.defaultRequestOptions, - ...this.defaultPutOptions, - ...options, - }).then(this.onResponse) as Promise, - ); - } - - /** - * Make a `DELETE` request to the API. - * @param path - the path to append to the `baseURL`. - * @param requestOptions - options for the request. This will be merged with - * and overwrite `defaultDeleteOptions` and `defaultPutOptions`. - * @returns a promise that resolves to the response data processed by - * `onResponse`. - */ - delete(path: string, options: RequestInit = {}): Promise { - return fetch(`${this.baseURL}${path}`, { - ...this.defaultRequestOptions, - ...this.defaultDeleteOptions, - ...options, - }).then(this.onResponse) as Promise; - } -} diff --git a/packages/council-sdk/src/datasources/mocks/MockDataSource.ts b/packages/council-sdk/src/datasources/mocks/MockDataSource.ts deleted file mode 100644 index 671b0987..00000000 --- a/packages/council-sdk/src/datasources/mocks/MockDataSource.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CouncilContext } from "src/context/context"; -import { DataSource } from "src/datasources/base/DataSource"; - -export class MockDataSource implements DataSource { - id: number; - context: CouncilContext; - - constructor(id: number, context: CouncilContext) { - this.id = id; - this.context = context; - } -} diff --git a/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts b/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts deleted file mode 100644 index 08fa7a66..00000000 --- a/packages/council-sdk/src/datasources/token/ERC20ContractDataSource.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { MockERC20, MockERC20__factory } from "@council/typechain"; -import { Signer } from "ethers"; -import { formatUnits, parseUnits } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { - ContractDataSource, - TransactionOptions, -} from "src/datasources/base/contract/ContractDataSource"; -import { TokenDataSource } from "./TokenDataSource"; - -/** - * @category Data Sources - */ -export class ERC20ContractDataSource - extends ContractDataSource - implements TokenDataSource -{ - constructor(address: string, context: CouncilContext) { - super(MockERC20__factory.connect(address, context.provider), context); - } - - /** - * Get the name of this token. - */ - getName(): Promise { - return this.call("name", []); - } - - /** - * Get the symbol of this token, usually a shorter version of the name. - */ - getSymbol(): Promise { - return this.call("symbol", []); - } - - /** - * Get the number of decimals used to format a balance for display. For - * example, if decimals equals 2, a balance of `505` tokens should be - * displayed as `5.05` (`505 / 10 ** 2`). - */ - getDecimals(): Promise { - return this.call("decimals", []); - } - - /** - * Get the amount of tokens owned by a given address. - */ - async getBalanceOf(address: string): Promise { - const balanceBigNumber = await this.call("balanceOf", [address]); - const decimals = await this.getDecimals(); - return formatUnits(balanceBigNumber, decimals); - } - - /** - * Get the spending allowance of a given spender for a given owner of this - * token. - */ - async getAllowance(owner: string, spender: string): Promise { - const balanceBigNumber = await this.call("allowance", [owner, spender]); - const decimals = await this.getDecimals(); - return formatUnits(balanceBigNumber, decimals); - } - - async approve( - signer: Signer, - spender: string, - amount: string, - options?: TransactionOptions, - ): Promise { - const decimals = await this.getDecimals(); - const transaction = await this.callWithSigner( - "approve", - [spender, parseUnits(amount, decimals)], - signer, - options, - ); - const owner = await signer.getAddress(); - this.deleteCall("allowance", [owner, spender]); - return transaction.hash; - } -} diff --git a/packages/council-sdk/src/datasources/token/MockERC20ContractDataSource.ts b/packages/council-sdk/src/datasources/token/MockERC20ContractDataSource.ts deleted file mode 100644 index 011e269a..00000000 --- a/packages/council-sdk/src/datasources/token/MockERC20ContractDataSource.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Signer } from "ethers"; -import { parseUnits } from "ethers/lib/utils"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { ERC20ContractDataSource } from "./ERC20ContractDataSource"; - -/** - * @category Data Sources - */ -export class MockERC20ContractDataSource extends ERC20ContractDataSource { - /** - * Mint new tokens - * @param signer - Signer. - * @param account - The account to add tokens to. - * @param amount - The amount of tokens (as a decimal string) to add. - * @return - The transaction hash. - */ - async mint( - signer: Signer, - account: string, - amount: string, - options?: TransactionOptions, - ): Promise { - const decimals = await this.getDecimals(); - - const transaction = await this.callWithSigner( - "mint", - [account, parseUnits(amount, decimals)], - signer, - options, - ); - this.deleteCall("balanceOf", [account]); - - return transaction.hash; - } - - /** - * Modify an account's balance. - * @param signer - Signer. - * @param account - The account to set balance for. - * @param balance - The new balance (as a decimal string) for the account. - * @return - The transaction hash. - */ - async setBalance( - signer: Signer, - account: string, - balance: string, - options?: TransactionOptions, - ): Promise { - const decimals = await this.getDecimals(); - - const transaction = await this.callWithSigner( - "setBalance", - [account, parseUnits(balance, decimals)], - signer, - options, - ); - this.deleteCall("balanceOf", [account]); - - return transaction.hash; - } - - /** - * Modify an account's allowance. - * @param signer - Signer. - * @param account - The address of the owner to set allowance for. - * @param spender - The address of the spender to set allowance for. - * @param balance - The new balance (as a decimal string) for the account. - * @return - The transaction hash. - */ - async setAllowance( - signer: Signer, - owner: string, - spender: string, - allowance: string, - options?: TransactionOptions, - ): Promise { - const decimals = await this.getDecimals(); - - const transaction = await this.callWithSigner( - "setAllowance", - [owner, spender, parseUnits(allowance, decimals)], - signer, - options, - ); - this.deleteCall("allowance", [owner, spender]); - - return transaction.hash; - } -} diff --git a/packages/council-sdk/src/datasources/token/TokenDataSource.ts b/packages/council-sdk/src/datasources/token/TokenDataSource.ts deleted file mode 100644 index f11c146d..00000000 --- a/packages/council-sdk/src/datasources/token/TokenDataSource.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Signer } from "ethers"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { DataSource } from "src/datasources/base/DataSource"; - -/** - * An interface for fetching data from any token. - * @category Data Sources - */ -export interface TokenDataSource extends DataSource { - address: string; - - /** - * Get the symbol of this token, usually a shorter version of the name. - */ - getSymbol: () => Promise; - - /** - * Get the name of this token. - */ - getName: () => Promise; - - /** - * Get the number of decimals used to format a balance for display. For - * example, if decimals equals 2, a balance of `505` tokens should be - * displayed as `5.05` (`505 / 10 ** 2`). - */ - getDecimals: () => Promise; - - /** - * Get the spending allowance of a given spender for a given owner of this - * token. - */ - getAllowance: (owner: string, spender: string) => Promise; - - /** - * Get the amount of tokens owned by a given address. - */ - getBalanceOf: (address: string) => Promise; - - /** - * Sets approval of token access up to a certain amount - * @param signer - Signer. - * @param spender - Address to approve access to. - * @param amount - Amount approved for (as a decimal string), defaults to maximum. - * @return - The transaction hash. - */ - approve: ( - signer: Signer, - spender: string, - amount: string, - options?: TransactionOptions, - ) => Promise; -} diff --git a/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts b/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts deleted file mode 100644 index 95391718..00000000 --- a/packages/council-sdk/src/datasources/votingContract/CoreVotingContractDataSource.ts +++ /dev/null @@ -1,354 +0,0 @@ -import { CoreVoting, CoreVoting__factory } from "@council/typechain"; -import { BigNumber, Signer } from "ethers"; -import { - BytesLike, - formatEther, - Interface, - parseEther, -} from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { - ContractDataSource, - TransactionOptions, -} from "src/datasources/base/contract/ContractDataSource"; -import { - Actions, - Ballot, - ProposalData, - ProposalDataPreview, - VoteData, - VoteResults, - VotingContractDataSource, -} from "./VotingContractDataSource"; - -const BALLOTS: Ballot[] = ["yes", "no", "maybe"]; -const EXECUTED_PROPOSAL_HASH = - "0x0000000000000000000000000000000000000000000000000000000000000000"; - -/** - * A DataSource with methods for making cached calls to a `CoreVoting` contract - * from the Council protocol. - * @category Data Sources - */ -export class CoreVotingContractDataSource - extends ContractDataSource - implements VotingContractDataSource -{ - constructor(address: string, context: CouncilContext) { - super(CoreVoting__factory.connect(address, context.provider), context); - } - - async getProposalCount(): Promise { - return (await this.call("proposalCount", [])).toNumber(); - } - - async getProposalCreatedBy(id: number): Promise { - const eventFilter = this.contract.filters.ProposalCreated(); - const proposalCreatedEvents = await this.getEvents(eventFilter); - const createdEvent = proposalCreatedEvents.find( - ({ args }) => args.proposalId.toNumber() === id, - ); - let createdBy: string | null = null; - if (createdEvent) { - createdBy = ( - await this.context.provider.getTransaction(createdEvent.transactionHash) - ).from; - } - return createdBy; - } - - /** - * Returns the hash of the transaction that created the proposal. Returns null - * if the id passed does not correspond to a valid proposal. - * @param id The id of the proposal - * @returns The transaction hash - */ - async getProposalCreatedTransactionHash(id: number): Promise { - const eventFilter = this.contract.filters.ProposalCreated(); - const proposalCreatedEvents = await this.getEvents(eventFilter); - const createdEvent = proposalCreatedEvents.find( - ({ args }) => args.proposalId.toNumber() === id, - ); - if (!createdEvent) { - return null; - } - - return createdEvent.transactionHash; - } - - async getProposal(id: number): Promise { - const { proposalHash, quorum, created, unlock, expiration, lastCall } = - await this.call("proposals", [id]); - if (proposalHash === EXECUTED_PROPOSAL_HASH) { - return null; - } - - return { - id, - hash: proposalHash, - requiredQuorum: formatEther(quorum), - createdBlock: created.toNumber(), - unlockBlock: unlock.toNumber(), - expirationBlock: expiration.toNumber(), - lastCallBlock: lastCall.toNumber(), - }; - } - - getProposals( - fromBlock?: number, - toBlock?: number, - ): Promise { - return this.cached(["getProposals", fromBlock, toBlock], async () => { - const eventFilter = this.contract.filters.ProposalCreated(); - const events = await this.getEvents(eventFilter, fromBlock, toBlock); - return events.map(({ args }) => { - return { - id: args.proposalId.toNumber(), - createdBlock: args.created.toNumber(), - unlockBlock: args.execution.toNumber(), - expirationBlock: args.expiration.toNumber(), - }; - }); - }); - } - - async getExecutedProposalIds( - fromBlock?: number, - toBlock?: number, - ): Promise { - const proposalExecutedEvents = await this.getEvents( - this.contract.filters.ProposalExecuted(), - fromBlock, - toBlock, - ); - return proposalExecutedEvents.map(({ args }) => args.proposalId.toNumber()); - } - - async getProposalExecutedTransactionHash(id: number): Promise { - const proposalExecutedEvents = await this.getEvents( - this.contract.filters.ProposalExecuted(), - ); - const executedEvent = proposalExecutedEvents.find( - ({ args }) => args.proposalId.toNumber() === id, - ); - if (!executedEvent) { - return null; - } - - return executedEvent.transactionHash; - } - - getTargetsAndCalldatas(proposalId: number): Promise { - return this.cached(["getTargetsAndCalldatas", proposalId], async () => { - const createdTransactionHash = - await this.getProposalCreatedTransactionHash(proposalId); - - if (!createdTransactionHash) { - return null; - } - - const createdTransaction = await this.context.provider.getTransaction( - createdTransactionHash, - ); - - const coreVotingInterface = new Interface(CoreVoting__factory.abi); - const { targets, calldatas } = coreVotingInterface.decodeFunctionData( - "proposal", - createdTransaction.data, - ); - return { targets, calldatas }; - }); - } - - async getVote(address: string, proposalId: number): Promise { - const [power, ballotIndex] = await this.call("votes", [ - address, - proposalId, - ]); - return power.gt(0) - ? { - address, - proposalId, - power: formatEther(power), - ballot: BALLOTS[ballotIndex], - } - : null; - } - - async getVotes( - address?: string, - proposalId?: number, - fromBlock?: number, - toBlock?: number, - ): Promise { - return this.cached( - ["getVotes", address, proposalId, fromBlock, toBlock], - async () => { - const eventFilter = this.contract.filters.Voted(address, proposalId); - const events = await this.getEvents(eventFilter, fromBlock, toBlock); - return events.map(({ args }) => { - return { - address: args.voter, - proposalId: args.proposalId.toNumber(), - power: formatEther(args.vote.votingPower), - ballot: BALLOTS[args.vote.castBallot], - }; - }); - }, - ); - } - - async getResults(proposalId: number): Promise { - const executedIds = await this.getExecutedProposalIds(); - const powerByBallot: Record = { - yes: BigNumber.from(0), - no: BigNumber.from(0), - maybe: BigNumber.from(0), - }; - - // The proposal voting power is deleted when the proposal is executed, so we - // have to get the results from vote events. - if (executedIds.includes(proposalId)) { - const votes = await this.getVotes(); - for (const { ballot, power } of votes) { - const powerBN = parseEther(power); - powerByBallot[ballot] = powerByBallot[ballot].add(powerBN); - } - } else { - const [yes, no, maybe] = await this.call("getProposalVotingPower", [ - proposalId, - ]); - powerByBallot.yes = yes; - powerByBallot.no = no; - powerByBallot.maybe = maybe; - } - - return { - yes: formatEther(powerByBallot.yes), - no: formatEther(powerByBallot.no), - maybe: formatEther(powerByBallot.maybe), - }; - } - - /** - * Create a new proposal. - * @param signer - An ethers Signer instance for the voter. - * @param vaults - The addresses of the approved vaults to draw voting power - * from. - * @param targets - The targets (contract addresses) to call. - * @param calldatas - The calldatas to call each target with. - * @param lastCall: A block number that limits when the proposal can be executed. - * @param ballot: The vote for the proposal from the signer's account. - * @returns The transaction hash. - */ - async createProposal( - signer: Signer, - vaults: string[], - targets: string[], - calldatas: BytesLike[], - lastCall: number, - ballot: Ballot, - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const transaction = await this.callWithSigner( - "proposal", - [ - vaults, - options?.extraVaultData || vaults.map(() => "0x00"), - targets, - calldatas, - lastCall, - BALLOTS.indexOf(ballot), - ], - signer, - ); - this.clearCached(); - return transaction.hash; - } - - async executeProposal( - signer: Signer, - id: number, - options?: TransactionOptions, - ): Promise { - const actions = await this.getTargetsAndCalldatas(id); - - if (!actions) { - throw `Cannot execute proposal ${id} because it doesn't exist.`; - } - - const transaction = await this.callWithSigner( - "execute", - [id, actions.targets, actions.calldatas], - signer, - options, - ); - - this.clearCached(); - - return transaction.hash; - } - - async vote( - signer: Signer, - vaults: string[], - proposalId: number, - ballot: Ballot, - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const transaction = await this.callWithSigner( - "vote", - [ - vaults, - options?.extraVaultData || vaults.map(() => "0x00"), - proposalId, - BALLOTS.indexOf(ballot), - ], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } - - async setLockDuration( - signer: Signer, - blocks: number, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "setLockDuration", - [blocks], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } - - async changeVaultStatus( - signer: Signer, - address: string, - isValid: boolean, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "changeVaultStatus", - [address, isValid], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } -} diff --git a/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts b/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts deleted file mode 100644 index 7fdfee1e..00000000 --- a/packages/council-sdk/src/datasources/votingContract/VotingContractDataSource.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { BytesLike, Signer } from "ethers"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { DataSource } from "src/datasources/base/DataSource"; - -/** - * An interface for fetching data from any voting contract. - * @category Data Sources - */ -export interface VotingContractDataSource extends DataSource { - address: string; - - /** - * Get the total number of proposals created in this voting contract - */ - getProposalCount: () => Promise; - - getProposalCreatedBy: (id: number) => Promise; - getProposalCreatedTransactionHash: (id: number) => Promise; - - /** - * Get a proposal's `ProposalData` by `id` if it exists. - */ - getProposal: (id: number) => Promise; - - /** - * Get the `ProposalDataPreview` of all proposals ever created. - * @param fromBlock - Include all proposals created on or after this block number. - * @param toBlock - Include all proposals created on or before this block number. - */ - getProposals: ( - fromBlock?: number, - toBlock?: number, - ) => Promise; - - /** - * Get the array of addresses that will be called (targets) and the data - * they'll be called with (calldatas) by this proposal. - */ - getTargetsAndCalldatas: (proposalId: number) => Promise; - - /** - * Get the id of all executed proposals. - * @param fromBlock - Include all proposals executed on or after this block number. - * @param toBlock - Include all proposals executed on or before this block number. - * @returns - */ - getExecutedProposalIds: ( - fromBlock?: number, - toBlock?: number, - ) => Promise; - - /** - * Get the hash of the transaction that executed the proposal, or null if - * the Proposal wasn't executed. - * @param id The proposal id. - */ - getProposalExecutedTransactionHash: (id: number) => Promise; - - /** - * Get a casted vote for a given address on - * a given proposal id. - */ - getVote: (address: string, proposalId: number) => Promise; - - /** - * Get all casted votes on this proposal - * @param fromBlock - Include all votes casted on or after this block number. - * @param toBlock - Include all votes casted on or before this block number. - */ - getVotes: ( - address?: string, - proposalId?: number, - fromBlock?: number, - toBlock?: number, - ) => Promise; - - /** - * Get the total voting power of all votes on this proposal by their ballot. - */ - getResults: (proposalId: number) => Promise; - - /** - * Create a new proposal. - * @param signer - An ethers Signer instance for the voter. - * @param vaults - The addresses of the approved vaults to draw voting power - * from. - * @param targets - The targets (contract addresses) to call. - * @param calldatas - The calldatas to call each target with. - * @param lastCall: A block number that limits when the proposal can be executed. - * @param ballot: The vote for the proposal from the signer's account. - * @returns The transaction hash. - */ - createProposal: ( - signer: Signer, - vaults: string[], - targets: string[], - calldatas: BytesLike[], - lastCall: number, - ballot: Ballot, - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ) => Promise; - - /** - * Execute a proposal. - * @param signer - An ethers Signer instance. - * @param proposalId - The id of the proposal to execute. - * @returns The transaction hash. - */ - executeProposal: ( - signer: Signer, - id: number, - options?: TransactionOptions, - ) => Promise; - - /** - * Vote on this proposal. - * @param signer - An ethers Signer instance for the voter. - * @param vaults - The addresses of the approved vaults to draw voting power - * from. - * @param proposalId - The id of the proposal to vote on. - * @param ballot - The ballot to cast. - * @returns The transaction hash. - */ - vote: ( - signer: Signer, - vaults: string[], - proposalId: number, - ballot: Ballot, - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ) => Promise; - - /** - * Change the number of blocks that must be waited before a proposal can be executed. - * @param signer - An ethers Signer instance for the voter. - * @param blocks - The number of blocks that must be waited. - * @returns The transaction hash. - */ - setLockDuration: ( - signer: Signer, - blocks: number, - options?: TransactionOptions, - ) => Promise; - - /** - * Change whether a vault is approved or not. - * @param signer - An ethers Signer instance for the voter. - * @param address -The address of the vault. - * @param isValid - Whether or not the approved. - * @returns The transaction hash. - */ - changeVaultStatus: ( - signer: Signer, - address: string, - isValid: boolean, - options?: TransactionOptions, - ) => Promise; -} - -/** - * A preview of `ProposalData`, emitted in logs. - * @category Data Sources - */ -export interface ProposalDataPreview { - id: number; - createdBlock: number; - unlockBlock: number; - expirationBlock: number; -} - -/** - * A proposal as it's stored in the contract. - * @category Data Sources - */ -export interface ProposalData extends ProposalDataPreview { - hash: string; - requiredQuorum: string; - lastCallBlock: number; -} - -/** - * The actions a proposal will perform. - */ -export interface Actions { - targets: string[]; - calldatas: string[]; -} - -/** - * A valid ballot option. - * @category Data Sources - */ -export type Ballot = "yes" | "no" | "maybe"; - -/** - * The vote data emitted in logs. - * @category Data Sources - */ -export interface VoteData { - address: string; - proposalId: number; - power: string; - ballot: Ballot; -} - -/** - * The amount of voting power casted by ballot. - * @category Data Sources - */ -export type VoteResults = Record; diff --git a/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts b/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts deleted file mode 100644 index b24e255a..00000000 --- a/packages/council-sdk/src/datasources/votingVault/GSCVaultContractDataSource.ts +++ /dev/null @@ -1,173 +0,0 @@ -import { GSCVault, GSCVault__factory } from "@council/typechain"; -import { BigNumber, Signer } from "ethers"; -import { BytesLike, formatEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { VotingVaultContractDataSource } from "./VotingVaultContractDataSource"; - -const TYPE = "GSCVault"; - -/** - * A DataSource with methods for making cached calls to a `GSCVault` contract - * from the Council protocol. - * @category Data Sources - */ -export class GSCVaultContractDataSource extends VotingVaultContractDataSource { - /** - * A field that can be used for more specific filtering when registering an - * instance of this data source with the council context. - */ - static type = TYPE; - type = TYPE; - - constructor(address: string, context: CouncilContext) { - super(GSCVault__factory.connect(address, context.provider), context); - } - - /** - * Get the amount of voting power required to join this GSC vault. - */ - async getRequiredVotingPower(): Promise { - const reqVotingPowerBigNumber = await this.call("votingPowerBound", []); - return formatEther(reqVotingPowerBigNumber); - } - - /** - * Get the time (in MS) that a new GSC member must wait after joining before - * they can vote. - */ - async getIdleDuration(): Promise { - const idleDurationBigNumber = await this.call("idleDuration", []); - return idleDurationBigNumber.toNumber() * 1000; - } - - /** - * Get the addresses of all current members of this vault. - * @param fromBlock - The block number to start searching for members from. - * @param toBlock - The block number to stop searching for members at. - */ - async getMembers(fromBlock?: number, toBlock?: number): Promise { - return this.cached(["getMembers", fromBlock, toBlock], async () => { - const latestJoinTimestampByMember: Record = {}; - - const joinEvents = await this.getEvents( - this.contract.filters.MembershipProved(), - fromBlock, - toBlock, - ); - - // Capture the latest join date of each address. - for (const { args } of joinEvents) { - const { who, when } = args; - if ( - !latestJoinTimestampByMember[who] || - when.gt(latestJoinTimestampByMember[who]) - ) { - latestJoinTimestampByMember[who] = when; - } - } - - const kickEvents = await this.getEvents( - this.contract.filters.Kicked(), - fromBlock, - toBlock, - ); - - // Ignore addresses that were kicked after their latest join date. - for (const { args } of kickEvents) { - const { who, when } = args; - // NOTE: the kickEvents store block numbers for the `when` field, so we - // must convert them to timestamps so we can compare them with the join - // events which store `when` as a timestamp. - const kickedEventBlock = await this.context.provider.getBlock( - when.toNumber(), - ); - if ( - latestJoinTimestampByMember[who] && - kickedEventBlock.timestamp > - latestJoinTimestampByMember[who]?.toNumber() - ) { - delete latestJoinTimestampByMember[who]; - } - } - - return Object.keys(latestJoinTimestampByMember).map((voter) => voter); - }); - } - - /** - * Get a timestamp (in MS) of the join date of a given address. - */ - async getJoinTimestamp(address: string): Promise { - const joinDateBigNumber = await this.call("members", [address]); - const joinDate = joinDateBigNumber.toNumber() * 1000; - return joinDate > 0 ? joinDate : null; - } - - /** - * Get the voting vaults a member joined with. Used to prove the member meets - * the minimum voting power requirement. - */ - getMemberVaults(address: string): Promise { - return this.call("getUserVaults", [address]); - } - - /** - * Become a member of this GSC vault. - * @param signer - The Signer of the joining member. - * @param vaults - The addresses of the approved vaults the joining member has - * voting power in. This is used to prove the joining member meets the - * minimum voting power requirement. If voting power is moved to a different - * vault, the member will become ineligible until they join again with the - * new vault or risk being kicked. - * @returns The transaction hash. - */ - async join( - signer: Signer, - vaults: string[], - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const transaction = await this.callWithSigner( - "proveMembership", - [vaults, options?.extraVaultData || vaults.map(() => "0x00")], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } - - /** - * Remove a member that's become ineligible from this GSC vault. A member - * becomes ineligible when the voting power in the vaults they joined with - * drops below the required minimum. - * @param signer - The Signer of the wallet paying to kick. - * @param member - The address of the ineligible member to kick. - * @returns The transaction hash. - */ - async kick( - signer: Signer, - member: string, - options?: TransactionOptions & { - /** - * The extra data the vaults need to load the member's voting power - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const vaults = await this.getMemberVaults(member); - const transaction = await this.callWithSigner( - "kick", - [member, options?.extraVaultData || vaults.map(() => "0x00")], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } -} diff --git a/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts b/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts deleted file mode 100644 index 470a30a4..00000000 --- a/packages/council-sdk/src/datasources/votingVault/LockingVaultContractDataSource.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { LockingVault, LockingVault__factory } from "@council/typechain"; -import { BigNumber, Signer } from "ethers"; -import { formatEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { CachedDataSource } from "src/datasources/base/cached/CachedDataSource"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { TokenDataSource } from "src/datasources/token/TokenDataSource"; -import { VotingVaultContractDataSource } from "./VotingVaultContractDataSource"; - -const TYPE = "LockingVault"; - -/** - * A DataSource with methods for making cached calls to a `LockingVault` - * contract from the Council protocol. - * @category Data Sources - */ -export class LockingVaultContractDataSource extends VotingVaultContractDataSource { - /** - * A field that can be used for more specific filtering when registering an - * instance of this data source with the council context. - */ - static type = TYPE; - type = TYPE; - - constructor(address: string, context: CouncilContext) { - super(LockingVault__factory.connect(address, context.provider), context); - this.context = context; - } - - /** - * Get the address of the associated token for this vault. - */ - getToken(): Promise { - return this.call("token", []); - } - - /** - * Get the amount of tokens that a given `address` has deposited into this - * vault. - */ - async getDepositedBalance(address: string): Promise { - const [, balanceBigNumber] = await this.call("deposits", [address]); - return formatEther(balanceBigNumber); - } - - /** - * Get the address of the current delegate of a given address. - */ - async getDelegate(address: string): Promise { - const [delegate] = await this.call("deposits", [address]); - return delegate; - } - - /** - * Get the addresses of all voters delegated to a given address in this vault. - */ - getDelegatorsTo( - address: string, - atBlock?: number, - ): Promise { - return this.cached(["getDelegatorsTo", address, atBlock], async () => { - const eventFilter = this.contract.filters.VoteChange(undefined, address); - const voteChangeEvents = await this.getEvents( - eventFilter, - undefined, - atBlock, - ); - const powerByDelegators: Record = {}; - for (const { args } of voteChangeEvents) { - const { from, amount } = args; - // ignore self-delegation - if (from !== address) { - powerByDelegators[from] = - powerByDelegators[from]?.add(amount) || amount; - } - } - return Object.entries(powerByDelegators) - .filter(([, power]) => power.gt(0)) - .map(([address, power]) => ({ - address, - votingPower: formatEther(power), - })); - }); - } - - /** - * Get the number of blocks before the delegation history is forgotten. Voting - * power from this vault can't be used on proposals that are older than the - * stale block lag. - */ - async getStaleBlockLag(): Promise { - const staleBlockLagBigNumber = await this.call("staleBlockLag", []); - return staleBlockLagBigNumber.toNumber(); - } - - /** - * Get the voting power for a given address at a given block without - * accounting for the stale block lag. - */ - async getHistoricalVotingPower( - address: string, - atBlock?: number, - ): Promise { - // Using this.cached instead of this.call because the atBlock argument is - // required by the queryVotePowerView method, but we want the atBlock - // argument optional. So instead we make the cache key include the possibly - // undefined argument, then grab the latest block in the callback if it's - // not defined. This means that subsequent calls to getHistoricalVotingPower - // will return a cached value unless explicitly called with a specific - // atBlock. - const votingPowerBigNumber = await this.cached( - ["queryVotePowerView", address, atBlock], - async () => { - return await this.contract.queryVotePowerView( - address, - atBlock ?? (await this.context.provider.getBlockNumber()), - ); - }, - ); - return formatEther(votingPowerBigNumber); - } - - /** - * Get the address of all participants that have voting power in this vault - * along with their voting power, the amount of voting power being delegated - * to them, and the amount of power delegated to them by each delegator. This - * is a convenience method to fetch voting power and delegation data for a - * large number of voters in a single call. - * @param address - Get a breakdown for a specific address. - * @param fromBlock - Include all voters that had power on or after this block - * number. - * @param toBlock - Include all voters that had power on or before this block - * number. - */ - async getVotingPowerBreakdown( - address?: string, - fromBlock?: number, - toBlock?: number, - ): Promise { - return this.cached( - ["getVotingPowerBreakdown", address, fromBlock, toBlock], - async () => { - const eventFilter = this.contract.filters.VoteChange( - undefined, - address, - ); - const voteChangeEvents = await this.getEvents( - eventFilter, - fromBlock, - toBlock, - ); - - const breakdownsByVoter: Record< - string, // voter address - { - power: BigNumber; - fromDelegators: BigNumber; - byDelegators: Record< - string, // delegator address - BigNumber - >; - } - > = {}; - - for (const { args } of voteChangeEvents) { - const { from, to, amount } = args; - - if (!breakdownsByVoter[to]) { - breakdownsByVoter[to] = { - power: BigNumber.from(0), - fromDelegators: BigNumber.from(0), - byDelegators: {}, - }; - } - - breakdownsByVoter[to].power = breakdownsByVoter[to].power.add(amount); - - // ignore self-delegation - if (from !== to) { - breakdownsByVoter[to].fromDelegators = - breakdownsByVoter[to].fromDelegators.add(amount); - breakdownsByVoter[to].byDelegators[from] = - breakdownsByVoter[to].byDelegators[from]?.add(amount) || amount; - } - } - - return Object.entries(breakdownsByVoter) - .filter(([, { power }]) => power.gt(0)) - .map(([address, { power, fromDelegators, byDelegators }]) => ({ - address, - votingPower: formatEther(power), - votingPowerFromDelegators: formatEther(fromDelegators), - delegators: Object.entries(byDelegators) - .filter(([, power]) => power.gt(0)) - .map(([address, power]) => ({ - address, - votingPower: formatEther(power), - })), - })); - }, - ); - } - - /** - * Change current delegate. - * @param signer - The Signer of the address delegating. - * @param delegate - The address to delegate to. - * @returns The transaction hash. - */ - async changeDelegate( - signer: Signer, - delegate: string, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "changeDelegation", - [delegate], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } - - /** - * Deposit tokens into this vault. - * @param signer - The Signer of the wallet with the tokens. - * @param account - The address to credit this deposit to. - * @param amount - A BigNumber of the amount of tokens to deposit. - * @param firstDelegate - The address to delegate the resulting voting power to - * if the account doesn't already have a delegate. - * @returns The transaction hash. - */ - async deposit( - signer: Signer, - account: string, - amount: BigNumber, - firstDelegate: string, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "deposit", - [account, amount, firstDelegate], - signer, - options, - ); - this.clearTokenCached(); - this.clearCached(); - return transaction.hash; - } - - /** - * Withdraw tokens from this Locking Vault. - * @param signer - The Signer of the wallet with a deposited balance. - * @param amount - A BigNumber of the amount of tokens to withdraw. - * @returns The transaction hash. - */ - async withdraw( - signer: Signer, - amount: BigNumber, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "withdraw", - [amount], - signer, - options, - ); - this.clearTokenCached(); - this.clearCached(); - return transaction.hash; - } - - /** - * Checks the `context` for a `TokenDataSource` for this vault's - * token and clears the cache if it's a `CachedDataSource`. - */ - private async clearTokenCached() { - const tokenDataSource = this.context.getDataSource({ - address: await this.getToken(), - }); - if (tokenDataSource instanceof CachedDataSource) { - tokenDataSource.clearCached(); - } - } -} - -/** - * @category Data Sources - */ -export interface VoterAddressWithPower { - address: string; - votingPower: string; -} - -/** - * @category Data Sources - */ -export interface VoterPowerBreakdown extends VoterAddressWithPower { - /** - * The total voting power from all wallets delegated to this voter. Does not - * include self-delegation. - */ - votingPowerFromDelegators: string; - /** - * All wallets delegated to this voter with the power they're delegating. Does - * not include self-delegation. - */ - delegators: VoterAddressWithPower[]; -} diff --git a/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.test.ts b/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.test.ts deleted file mode 100644 index 8beeda81..00000000 --- a/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.test.ts +++ /dev/null @@ -1,95 +0,0 @@ -// TODO: Testing breaks when named imports are used for this package -import contractStub from "@council/contract-stub"; -import { VestingVault__factory } from "@council/typechain"; -import { VestingVaultStorage } from "@council/typechain/dist/contracts/mocks/TestVestingVault"; -import { expect, test } from "@jest/globals"; -import { BigNumber, ethers } from "ethers"; -import { formatEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { mockProvider } from "src/testing/mockProvider"; -import { VestingVaultContractDataSource } from "./VestingVaultContractDataSource"; - -test("Fetches token correctly", async () => { - const vaultContract = setupMockVault(); - vaultContract.token.resolves("0x0"); - - const context = new CouncilContext(mockProvider); - const dataSource = new VestingVaultContractDataSource(vaultContract, context); - const value = await dataSource.getToken(); - - expect(value).toEqual("0x0"); -}); - -test("Fetches unvested multiplier correctly", async () => { - const vaultContract = setupMockVault(); - vaultContract.unvestedMultiplier.resolves(BigNumber.from(0)); - - const context = new CouncilContext(mockProvider); - const dataSource = new VestingVaultContractDataSource(vaultContract, context); - const value = await dataSource.getUnvestedMultiplier(); - - expect(value).toEqual(0); -}); - -test("Fetches grants correctly", async () => { - const vaultContract = setupMockVault(); - const mockGrant = setupMockGrant(); - vaultContract.getGrant.resolves(mockGrant); - - const context = new CouncilContext(mockProvider); - const dataSource = new VestingVaultContractDataSource(vaultContract, context); - const value = await dataSource.getGrant("0x0"); - - expect(value).toEqual({ - allocation: formatEther(mockGrant.allocation), - withdrawn: formatEther(mockGrant.withdrawn), - startBlock: mockGrant.created.toNumber(), - expirationBlock: mockGrant.expiration.toNumber(), - unlockBlock: mockGrant.cliff.toNumber(), - votingPower: formatEther(mockGrant.latestVotingPower), - delegate: mockGrant.delegatee.toString(), - range: mockGrant.range.map((bn) => formatEther(bn)), - }); -}); - -test("Fetches delegate correctly", async () => { - const vaultContract = setupMockVault(); - const mockGrant = setupMockGrant(); - vaultContract.getGrant.resolves(mockGrant); - - const context = new CouncilContext(mockProvider); - const dataSource = new VestingVaultContractDataSource(vaultContract, context); - const value = await dataSource.getDelegate("0x0"); - - expect(value).toEqual(mockGrant.delegatee.toString()); -}); - -function setupMockVault() { - return contractStub.stubContract( - VestingVault__factory.connect(ethers.constants.AddressZero, mockProvider), - ); -} - -function setupMockGrant() { - const mockGrant = [ - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - "0x0000000000000000000000000000000000000000", - [BigNumber.from(0), BigNumber.from(1)], - ] as unknown as VestingVaultStorage.GrantStructOutput; - - mockGrant.allocation = mockGrant[0]; - mockGrant.withdrawn = mockGrant[1]; - mockGrant.created = mockGrant[2]; - mockGrant.expiration = mockGrant[3]; - mockGrant.cliff = mockGrant[4]; - mockGrant.latestVotingPower = mockGrant[5]; - mockGrant.delegatee = mockGrant[6]; - mockGrant.range = mockGrant[7]; - - return mockGrant; -} diff --git a/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts b/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts deleted file mode 100644 index f5b45d8e..00000000 --- a/packages/council-sdk/src/datasources/votingVault/VestingVaultContractDataSource.ts +++ /dev/null @@ -1,342 +0,0 @@ -import { VestingVault, VestingVault__factory } from "@council/typechain"; -import { BigNumber, Signer } from "ethers"; -import { formatEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { VotingVaultContractDataSource } from "./VotingVaultContractDataSource"; - -const TYPE = "VestingVault"; - -/** - * A DataSource with methods for making cached calls to a `VestingVault` - * contract from the Council protocol. - * @category Data Sources - */ - -export class VestingVaultContractDataSource extends VotingVaultContractDataSource { - /** - * A field that can be used for more specific filtering when registering an - * instance of this data source with the council context. - */ - static type = TYPE; - type = TYPE; - - /** - * Create a new `VestingVaultContractDataSource` instance. - * @param vault - A `VestingVault` instance from the `@council/typechain` - * package or the address of the vesting vault contract. - */ - constructor(vault: string | VestingVault, context: CouncilContext) { - const contract = - typeof vault === "string" - ? VestingVault__factory.connect(vault, context.provider) - : vault; - super(contract, context); - } - - /** - * Get the address of the associated token for this vault. - */ - getToken(): Promise { - return this.call("token", []); - } - - /** - * Get this vault's unvested multiplier, a number that represents the voting - * power of each unvested token as a percentage of a vested token. For example - * if unvested tokens have 50% voting power compared to vested ones, this - * value would be 50. - */ - async getUnvestedMultiplier(): Promise { - const unvestedMultiplierBN = await this.call("unvestedMultiplier", []); - return unvestedMultiplierBN.toNumber(); - } - - /** - * Get the grant data for a given address. - */ - async getGrant(address: string): Promise { - const { - allocation, - withdrawn, - created, - expiration, - cliff, - latestVotingPower, - delegatee, - range, - } = await this.call("getGrant", [address]); - return { - allocation: formatEther(allocation), - withdrawn: formatEther(withdrawn), - startBlock: created.toNumber(), - expirationBlock: expiration.toNumber(), - unlockBlock: cliff.toNumber(), - votingPower: formatEther(latestVotingPower), - delegate: delegatee.toString(), - range: [formatEther(range[0]), formatEther(range[1])], - }; - } - - /** - * Get the address of the current delegate of a given address. - */ - async getDelegate(address: string): Promise { - const grant = await this.getGrant(address); - return grant.delegate; - } - - /** - * Get the addresses of all voters delegated to a given address in this vault. - */ - getDelegatorsTo( - address: string, - atBlock?: number, - ): Promise { - return this.cached(["getDelegatorsTo", address, atBlock], async () => { - const eventFilter = this.contract.filters.VoteChange(undefined, address); - const voteChangeEvents = await this.getEvents( - eventFilter, - undefined, - atBlock, - ); - const powerByDelegators: Record = {}; - for (const { args } of voteChangeEvents) { - const { from, amount } = args; - // ignore self-delegation - if (from !== address) { - powerByDelegators[from] = - powerByDelegators[from]?.add(amount) || amount; - } - } - return Object.entries(powerByDelegators) - .filter(([, power]) => power.gt(0)) - .map(([address, power]) => ({ - address, - votingPower: formatEther(power), - })); - }); - } - - /** - * Get the number of blocks before the delegation history is forgotten. Voting - * power from this vault can't be used on proposals that are older than the - * stale block lag. - */ - async getStaleBlockLag(): Promise { - const staleBlockLagBigNumber = await this.call("staleBlockLag", []); - return staleBlockLagBigNumber.toNumber(); - } - - /** - * Get the voting power for a given address at a given block without - * accounting for the stale block lag. - */ - async getHistoricalVotingPower( - address: string, - atBlock?: number, - ): Promise { - // Using this.cached instead of this.call because the atBlock argument is - // required by the queryVotePowerView method, but we want the atBlock - // argument optional. So instead we make the cache key include the possibly - // undefined argument, then grab the latest block in the callback if it's - // not defined. This means that subsequent calls to getHistoricalVotingPower - // will return a cached value unless explicitly called with a specific - // atBlock. - const votingPowerBigNumber = await this.cached( - ["queryVotePowerView", address, atBlock], - async () => { - return await this.contract.queryVotePowerView( - address, - atBlock ?? (await this.context.provider.getBlockNumber()), - ); - }, - ); - return formatEther(votingPowerBigNumber); - } - - /** - * Get the address of all participants that have voting power in this vault - * along with their voting power, the amount of voting power being delegated - * to them, and the amount of power delegated to them by each delegator. This - * is a convenience method to fetch voting power and delegation data for a - * large number of voters in a single call. - * @param address - Get a breakdown for a specific address. - * @param fromBlock - Include all voters that had power on or after this block - * number. - * @param toBlock - Include all voters that had power on or before this block - * number. - */ - async getVotingPowerBreakdown( - address?: string, - fromBlock?: number, - toBlock?: number, - ): Promise { - return this.cached( - ["getVotingPowerBreakdown", address, fromBlock, toBlock], - async () => { - const eventFilter = this.contract.filters.VoteChange( - address, - undefined, - ); - const voteChangeEvents = await this.getEvents( - eventFilter, - fromBlock, - toBlock, - ); - - const breakdownsByVoter: Record< - string, // voter address - { - power: BigNumber; - fromDelegators: BigNumber; - byDelegator: Record< - string, // delegator address - BigNumber - >; - } - > = {}; - - for (const { args } of voteChangeEvents) { - const { from, to, amount } = args; - - if (!breakdownsByVoter[to]) { - breakdownsByVoter[to] = { - power: BigNumber.from(0), - fromDelegators: BigNumber.from(0), - byDelegator: {}, - }; - } - - breakdownsByVoter[to].power = breakdownsByVoter[to].power.add(amount); - - // ignore self-delegation - if (from !== to) { - breakdownsByVoter[to].fromDelegators = - breakdownsByVoter[to].fromDelegators.add(amount); - breakdownsByVoter[to].byDelegator[from] = - breakdownsByVoter[to].byDelegator[from]?.add(amount) || amount; - } - } - - return Object.entries(breakdownsByVoter) - .filter(([, { power }]) => power.gt(0)) - .map(([address, { power, fromDelegators, byDelegator }]) => ({ - address, - votingPower: formatEther(power), - votingPowerFromDelegators: formatEther(fromDelegators), - delegators: Object.entries(byDelegator) - .filter(([, power]) => power.gt(0)) - .map(([address, power]) => ({ - address, - votingPower: formatEther(power), - })), - })); - }, - ); - } - - /** - * Change current delegate. - * @param signer - The Signer of the address delegating. - * @param delegate - The address to delegate to. - * @returns The transaction hash. - */ - async changeDelegate( - signer: Signer, - delegate: string, - options?: TransactionOptions, - ): Promise { - const transaction = await this.callWithSigner( - "delegate", - [delegate], - signer, - options, - ); - this.clearCached(); - return transaction.hash; - } - - /** - * Claim a grant and withdraw the tokens. - * @param signer - The Signer of the wallet with a grant to claim. - * @returns The transaction hash. - */ - async claim(signer: Signer, options?: TransactionOptions): Promise { - const transaction = await this.callWithSigner("claim", [], signer, options); - this.clearCached(); - return transaction.hash; - } -} - -/** - * A grant as it's stored in the contract. - * @category Data Sources - */ -export interface GrantData { - /** - * The total amount of tokens granted. - */ - allocation: string; - - /** - * The amount of tokens that have been withdrawn. - */ - withdrawn: string; - - /** - * The block number of when the grant starts. - */ - startBlock: number; - - /** - * The block number of when the full allocation is vested and any - * remaining balance can be withdrawn. - */ - expirationBlock: number; - - /** - * The block number after which any withdrawable tokens can be withdrawn. - */ - unlockBlock: number; - - /** - * The voting power provided by the grant. - */ - votingPower: string; - - /** - * The address that can vote with this grant's voting power. - */ - delegate: string; - - /** - * The specific range of enumerated tokens in the vault that belong to this - * grant. This is set when a grant is accepted with the `acceptGrant` method. - */ - range: [string, string]; -} - -/** - * @category Data Sources - */ -export interface VoterAddressWithPower { - address: string; - votingPower: string; -} - -/** - * @category Data Sources - */ -export interface VoterPowerBreakdown extends VoterAddressWithPower { - /** - * The total voting power from all wallets delegated to this voter. Does not - * include self-delegation. - */ - votingPowerFromDelegators: string; - /** - * All wallets delegated to this voter with the power they're delegating. Does - * not include self-delegation. - */ - delegators: VoterAddressWithPower[]; -} diff --git a/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.test.ts b/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.test.ts deleted file mode 100644 index ea6251fa..00000000 --- a/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -// TODO: Testing breaks when named imports are used for this package -import contractStub from "@council/contract-stub"; -import { IVotingVault__factory } from "@council/typechain"; -import { expect, test } from "@jest/globals"; -import { ethers } from "ethers"; -import { parseEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { mockProvider } from "src/testing/mockProvider"; -import { VotingVaultContractDataSource } from "./VotingVaultContractDataSource"; - -test("Fetches voting power correctly", async () => { - const vaultContract = setupMockVault(); - const votingPower = parseEther("100"); - vaultContract.callStatic.queryVotePower.resolves(votingPower); - - const context = new CouncilContext(mockProvider); - const dataSource = new VotingVaultContractDataSource(vaultContract, context); - const value = await dataSource.getVotingPower("0x0"); - - expect(parseEther(value)).toEqual(votingPower); -}); - -function setupMockVault() { - return contractStub.stubContract( - IVotingVault__factory.connect(ethers.constants.AddressZero, mockProvider), - ); -} diff --git a/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts b/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts deleted file mode 100644 index 3180084f..00000000 --- a/packages/council-sdk/src/datasources/votingVault/VotingVaultContractDataSource.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { - GSCVault, - IVotingVault, - IVotingVault__factory, -} from "@council/typechain"; -import { ethers } from "ethers"; -import { BytesLike, formatEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { ContractDataSource } from "src/datasources/base/contract/ContractDataSource"; -import { VotingVaultDataSource } from "./VotingVaultDataSource"; - -/** - * A DataSource with methods for making cached calls to any voting vault - * contract that implements `IVotingVault` or `GSCVault` from the Council - * protocol. - * @category Data Sources - */ -export class VotingVaultContractDataSource< - TVault extends IVotingVault | GSCVault = IVotingVault, - > - extends ContractDataSource - implements VotingVaultDataSource -{ - /** - * Create a new `VotingVaultContractDataSource` instance. - * @param vault - An `IVotingVault` or `GSCVault` instance from the - * `@council/typechain` package or the address of the vault contract. - */ - constructor(vault: TVault | string, context: CouncilContext) { - super( - typeof vault === "string" - ? (IVotingVault__factory.connect(vault, context.provider) as TVault) - : vault, - context, - ); - } - - /** - * Get the voting power owned by a given address in this vault. Returns "0" if - * the voting power is unable to be fetched. - * @param extraData - ABI encoded optional extra data used by some vaults, such - * as merkle proofs. - */ - async getVotingPower( - this: ContractDataSource, - address: string, - atBlock?: number, - extraData: BytesLike = "0x00", - ): Promise { - try { - // TODO: find a better solution for this. - // ethers.js will spit out an error message that we can't disable without turning off the - // logger. because the smart contract code for queryVotePower returns an error if the - // account is not found, it can flood the console with errors. this is a workaround until a - // better solution is found. - ethers.utils.Logger.setLogLevel(ethers.utils.Logger.levels.OFF); - // Using this.cached instead of this.call because the atBlock argument is - // required by the queryVotePower method, but we want the atBlock argument - // optional. So instead we make the cache key include the possibly - // undefined argument, then grab the latest block in the callback if it's - // not defined. This means that subsequent calls to getVotingPower will - // return a cached value unless explicitly called with a specific atBlock. - const votingPowerBigNumber = await this.cached( - ["queryVotePower", address, atBlock, extraData], - async () => { - return await this.contract.callStatic.queryVotePower( - address, - atBlock ?? (await this.context.provider.getBlockNumber()), - extraData, - ); - }, - ); - ethers.utils.Logger.setLogLevel(ethers.utils.Logger.levels.WARNING); - return formatEther(votingPowerBigNumber); - } catch (error) { - // TODO: how should dataSource errors be handled? - if (process.env.NODE_ENV === "development") { - console.error(error); - } - return "0"; - } - } -} diff --git a/packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts b/packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts deleted file mode 100644 index 6d3fe23a..00000000 --- a/packages/council-sdk/src/datasources/votingVault/VotingVaultDataSource.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { BytesLike } from "ethers"; -import { DataSource } from "src/datasources/base/DataSource"; - -/** - * An interface for fetching data from any voting vault. - * @category Data Sources - */ -export interface VotingVaultDataSource extends DataSource { - address: string; - - /** - * Get the voting power owned by a given address in this vault. - * @param extraData - Abi encoded optional extra data used by some vaults, - * such as merkle proofs - */ - getVotingPower: ( - address: string, - atBlock?: number, - extraData?: BytesLike, - ) => Promise; -} diff --git a/packages/council-sdk/src/example/index.ts b/packages/council-sdk/src/example/index.ts deleted file mode 100644 index 79394473..00000000 --- a/packages/council-sdk/src/example/index.ts +++ /dev/null @@ -1,73 +0,0 @@ -import addressList from "./ElementGoerliAddressList.json"; -import { getDefaultProvider, Wallet } from "ethers"; -import { - CouncilContext, - GSCVault, - GSCVotingContract, - LockingVault, - VestingVault, - VotingContract, -} from "src"; - -const defaultChainId = 5; -const provider = getDefaultProvider(process.env.PROVIDER_URI || defaultChainId); - -export async function main(): Promise { - const { addresses } = addressList; - - // create a context instance for the models to share - const context = new CouncilContext(provider); - - // create vault instances - const lockingVault = new LockingVault(addresses.lockingVault, context); - const vestingVault = new VestingVault(addresses.vestingVault, context); - const gscVault = new GSCVault(addresses.gscVault, context); - - // create a new VotingContract instance for general voting - const coreVoting = new VotingContract( - addresses.coreVoting, - [lockingVault, vestingVault], - context, - ); - - // create a new GSCVotingContract instance for GSC voting - const gscVoting = new GSCVotingContract( - addresses.gscVoting, - gscVault, - context, - ); - - // get some data - const coreProposals = await coreVoting.getProposals(); - for (const proposal of coreProposals) { - console.log(`${proposal.name} results:`, await proposal.getResults()); - } - - const gscMembers = await gscVoting.getVoters(); - for (const member of gscMembers) { - console.log( - `GSC Member, ${member.address}'s voting power:`, - await coreVoting.getVotingPower(member.address), - ); - } - - // submit transactions - const signer = new Wallet( - process.env.EXAMPLE_WALLET_PRIVATE_KEY as string, - provider, - ); - await lockingVault - .changeDelegate(signer, signer.address, { - onSubmitted: (hash) => { - console.log("transaction submitted", hash); - }, - }) - .then(() => { - console.log("Success!"); - }) - .catch((error) => { - console.error(error); - }); -} - -main(); diff --git a/packages/council-sdk/src/index.ts b/packages/council-sdk/src/index.ts deleted file mode 100644 index b942dcfc..00000000 --- a/packages/council-sdk/src/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -export * from "./context/context"; -export * from "./datasources/airdrop/AirdropContractDataSource"; -export * from "./datasources/airdrop/AirdropDataSource"; -export * from "./datasources/base/cached/CachedDataSource"; -export * from "./datasources/base/contract/ContractDataSource"; -export * from "./datasources/base/DataSource"; -export * from "./datasources/base/http/HTTPDataSource"; -export * from "./datasources/token/ERC20ContractDataSource"; -export * from "./datasources/token/TokenDataSource"; -export * from "./datasources/votingContract/CoreVotingContractDataSource"; -export * from "./datasources/votingContract/VotingContractDataSource"; -export * from "./datasources/votingVault/GSCVaultContractDataSource"; -export * from "./datasources/votingVault/LockingVaultContractDataSource"; -export type { - VoterAddressWithPower, - VoterPowerBreakdown, -} from "./datasources/votingVault/LockingVaultContractDataSource"; -export * from "./datasources/votingVault/VestingVaultContractDataSource"; -export * from "./datasources/votingVault/VotingVaultContractDataSource"; -export * from "./datasources/votingVault/VotingVaultDataSource"; -export * from "./models/Airdrop"; -export * from "./models/Model"; -export * from "./models/Proposal"; -export * from "./models/token/MockToken"; -export * from "./models/token/Token"; -export * from "./models/Vote"; -export * from "./models/Voter"; -export * from "./models/votingContract/GSCVotingContract"; -export * from "./models/votingContract/VotingContract"; -export * from "./models/votingVault/GSCVault"; -export * from "./models/votingVault/LockingVault"; -export * from "./models/votingVault/types"; -export * from "./models/votingVault/VestingVault"; -export * from "./models/votingVault/VotingVault"; -export * from "./utils/cached"; -export * from "./utils/getBlockDate"; -export * from "./utils/getVaultsWithPower"; -export * from "./utils/sumStrings"; diff --git a/packages/council-sdk/src/models/Airdrop.ts b/packages/council-sdk/src/models/Airdrop.ts deleted file mode 100644 index 3748fc05..00000000 --- a/packages/council-sdk/src/models/Airdrop.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { Signer } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { AirdropContractDataSource } from "src/datasources/airdrop/AirdropContractDataSource"; -import { AirdropDataSource } from "src/datasources/airdrop/AirdropDataSource"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { Model, ModelOptions } from "./Model"; -import { Token } from "./token/Token"; -import { LockingVault } from "./votingVault/LockingVault"; - -/** - * @category Models - */ -export interface AirdropOptions extends ModelOptions { - /** - * A data source to use instead of registering one with the `context`. If you - * pass in a data source, you take over the responsibility of registering it - * with the `context` to make it available to other models and data sources. - */ - dataSource?: AirdropDataSource; -} - -/** - * @category Models - */ -export class Airdrop extends Model { - address: string; - dataSource: AirdropDataSource; - - constructor( - address: string, - context: CouncilContext, - options?: AirdropOptions, - ) { - super(context, options); - this.address = address; - this.dataSource = - options?.dataSource || - context.registerDataSource( - { address }, - new AirdropContractDataSource(address, context), - ); - } - - /** - * Get a timestamp (in MS) of when the tokens can be reclaimed (removed by the - * owner). - */ - async getExpiration(): Promise { - const timestamp = await this.dataSource.getExpiration(); - return new Date(timestamp * 1000); - } - - /** - * Get The merkle root with deposits encoded into it as hash [address, amount] - */ - getMerkleRoot(): Promise { - return this.dataSource.getMerkleRoot(); - } - - /** - * Get the token that will be paid out. - */ - async getToken(): Promise { - const address = await this.dataSource.getToken(); - return new Token(address, this.context); - } - - /** - * Get the token balance of a given address - */ - getClaimedAmount(address: string): Promise { - return this.dataSource.getClaimedAmount(address); - } - - /** - * Get the address of the locking vault into which tokens will be deposited - * when someone claims and delegates in a single tx. - */ - async getLockingVault(): Promise { - const address = await this.dataSource.getLockingVault(); - return new LockingVault(address, this.context); - } - - /** - * Claims tokens from the airdrop and sends them to the user. - * @param signer - Signer. - * @param amount - Amount of tokens to claim. - * @param totalGrant - The total amount of tokens the user was granted. - * @param merkleProof - A set of hashes that can be used to reconstruct the - * path from a user (leaf) node to the merkle root, verifying that the user is - * part of the tree. - * @param destination - The address which will be credited with funds. - * @return - The transaction hash. - */ - async claim( - signer: Signer, - amount: string, - totalGrant: string, - merkleProof: string[], - destination?: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.claim( - signer, - amount, - totalGrant, - merkleProof, - destination, - options, - ); - } - - /** - * Claims tokens from the airdrop, deposits it into the locking vault, and - * delegates in a single transaction. - * @param signer - Signer. - * @param amount - Amount of tokens to claim. - * @param delegate - The address the user will delegate to, WARNING - should not be zero. - * @param totalGrant - The total amount of tokens the user was granted. - * @param merkleProof - A set of hashes that can be used to reconstruct the - * path from a user (leaf) node to the merkle root, verifying that the user is - * part of the tree. - * @param destination - The address which will be credited with funds. - * @return - The transaction hash. - */ - async claimAndDelegate( - signer: Signer, - amount: string, - delegate: string, - totalGrant: string, - merkleProof: string[], - destination?: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.claimAndDelegate( - signer, - amount, - delegate, - totalGrant, - merkleProof, - destination, - options, - ); - } -} diff --git a/packages/council-sdk/src/models/Model.ts b/packages/council-sdk/src/models/Model.ts deleted file mode 100644 index 51052af9..00000000 --- a/packages/council-sdk/src/models/Model.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { CouncilContext } from "src/context/context"; - -/** - * @category Models - */ -export interface ModelOptions { - /** - * An arbitrary name for the instance. This is for convenience only (e.g., - * display name, debugging) and has no affect on the model's behavior. - */ - name?: string; -} - -/** - * Base model class extended by all others - * @category Models - */ -export class Model { - // TODO: Remove hard requirement on context or create default from a lighter - // argument like provider or rpcUrl. - context: CouncilContext; - name: string; - - constructor(context: CouncilContext, options?: ModelOptions) { - this.context = context; - this.name = options?.name ?? this.constructor.name; - } -} diff --git a/packages/council-sdk/src/models/Proposal.ts b/packages/council-sdk/src/models/Proposal.ts deleted file mode 100644 index 72af5573..00000000 --- a/packages/council-sdk/src/models/Proposal.ts +++ /dev/null @@ -1,322 +0,0 @@ -import { BytesLike, Signer } from "ethers"; -import { parseEther } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { - Actions, - Ballot, - ProposalData, - VoteResults, -} from "src/datasources/votingContract/VotingContractDataSource"; -import { getVaultsWithPower } from "src/utils/getVaultsWithPower"; -import { sumStrings } from "src/utils/sumStrings"; -import { Model, ModelOptions } from "./Model"; -import { Vote } from "./Vote"; -import { Voter } from "./Voter"; -import { VotingContract } from "./votingContract/VotingContract"; - -/** - * A model of a Proposal in Council - * @category Models - */ -export class Proposal extends Model { - id: number; - votingContract: VotingContract; - - /** - * Create a new Proposal model instance. - * @param id - The id of the proposal in the voting contract. - * @param votingContract - the voting contract in which this proposal was - * created. - */ - constructor( - id: number, - votingContract: VotingContract | string, - context: CouncilContext, - options?: ModelOptions, - ) { - super(context, { - ...options, - name: options?.name ?? `Proposal ${id}`, - }); - this.id = id; - this.votingContract = - votingContract instanceof VotingContract - ? votingContract - : new VotingContract(votingContract, [], context); - } - - /** - * Get the base set of data returned from fetching a proposal. The data - * returned will depend whether this proposal has been executed. Once - * executed, the proposal is deleted from the voting contract and only a - * preview of the data from the logs can be fetched. - * - * Additionally, if this proposal instance was initiated with an invalid id, - * then only the id provided will be available. - */ - async getData(): Promise> { - const data = await this.votingContract.dataSource.getProposal(this.id); - if (data) { - return data; - } - const allDataPreviews = await this.votingContract.dataSource.getProposals(); - const dataPreview = allDataPreviews.find(({ id }) => id === this.id); - return { - id: this.id, - createdBlock: dataPreview?.createdBlock, - unlockBlock: dataPreview?.unlockBlock, - expirationBlock: dataPreview?.expirationBlock, - }; - } - - /** - * Get the array of addresses that will be called (targets) and the data - * they'll be called with (calldatas) by a proposal. - */ - getTargetsAndCalldatas(): Promise { - return this.votingContract.dataSource.getTargetsAndCalldatas(this.id); - } - - /** - * Get the hash of this proposal, used by its voting contract to verify the - * proposal data on execution. Not available on executed proposals. - */ - async getHash(): Promise { - const data = await this.getData(); - return data?.hash || null; - } - - /** - * Get the required quorum for this proposal to be executed. If the sum of - * voting power from all casted votes does not meet or exceed this number, - * then the proposal is not passing quorum. Not available on executed - * proposals. - */ - async getRequiredQuorum(): Promise { - const data = await this.getData(); - return data?.requiredQuorum || null; - } - - /** - * Get the block number of when this proposal was created. Will only be null - * if this proposal instance was initiated with an invalid id. - */ - async getCreatedBlock(): Promise { - const data = await this.getData(); - return data?.createdBlock || null; - } - - /** - * Get the block number of when this proposal can be executed. Will only be - * null if this proposal instance was initiated with an invalid id. - */ - async getUnlockBlock(): Promise { - const data = await this.getData(); - return data?.unlockBlock || null; - } - - async getCreatedBy(): Promise { - return this.votingContract.dataSource.getProposalCreatedBy(this.id); - } - - /** - * Get the hash of the transaction that created the proposal, or null if - * the Proposal doesn't exist. - * @returns The transaction hash - */ - getCreatedTransactionHash(): Promise { - return this.votingContract.dataSource.getProposalCreatedTransactionHash( - this.id, - ); - } - - /** - * Get the block number of when this voting ends for this proposal. Will only - * be null if this proposal instance was initiated with an invalid id. - */ - async getExpirationBlock(): Promise { - const data = await this.getData(); - return data?.expirationBlock || null; - } - - /** - * Get the block number after which this proposal can no longer be executed. - * Not available on executed proposals. - */ - async getLastCallBlock(): Promise { - const data = await this.getData(); - return data?.lastCallBlock || null; - } - - /** - * Get a boolean indicating whether this proposal is still active. Proposals - * are active during their voting period, i.e., from creation block up to - * expiration block or execution. Returns false if the current block is later - * than this proposal's expiration or this proposal has been executed. - */ - async getIsActive(): Promise { - const expirationBlock = await this.getExpirationBlock(); - if (!expirationBlock) { - return false; - } - const latestBlock = await this.context.provider.getBlockNumber(); - return expirationBlock > latestBlock && !(await this.getIsExecuted()); - } - - /** - * Get a boolean indicating whether this proposal has been executed. - * @param atBlock - The block number to check. If this proposal was executed - * on or before this block, this will return true. - */ - async getIsExecuted(atBlock?: number): Promise { - const deletedIds = - await this.votingContract.dataSource.getExecutedProposalIds( - undefined, - atBlock, - ); - return deletedIds.includes(this.id); - } - - /** - * Get the hash of the transaction that executed the proposal, or null if - * the Proposal wasn't executed. - * @returns The transaction hash - */ - getExecutedTransactionHash(): Promise { - return this.votingContract.dataSource.getProposalExecutedTransactionHash( - this.id, - ); - } - - /** - * Get the casted vote for a given address on this proposal. - * @param address - The address that casted the vote. - */ - async getVote(address: string): Promise { - const vote = await this.votingContract.dataSource.getVote(address, this.id); - return ( - vote && - new Vote( - vote.power, - vote.ballot, - new Voter(address, this.context), - this, - this.context, - ) - ); - } - - /** - * Get all casted votes on this proposal - * @param fromBlock - Include all votes casted on or after this block number. - * @param toBlock - Include all votes casted on or before this block number. - */ - async getVotes(fromBlock?: number, toBlock?: number): Promise { - return this.votingContract.getVotes(undefined, this.id, fromBlock, toBlock); - } - - /** - * Get the usable voting power of a given address for this proposal determined - * by its creation block. Any changes to voting power after the creation block - * of this proposal does not apply to this proposal and therefore will not be - * reflected. - * @param extraData - ABI encoded optional extra data used by some vaults, such - * as merkle proofs. - */ - async getVotingPower( - address: string, - extraData?: BytesLike[], - ): Promise { - const createdBlock = await this.getCreatedBlock(); - if (!createdBlock) { - return null; - } - return this.votingContract.getVotingPower(address, createdBlock, extraData); - } - - /** - * Get the total voting power of all votes on this proposal by their ballot. - */ - getResults(): Promise { - return this.votingContract.dataSource.getResults(this.id); - } - - /** - * Get the current quorum of this proposal measured by summing the voting - * power of all casted votes. - */ - async getCurrentQuorum(): Promise { - const results = await this.getResults(); - return sumStrings(Object.values(results)); - } - - /** - * Get a boolean indicating whether this proposal can be executed. Proposals - * can only be executed if the quorum requirement has been met, there are more - * yes votes than no votes, and the current block is between the unlock and - * last call blocks. - */ - async getIsExecutable(): Promise { - const unlockBlock = await this.getUnlockBlock(); - const lastCallBlock = await this.getLastCallBlock(); - const requiredQuorum = await this.getRequiredQuorum(); - if (!unlockBlock || !requiredQuorum || !lastCallBlock) { - return false; - } - - const latestBlock = await this.context.provider.getBlockNumber(); - if (latestBlock < unlockBlock || latestBlock > lastCallBlock) { - return false; - } - - const currentQuorum = await this.getCurrentQuorum(); - const results = await this.getResults(); - return ( - parseEther(currentQuorum).gte(parseEther(requiredQuorum)) && - parseEther(results.yes).gt(parseEther(results.no)) - ); - } - - /** - * Execute a proposal. - * @param signer - An ethers Signer instance. - * @returns The transaction hash. - */ - execute(signer: Signer, options?: TransactionOptions): Promise { - return this.votingContract.dataSource.executeProposal( - signer, - this.id, - options, - ); - } - - /** - * Vote on this proposal. - * @param signer - An ethers Signer instance for the voter. - * @param ballot - The ballot to cast. - * @returns The transaction hash. - */ - async vote( - signer: Signer, - ballot: Ballot, - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation. - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const vaults = await getVaultsWithPower( - await signer.getAddress(), - this.votingContract.vaults, - ); - return this.votingContract.dataSource.vote( - signer, - vaults.map(({ address }) => address), - this.id, - ballot, - options, - ); - } -} diff --git a/packages/council-sdk/src/models/Vote.ts b/packages/council-sdk/src/models/Vote.ts deleted file mode 100644 index e3934ca1..00000000 --- a/packages/council-sdk/src/models/Vote.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CouncilContext } from "src/context/context"; -import { Ballot } from "src/datasources/votingContract/VotingContractDataSource"; -import { Model, ModelOptions } from "./Model"; -import { Proposal } from "./Proposal"; -import { Voter } from "./Voter"; - -/** - * @category Models - */ -export class Vote extends Model { - power: string; - ballot: Ballot; - proposal: Proposal; - voter: Voter; - - constructor( - power: string, - ballot: Ballot, - voter: Voter, - proposal: Proposal, - context: CouncilContext, - options?: ModelOptions, - ) { - super(context, options); - this.power = power; - this.ballot = ballot; - this.proposal = proposal; - this.voter = voter; - } -} diff --git a/packages/council-sdk/src/models/Voter.ts b/packages/council-sdk/src/models/Voter.ts deleted file mode 100644 index 31981507..00000000 --- a/packages/council-sdk/src/models/Voter.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { BytesLike } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { sumStrings } from "src/utils/sumStrings"; -import { Model, ModelOptions } from "./Model"; -import { Vote } from "./Vote"; -import { VotingContract } from "./votingContract/VotingContract"; -import { VotingVault } from "./votingVault/VotingVault"; - -/** - * A participant in Council - * @category Models - */ -export class Voter extends Model { - address: string; - - constructor( - address: string, - context: CouncilContext, - options?: ModelOptions, - ) { - super(context, options); - this.address = address; - } - - /** - * Get the total voting power for this Voter from a given list of vaults. - * @param extraData - ABI encoded optional extra data used by some vaults, such - * as merkle proofs. - */ - async getVotingPower( - vaults: (string | VotingVault)[], - atBlock?: number, - extraData?: BytesLike[], - ): Promise { - const vaultPowers = vaults.map((vault, i) => { - if (typeof vault === "string") { - vault = new VotingVault(vault, this.context); - } - return vault.getVotingPower(this.address, atBlock, extraData?.[i]); - }); - return sumStrings(await Promise.all(vaultPowers)); - } - - /** - * Get the casted votes for this Voter in a given Voting Contract - */ - async getVotes(votingContractAddress: string): Promise { - const votingContract = new VotingContract( - votingContractAddress, - [], - this.context, - ); - return votingContract.getVotes(this.address); - } - - /** - * Get the number of proposals this Voter has voted on and the number of - * proposals that they were able to vote on. If the numbers are the same, then - * this Voter has voted on every proposal they were able to. - */ - async getParticipation( - votingContractAddress: string, - vaults: (string | VotingVault)[], - ): Promise<[number, number]> { - const votingContract = new VotingContract( - votingContractAddress, - vaults, - this.context, - ); - return await votingContract.getParticipation(this.address); - } -} diff --git a/packages/council-sdk/src/models/token/MockToken.ts b/packages/council-sdk/src/models/token/MockToken.ts deleted file mode 100644 index 28d1679c..00000000 --- a/packages/council-sdk/src/models/token/MockToken.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Signer } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { MockERC20ContractDataSource } from "src/datasources/token/MockERC20ContractDataSource"; -import { Token, TokenOptions } from "./Token"; - -export interface MockTokenOptions extends TokenOptions { - dataSource?: MockERC20ContractDataSource; -} - -export class MockToken extends Token { - constructor( - address: string, - context: CouncilContext, - options?: TokenOptions, - ) { - super(address, context, { - ...options, - name: options?.name ?? "Mock Token", - dataSource: - options?.dataSource || - context.registerDataSource( - { address }, - new MockERC20ContractDataSource(address, context), - ), - }); - } - - /** - * Mint new tokens - * @param signer - Signer. - * @param account - The account to add tokens to. - * @param amount - The amount of tokens (as a decimal string) to add. - * @return - The transaction hash. - */ - mint( - signer: Signer, - account: string, - amount: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.mint(signer, account, amount, options); - } - - /** - * Modify an account's balance. - * @param signer - Signer. - * @param account - The account to set balance for. - * @param balance - The new balance (as a decimal string) for the account. - * @return - The transaction hash. - */ - async setBalance( - signer: Signer, - account: string, - balance: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.setBalance(signer, account, balance, options); - } - - /** - * Modify an account's allowance. - * @param signer - Signer. - * @param account - The address of the owner to set allowance for. - * @param spender - The address of the spender to set allowance for. - * @param balance - The new balance (as a decimal string) for the account. - * @return - The transaction hash. - */ - async setAllowance( - signer: Signer, - owner: string, - spender: string, - allowance: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.setAllowance( - signer, - owner, - spender, - allowance, - options, - ); - } -} diff --git a/packages/council-sdk/src/models/token/Token.ts b/packages/council-sdk/src/models/token/Token.ts deleted file mode 100644 index e0c0ffc4..00000000 --- a/packages/council-sdk/src/models/token/Token.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { Signer } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { ERC20ContractDataSource } from "src/datasources/token/ERC20ContractDataSource"; -import { TokenDataSource } from "src/datasources/token/TokenDataSource"; -import { Model, ModelOptions } from "src/models/Model"; - -/** - * @category Models - */ -export interface TokenOptions< - TDataSource extends TokenDataSource = TokenDataSource, -> extends ModelOptions { - /** - * A data source to use instead of registering one with the `context`. If you - * pass in a data source, you take over the responsibility of registering it - * with the `context` to make it available to other models and data sources. - */ - dataSource?: TDataSource; -} - -/** - * @category Models - */ -export class Token< - TDataSource extends TokenDataSource = TokenDataSource, -> extends Model { - address: string; - dataSource: TDataSource; - - constructor( - address: string, - context: CouncilContext, - options?: TokenOptions, - ) { - super(context, options); - this.address = address; - this.dataSource = (options?.dataSource || - context.registerDataSource( - { address }, - new ERC20ContractDataSource(address, context), - )) as TDataSource; - } - - /** - * Get the symbol for this token. - */ - getSymbol(): Promise { - return this.dataSource.getSymbol(); - } - - /** - * Get the number of decimal places this token uses. - */ - getDecimals(): Promise { - return this.dataSource.getDecimals(); - } - - /** - * Get the name of this token - */ - getName(): Promise { - return this.dataSource.getName(); - } - - /** - * Get the spending allowance of a given spender for a given owner of this - * token. - */ - getAllowance(owner: string, spender: string): Promise { - return this.dataSource.getAllowance(owner, spender); - } - - /** - * Get the token balance of a given address - */ - getBalanceOf(address: string): Promise { - return this.dataSource.getBalanceOf(address); - } - - /** - * Give a spending allowance to a given spender. - * @param signer - The Signer of the owner. - * @param spender - The address of the spender. - * @param amount - The amount of tokens the spender can spend. - * @returns The transaction hash. - */ - async approve( - signer: Signer, - spender: string, - amount: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.approve(signer, spender, amount, options); - } -} diff --git a/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts b/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts deleted file mode 100644 index c24ee003..00000000 --- a/packages/council-sdk/src/models/votingContract/GSCVotingContract.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { BytesLike, Signer } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { Voter } from "src/models/Voter"; -import { GSCVault } from "src/models/votingVault/GSCVault"; -import { VotingVault } from "src/models/votingVault/VotingVault"; -import { VotingContract, VotingContractOptions } from "./VotingContract"; - -/** - * A model of a CoreVoting contract intended to be used by the Governance - * Steering Council. - * @category Models - */ -export class GSCVotingContract extends VotingContract<[GSCVault]> { - /** - * Create a new iGSCVotingContract model instance. - * @param address - The address of the deployed contract. - * @param gscVault - The GSCVault instance or address of the approved GSC vault. - */ - constructor( - address: string, - gscVault: GSCVault | string, - context: CouncilContext, - options?: VotingContractOptions, - ) { - super( - address, - [ - gscVault instanceof GSCVault - ? gscVault - : new GSCVault(gscVault, context), - ], - context, - { - ...options, - name: options?.name ?? "GSC Voting", - }, - ); - } - - /** - * Get all participants that have voting power in this voting contract. - * @param fromBlock - The block number to start searching for voters from. - * @param toBlock - The block number to stop searching for voters at. - */ - getVoters(fromBlock?: number, toBlock?: number): Promise { - return this.vaults[0].getVoters(fromBlock, toBlock); - } - - /** - * Get the amount of voting power required to join this voting contract. - */ - getRequiredVotingPower(): Promise { - return this.vaults[0].getRequiredVotingPower(); - } - - /** - * Get the join date of a given member. - */ - getJoinDate(address: string): Promise { - return this.vaults[0].getJoinDate(address); - } - - /** - * Get a boolean indicating whether a given address is a current member. - */ - getIsMember(address: string): Promise { - return this.vaults[0].getIsMember(address); - } - - /** - * Get the time (in MS) that a new GSC member must wait after joining before - * they can vote. - */ - getIdleDuration(): Promise { - return this.vaults[0].getIdleDuration(); - } - - /** - * Get a boolean indicating whether a member is still in the idle duration. - * Idle members cannot vote. - */ - getIsIdle(address: string): Promise { - return this.vaults[0].getIsIdle(address); - } - - /** - * Get the voting vaults a member joined with. Used to prove the member meets - * the minimum voting power requirement. - */ - getMemberVaults(address: string): Promise { - return this.vaults[0].getMemberVaults(address); - } - - /** - * Become a member of this GSC voting contract. - * @param signer - The Signer of the joining member. - * @param vaults - The addresses of the approved vaults the joining member has - * voting power in. This is used to prove the joining member meets the - * minimum voting power requirement. If voting power is moved to a different - * vault, the member will become ineligible until they join again with the - * new vault or risk being kicked. - * @returns The transaction hash. - */ - async join( - signer: Signer, - vaults: string[], - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - return this.vaults[0].join(signer, vaults, options); - } - - /** - * Remove a member that's become ineligible from this GSC vault. A member - * becomes ineligible when the voting power in the vaults they joined with - * drops below the required minimum. - * @param signer - The Signer of the wallet paying to kick. - * @param member - The address of the ineligible member to kick. - * @returns The transaction hash. - */ - kick( - signer: Signer, - member: string, - options?: TransactionOptions & { - /** - * The extra data the vaults need to load the member's voting power - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - return this.vaults[0].kick(signer, member, options); - } -} diff --git a/packages/council-sdk/src/models/votingContract/VotingContract.ts b/packages/council-sdk/src/models/votingContract/VotingContract.ts deleted file mode 100644 index 46e572e4..00000000 --- a/packages/council-sdk/src/models/votingContract/VotingContract.ts +++ /dev/null @@ -1,353 +0,0 @@ -import { Signer } from "ethers"; -import { BytesLike, parseEther } from "ethers/lib/utils"; -import uniqBy from "lodash.uniqby"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { CoreVotingContractDataSource } from "src/datasources/votingContract/CoreVotingContractDataSource"; -import { - Ballot, - VotingContractDataSource, -} from "src/datasources/votingContract/VotingContractDataSource"; -import { Model, ModelOptions } from "src/models/Model"; -import { Proposal } from "src/models/Proposal"; -import { Vote } from "src/models/Vote"; -import { Voter } from "src/models/Voter"; -import { - VoterPowerBreakdown, - VoterWithPower, -} from "src/models/votingVault/types"; -import { VotingVault } from "src/models/votingVault/VotingVault"; -import { sumStrings } from "src/utils/sumStrings"; - -/** - * @category Models - */ -export interface VotingContractOptions extends ModelOptions { - /** - * A data source to use instead of registering one with the `context`. If you - * pass in a data source, you take over the responsibility of registering it - * with the `context` to make it available to other models and data sources. - */ - dataSource?: VotingContractDataSource; -} - -/** - * A model of a CoreVoting contract. - * @category Models - */ -export class VotingContract< - TVaults extends VotingVault[] = VotingVault[], -> extends Model { - address: string; - dataSource: VotingContractDataSource; - vaults: TVaults; - - /** - * Create a new VotingContract model instance. - * @param address - The address of the deployed contract. - * @param vaults - The VotingVault instances or addresses of the vaults that are - * approved for this voting contract. - */ - constructor( - address: string, - vaults: (VotingVault | string)[], - context: CouncilContext, - options?: VotingContractOptions, - ) { - super(context, { - ...options, - name: options?.name ?? "Core Voting", - }); - this.address = address; - this.vaults = vaults.map((vault) => - vault instanceof VotingVault - ? vault - : new VotingVault(vault, this.context), - ) as TVaults; - this.dataSource = - options?.dataSource || - this.context.registerDataSource( - { address }, - new CoreVotingContractDataSource(address, context), - ); - } - - /** - * Get a proposal by id. - */ - getProposal(id: number): Proposal { - return new Proposal(id, this, this.context); - } - - /** - * Get all proposals ever created. - * @param fromBlock - Include all proposals created on or after this block number. - * @param toBlock - Include all proposals created on or before this block number. - */ - async getProposals( - fromBlock?: number, - toBlock?: number, - ): Promise { - const proposals = await this.dataSource.getProposals(fromBlock, toBlock); - return proposals.map(({ id }) => new Proposal(id, this, this.context)); - } - - /** - * Create a new proposal. - * @param signer - An ethers Signer instance for the voter. - * @param vaults - The addresses of the approved vaults to draw voting power - * from. - * @param targets - The targets (contract addresses) to call. - * @param calldatas - The execution calldata for each target. - * @param lastCall - The block number after which the proposal can't be executed. - * @param ballot: The initial vote from the signer's account. - * @returns The transaction hash. - */ - createProposal( - signer: Signer, - vaults: (string | VotingVault)[], - targets: string[], - calldatas: BytesLike[], - lastCall: number, - ballot: Ballot, - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const vaultAddresses = vaults.map((vault) => - vault instanceof VotingVault ? vault.address : vault, - ); - return this.dataSource.createProposal( - signer, - vaultAddresses, - targets, - calldatas, - lastCall, - ballot, - options, - ); - } - - /** - * Get the sum of voting power held by all voters in this voting contract. - */ - async getTotalVotingPower(atBlock?: number): Promise { - const vaultPowers = await Promise.all( - this.vaults.map((vault) => vault.getTotalVotingPower?.(atBlock) || "0"), - ); - return sumStrings(vaultPowers); - } - - /** - * Get the voting power owned by a given address in this voting contract. - * @param extraData - ABI encoded optional extra data used by some vaults, such - * as merkle proofs. - */ - async getVotingPower( - address: string, - atBlock?: number, - extraData?: BytesLike[], - ): Promise { - const vaultPowers = await Promise.all( - this.vaults.map((vault, i) => - vault.getVotingPower(address, atBlock, extraData?.[i]), - ), - ); - return sumStrings(vaultPowers); - } - - /** - * Get all participants that have voting power in this voting contract. - */ - async getVoters(): Promise { - const vaultVoters = await Promise.all( - this.vaults.map((vault) => vault.getVoters?.() || []), - ); - const mergedVotersList = ([] as Voter[]).concat(...vaultVoters); - return uniqBy(mergedVotersList, (voter) => voter.address); - } - - /** - * Get all participants that have voting power in this voting contract along - * with their voting power, the amount of voting power being delegated to - * them, and the amount of power delegated to them by each delegator. This is - * a convenience method to fetch voting power and delegation data for a large - * number of voters in a single call. - * @param address - Get a breakdown for a specific address. - * @param fromBlock - Include all voters that had power on or after this block - * number. - * @param toBlock - Include all voters that had power on or before this block - * number. - */ - async getVotingPowerBreakdown( - address?: string, - fromBlock?: number, - toBlock?: number, - ): Promise { - // get a list of breakdowns for each vault - const vaultBreakdowns = await Promise.all( - this.vaults.map( - (vault) => - vault.getVotingPowerBreakdown?.(address, fromBlock, toBlock) || [], - ), - ); - - // concatenate them together into a single array - const mergedBreakdownsList = ([] as VoterPowerBreakdown[]).concat( - ...vaultBreakdowns, - ); - - // create a temp object to merge unique addresses - const breakdownsByVoter: Record< - string, - VoterWithPower & { - fromDelegators: string; - byDelegator: Record; - } - > = {}; - - for (const { - voter, - votingPower, - votingPowerFromDelegators, - delegators, - } of mergedBreakdownsList) { - const breakdown = breakdownsByVoter[voter.address]; - - if (!breakdown) { - // Add a breakdown for this voter in the unique list - breakdownsByVoter[voter.address] = { - voter, - votingPower, - fromDelegators: votingPowerFromDelegators, - // key delegators by their address - byDelegator: Object.fromEntries( - delegators.map((delegatorWithPower) => [ - delegatorWithPower.voter.address, - delegatorWithPower, - ]), - ), - }; - } else { - // if a breakdown for this voter already exists, then merge with the - // current one. - breakdown.votingPower = sumStrings([ - breakdown.votingPower, - votingPower, - ]); - breakdown.fromDelegators = sumStrings([ - breakdown.fromDelegators, - votingPowerFromDelegators, - ]); - - for (const delegatorWithPower of delegators) { - if (!breakdown.byDelegator[delegatorWithPower.voter.address]) { - // Add the delegator with power to the breakdown in the unique list - breakdown.byDelegator[delegatorWithPower.voter.address] = - delegatorWithPower; - } else { - breakdown.byDelegator[ - delegatorWithPower.voter.address - ].votingPower = sumStrings([ - breakdown.byDelegator[delegatorWithPower.voter.address] - .votingPower, - delegatorWithPower.votingPower, - ]); - } - } - } - } - return Object.values(breakdownsByVoter).map( - ({ voter, votingPower, fromDelegators, byDelegator }) => ({ - voter, - votingPower, - votingPowerFromDelegators: fromDelegators, - delegators: Object.values(byDelegator), - }), - ); - } - - /** - * Get all casted votes on proposals in this voting contract. - * @param fromBlock - The starting block number for the range of blocks fetched. - * @param toBlock - The ending block number for the range of blocks fetched. - */ - async getVotes( - address?: string, - proposalId?: number, - fromBlock?: number, - toBlock?: number, - ): Promise { - const votes = await this.dataSource.getVotes( - address, - proposalId, - fromBlock, - toBlock, - ); - return votes.map( - ({ address, proposalId, power, ballot }) => - new Vote( - power, - ballot, - new Voter(address, this.context), - new Proposal(proposalId, this, this.context), - this.context, - ), - ); - } - - /** - * Get the number of proposals an address has voted on and the number of - * proposals that they were able to vote on. If the numbers are the same, then - * the address has voted on every proposal they were able to. - */ - async getParticipation(address: string): Promise<[number, number]> { - const votes = await this.getVotes(address); - const votedProposalIds = votes.map((vote) => vote.proposal.id); - const proposals = await this.getProposals(); - const proposalsNotVoted = await Promise.all( - proposals - .filter((proposal) => !votedProposalIds.includes(proposal.id)) - .map(async (proposal) => - // could be null if the proposal has been deleted and the created - // block can't be fetched. - parseEther((await proposal.getVotingPower(address)) || "0").gt(0), - ), - ); - const missedVotesCount = proposalsNotVoted.filter(Boolean).length; - return [proposals.length - missedVotesCount, proposals.length]; - } - - /** - * Change the number of blocks that must be waited before a proposal can be executed. - * @param signer - An ethers Signer instance for the voter. - * @param blocks - The number of blocks that must be waited. - * @returns The transaction hash. - */ - async setLockDuration( - signer: Signer, - blocks: number, - options?: TransactionOptions, - ): Promise { - return this.dataSource.setLockDuration(signer, blocks, options); - } - - /** - * Change whether a vault is approved or not. - * @param signer - An ethers Signer instance for the voter. - * @param address -The address of the vault. - * @param isValid - Whether or not the approved. - * @returns The transaction hash. - */ - changeVaultStatus( - signer: Signer, - address: string, - isValid: boolean, - options?: TransactionOptions, - ): Promise { - return this.dataSource.changeVaultStatus(signer, address, isValid, options); - } -} diff --git a/packages/council-sdk/src/models/votingVault/GSCVault.ts b/packages/council-sdk/src/models/votingVault/GSCVault.ts deleted file mode 100644 index 2cea29c4..00000000 --- a/packages/council-sdk/src/models/votingVault/GSCVault.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { BytesLike, Signer } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { GSCVaultContractDataSource } from "src/datasources/votingVault/GSCVaultContractDataSource"; -import { Voter } from "src/models/Voter"; -import { VotingVault, VotingVaultOptions } from "./VotingVault"; - -export interface GSCVaultOptions extends VotingVaultOptions { - dataSource?: GSCVaultContractDataSource; -} - -/** - * A VotingVault for the Governance Steering Council in which each member has a - * single vote and must maintain a minimum required voting power in the core - * voting vaults to remain eligible. - * @category Models - */ -export class GSCVault extends VotingVault { - constructor( - address: string, - context: CouncilContext, - options?: GSCVaultOptions, - ) { - super(address, context, { - ...options, - name: options?.name ?? "GSC Vault", - dataSource: - options?.dataSource ?? - context.registerDataSource( - { address, type: GSCVaultContractDataSource.type }, - new GSCVaultContractDataSource(address, context), - ), - }); - } - - /** - * Get the amount of voting power required to join this vault. - */ - getRequiredVotingPower(): Promise { - return this.dataSource.getRequiredVotingPower(); - } - - /** - * Get all current members of this vault. - * @param fromBlock - The block number to start searching for members from. - * @param toBlock - The block number to stop searching for members at. - */ - async getMembers(fromBlock?: number, toBlock?: number): Promise { - const addresses = await this.dataSource.getMembers(fromBlock, toBlock); - return addresses.map((address) => new Voter(address, this.context)); - } - - /** - * Get all voters with voting power in this vault (alias for `getMembers`). - * @param fromBlock - The block number to start searching for voters from. - * @param toBlock - The block number to stop searching for voters at. - */ - getVoters(fromBlock?: number, toBlock?: number): Promise { - return this.getMembers(fromBlock, toBlock); - } - - /** - * Get the join date of a given address. - */ - async getJoinDate(address: string): Promise { - const joinTimestamp = await this.dataSource.getJoinTimestamp(address); - return joinTimestamp ? new Date(joinTimestamp) : null; - } - - /** - * Get a boolean indicating whether a given address is a current member. - */ - async getIsMember(address: string): Promise { - return !!(await this.getJoinDate(address)); - } - - /** - * Get the time (in MS) that a new GSC member must wait after joining before - * they can vote. - */ - getIdleDuration(): Promise { - return this.dataSource.getIdleDuration(); - } - - /** - * Get a boolean indicating whether a member is still in the idle duration. - * Idle members cannot vote. - */ - async getIsIdle(address: string): Promise { - const joinDate = await this.getJoinDate(address); - const isMember = !!joinDate; - return ( - isMember && - joinDate.getTime() + (await this.getIdleDuration()) > Date.now() - ); - } - - /** - * Get the voting vaults a member joined with. Used to prove the member meets - * the minimum voting power requirement. - */ - async getMemberVaults(address: string): Promise { - const vaultAddresses = await this.dataSource.getMemberVaults(address); - return vaultAddresses.map( - (address) => new VotingVault(address, this.context), - ); - } - - /** - * Become a member of this GSC vault. - * @param signer - The Signer of the joining member. - * @param vaults - The addresses of the approved vaults the joining member has - * voting power in. This is used to prove the joining member meets the - * minimum voting power requirement. If voting power is moved to a different - * vault, the member will become ineligible until they join again with the - * new vault or risk being kicked. - * @returns The transaction hash. - */ - async join( - signer: Signer, - vaults: (string | VotingVault)[], - options?: TransactionOptions & { - /** - * Extra data given to the vaults to help calculation - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - const vaultAddresses = vaults.map((vault) => - vault instanceof VotingVault ? vault.address : vault, - ); - return this.dataSource.join(signer, vaultAddresses, options); - } - - /** - * Remove a member that's become ineligible from this GSC vault. A member - * becomes ineligible when the voting power in the vaults they joined with - * drops below the required minimum. - * @param signer - The Signer of the wallet paying to kick. - * @param member - The address of the ineligible member to kick. - * @returns The transaction hash. - */ - kick( - signer: Signer, - member: string, - options?: TransactionOptions & { - /** - * The extra data the vaults need to load the member's voting power - */ - extraVaultData?: BytesLike[]; - }, - ): Promise { - return this.dataSource.kick(signer, member, options); - } -} diff --git a/packages/council-sdk/src/models/votingVault/LockingVault.ts b/packages/council-sdk/src/models/votingVault/LockingVault.ts deleted file mode 100644 index df0991b9..00000000 --- a/packages/council-sdk/src/models/votingVault/LockingVault.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { Signer } from "ethers"; -import { parseUnits } from "ethers/lib/utils"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { LockingVaultContractDataSource } from "src/datasources/votingVault/LockingVaultContractDataSource"; -import { Token } from "src/models/token/Token"; -import { Voter } from "src/models/Voter"; -import { VoterPowerBreakdown } from "src/models/votingVault/types"; -import { sumStrings } from "src/utils/sumStrings"; -import { VotingVault, VotingVaultOptions } from "./VotingVault"; - -export interface LockingVaultOptions extends VotingVaultOptions { - dataSource?: LockingVaultContractDataSource; -} - -/** - * A VotingVault that gives voting power for depositing tokens. - * @category Models - */ -export class LockingVault extends VotingVault { - constructor( - address: string, - context: CouncilContext, - options?: LockingVaultOptions, - ) { - super(address, context, { - ...options, - name: options?.name ?? "Locking Vault", - dataSource: - options?.dataSource ?? - context.registerDataSource( - { address, type: LockingVaultContractDataSource.type }, - new LockingVaultContractDataSource(address, context), - ), - }); - } - - /** - * Get the associated token for this LockingVault. - */ - async getToken(): Promise { - const address = await this.dataSource.getToken(); - return new Token(address, this.context); - } - - /** - * Get the amount of tokens that a given `address` has deposited into this - * vault. - */ - getDepositedBalance(address: string): Promise { - return this.dataSource.getDepositedBalance(address); - } - - /** - * Get all participants with voting power in this vault. - * @param fromBlock - Include all voters that had power on or after this block number. - * @param toBlock - Include all voters that had power on or before this block number. - */ - async getVoters(fromBlock?: number, toBlock?: number): Promise { - const votersWithPower = await this.dataSource.getVotingPowerBreakdown( - undefined, - fromBlock, - toBlock, - ); - return votersWithPower.map( - ({ address }) => new Voter(address, this.context), - ); - } - - /** - * Get all participants that have voting power in this vault along with their - * voting power, the amount of voting power being delegated to them, and the - * amount of power delegated to them by each delegator. This is a convenience - * method to fetch voting power and delegation data for a large number of - * voters in a single call. - * @param address - Get a breakdown for a specific address. - * @param fromBlock - Include all voters that had power on or after this block - * number. - * @param toBlock - Include all voters that had power on or before this block - * number. - */ - async getVotingPowerBreakdown( - address?: string, - fromBlock?: number, - toBlock?: number, - ): Promise { - const voterPowerBreakdowns = await this.dataSource.getVotingPowerBreakdown( - address, - fromBlock, - toBlock, - ); - return voterPowerBreakdowns.map( - ({ address, votingPower, votingPowerFromDelegators, delegators }) => ({ - voter: new Voter(address, this.context), - votingPower, - votingPowerFromDelegators, - delegators: delegators.map(({ address, votingPower }) => ({ - voter: new Voter(address, this.context), - votingPower, - })), - }), - ); - } - - /** - * Get the number of blocks before the delegation history is forgotten. Voting - * power from this vault can't be used on proposals that are older than the - * stale block lag. - */ - getStaleBlockLag(): Promise { - return this.dataSource.getStaleBlockLag(); - } - - /** - * Get the voting power for a given address at a given block without - * accounting for the stale block lag. - */ - async getHistoricalVotingPower( - address: string, - atBlock?: number, - ): Promise { - return this.dataSource.getHistoricalVotingPower(address, atBlock); - } - - /** - * Get the sum of voting power held by all voters in this Vesting Vault. - * @param atBlock - Get the total held at this block number. - */ - async getTotalVotingPower(atBlock?: number): Promise { - const allVotersWithPower = await this.dataSource.getVotingPowerBreakdown( - undefined, - undefined, - atBlock, - ); - return sumStrings(allVotersWithPower.map(({ votingPower }) => votingPower)); - } - - /** - * Get the current delegate of a given address. - */ - async getDelegate(address: string): Promise { - const delegateAddress = await this.dataSource.getDelegate(address); - return new Voter(delegateAddress, this.context); - } - - /** - * Get all voters delegated to a given address in this vault. - */ - async getDelegatorsTo(address: string, atBlock?: number): Promise { - const delegators = await this.dataSource.getDelegatorsTo(address, atBlock); - return delegators.map(({ address }) => new Voter(address, this.context)); - } - - /** - * Change current delegate. - * @param signer - The Signer of the address delegating. - * @param delegate - The address to delegate to. - * @returns The transaction hash. - */ - changeDelegate( - signer: Signer, - delegate: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.changeDelegate(signer, delegate, options); - } - - /** - * Deposit tokens into this vault. - * @param signer - The Signer of the wallet with the tokens. - * @param account - The address to credit this deposit to. - * @param amount - The amount of tokens to deposit. (formatted decimal string) - * @param firstDelegate - The address to delegate the resulting voting power to - * if the account doesn't already have a delegate. - * @returns The transaction hash. - */ - async deposit( - signer: Signer, - account: string, - amount: string, - firstDelegate?: string, - options?: TransactionOptions, - ): Promise { - const token = await this.getToken(); - const decimals = await token.getDecimals(); - return this.dataSource.deposit( - signer, - account, - parseUnits(amount, decimals), - firstDelegate ?? account, - options, - ); - } - - /** - * Withdraw tokens from this vault. - * @param signer - The Signer of the wallet with a deposited balance. - * @param amount - The amount of tokens to withdraw. (formatted decimal string) - * @returns The transaction hash. - */ - async withdraw( - signer: Signer, - amount: string, - options?: TransactionOptions, - ): Promise { - const token = await this.getToken(); - const decimals = await token.getDecimals(); - return this.dataSource.withdraw( - signer, - parseUnits(amount, decimals), - options, - ); - } -} diff --git a/packages/council-sdk/src/models/votingVault/VestingVault.ts b/packages/council-sdk/src/models/votingVault/VestingVault.ts deleted file mode 100644 index 7e2e3a2e..00000000 --- a/packages/council-sdk/src/models/votingVault/VestingVault.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { FixedNumber, Signer } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { TransactionOptions } from "src/datasources/base/contract/ContractDataSource"; -import { - GrantData, - VestingVaultContractDataSource, -} from "src/datasources/votingVault/VestingVaultContractDataSource"; -import { Token } from "src/models/token/Token"; -import { Voter } from "src/models/Voter"; -import { VoterPowerBreakdown } from "src/models/votingVault/types"; -import { sumStrings } from "src/utils/sumStrings"; -import { VotingVault, VotingVaultOptions } from "./VotingVault"; - -export interface VestingVaultOptions extends VotingVaultOptions { - dataSource?: VestingVaultContractDataSource; -} - -/** - * A VotingVault that gives voting power for receiving grants and applies a - * multiplier on unvested tokens to reduce their voting power. - * @category Models - */ -export class VestingVault extends VotingVault { - constructor( - address: string, - context: CouncilContext, - options?: VestingVaultOptions, - ) { - super(address, context, { - ...options, - name: options?.name ?? "Vesting Vault", - dataSource: - options?.dataSource ?? - context.registerDataSource( - { address, type: VestingVaultContractDataSource.type }, - new VestingVaultContractDataSource(address, context), - ), - }); - } - - /** - * Get this vault's token. - */ - async getToken(): Promise { - const address = await this.dataSource.getToken(); - return new Token(address, this.context); - } - - /** - * Get this vault's unvested multiplier, a number that represents the voting - * power of each unvested token as a percentage of a vested token. For example - * if unvested tokens have 50% voting power compared to vested ones, this - * value would be 50. - */ - getUnvestedMultiplier(): Promise { - return this.dataSource.getUnvestedMultiplier(); - } - - /** - * Get the grant data for a given address. - */ - getGrant(address: string): Promise { - return this.dataSource.getGrant(address); - } - - /** - * Gets the amount of tokens currently claimable from the grant. - * Mimics internal function https://github.com/delvtech/council/blob/main/contracts/vaults/VestingVault.sol#L434 - * @param address - The grantee address. - * @returns The amount of claimable tokens. - */ - async getGrantWithdrawableAmount(address: string): Promise { - const currentBlock = await this.context.provider.getBlockNumber(); - const grant = await this.getGrant(address); - const unlock = grant.unlockBlock; - const end = grant.expirationBlock; - - // funds are not unlocked - if (currentBlock < unlock) { - return "0"; - } - - // all funds are claimable - if (currentBlock >= end) { - const amount = FixedNumber.from(grant.allocation).subUnsafe( - FixedNumber.from(grant.withdrawn), - ); - return amount.toString(); - } - - const grantDuration = FixedNumber.from(end - unlock); - const blockDelta = FixedNumber.from(currentBlock - unlock); - const amount = FixedNumber.from(grant.allocation) - .mulUnsafe(blockDelta) - .divUnsafe(grantDuration); - - return amount.subUnsafe(FixedNumber.from(grant.withdrawn)).toString(); - } - - /** - * Get all participants that have voting power in this vault. - * @param fromBlock - Include all voters that had power on or after this block number. - * @param toBlock - Include all voters that had power on or before this block number. - */ - async getVoters(fromBlock?: number, toBlock?: number): Promise { - const votersWithPower = await this.dataSource.getVotingPowerBreakdown( - undefined, - fromBlock, - toBlock, - ); - return votersWithPower.map( - ({ address }) => new Voter(address, this.context), - ); - } - - /** - * Get all participants that have voting power in this vault along with their - * voting power, the amount of voting power being delegated to them, and the - * amount of power delegated to them by each delegator. This is a convenience - * method to fetch voting power and delegation data for a large number of - * voters in a single call. - * @param address - Get a breakdown for a specific address. - * @param fromBlock - Include all voters that had power on or after this block - * number. - * @param toBlock - Include all voters that had power on or before this block - * number. - */ - async getVotingPowerBreakdown( - address?: string, - fromBlock?: number, - toBlock?: number, - ): Promise { - const voterPowerBreakdowns = await this.dataSource.getVotingPowerBreakdown( - address, - fromBlock, - toBlock, - ); - return voterPowerBreakdowns.map( - ({ address, votingPower, votingPowerFromDelegators, delegators }) => ({ - voter: new Voter(address, this.context), - votingPower, - votingPowerFromDelegators, - delegators: delegators.map(({ address, votingPower }) => ({ - voter: new Voter(address, this.context), - votingPower, - })), - }), - ); - } - - /** - * Get the number of blocks before the delegation history is forgotten. Voting - * power from this vault can't be used on proposals that are older than the - * stale block lag. - */ - getStaleBlockLag(): Promise { - return this.dataSource.getStaleBlockLag(); - } - - /** - * Get the voting power for a given address at a given block without - * accounting for the stale block lag. - * @param address - * @param atBlock - * @returns The historical voting power of the given address. - */ - async getHistoricalVotingPower( - address: string, - atBlock?: number, - ): Promise { - return this.dataSource.getHistoricalVotingPower(address, atBlock); - } - - /** - * Get the sum of voting power held by all voters in this vault. - * @param atBlock - Get the total held at this block number. - */ - async getTotalVotingPower(atBlock?: number): Promise { - const allVotersWithPower = await this.dataSource.getVotingPowerBreakdown( - undefined, - undefined, - atBlock, - ); - return sumStrings(allVotersWithPower.map(({ votingPower }) => votingPower)); - } - - /** - * Get the current delegate of a given address. - */ - async getDelegate(address: string): Promise { - const delegateAddress = await this.dataSource.getDelegate(address); - return new Voter(delegateAddress, this.context); - } - - /** - * Get all voters delegated to a given address in this vault. - */ - async getDelegatorsTo(address: string, atBlock?: number): Promise { - const delegators = await this.dataSource.getDelegatorsTo(address, atBlock); - return delegators.map(({ address }) => new Voter(address, this.context)); - } - - /** - * Change current delegate. - * @param signer - The Signer of the address delegating. - * @param delegate - The address to delegate to. - * @returns The transaction hash. - */ - changeDelegate( - signer: Signer, - delegate: string, - options?: TransactionOptions, - ): Promise { - return this.dataSource.changeDelegate(signer, delegate, options); - } - - /** - * Claim a grant and withdraw the tokens. - * @param signer - The Signer of the wallet with a grant to claim. - * @returns The transaction hash. - */ - claim(signer: Signer, options?: TransactionOptions): Promise { - return this.dataSource.claim(signer, options); - } -} diff --git a/packages/council-sdk/src/models/votingVault/VotingVault.ts b/packages/council-sdk/src/models/votingVault/VotingVault.ts deleted file mode 100644 index f223bb36..00000000 --- a/packages/council-sdk/src/models/votingVault/VotingVault.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { BytesLike } from "ethers"; -import { CouncilContext } from "src/context/context"; -import { VotingVaultContractDataSource } from "src/datasources/votingVault/VotingVaultContractDataSource"; -import { VotingVaultDataSource } from "src/datasources/votingVault/VotingVaultDataSource"; -import { Model, ModelOptions } from "src/models/Model"; -import { Voter } from "src/models/Voter"; -import { VoterPowerBreakdown } from "src/models/votingVault/types"; - -/** - * @category Models - */ -export interface VotingVaultOptions< - TDataSource extends VotingVaultDataSource = VotingVaultDataSource, -> extends ModelOptions { - /** - * A data source to use instead of registering one with the `context`. If you - * pass in a data source, you take over the responsibility of registering it - * with the `context` to make it available to other models and data sources. - */ - dataSource?: TDataSource; -} - -// Adds common methods as optional. This makes it possible to loop through a -// list of VotingVaults and conditionally call these methods without TypeScript -// complaining that the methods don't exist on type VotingVault. -// TODO: Find a better solution for this. -interface IVotingVault< - TDataSource extends VotingVaultDataSource = VotingVaultDataSource, -> { - address: string; - dataSource: TDataSource; - getVoters?(fromBlock?: number, toBlock?: number): Promise; - getVotingPowerBreakdown?( - address?: string, - fromBlock?: number, - toBlock?: number, - ): Promise; - getTotalVotingPower?(atBlock?: number): Promise; -} - -// Include the common optional methods in the `VotingVault` export. The original -// interface name has to be different than the model name so that the model can -// implement it. -export interface VotingVault extends IVotingVault {} - -/** - * A vault which stores voting power by address - * @category Models - */ -export class VotingVault< - TDataSource extends VotingVaultDataSource = VotingVaultDataSource, - > - extends Model - implements IVotingVault -{ - address: string; - dataSource: TDataSource; - - constructor( - address: string, - context: CouncilContext, - options?: VotingVaultOptions, - ) { - super(context, { - ...options, - name: options?.name ?? "Voting Vault", - }); - this.address = address; - this.dataSource = (options?.dataSource || - this.context.registerDataSource( - { - address, - }, - new VotingVaultContractDataSource(address, context), - )) as TDataSource; - } - - /** - * Get the usable voting power owned by a given address in this vault. - * @param extraData - ABI encoded optional extra data used by some vaults, such - * as merkle proofs. - */ - async getVotingPower( - address: string, - atBlock?: number, - extraData: BytesLike = "0x00", - ): Promise { - return this.dataSource.getVotingPower(address, atBlock, extraData); - } -} diff --git a/packages/council-sdk/src/testing/mockBlock.ts b/packages/council-sdk/src/testing/mockBlock.ts deleted file mode 100644 index 185ffd0d..00000000 --- a/packages/council-sdk/src/testing/mockBlock.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { BigNumber, providers } from "ethers"; - -export const mockBlock: providers.Block = { - transactions: [], - hash: "", - parentHash: "", - number: 0, - timestamp: 0, - nonce: "", - difficulty: 0, - _difficulty: BigNumber.from(0), - gasLimit: BigNumber.from(0), - gasUsed: BigNumber.from(0), - miner: "", - extraData: "", -}; diff --git a/packages/council-sdk/src/testing/mockEvent.ts b/packages/council-sdk/src/testing/mockEvent.ts deleted file mode 100644 index 7520e44d..00000000 --- a/packages/council-sdk/src/testing/mockEvent.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TypedEvent } from "@council/typechain/dist/common"; -import { mockBlock } from "./mockBlock"; -import { mockTransaction } from "./mockTransaction"; -import { mockTransactionReceipt } from "./mockTransactionReceipt"; - -export const mockEvent: TypedEvent = { - args: [], - removeListener: (): null => null, - getBlock: (): Promise => Promise.resolve(mockBlock), - getTransaction: (): Promise => - Promise.resolve(mockTransaction), - getTransactionReceipt: (): Promise => - Promise.resolve(mockTransactionReceipt), - blockNumber: 0, - blockHash: "", - transactionIndex: 0, - removed: false, - address: "", - data: "", - topics: [], - transactionHash: "", - logIndex: 0, -}; diff --git a/packages/council-sdk/src/testing/mockProvider.ts b/packages/council-sdk/src/testing/mockProvider.ts deleted file mode 100644 index f6282690..00000000 --- a/packages/council-sdk/src/testing/mockProvider.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MockProvider } from "@wagmi/connectors/mock"; -import { mockSigner } from "src/testing/mockSigner"; - -export const mockProvider = new MockProvider({ - chainId: 1, - signer: mockSigner, -}); - -mockProvider.getBlockNumber = () => Promise.resolve(0); diff --git a/packages/council-sdk/src/testing/mockSigner.ts b/packages/council-sdk/src/testing/mockSigner.ts deleted file mode 100644 index 0436f05c..00000000 --- a/packages/council-sdk/src/testing/mockSigner.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Wallet } from "ethers"; - -const privateKey = process.env.MOCK_WALLET_PRIVATE_KEY; -if (!privateKey) { - throw "Missing environment variable: MOCK_WALLET_PRIVATE_KEY"; -} - -export const mockSigner = new Wallet(privateKey); diff --git a/packages/council-sdk/src/testing/mockTransaction.ts b/packages/council-sdk/src/testing/mockTransaction.ts deleted file mode 100644 index 6cb03a3e..00000000 --- a/packages/council-sdk/src/testing/mockTransaction.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BigNumber, ContractTransaction, ethers } from "ethers"; -import { mockTransactionReceipt } from "./mockTransactionReceipt"; - -export const mockTransaction: ContractTransaction = { - wait: (): Promise => - Promise.resolve(mockTransactionReceipt), - hash: "", - confirmations: 0, - from: ethers.constants.AddressZero, - nonce: 0, - gasLimit: BigNumber.from(0), - data: "", - value: BigNumber.from(0), - chainId: 1, -}; diff --git a/packages/council-sdk/src/testing/mockTransactionReceipt.ts b/packages/council-sdk/src/testing/mockTransactionReceipt.ts deleted file mode 100644 index 2b7a7f6d..00000000 --- a/packages/council-sdk/src/testing/mockTransactionReceipt.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { BigNumber, ContractReceipt, ethers } from "ethers"; - -export const mockTransactionReceipt: ContractReceipt = { - to: ethers.constants.AddressZero, - from: ethers.constants.AddressZero, - transactionIndex: 0, - contractAddress: ethers.constants.AddressZero, - gasUsed: BigNumber.from(0), - logsBloom: "", - blockHash: "", - transactionHash: "", - logs: [], - blockNumber: 0, - confirmations: 1, - cumulativeGasUsed: BigNumber.from(0), - effectiveGasPrice: BigNumber.from(0), - byzantium: false, - type: 0, -}; diff --git a/packages/council-sdk/src/utils/cached.ts b/packages/council-sdk/src/utils/cached.ts deleted file mode 100644 index 093f088d..00000000 --- a/packages/council-sdk/src/utils/cached.ts +++ /dev/null @@ -1,56 +0,0 @@ -import LRUCache from "lru-cache"; -import stringify from "fast-json-stable-stringify"; - -export type GetAndSetOptions = Parameters["get"]>[1] & - Parameters["set"]>[2]; - -/** - * A utility for wrapping a callback with caching logic. - * @param options - * @param options.cacheKey - The value to stringify and use to identify the cached - * result. - * @param options.callback - A function with a return value that will be cached - * and reused based on the cache's options. - * @param options.cache - An optional `lru-cache` instance to use for the - * callback's result. A new instance with `max: 500` is created by default. - * @param options.options - LRUCache's `get` and `set` options merged. - * @returns The return value of the callback function. - * @see https://github.com/isaacs/node-lru-cache - * @category Utils - */ -export function cached any>({ - cache = new LRUCache({ max: 500 }), - cacheKey, - callback, - options, -}: { - cacheKey: any; - callback: TCallback; - cache?: LRUCache; - options?: GetAndSetOptions; -}): ReturnType { - const key = cachedKey(cacheKey); - if (cache.has(key)) { - // console.log("✅ cache hit", key); - return cache.get(key, options) as ReturnType; - } else { - // console.log("❌ cache miss", key); - const value = callback(); - cache.set(key, value, options); - return value; - } -} - -/** - * Returns a key stringified in the same way as the `cached` utility. - * This will not modify strings so - * `cachedKey('foo') === cachedKey(cachedKey('foo'))`. - * @param cacheKey - The value to stringify. - * @category Utils - */ -export function cachedKey(cacheKey: string | any): string { - if (typeof cacheKey === "string") { - return cacheKey; - } - return stringify(cacheKey); -} diff --git a/packages/council-sdk/src/utils/getBlockDate.ts b/packages/council-sdk/src/utils/getBlockDate.ts deleted file mode 100644 index f710c33d..00000000 --- a/packages/council-sdk/src/utils/getBlockDate.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { providers } from "ethers"; - -// based on https://etherscan.io/chart/blocktime -const DEFAULT_BLOCK_TIME = 12.07; - -/** - * @category Utils - */ -export interface GetBlockDateOptions { - /** - * If true, dates for blocks that haven't been mined yet will be estimated - * based on the `blockTime` option. If false, blocks that haven't been mined - * yet will return `null`. - */ - estimateFutureDates?: TEstimate; - /** - * The number of seconds it takes to mine a block; used when estimating the - * date of a block that hasn't been mined yet. Defaults to 12.07 - */ - blockTime?: number; -} - -// Remove null type if TEstimate is true -type PossibleDate = TEstimate extends true ? Date : Date | null; - -/** - * Get the date of a given block by it's block number - * @category Utils - */ -export async function getBlockDate( - blockNumber: number, - provider: providers.Provider, - options?: GetBlockDateOptions, -): Promise> { - const { estimateFutureDates = false, blockTime = DEFAULT_BLOCK_TIME } = - options || {}; - const block = await provider.getBlock(blockNumber); - if (block) { - return new Date(block.timestamp * 1000); - } else if (estimateFutureDates) { - const latestBlock = await provider.getBlockNumber(); - const secondsLeft = (blockNumber - latestBlock) * blockTime; - return new Date(Date.now() + secondsLeft * 1000); - } - return null as PossibleDate; -} diff --git a/packages/council-sdk/src/utils/getVaultsWithPower.ts b/packages/council-sdk/src/utils/getVaultsWithPower.ts deleted file mode 100644 index 3ef4f27a..00000000 --- a/packages/council-sdk/src/utils/getVaultsWithPower.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { VotingVault } from ".."; - -export async function getVaultsWithPower( - account: string, - vaults: VotingVault[], -): Promise { - const vaultsWithPower: VotingVault[] = []; - - for (const vault of vaults) { - // Some vaults may throw an error when voting power is zero or cannot find found. - // The empty catch block ensures this does not interrupt any voting flows. - const votingPower = await vault.getVotingPower(account).catch(() => {}); - - if (+votingPower > 0) { - vaultsWithPower.push(vault); - } - } - - return vaultsWithPower; -} diff --git a/packages/council-sdk/src/utils/sumStrings.ts b/packages/council-sdk/src/utils/sumStrings.ts deleted file mode 100644 index 9aaca9c4..00000000 --- a/packages/council-sdk/src/utils/sumStrings.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { formatEther, parseEther } from "ethers/lib/utils"; - -/** - * Takes a group of numbers represented as strings and sums them together using - * `ethers.BigNumber`. - * @see https://docs.ethers.org/v5/api/utils/bignumber - * @category Utils - */ -export function sumStrings(numberStrings: string[]): string { - if (!numberStrings.length) { - return "0"; - } - - let total = parseEther(numberStrings[0]); - for (const bnString of numberStrings.slice(1)) { - total = total.add(parseEther(bnString)); - } - return formatEther(total); -} diff --git a/packages/council-sdk/tsconfig.test.json b/packages/council-sdk/tsconfig.test.json deleted file mode 100644 index c022fa07..00000000 --- a/packages/council-sdk/tsconfig.test.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "lib": ["es5", "dom"], - "target": "ES5", - "sourceMap": true - } -} diff --git a/packages/council-typechain/.eslintignore b/packages/council-typechain/.eslintignore deleted file mode 100644 index 79f992cf..00000000 --- a/packages/council-typechain/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -dist -node_modules -cache -./contracts -src \ No newline at end of file diff --git a/packages/council-typechain/.gitignore b/packages/council-typechain/.gitignore deleted file mode 100644 index 72325459..00000000 --- a/packages/council-typechain/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -cache -artifacts -./contracts -dist \ No newline at end of file diff --git a/packages/council-typechain/.prettierignore b/packages/council-typechain/.prettierignore deleted file mode 100644 index 9feaa794..00000000 --- a/packages/council-typechain/.prettierignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -artifacts -cache -coverage* -dist \ No newline at end of file diff --git a/packages/council-typechain/.prettierrc.js b/packages/council-typechain/.prettierrc.js deleted file mode 100644 index 2f90e90c..00000000 --- a/packages/council-typechain/.prettierrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - ...require("@council/prettier-config"), -}; diff --git a/packages/council-typechain/contracts/CoreVoting.sol b/packages/council-typechain/contracts/CoreVoting.sol deleted file mode 100644 index 3c8d7acb..00000000 --- a/packages/council-typechain/contracts/CoreVoting.sol +++ /dev/null @@ -1,372 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "./interfaces/IVotingVault.sol"; -import "./libraries/Authorizable.sol"; -import "./libraries/ReentrancyBlock.sol"; -import "./interfaces/ICoreVoting.sol"; - -contract CoreVoting is Authorizable, ReentrancyBlock, ICoreVoting { - // if a function selector does not have a set quorum we use this default quorum - uint256 public baseQuorum; - - // Assumes avg block time of 13.3 seconds. May be longer or shorter due - // to ice ages or short term changes in hash power. - uint256 public constant DAY_IN_BLOCKS = 6496; - - // minimum time a proposal must be active for before executing - // Default to 3 days, this avoids weekend surprise proposals - uint256 public lockDuration = DAY_IN_BLOCKS * 3; - - // The number of blocks after the proposal is unlocked during which - // voting can continue. Max vote time = lockDuration + extraVoteTime - // Default to ~5 days of blocks, ie 8 days max vote time - uint256 public extraVoteTime = DAY_IN_BLOCKS * 5; - - // minimum amount of voting power required to submit a proposal - uint256 public minProposalPower; - - // number of proposals created - uint256 public proposalCount; - - // mapping of address and selector to quorum - mapping(address => mapping(bytes4 => uint256)) private _quorums; - - /// @notice Override of the getter for the 'quorums' mapping which returns the default - /// quorum when the quorum is not set. - /// @param target the contract for which the quorum is set - /// @param functionSelector the function which is callable - /// @return The quorum needed to pass the function at this point in time - function quorums(address target, bytes4 functionSelector) - public - view - returns (uint256) - { - uint256 storedQuorum = _quorums[target][functionSelector]; - - if (storedQuorum == 0) { - return baseQuorum; - } else { - return storedQuorum; - } - } - - // stores approved voting vaults - mapping(address => bool) public override approvedVaults; - - // proposal storage with the proposalID as key - mapping(uint256 => Proposal) public proposals; - - // mapping of addresses and proposalIDs to vote struct representing - // the voting actions taken for each proposal - mapping(address => mapping(uint256 => Vote)) public votes; - - enum Ballot { YES, NO, MAYBE } - - struct Proposal { - // hash of this proposal's intended function calls - bytes32 proposalHash; - // block of the proposal creation - uint128 created; - // timestamp when the proposal can execute - uint128 unlock; - // expiration time of a proposal - uint128 expiration; - // the quorum required for the proposal to execute - uint128 quorum; - // [yes, no, maybe] voting power - uint128[3] votingPower; - // Timestamp after which if the call has not been executed it cannot be executed - uint128 lastCall; - } - - struct Vote { - // voting power of the vote - uint128 votingPower; - // direction of the vote - Ballot castBallot; - } - - event ProposalCreated( - uint256 proposalId, - uint256 created, - uint256 execution, - uint256 expiration - ); - - event ProposalExecuted(uint256 proposalId); - - event Voted(address indexed voter, uint256 indexed proposalId, Vote vote); - - /// @notice constructor - /// @param _timelock Timelock contract. - /// @param _baseQuorum Default quorum for all functions with no set quorum. - /// @param _minProposalPower Minimum voting power needed to submit a proposal. - /// @param _gsc governance steering committee contract. - /// @param votingVaults Initial voting vaults to approve. - constructor( - address _timelock, - uint256 _baseQuorum, - uint256 _minProposalPower, - address _gsc, - address[] memory votingVaults - ) Authorizable() { - baseQuorum = _baseQuorum; - minProposalPower = _minProposalPower; - for (uint256 i = 0; i < votingVaults.length; i++) { - approvedVaults[votingVaults[i]] = true; - } - setOwner(address(_timelock)); - _authorize(_gsc); - } - - /// @notice Create a new proposal - /// @dev all provided votingVaults must be approved vaults `approvedVaults`. - /// @param votingVaults voting vaults to draw voting power from. - /// @param extraVaultData an encoded list of extra data to provide to vaults - /// @param targets list of target addresses the timelock contract will interact with. - /// @param calldatas execution calldata for each target. - /// @param lastCall timestamp after which this cannot be executed, note should be - /// more than the voting time period - /// @param ballot vote direction (yes, no, maybe) - function proposal( - address[] calldata votingVaults, - bytes[] calldata extraVaultData, - address[] calldata targets, - bytes[] calldata calldatas, - uint256 lastCall, - Ballot ballot - ) external { - require(targets.length == calldatas.length, "array length mismatch"); - require(targets.length != 0, "empty proposal"); - - // the hash is only used to verify the proposal data, proposals are tracked by ID - // so there is no need to hash with proposalCount nonce. - bytes32 proposalHash = keccak256(abi.encode(targets, calldatas)); - - // get the quorum requirement for this proposal. The quorum requirement is equal to - // the greatest quorum item in the proposal - uint256 quorum; - for (uint256 i = 0; i < targets.length; i++) { - // function selector should be the first 4 bytes of the calldata - bytes4 selector = _getSelector(calldatas[i]); - uint256 unitQuorum = _quorums[targets[i]][selector]; - - // don't assume baseQuorum is the highest - unitQuorum = unitQuorum == 0 ? baseQuorum : unitQuorum; - if (unitQuorum > quorum) { - quorum = unitQuorum; - } - } - - // We check that the expiration is possibly valid - require( - lastCall > block.number + lockDuration + extraVoteTime, - "expires before voting ends" - ); - - proposals[proposalCount] = Proposal( - proposalHash, - // Note we use blocknumber - 1 here as a flash loan mitigation. - uint128(block.number - 1), - uint128(block.number + lockDuration), - uint128(block.number + lockDuration + extraVoteTime), - uint128(quorum), - proposals[proposalCount].votingPower, - uint128(lastCall) - ); - - uint256 votingPower = - vote(votingVaults, extraVaultData, proposalCount, ballot); - - // the proposal quorum is the lowest of minProposalPower and the proposal quorum - // because it is awkward for the proposal to require more voting power than - // the execution - uint256 minPower = - quorum <= minProposalPower ? quorum : minProposalPower; - // the GSC (governance steering comity) contract does not have a voting power requirement - // to submit a proposal - if (!isAuthorized(msg.sender)) { - require(votingPower >= minPower, "insufficient voting power"); - } - - emit ProposalCreated( - proposalCount, - block.number, - block.number + lockDuration, - block.number + lockDuration + extraVoteTime - ); - - proposalCount += 1; - } - - /// @notice Votes for a new proposal. - /// @dev all provided votingVaults must be approved vaults `approvedVaults`. - /// Addresses can re-vote, but the previous vote's effect will be negated. - /// @param votingVaults voting vaults to draw voting power from. - /// @param extraVaultData extra bytes data to give to each vault - /// @param proposalId proposal identifier. - /// @param ballot vote direction (yes, no, maybe) - /// @return the user's voting power - function vote( - address[] memory votingVaults, - bytes[] memory extraVaultData, - uint256 proposalId, - Ballot ballot - ) public returns (uint256) { - // No votes after the vote period is over - require(proposals[proposalId].created != 0, "proposal does not exist"); - require(block.number <= proposals[proposalId].expiration, "Expired"); - - uint128 votingPower; - - for (uint256 i = 0; i < votingVaults.length; i++) { - // ensure there are no voting vault duplicates - for (uint256 j = i + 1; j < votingVaults.length; j++) { - require(votingVaults[i] != votingVaults[j], "duplicate vault"); - } - require(approvedVaults[votingVaults[i]], "unverified vault"); - votingPower += uint128( - IVotingVault(votingVaults[i]).queryVotePower( - msg.sender, - proposals[proposalId].created, - extraVaultData[i] - ) - ); - } - - // if a user has already voted, undo their previous vote. - // NOTE: A new vote can have less voting power - if (votes[msg.sender][proposalId].votingPower > 0) { - proposals[proposalId].votingPower[ - uint256(votes[msg.sender][proposalId].castBallot) - ] -= votes[msg.sender][proposalId].votingPower; - } - votes[msg.sender][proposalId] = Vote(votingPower, ballot); - - proposals[proposalId].votingPower[uint256(ballot)] += votingPower; - - // Emit an event to track this info - emit Voted(msg.sender, proposalId, votes[msg.sender][proposalId]); - - return votingPower; - } - - /// @notice Execute a proposal. - /// @param proposalId proposal identifier. - /// @param targets list of target addresses the timelock contract will interact with. - /// @param calldatas execution calldata for each target. - function execute( - uint256 proposalId, - address[] memory targets, - bytes[] memory calldatas - ) external nonReentrant { - // We have to execute after min voting period - require(block.number >= proposals[proposalId].unlock, "not unlocked"); - // If executed the proposal will be deleted and this will be zero - require(proposals[proposalId].unlock != 0, "Previously executed"); - // We cannot execute if the proposal has expired - require( - block.number < proposals[proposalId].lastCall, - "past last call timestamp" - ); - - // ensure the data matches the hash - require( - keccak256(abi.encode(targets, calldatas)) == - proposals[proposalId].proposalHash, - "hash mismatch" - ); - - uint128[3] memory results = proposals[proposalId].votingPower; - // if there are enough votes to meet quorum and there are more yes votes than no votes - // then the proposal is executed - bool passesQuorum = - results[0] + results[1] + results[2] >= - proposals[proposalId].quorum; - bool majorityInFavor = results[0] > results[1]; - - require(passesQuorum && majorityInFavor, "Cannot execute"); - - // Execute a package of low level calls - // NOTE - All of them must succeed for the package to succeed. - for (uint256 i = 0; i < targets.length; i++) { - (bool success, ) = targets[i].call(calldatas[i]); - require(success, "Call failed"); - } - // Notification of proposal execution - emit ProposalExecuted(proposalId); - - // delete proposal for some gas savings, - // Proposals are only deleted when they are actually executed, failed proposals - // are never deleted - delete proposals[proposalId]; - } - - /// @notice gets the current voting power for a proposal - /// @param proposalId The proposal's ID. - function getProposalVotingPower(uint256 proposalId) - external - view - returns (uint128[3] memory) - { - return proposals[proposalId].votingPower; - } - - /// @notice Sets a quorum for a specific address and selector. - /// @param target Target contract address. - /// @param selector Function selector. - /// @param quorum Fraction to set quorum to. - function setCustomQuorum( - address target, - bytes4 selector, - uint256 quorum - ) external onlyOwner { - _quorums[target][selector] = quorum; - } - - /// @notice Updates the status of a voting vault. - /// @param vault Address of the voting vault. - /// @param isValid True to be valid, false otherwise. - function changeVaultStatus(address vault, bool isValid) external onlyOwner { - approvedVaults[vault] = isValid; - } - - /// @notice Updates the default quorum. - /// @param quorum New base quorum. - function setDefaultQuorum(uint256 quorum) external onlyOwner { - baseQuorum = quorum; - } - - /// @notice Updates the minimum voting power needed to submit a proposal. - /// @param _minProposalPower Minimum voting power needed to submit a proposal. - function setMinProposalPower(uint256 _minProposalPower) external onlyOwner { - minProposalPower = _minProposalPower; - } - - /// @notice Updates the lock duration of a proposal. - /// @param _lockDuration New lock duration. - function setLockDuration(uint256 _lockDuration) external onlyOwner { - lockDuration = _lockDuration; - } - - /// @notice Updates the extra voting period - /// @param _extraVoteTime New extra voting time - function changeExtraVotingTime(uint256 _extraVoteTime) external onlyOwner { - extraVoteTime = _extraVoteTime; - } - - /// @notice Internal helper function to get the function selector of a calldata string. - function _getSelector(bytes memory _calldata) - internal - pure - returns (bytes4 out) - { - assembly { - out := and( - mload(add(_calldata, 32)), - 0xFFFFFFFFF0000000000000000000000000000000000000000000000000000000 - ) - } - } -} diff --git a/packages/council-typechain/contracts/features/Airdrop.sol b/packages/council-typechain/contracts/features/Airdrop.sol deleted file mode 100644 index 58e72a3e..00000000 --- a/packages/council-typechain/contracts/features/Airdrop.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/Authorizable.sol"; -import "../libraries/MerkleRewards.sol"; - -// A merkle rewards contract with an expiration time - -contract Airdrop is MerkleRewards, Authorizable { - // The time after which the token cannot be claimed - uint256 public immutable expiration; - - /// @notice Constructs the contract and sets state and immutable variables - /// @param _governance The address which can withdraw funds when the drop expires - /// @param _merkleRoot The root a keccak256 merkle tree with leaves which are address amount pairs - /// @param _token The erc20 contract which will be sent to the people with claims on the contract - /// @param _expiration The unix second timestamp when the airdrop expires - /// @param _lockingVault The governance vault which this deposits to on behalf of users - constructor( - address _governance, - bytes32 _merkleRoot, - IERC20 _token, - uint256 _expiration, - ILockingVault _lockingVault - ) MerkleRewards(_merkleRoot, _token, _lockingVault) { - // Set expiration immutable and governance to the owner - expiration = _expiration; - setOwner(_governance); - } - - /// @notice Allows governance to remove the funds in this contract once the airdrop is over. - /// Claims aren't blocked the airdrop ending at expiration is optional and gov has to - /// manually end it. - /// @param destination The treasury contract which will hold the freed tokens - function reclaim(address destination) external onlyOwner { - require(block.timestamp > expiration, "Not expired"); - uint256 unclaimed = token.balanceOf(address(this)); - token.transfer(destination, unclaimed); - } -} diff --git a/packages/council-typechain/contracts/features/OptimisticGrants.sol b/packages/council-typechain/contracts/features/OptimisticGrants.sol deleted file mode 100644 index d6097b92..00000000 --- a/packages/council-typechain/contracts/features/OptimisticGrants.sol +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../interfaces/IVotingVault.sol"; -import "../interfaces/IERC20.sol"; - -// This contract allows anybody to assign a grant to an address that can be claimed at a given timestamp. -// Governance can edit or revoke a grant at any give time and withdraw the funds from the solvency. -contract OptimisticGrants { - IERC20 public immutable token; - address _governance; - uint256 public solvency; - - struct Grant { - // total grant value - uint128 amount; - // grant expiration timestamp - uint128 expiration; - } - - mapping(address => Grant) public grants; - - /// @dev Modifier checks if the msg.sender is the governance address - modifier onlyGovernance() { - require(msg.sender == _governance, "!governance"); - _; - } - - /// @notice Constructs and sets governance and token addresses - /// @param _token Address of the ERC20 token the grants will work with - /// @param __governance The governance address for ACL. - constructor(IERC20 _token, address __governance) { - _governance = __governance; - token = _token; - } - - /// @notice Deposit an amount of tokens to the contract solvency. - /// @param _amount The amount to add to the solvency. - function deposit(uint256 _amount) public { - token.transferFrom(msg.sender, address(this), _amount); - solvency += _amount; - } - - /// @notice Withdraw from the solvency. - /// @param _amount The amount to remove from the solvency. - /// @param _recipient The address to send the withdrawn funds to. - function withdraw(uint256 _amount, address _recipient) - public - onlyGovernance - { - require(_amount <= solvency, "insufficient funds"); - solvency -= _amount; - token.transfer(_recipient, _amount); - } - - /// @notice Create a grant or edit active grant parameters. - /// @dev Will override an active grant. - /// Only 1 grant is possible per address at any given time. - /// @param _owner The grant recipient. - /// @param _amount The grant amount. - /// @param _expiration The expiration timestamp of the grant. - function configureGrant( - address _owner, - uint128 _amount, - uint128 _expiration - ) external onlyGovernance { - uint128 oldAmount = grants[_owner].amount; - // if the new amount is greater, reduce the difference from the solvency. - // will revert in case of insufficient solvency with underflow error. - if (oldAmount < _amount) { - solvency -= (_amount - oldAmount); - } - // if the new amount is smaller, add back to the solvency - else { - solvency += (oldAmount - _amount); - } - grants[_owner].amount = _amount; - grants[_owner].expiration = _expiration; - } - - /// @notice Claim a grant. - /// @dev When a grant expires it can be claimed by the owner. - /// @param _destination The address which will receive the grant. - function claim(address _destination) public { - require(block.timestamp >= grants[msg.sender].expiration, "not mature"); - - // change state before transfer for reentrancy guard. - uint256 amount = grants[msg.sender].amount; - delete grants[msg.sender]; - - token.transfer(_destination, amount); - } -} diff --git a/packages/council-typechain/contracts/features/Spender.sol b/packages/council-typechain/contracts/features/Spender.sol deleted file mode 100644 index 30361a93..00000000 --- a/packages/council-typechain/contracts/features/Spender.sol +++ /dev/null @@ -1,124 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/Authorizable.sol"; -import "../interfaces/IERC20.sol"; - -// Has governance tokens provided by the treasury, can execute calls to spend them -// Three separate functions which all spending different amounts. We enforce -// spending limit by block so that no governance proposal can execute a bundle -// of small spend transactions with low quorum. - -contract Spender is Authorizable { - // Mapping storing how much is spent in each block - // Note - There's minor stability and griefing considerations around tracking the expenditure - // per block for all spend limits. Namely two proposals may try to get executed in the same block and have one - // fail on accident or on purpose. These are for semi-rare non contentious spending so - // we do not consider either a major concern. - mapping(uint256 => uint256) public blockExpenditure; - // The low, medium and high spending barriers - uint256 public smallSpendLimit; - uint256 public mediumSpendLimit; - uint256 public highSpendLimit; - // The immutable token contract - IERC20 public immutable token; - - /// @notice Constructs and sets the permissions plus initial state variables - /// @param _owner The contract owner who can change spending limits and authorized addresses - /// @param _spender The first address authorized to spend - /// @param _token the immutable token this contract has a balance of - /// @param _smallSpendLimit The limit on how much spending a small spend proposal can do - /// @param _mediumSpendLimit The limit on how much spending a medium spend proposal can do - /// @param _highSpendLimit The limit on how much spending a high spend proposal can do - constructor( - address _owner, - address _spender, - IERC20 _token, - uint256 _smallSpendLimit, - uint256 _mediumSpendLimit, - uint256 _highSpendLimit - ) { - // Configure access controls, by authorizing the spender and setting the owner. - _authorize(_spender); - setOwner(_owner); - // Set state and immutable variables - token = _token; - smallSpendLimit = _smallSpendLimit; - mediumSpendLimit = _mediumSpendLimit; - highSpendLimit = _highSpendLimit; - } - - /// @notice Spends up to the small spend limit - /// @param amount the amount to spend - /// @param destination the destination to send the token to - function smallSpend(uint256 amount, address destination) - external - onlyAuthorized - { - _spend(amount, destination, smallSpendLimit); - } - - /// @notice Spends up to the medium spend limit - /// @param amount the amount to spend - /// @param destination the destination to send the token to - function mediumSpend(uint256 amount, address destination) - external - onlyAuthorized - { - _spend(amount, destination, mediumSpendLimit); - } - - /// @notice Spends up to the high spend limit - /// @param amount the amount to spend - /// @param destination the destination to send the token to - function highSpend(uint256 amount, address destination) - external - onlyAuthorized - { - _spend(amount, destination, highSpendLimit); - } - - /// @notice The internal function to handle each of the spend call - /// @param amount the amount to spend - /// @param destination the destination to send the tokens to - /// @param limit the per block spending limit enforced by this call - function _spend( - uint256 amount, - address destination, - uint256 limit - ) internal { - // Check that after processing this we will not have spent more than the block limit - uint256 spentThisBlock = blockExpenditure[block.number]; - require(amount + spentThisBlock <= limit, "Spend Limit Exceeded"); - // Reentrancy is very unlikely in this context, but we still change state first - blockExpenditure[block.number] = amount + spentThisBlock; - // Transfer tokens - token.transfer(destination, amount); - } - - /// @notice Sets the low, medium, and high spend limits, must be called by the timelock - /// @param limits [low spend limit, medium spend limit, high spend limit] - /// @dev This function always sets all limits, to change only one the previous values - /// of the other two must be provided to this call. - function setLimits(uint256[] memory limits) external onlyOwner { - // Set the spend limits - smallSpendLimit = limits[0]; - mediumSpendLimit = limits[1]; - highSpendLimit = limits[2]; - } - - /// @notice Part of the deprecation process, allows the timelock to move all of the funds - /// out of this contract. - /// @param amount The amount of tokens to remove, max uint256 for the full balance - /// @param destination the destination to send the tokens to - function removeToken(uint256 amount, address destination) - external - onlyOwner - { - // If they use max then we just transfer out the balance - if (amount == type(uint256).max) { - amount = token.balanceOf(address(this)); - } - token.transfer(destination, amount); - } -} diff --git a/packages/council-typechain/contracts/features/Timelock.sol b/packages/council-typechain/contracts/features/Timelock.sol deleted file mode 100644 index 334815c8..00000000 --- a/packages/council-typechain/contracts/features/Timelock.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/Authorizable.sol"; -import "../libraries/ReentrancyBlock.sol"; - -// Allows a call to be executed after a waiting period, also allows a call to -// be canceled within a waiting period. - -contract Timelock is Authorizable, ReentrancyBlock { - // Amount of time for the waiting period - uint256 public waitTime; - - // Mapping of call hashes to block timestamps - mapping(bytes32 => uint256) public callTimestamps; - // Mapping from a call hash to its status of once allowed time increase - mapping(bytes32 => bool) public timeIncreases; - - /// @notice Constructs this contract and sets state variables - /// @param _waitTime amount of time for the waiting period - /// @param _governance governance - /// @param _gsc governance steering committee contract. - constructor( - uint256 _waitTime, - address _governance, - address _gsc - ) Authorizable() { - _authorize(_gsc); - waitTime = _waitTime; - setOwner(_governance); - } - - /// @notice Stores at the callHash the current block timestamp - /// @param callHash The hash to map the timestamp to - function registerCall(bytes32 callHash) external onlyOwner { - // We only want to register a call which is not already active - require(callTimestamps[callHash] == 0, "already registered"); - // Set the timestamp for this call package to be the current time - callTimestamps[callHash] = block.timestamp; - } - - /// @notice Removes stored callHash data - /// @param callHash Which entry of the mapping to remove - function stopCall(bytes32 callHash) external onlyOwner { - // We only want this to actually execute when a real thing is deleted to - // prevent re-ordering attacks - require(callTimestamps[callHash] != 0, "No call to be removed"); - // Do the actual deletion - delete callTimestamps[callHash]; - delete timeIncreases[callHash]; - } - - /// @notice Execute the call if past the waiting period - /// @param targets List of target addresses the timelock contract will interact with - /// @param calldatas Execution calldata for each target - function execute(address[] memory targets, bytes[] calldata calldatas) - public - nonReentrant - { - // hash provided data to access the mapping - bytes32 callHash = keccak256(abi.encode(targets, calldatas)); - // call defaults to zero and cannot be executed before it is registered - require(callTimestamps[callHash] != 0, "call has not been initialized"); - // call cannot be executed before the waiting period has passed - require( - callTimestamps[callHash] + waitTime < block.timestamp, - "not enough time has passed" - ); - // Gives a revert string to a revert that would occur anyway when the array is accessed - require(targets.length == calldatas.length, "invalid formatting"); - // execute a package of low level calls - for (uint256 i = 0; i < targets.length; i++) { - (bool success, ) = targets[i].call(calldatas[i]); - // revert if a single call fails - require(success == true, "call reverted"); - } - // restore state after successful execution - delete callTimestamps[callHash]; - delete timeIncreases[callHash]; - } - - /// @notice Allow a call from this contract to reset the wait time storage variable - /// @param _waitTime New wait time to set to - function setWaitTime(uint256 _waitTime) public { - require(msg.sender == address(this), "contract must be self"); - waitTime = _waitTime; - } - - /// @notice Allow an increase in wait time for a given call - /// can only be executed once for each call - /// @param timeValue Amount of time to increase by - /// @param callHash The mapping entry to increase time - function increaseTime(uint256 timeValue, bytes32 callHash) - external - onlyAuthorized - { - require( - timeIncreases[callHash] == false, - "value can only be changed once" - ); - require( - callTimestamps[callHash] != 0, - "must have been previously registered" - ); - // Increases the time till the call can be executed - callTimestamps[callHash] += timeValue; - // set mapping to indicate call has been changed - timeIncreases[callHash] = true; - } -} diff --git a/packages/council-typechain/contracts/features/Treasury.sol b/packages/council-typechain/contracts/features/Treasury.sol deleted file mode 100644 index 51a7c98f..00000000 --- a/packages/council-typechain/contracts/features/Treasury.sol +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/Authorizable.sol"; -import "../interfaces/IERC20.sol"; - -// This contract is designed to hold the erc20 and eth reserves of the dao -// and will likely control a large amount of funds. It is designed to be -// flexible, secure and simple -contract Treasury is Authorizable { - // A constant which represents ether - address internal constant _ETH_CONSTANT = - address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); - - /// @notice constructor. - /// @param __governance Governance contract address. - constructor(address __governance) { - setOwner(__governance); - } - - ///@notice Sends funds from the treasury to an address. - ///@param _token Either (1) An ERC20 token address - /// or (2) the _ETH_CONSTANT to use transfer ETH. - ///@param _amount The amount of ETH or ERC20 to send. - ///@param _recipient The recipient of this value. - function sendFunds( - address _token, - uint256 _amount, - address _recipient - ) external onlyOwner { - if (_token == _ETH_CONSTANT) { - payable(_recipient).transfer(_amount); - } else { - // onlyGovernance should protect from reentrancy - IERC20(_token).transfer(_recipient, _amount); - } - } - - ///@notice Sets an ERC20 allowance from this contract to a _spender. - ///@param _token The ERC20 token address. - ///@param _spender The recipient of the allowance. - ///@param _amount The amount of the allowance. - function approve( - address _token, - address _spender, - uint256 _amount - ) external onlyOwner { - IERC20(_token).approve(_spender, _amount); - } - - ///@notice Performs a generic call from this contract. - ///@param _target The target address where the call will be performed. - ///@param _callData The execution calldata to pass. - function genericCall(address _target, bytes calldata _callData) - external - onlyOwner - { - // We do a low level call and insist it succeeds - (bool status, ) = _target.call(_callData); - require(status, "Call failed"); - } - - // Receive is fine because we don't want to execute code - receive() external payable {} -} diff --git a/packages/council-typechain/contracts/interfaces/ICoreVoting.sol b/packages/council-typechain/contracts/interfaces/ICoreVoting.sol deleted file mode 100644 index 60d34652..00000000 --- a/packages/council-typechain/contracts/interfaces/ICoreVoting.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -interface ICoreVoting { - /// @notice A method auto generated from a public storage mapping, looks - /// up which vault addresses are approved by core voting - /// @param vault the address to check if it is an approved vault - /// @return true if approved false if not approved - function approvedVaults(address vault) external view returns (bool); -} diff --git a/packages/council-typechain/contracts/interfaces/IERC20.sol b/packages/council-typechain/contracts/interfaces/IERC20.sol deleted file mode 100644 index 5c5b447b..00000000 --- a/packages/council-typechain/contracts/interfaces/IERC20.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -interface IERC20 { - function symbol() external view returns (string memory); - - function balanceOf(address account) external view returns (uint256); - - // Note this is non standard but nearly all ERC20 have exposed decimal functions - function decimals() external view returns (uint8); - - function transfer(address recipient, uint256 amount) - external - returns (bool); - - function allowance(address owner, address spender) - external - view - returns (uint256); - - function approve(address spender, uint256 amount) external returns (bool); - - function transferFrom( - address sender, - address recipient, - uint256 amount - ) external returns (bool); - - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval( - address indexed owner, - address indexed spender, - uint256 value - ); -} diff --git a/packages/council-typechain/contracts/interfaces/IERC20Permit.sol b/packages/council-typechain/contracts/interfaces/IERC20Permit.sol deleted file mode 100644 index e365b656..00000000 --- a/packages/council-typechain/contracts/interfaces/IERC20Permit.sol +++ /dev/null @@ -1,62 +0,0 @@ -// Forked from openzepplin -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.3; - -import "./IERC20.sol"; - -/** - * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in - * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. - * - * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by - * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't - * need to send a transaction, and thus is not required to hold Ether at all. - */ -interface IERC20Permit is IERC20 { - /** - * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens, - * given `owner`'s signed approval. - * - * IMPORTANT: The same issues {IERC20-approve} has related to transaction - * ordering also apply here. - * - * Emits an {Approval} event. - * - * Requirements: - * - * - `spender` cannot be the zero address. - * - `deadline` must be a timestamp in the future. - * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` - * over the EIP712-formatted function arguments. - * - the signature must use ``owner``'s current nonce (see {nonces}). - * - * For more information on the signature format, see the - * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP - * section]. - */ - function permit( - address owner, - address spender, - uint256 value, - uint256 deadline, - uint8 v, - bytes32 r, - bytes32 s - ) external; - - /** - * @dev Returns the current nonce for `owner`. This value must be - * included whenever a signature is generated for {permit}. - * - * Every successful call to {permit} increases ``owner``'s nonce by one. This - * prevents a signature from being used multiple times. - */ - function nonces(address owner) external view returns (uint256); - - /** - * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}. - */ - // solhint-disable-next-line func-name-mixedcase - function DOMAIN_SEPARATOR() external view returns (bytes32); -} diff --git a/packages/council-typechain/contracts/interfaces/ILockingVault.sol b/packages/council-typechain/contracts/interfaces/ILockingVault.sol deleted file mode 100644 index d10ccd2e..00000000 --- a/packages/council-typechain/contracts/interfaces/ILockingVault.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "./IERC20.sol"; - -interface ILockingVault { - /// @notice Deposits and delegates voting power to an address provided with the call - /// @param fundedAccount The address to credit this deposit to - /// @param amount The amount of token which is deposited - /// @param firstDelegation First delegation address - function deposit( - address fundedAccount, - uint256 amount, - address firstDelegation - ) external; - - /// @notice Removes tokens from this contract and the voting power they represent - /// @param amount The amount of token to withdraw - function withdraw(uint256 amount) external; - - /// @notice The token for this locking vault - function token() external returns (IERC20); - - /// @notice Changes a user's voting power - /// @param newDelegate The new address which gets voting power - function changeDelegation(address newDelegate) external; -} diff --git a/packages/council-typechain/contracts/interfaces/IVotingVault.sol b/packages/council-typechain/contracts/interfaces/IVotingVault.sol deleted file mode 100644 index cce65d43..00000000 --- a/packages/council-typechain/contracts/interfaces/IVotingVault.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -interface IVotingVault { - /// @notice Attempts to load the voting power of a user - /// @param user The address we want to load the voting power of - /// @param blockNumber the block number we want the user's voting power at - /// @param extraData Abi encoded optional extra data used by some vaults, such as merkle proofs - /// @return the number of votes - function queryVotePower( - address user, - uint256 blockNumber, - bytes calldata extraData - ) external returns (uint256); -} diff --git a/packages/council-typechain/contracts/libraries/Authorizable.sol b/packages/council-typechain/contracts/libraries/Authorizable.sol deleted file mode 100644 index f245e783..00000000 --- a/packages/council-typechain/contracts/libraries/Authorizable.sol +++ /dev/null @@ -1,59 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0; - -contract Authorizable { - // This contract allows a flexible authorization scheme - - // The owner who can change authorization status - address public owner; - // A mapping from an address to its authorization status - mapping(address => bool) public authorized; - - /// @dev We set the deployer to the owner - constructor() { - owner = msg.sender; - } - - /// @dev This modifier checks if the msg.sender is the owner - modifier onlyOwner() { - require(msg.sender == owner, "Sender not owner"); - _; - } - - /// @dev This modifier checks if an address is authorized - modifier onlyAuthorized() { - require(isAuthorized(msg.sender), "Sender not Authorized"); - _; - } - - /// @dev Returns true if an address is authorized - /// @param who the address to check - /// @return true if authorized false if not - function isAuthorized(address who) public view returns (bool) { - return authorized[who]; - } - - /// @dev Privileged function authorize an address - /// @param who the address to authorize - function authorize(address who) external onlyOwner() { - _authorize(who); - } - - /// @dev Privileged function to de authorize an address - /// @param who The address to remove authorization from - function deauthorize(address who) external onlyOwner() { - authorized[who] = false; - } - - /// @dev Function to change owner - /// @param who The new owner address - function setOwner(address who) public onlyOwner() { - owner = who; - } - - /// @dev Inheritable function which authorizes someone - /// @param who the address to authorize - function _authorize(address who) internal { - authorized[who] = true; - } -} diff --git a/packages/council-typechain/contracts/libraries/ERC20Permit.sol b/packages/council-typechain/contracts/libraries/ERC20Permit.sol deleted file mode 100644 index 24689a65..00000000 --- a/packages/council-typechain/contracts/libraries/ERC20Permit.sol +++ /dev/null @@ -1,244 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copied from https://github.com/delvtech/elf-contracts/blob/a6cb960896301b7562ced70a8b221f3cc964ea0a/contracts/libraries/ERC20Permit.sol - -pragma solidity ^0.8.3; - -import "../interfaces/IERC20Permit.sol"; - -// This default erc20 library is designed for max efficiency and security. -// WARNING: By default it does not include totalSupply which breaks the ERC20 standard -// to use a fully standard compliant ERC20 use 'ERC20PermitWithSupply" -abstract contract ERC20Permit is IERC20Permit { - // --- ERC20 Data --- - // The name of the erc20 token - string public name; - // The symbol of the erc20 token - string public override symbol; - // The decimals of the erc20 token, should default to 18 for new tokens - uint8 public override decimals; - - // A mapping which tracks user token balances - mapping(address => uint256) public override balanceOf; - // A mapping which tracks which addresses a user allows to move their tokens - mapping(address => mapping(address => uint256)) public override allowance; - // A mapping which tracks the permit signature nonces for users - mapping(address => uint256) public override nonces; - - // --- EIP712 niceties --- - // solhint-disable-next-line var-name-mixedcase - bytes32 public override DOMAIN_SEPARATOR; - // bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); - bytes32 public constant PERMIT_TYPEHASH = - 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; - - /// @notice Initializes the erc20 contract - /// @param name_ the value 'name' will be set to - /// @param symbol_ the value 'symbol' will be set to - /// @dev decimals default to 18 and must be reset by an inheriting contract for - /// non standard decimal values - constructor(string memory name_, string memory symbol_) { - // Set the state variables - name = name_; - symbol = symbol_; - decimals = 18; - - // By setting these addresses to 0 attempting to execute a transfer to - // either of them will revert. This is a gas efficient way to prevent - // a common user mistake where they transfer to the token address. - // These values are not considered 'real' tokens and so are not included - // in 'total supply' which only contains minted tokens. - balanceOf[address(0)] = type(uint256).max; - balanceOf[address(this)] = type(uint256).max; - - // Optional extra state manipulation - _extraConstruction(); - - // Computes the EIP 712 domain separator which prevents user signed messages for - // this contract to be replayed in other contracts. - // https://eips.ethereum.org/EIPS/eip-712 - DOMAIN_SEPARATOR = keccak256( - abi.encode( - keccak256( - "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" - ), - keccak256(bytes(name)), - keccak256(bytes("1")), - block.chainid, - address(this) - ) - ); - } - - /// @notice An optional override function to execute and change state before immutable assignment - function _extraConstruction() internal virtual {} - - // --- Token --- - /// @notice Allows a token owner to send tokens to another address - /// @param recipient The address which will be credited with the tokens - /// @param amount The amount user token to send - /// @return returns true on success, reverts on failure so cannot return false. - /// @dev transfers to this contract address or 0 will fail - function transfer(address recipient, uint256 amount) - public - virtual - override - returns (bool) - { - // We forward this call to 'transferFrom' - return transferFrom(msg.sender, recipient, amount); - } - - /// @notice Transfers an amount of erc20 from a spender to a receipt - /// @param spender The source of the ERC20 tokens - /// @param recipient The destination of the ERC20 tokens - /// @param amount the number of tokens to send - /// @return returns true on success and reverts on failure - /// @dev will fail transfers which send funds to this contract or 0 - function transferFrom( - address spender, - address recipient, - uint256 amount - ) public virtual override returns (bool) { - // Load balance and allowance - uint256 balance = balanceOf[spender]; - require(balance >= amount, "ERC20: insufficient-balance"); - // We potentially have to change allowances - if (spender != msg.sender) { - // Loading the allowance in the if block prevents vanilla transfers - // from paying for the sload. - uint256 allowed = allowance[spender][msg.sender]; - // If the allowance is max we do not reduce it - // Note - This means that max allowances will be more gas efficient - // by not requiring a sstore on 'transferFrom' - if (allowed != type(uint256).max) { - require(allowed >= amount, "ERC20: insufficient-allowance"); - allowance[spender][msg.sender] = allowed - amount; - } - } - // Update the balances - balanceOf[spender] = balance - amount; - // Note - In the constructor we initialize the 'balanceOf' of address 0 and - // the token address to uint256.max and so in 8.0 transfers to those - // addresses revert on this step. - balanceOf[recipient] = balanceOf[recipient] + amount; - // Emit the needed event - emit Transfer(spender, recipient, amount); - // Return that this call succeeded - return true; - } - - /// @notice This internal minting function allows inheriting contracts - /// to mint tokens in the way they wish. - /// @param account the address which will receive the token. - /// @param amount the amount of token which they will receive - /// @dev This function is virtual so that it can be overridden, if you - /// are reviewing this contract for security you should ensure to - /// check for overrides - function _mint(address account, uint256 amount) internal virtual { - // Add tokens to the account - balanceOf[account] = balanceOf[account] + amount; - // Emit an event to track the minting - emit Transfer(address(0), account, amount); - } - - /// @notice This internal burning function allows inheriting contracts to - /// burn tokens in the way they see fit. - /// @param account the account to remove tokens from - /// @param amount the amount of tokens to remove - /// @dev This function is virtual so that it can be overridden, if you - /// are reviewing this contract for security you should ensure to - /// check for overrides - function _burn(address account, uint256 amount) internal virtual { - // Reduce the balance of the account - balanceOf[account] = balanceOf[account] - amount; - // Emit an event tracking transfers - emit Transfer(account, address(0), amount); - } - - /// @notice This function allows a user to approve an account which can transfer - /// tokens on their behalf. - /// @param account The account which will be approve to transfer tokens - /// @param amount The approval amount, if set to uint256.max the allowance does not go down on transfers. - /// @return returns true for compatibility with the ERC20 standard - function approve(address account, uint256 amount) - public - virtual - override - returns (bool) - { - // Set the senders allowance for account to amount - allowance[msg.sender][account] = amount; - // Emit an event to track approvals - emit Approval(msg.sender, account, amount); - return true; - } - - /// @notice This function allows a caller who is not the owner of an account to execute the functionality of 'approve' with the owners signature. - /// @param owner the owner of the account which is having the new approval set - /// @param spender the address which will be allowed to spend owner's tokens - /// @param value the new allowance value - /// @param deadline the timestamp which the signature must be submitted by to be valid - /// @param v Extra ECDSA data which allows public key recovery from signature assumed to be 27 or 28 - /// @param r The r component of the ECDSA signature - /// @param s The s component of the ECDSA signature - /// @dev The signature for this function follows EIP 712 standard and should be generated with the - /// eth_signTypedData JSON RPC call instead of the eth_sign JSON RPC call. If using out of date - /// parity signing libraries the v component may need to be adjusted. Also it is very rare but possible - /// for v to be other values, those values are not supported. - function permit( - address owner, - address spender, - uint256 value, - uint256 deadline, - uint8 v, - bytes32 r, - bytes32 s - ) external override { - // The EIP 712 digest for this function - bytes32 digest = - keccak256( - abi.encodePacked( - "\x19\x01", - DOMAIN_SEPARATOR, - keccak256( - abi.encode( - PERMIT_TYPEHASH, - owner, - spender, - value, - nonces[owner], - deadline - ) - ) - ) - ); - // Require that the owner is not zero - require(owner != address(0), "ERC20: invalid-address-0"); - // Require that we have a valid signature from the owner - require(owner == ecrecover(digest, v, r, s), "ERC20: invalid-permit"); - // Require that the signature is not expired - require( - deadline == 0 || block.timestamp <= deadline, - "ERC20: permit-expired" - ); - // Format the signature to the default format - require( - uint256(s) <= - 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, - "ERC20: invalid signature 's' value" - ); - // Increment the signature nonce to prevent replay - nonces[owner]++; - // Set the allowance to the new value - allowance[owner][spender] = value; - // Emit an approval event to be able to track this happening - emit Approval(owner, spender, value); - } - - /// @notice Internal function which allows inheriting contract to set custom decimals - /// @param decimals_ the new decimal value - function _setupDecimals(uint8 decimals_) internal { - // Set the decimals - decimals = decimals_; - } -} diff --git a/packages/council-typechain/contracts/libraries/ERC20PermitWithMint.sol b/packages/council-typechain/contracts/libraries/ERC20PermitWithMint.sol deleted file mode 100644 index 42046eb5..00000000 --- a/packages/council-typechain/contracts/libraries/ERC20PermitWithMint.sol +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Largely based on https://github.com/delvtech/elf-contracts/blob/a6cb960896301b7562ced70a8b221f3cc964ea0a/contracts/libraries/ERC20PermitWithSupply.sol - -pragma solidity ^0.8.3; - -import "./ERC20Permit.sol"; -import "./Authorizable.sol"; - -// This contract adds total supply and minting to the generic erc20 -abstract contract ERC20PermitWithMint is ERC20Permit, Authorizable { - /// @notice Initializes the erc20 contract - /// @param name_ the value 'name' will be set to - /// @param symbol_ the value 'symbol' will be set to - /// @param owner_ address which has the power to mint - constructor( - string memory name_, - string memory symbol_, - address owner_ - ) ERC20Permit(name_, symbol_) { - setOwner(owner_); - } - - // The stored totalSupply, it equals all tokens minted - all tokens burned - uint256 public totalSupply; - - /// @notice Allows the governance to mint - /// @param account the account to addd tokens to - /// @param amount the amount of tokens to add - function mint(address account, uint256 amount) external onlyOwner { - _mint(account, amount); - } - - /// @notice This function overrides the ERC20Permit Library's _mint and causes it - /// to track total supply. - /// @param account the account to addd tokens to - /// @param amount the amount of tokens to add - function _mint(address account, uint256 amount) internal override { - // Increase account balance - balanceOf[account] = balanceOf[account] + amount; - // Increase total supply - totalSupply += amount; - // Emit a transfer from zero to emulate a mint - emit Transfer(address(0), account, amount); - } - - /// @notice Allows the governance to burn - /// @param account the account to burn from - /// @param amount the amount of token to burn - function burn(address account, uint256 amount) external onlyOwner { - _burn(account, amount); - } - - /// @notice This function overrides the ERC20Permit Library's _burn to decrement total supply - /// @param account the account to burn from - /// @param amount the amount of token to burn - function _burn(address account, uint256 amount) internal override { - // Decrease user balance - uint256 currentBalance = balanceOf[account]; - // This logic prevents a reversion if the _burn is frontrun - if (currentBalance < amount) { - balanceOf[account] = 0; - } else { - balanceOf[account] = currentBalance - amount; - } - // Decrease total supply - totalSupply -= amount; - // Emit an event tracking the burn - emit Transfer(account, address(0), amount); - } -} diff --git a/packages/council-typechain/contracts/libraries/History.sol b/packages/council-typechain/contracts/libraries/History.sol deleted file mode 100644 index 59e64f11..00000000 --- a/packages/council-typechain/contracts/libraries/History.sol +++ /dev/null @@ -1,376 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "./Storage.sol"; - -// This library is an assembly optimized storage library which is designed -// to track timestamp history in a struct which uses hash derived pointers. -// WARNING - Developers using it should not access the underlying storage -// directly since we break some assumptions of high level solidity. Please -// note this library also increases the risk profile of memory manipulation -// please be cautious in your usage of uninitialized memory structs and other -// anti patterns. -library History { - // The storage layout of the historical array looks like this - // [(128 bit min index)(128 bit length)] [0][0] ... [(64 bit block num)(192 bit data)] .... [(64 bit block num)(192 bit data)] - // We give the option to the invoker of the search function the ability to clear - // stale storage. To find data we binary search for the block number we need - // This library expects the blocknumber indexed data to be pushed in ascending block number - // order and if data is pushed with the same blocknumber it only retains the most recent. - // This ensures each blocknumber is unique and contains the most recent data at the end - // of whatever block it indexes [as long as that block is not the current one]. - - // A struct which wraps a memory pointer to a string and the pointer to storage - // derived from that name string by the storage library - // WARNING - For security purposes never directly construct this object always use load - struct HistoricalBalances { - string name; - // Note - We use bytes32 to reduce how easy this is to manipulate in high level sol - bytes32 cachedPointer; - } - - /// @notice The method by which inheriting contracts init the HistoricalBalances struct - /// @param name The name of the variable. Note - these are globals, any invocations of this - /// with the same name work on the same storage. - /// @return The memory pointer to the wrapper of the storage pointer - function load(string memory name) - internal - pure - returns (HistoricalBalances memory) - { - mapping(address => uint256[]) storage storageData = - Storage.mappingAddressToUnit256ArrayPtr(name); - bytes32 pointer; - assembly { - pointer := storageData.slot - } - return HistoricalBalances(name, pointer); - } - - /// @notice An unsafe method of attaching the cached ptr in a historical balance memory objects - /// @param pointer cached pointer to storage - /// @return storageData A storage array mapping pointer - /// @dev PLEASE DO NOT USE THIS METHOD WITHOUT SERIOUS REVIEW. IF AN EXTERNAL ACTOR CAN CALL THIS WITH - // ARBITRARY DATA THEY MAY BE ABLE TO OVERWRITE ANY STORAGE IN THE CONTRACT. - function _getMapping(bytes32 pointer) - private - pure - returns (mapping(address => uint256[]) storage storageData) - { - assembly { - storageData.slot := pointer - } - } - - /// @notice This function adds a block stamp indexed piece of data to a historical data array - /// To prevent duplicate entries if the top of the array has the same blocknumber - /// the value is updated instead - /// @param wrapper The wrapper which hold the reference to the historical data storage pointer - /// @param who The address which indexes the array we need to push to - /// @param data The data to append, should be at most 192 bits and will revert if not - function push( - HistoricalBalances memory wrapper, - address who, - uint256 data - ) internal { - // Check preconditions - // OoB = Out of Bounds, short for contract bytecode size reduction - require(data <= type(uint192).max, "OoB"); - // Get the storage this is referencing - mapping(address => uint256[]) storage storageMapping = - _getMapping(wrapper.cachedPointer); - // Get the array we need to push to - uint256[] storage storageData = storageMapping[who]; - // We load the block number and then shift it to be in the top 64 bits - uint256 blockNumber = block.number << 192; - // We combine it with the data, because of our require this will have a clean - // top 64 bits - uint256 packedData = blockNumber | data; - // Load the array length - (uint256 minIndex, uint256 length) = _loadBounds(storageData); - // On the first push we don't try to load - uint256 loadedBlockNumber = 0; - if (length != 0) { - (loadedBlockNumber, ) = _loadAndUnpack(storageData, length - 1); - } - // The index we push to, note - we use this pattern to not branch the assembly - uint256 index = length; - // If the caller is changing data in the same block we change the entry for this block - // instead of adding a new one. This ensures each block numb is unique in the array. - if (loadedBlockNumber == block.number) { - index = length - 1; - } - // We use assembly to write our data to the index - assembly { - // Stores packed data in the equivalent of storageData[length] - sstore( - add( - // The start of the data slots - add(storageData.slot, 1), - // index where we store - index - ), - packedData - ) - } - // Reset the boundaries if they changed - if (loadedBlockNumber != block.number) { - _setBounds(storageData, minIndex, length + 1); - } - } - - /// @notice Loads the most recent timestamp of delegation power - /// @param wrapper The memory struct which we want to search for historical data - /// @param who The user who's balance we want to load - /// @return the top slot of the array - function loadTop(HistoricalBalances memory wrapper, address who) - internal - view - returns (uint256) - { - // Load the storage pointer - uint256[] storage userData = _getMapping(wrapper.cachedPointer)[who]; - // Load the length - (, uint256 length) = _loadBounds(userData); - // If it's zero no data has ever been pushed so we return zero - if (length == 0) { - return 0; - } - // Load the current top - (, uint256 storedData) = _loadAndUnpack(userData, length - 1); - // and return it - return (storedData); - } - - /// @notice Finds the data stored with the highest block number which is less than or equal to a provided - /// blocknumber. - /// @param wrapper The memory struct which we want to search for historical data - /// @param who The address which indexes the array to be searched - /// @param blocknumber The blocknumber we want to load the historical data of - /// @return The loaded unpacked data at this point in time. - function find( - HistoricalBalances memory wrapper, - address who, - uint256 blocknumber - ) internal view returns (uint256) { - // Get the storage this is referencing - mapping(address => uint256[]) storage storageMapping = - _getMapping(wrapper.cachedPointer); - // Get the array we need to push to - uint256[] storage storageData = storageMapping[who]; - // Pre load the bounds - (uint256 minIndex, uint256 length) = _loadBounds(storageData); - // Search for the blocknumber - (, uint256 loadedData) = - _find(storageData, blocknumber, 0, minIndex, length); - // In this function we don't have to change the stored length data - return (loadedData); - } - - /// @notice Finds the data stored with the highest blocknumber which is less than or equal to a provided block number - /// Opportunistically clears any data older than staleBlock which is possible to clear. - /// @param wrapper The memory struct which points to the storage we want to search - /// @param who The address which indexes the historical data we want to search - /// @param blocknumber The blocknumber we want to load the historical state of - /// @param staleBlock A block number which we can [but are not obligated to] delete history older than - /// @return The found data - function findAndClear( - HistoricalBalances memory wrapper, - address who, - uint256 blocknumber, - uint256 staleBlock - ) internal returns (uint256) { - // Get the storage this is referencing - mapping(address => uint256[]) storage storageMapping = - _getMapping(wrapper.cachedPointer); - // Get the array we need to push to - uint256[] storage storageData = storageMapping[who]; - // Pre load the bounds - (uint256 minIndex, uint256 length) = _loadBounds(storageData); - // Search for the blocknumber - (uint256 staleIndex, uint256 loadedData) = - _find(storageData, blocknumber, staleBlock, minIndex, length); - // We clear any data in the stale region - // Note - Since find returns 0 if no stale data is found and we use > instead of >= - // this won't trigger if no stale data is found. Plus it won't trigger on minIndex == staleIndex - // == maxIndex and clear the whole array. - if (staleIndex > minIndex) { - // Delete the outdated stored info - _clear(minIndex, staleIndex, storageData); - // Reset the array info with stale index as the new minIndex - _setBounds(storageData, staleIndex, length); - } - return (loadedData); - } - - /// @notice Searches for the data stored at the largest blocknumber index less than a provided parameter. - /// Allows specification of a expiration stamp and returns the greatest examined index which is - /// found to be older than that stamp. - /// @param data The stored data - /// @param blocknumber the blocknumber we want to load the historical data for. - /// @param staleBlock The oldest block that we care about the data stored for, all previous data can be deleted - /// @param startingMinIndex The smallest filled index in the array - /// @param length the length of the array - /// @return Returns the largest stale data index seen or 0 for no seen stale data and the stored data - function _find( - uint256[] storage data, - uint256 blocknumber, - uint256 staleBlock, - uint256 startingMinIndex, - uint256 length - ) private view returns (uint256, uint256) { - // We explicitly revert on the reading of memory which is uninitialized - require(length != 0, "uninitialized"); - // Do some correctness checks - require(staleBlock <= blocknumber); - require(startingMinIndex < length); - // Load the bounds of our binary search - uint256 maxIndex = length - 1; - uint256 minIndex = startingMinIndex; - uint256 staleIndex = 0; - - // We run a binary search on the block number fields in the array between - // the minIndex and maxIndex. If we find indexes with blocknumber < staleBlock - // we set staleIndex to them and return that data for an optional clearing step - // in the calling function. - while (minIndex != maxIndex) { - // We use the ceil instead of the floor because this guarantees that - // we pick the highest blocknumber less than or equal the requested one - uint256 mid = (minIndex + maxIndex + 1) / 2; - // Load and unpack the data in the midpoint index - (uint256 pastBlock, uint256 loadedData) = _loadAndUnpack(data, mid); - - // If we've found the exact block we are looking for - if (pastBlock == blocknumber) { - // Then we just return the data - return (staleIndex, loadedData); - - // Otherwise if the loaded block is smaller than the block number - } else if (pastBlock < blocknumber) { - // Then we first check if this is possibly a stale block - if (pastBlock < staleBlock) { - // If it is we mark it for clearing - staleIndex = mid; - } - // We then repeat the search logic on the indices greater than the midpoint - minIndex = mid; - - // In this case the pastBlock > blocknumber - } else { - // We then repeat the search on the indices below the midpoint - maxIndex = mid - 1; - } - } - - // We load at the final index of the search - (uint256 _pastBlock, uint256 _loadedData) = - _loadAndUnpack(data, minIndex); - // This will only be hit if a user has misconfigured the stale index and then - // tried to load father into the past than has been preserved - require(_pastBlock <= blocknumber, "Search Failure"); - return (staleIndex, _loadedData); - } - - /// @notice Clears storage between two bounds in array - /// @param oldMin The first index to set to zero - /// @param newMin The new minimum filled index, ie clears to index < newMin - /// @param data The storage array pointer - function _clear( - uint256 oldMin, - uint256 newMin, - uint256[] storage data - ) private { - // Correctness checks on this call - require(oldMin <= newMin); - // This function is private and trusted and should be only called by functions which ensure - // that oldMin < newMin < length - assembly { - // The layout of arrays in solidity is [length][data]....[data] so this pointer is the - // slot to write to data - let dataLocation := add(data.slot, 1) - // Loop through each index which is below new min and clear the storage - // Note - Uses strict min so if given an input like oldMin = 5 newMin = 5 will be a no op - for { - let i := oldMin - } lt(i, newMin) { - i := add(i, 1) - } { - // store at the starting data pointer + i 256 bits of zero - sstore(add(dataLocation, i), 0) - } - } - } - - /// @notice Loads and unpacks the block number index and stored data from a data array - /// @param data the storage array - /// @param i the index to load and unpack - /// @return (block number, stored data) - function _loadAndUnpack(uint256[] storage data, uint256 i) - private - view - returns (uint256, uint256) - { - // This function is trusted and should only be called after checking data lengths - // we use assembly for the sload to avoid reloading length. - uint256 loaded; - assembly { - loaded := sload(add(add(data.slot, 1), i)) - } - // Unpack the packed 64 bit block number and 192 bit data field - return ( - loaded >> 192, - loaded & - 0x0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff - ); - } - - /// @notice This function sets our non standard bounds data field where a normal array - /// would have length - /// @param data the pointer to the storage array - /// @param minIndex The minimum non stale index - /// @param length The length of the storage array - function _setBounds( - uint256[] storage data, - uint256 minIndex, - uint256 length - ) private { - // Correctness check - require(minIndex < length); - - assembly { - // Ensure data cleanliness - let clearedLength := and( - length, - 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff - ) - // We move the min index into the top 128 bits by shifting it left by 128 bits - let minInd := shl(128, minIndex) - // We pack the data using binary or - let packed := or(minInd, clearedLength) - // We store in the packed data in the length field of this storage array - sstore(data.slot, packed) - } - } - - /// @notice This function loads and unpacks our packed min index and length for our custom storage array - /// @param data The pointer to the storage location - /// @return minInd the first filled index in the array - /// @return length the length of the array - function _loadBounds(uint256[] storage data) - private - view - returns (uint256 minInd, uint256 length) - { - // Use assembly to manually load the length storage field - uint256 packedData; - assembly { - packedData := sload(data.slot) - } - // We use a shift right to clear out the low order bits of the data field - minInd = packedData >> 128; - // We use a binary and to extract only the bottom 128 bits - length = - packedData & - 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff; - } -} diff --git a/packages/council-typechain/contracts/libraries/MerkleRewards.sol b/packages/council-typechain/contracts/libraries/MerkleRewards.sol deleted file mode 100644 index e03c3594..00000000 --- a/packages/council-typechain/contracts/libraries/MerkleRewards.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; -import "../interfaces/IERC20.sol"; -import "../interfaces/ILockingVault.sol"; - -abstract contract AbstractMerkleRewards { - // The merkle root with deposits encoded into it as hash [address, amount] - // Assumed to be a node sorted tree - bytes32 public rewardsRoot; - // The token to pay out - IERC20 public immutable token; - // The historic user claims - mapping(address => uint256) public claimed; - // The locking gov vault - ILockingVault public lockingVault; - - /// @notice Constructs the contract and sets state and immutable variables - /// @param _rewardsRoot The root a keccak256 merkle tree with leaves which are address amount pairs - /// @param _token The erc20 contract which will be sent to the people with claims on the contract - /// @param _lockingVault The governance vault which this deposits to on behalf of users - constructor( - bytes32 _rewardsRoot, - IERC20 _token, - ILockingVault _lockingVault - ) { - rewardsRoot = _rewardsRoot; - token = _token; - lockingVault = _lockingVault; - // We approve the locking vault so that it we can deposit on behalf of users - _token.approve(address(lockingVault), type(uint256).max); - } - - /// @notice Claims an amount of tokens which are in the tree and moves them directly into - /// governance - /// @param amount The amount of tokens to claim - /// @param delegate The address the user will delegate to, WARNING - should not be zero - /// @param totalGrant The total amount of tokens the user was granted - /// @param merkleProof The merkle de-commitment which proves the user is in the merkle root - /// @param destination The address which will be credited with funds - function claimAndDelegate( - uint256 amount, - address delegate, - uint256 totalGrant, - bytes32[] calldata merkleProof, - address destination - ) external { - // No delegating to zero - require(delegate != address(0), "Zero addr delegation"); - // Validate the withdraw - _validateWithdraw(amount, totalGrant, merkleProof); - // Deposit for this sender into governance locking vault - lockingVault.deposit(destination, amount, delegate); - } - - /// @notice Claims an amount of tokens which are in the tree and send them to the user - /// @param amount The amount of tokens to claim - /// @param totalGrant The total amount of tokens the user was granted - /// @param merkleProof The merkle de-commitment which proves the user is in the merkle root - /// @param destination The address which will be credited with funds - function claim( - uint256 amount, - uint256 totalGrant, - bytes32[] calldata merkleProof, - address destination - ) external virtual { - // Validate the withdraw - _validateWithdraw(amount, totalGrant, merkleProof); - // Transfer to the user - token.transfer(destination, amount); - } - - /// @notice Validate a withdraw attempt by checking merkle proof and ensuring the user has not - /// previously withdrawn - /// @param amount The amount of tokens being claimed - /// @param totalGrant The total amount of tokens the user was granted - /// @param merkleProof The merkle de-commitment which proves the user is in the merkle root - function _validateWithdraw( - uint256 amount, - uint256 totalGrant, - bytes32[] memory merkleProof - ) internal { - // Hash the user plus the total grant amount - bytes32 leafHash = keccak256(abi.encodePacked(msg.sender, totalGrant)); - - // Verify the proof for this leaf - require( - MerkleProof.verify(merkleProof, rewardsRoot, leafHash), - "Invalid Proof" - ); - // Check that this claim won't give them more than the total grant then - // increase the stored claim amount - require(claimed[msg.sender] + amount <= totalGrant, "Claimed too much"); - claimed[msg.sender] += amount; - } -} - -// Deployable version of the abstract -contract MerkleRewards is AbstractMerkleRewards { - /// @notice Constructs the contract and sets state and immutable variables - /// @param _rewardsRoot The root a keccak256 merkle tree with leaves which are address amount pairs - /// @param _token The erc20 contract which will be sent to the people with claims on the contract - /// @param _lockingVault The governance vault which this deposits to on behalf of users - constructor( - bytes32 _rewardsRoot, - IERC20 _token, - ILockingVault _lockingVault - ) AbstractMerkleRewards(_rewardsRoot, _token, _lockingVault) {} -} diff --git a/packages/council-typechain/contracts/libraries/ReentrancyBlock.sol b/packages/council-typechain/contracts/libraries/ReentrancyBlock.sol deleted file mode 100644 index bfc41280..00000000 --- a/packages/council-typechain/contracts/libraries/ReentrancyBlock.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -contract ReentrancyBlock { - // A storage slot for the reentrancy flag - bool private _entered; - // Will use a state flag to prevent this function from being called back into - modifier nonReentrant() { - // Check the state variable before the call is entered - require(!_entered, "Reentrancy"); - // Store that the function has been entered - _entered = true; - // Run the function code - _; - // Clear the state - _entered = false; - } -} diff --git a/packages/council-typechain/contracts/libraries/Storage.sol b/packages/council-typechain/contracts/libraries/Storage.sol deleted file mode 100644 index 818738ac..00000000 --- a/packages/council-typechain/contracts/libraries/Storage.sol +++ /dev/null @@ -1,154 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -// This library allows for secure storage pointers across proxy implementations -// It will return storage pointers based on a hashed name and type string. -library Storage { - // This library follows a pattern which if solidity had higher level - // type or macro support would condense quite a bit. - - // Each basic type which does not support storage locations is encoded as - // a struct of the same name capitalized and has functions 'load' and 'set' - // which load the data and set the data respectively. - - // All types will have a function of the form 'typename'Ptr('name') -> storage ptr - // which will return a storage version of the type with slot which is the hash of - // the variable name and type string. This pointer allows easy state management between - // upgrades and overrides the default solidity storage slot system. - - /// @dev The address type container - struct Address { - address data; - } - - /// @notice A function which turns a variable name for a storage address into a storage - /// pointer for its container. - /// @param name the variable name - /// @return data the storage pointer - function addressPtr(string memory name) - internal - pure - returns (Address storage data) - { - bytes32 typehash = keccak256("address"); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - assembly { - data.slot := offset - } - } - - /// @notice A function to load an address from the container struct - /// @param input the storage pointer for the container - /// @return the loaded address - function load(Address storage input) internal view returns (address) { - return input.data; - } - - /// @notice A function to set the internal field of an address container - /// @param input the storage pointer to the container - /// @param to the address to set the container to - function set(Address storage input, address to) internal { - input.data = to; - } - - /// @dev The uint256 type container - struct Uint256 { - uint256 data; - } - - /// @notice A function which turns a variable name for a storage uint256 into a storage - /// pointer for its container. - /// @param name the variable name - /// @return data the storage pointer - function uint256Ptr(string memory name) - internal - pure - returns (Uint256 storage data) - { - bytes32 typehash = keccak256("uint256"); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - assembly { - data.slot := offset - } - } - - /// @notice A function to load an uint256 from the container struct - /// @param input the storage pointer for the container - /// @return the loaded uint256 - function load(Uint256 storage input) internal view returns (uint256) { - return input.data; - } - - /// @notice A function to set the internal field of a unit256 container - /// @param input the storage pointer to the container - /// @param to the address to set the container to - function set(Uint256 storage input, uint256 to) internal { - input.data = to; - } - - /// @notice Returns the storage pointer for a named mapping of address to uint256 - /// @param name the variable name for the pointer - /// @return data the mapping pointer - function mappingAddressToUnit256Ptr(string memory name) - internal - pure - returns (mapping(address => uint256) storage data) - { - bytes32 typehash = keccak256("mapping(address => uint256)"); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - assembly { - data.slot := offset - } - } - - /// @notice Returns the storage pointer for a named mapping of address to uint256[] - /// @param name the variable name for the pointer - /// @return data the mapping pointer - function mappingAddressToUnit256ArrayPtr(string memory name) - internal - pure - returns (mapping(address => uint256[]) storage data) - { - bytes32 typehash = keccak256("mapping(address => uint256[])"); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - assembly { - data.slot := offset - } - } - - /// @notice Allows external users to calculate the slot given by this lib - /// @param typeString the string which encodes the type - /// @param name the variable name - /// @return the slot assigned by this lib - function getPtr(string memory typeString, string memory name) - external - pure - returns (uint256) - { - bytes32 typehash = keccak256(abi.encodePacked(typeString)); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - return (uint256)(offset); - } - - // A struct which represents 1 packed storage location with a compressed - // address and uint96 pair - struct AddressUint { - address who; - uint96 amount; - } - - /// @notice Returns the storage pointer for a named mapping of address to uint256[] - /// @param name the variable name for the pointer - /// @return data the mapping pointer - function mappingAddressToPackedAddressUint(string memory name) - internal - pure - returns (mapping(address => AddressUint) storage data) - { - bytes32 typehash = keccak256("mapping(address => AddressUint)"); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - assembly { - data.slot := offset - } - } -} diff --git a/packages/council-typechain/contracts/libraries/VestingVaultStorage.sol b/packages/council-typechain/contracts/libraries/VestingVaultStorage.sol deleted file mode 100644 index d0fb9c50..00000000 --- a/packages/council-typechain/contracts/libraries/VestingVaultStorage.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -// Copy of `Storage` with modified scope to match the VestingVault requirements -// This library allows for secure storage pointers across proxy implementations -// It will return storage pointers based on a hashed name and type string. -library VestingVaultStorage { - // This library follows a pattern which if solidity had higher level - // type or macro support would condense quite a bit. - - // Each basic type which does not support storage locations is encoded as - // a struct of the same name capitalized and has functions 'load' and 'set' - // which load the data and set the data respectively. - - // All types will have a function of the form 'typename'Ptr('name') -> storage ptr - // which will return a storage version of the type with slot which is the hash of - // the variable name and type string. This pointer allows easy state management between - // upgrades and overrides the default solidity storage slot system. - - // A struct which represents 1 packed storage location (Grant) - struct Grant { - uint128 allocation; - uint128 withdrawn; - uint128 created; - uint128 expiration; - uint128 cliff; - uint128 latestVotingPower; - address delegatee; - uint256[2] range; - } - - /// @notice Returns the storage pointer for a named mapping of address to uint256[] - /// @param name the variable name for the pointer - /// @return data the mapping pointer - function mappingAddressToGrantPtr(string memory name) - internal - pure - returns (mapping(address => Grant) storage data) - { - bytes32 typehash = keccak256("mapping(address => Grant)"); - bytes32 offset = keccak256(abi.encodePacked(typehash, name)); - assembly { - data.slot := offset - } - } -} diff --git a/packages/council-typechain/contracts/mocks/MockCoreVoting.sol b/packages/council-typechain/contracts/mocks/MockCoreVoting.sol deleted file mode 100644 index 86c6dcf2..00000000 --- a/packages/council-typechain/contracts/mocks/MockCoreVoting.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -contract MockCoreVoting { - // We simply allow voting vaults to be registered by any caller - // We use this in testing the GSC contract - - mapping(address => bool) public approvedVaults; - - function setVault(address vault, bool what) external { - approvedVaults[vault] = what; - } -} diff --git a/packages/council-typechain/contracts/mocks/MockDoubleSpender.sol b/packages/council-typechain/contracts/mocks/MockDoubleSpender.sol deleted file mode 100644 index dec4aaa1..00000000 --- a/packages/council-typechain/contracts/mocks/MockDoubleSpender.sol +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -// taken from our contracts repo - -pragma solidity ^0.8.0; - -import "../features/Spender.sol"; - -// Spends twice in one call -contract MockDoubleSpender { - function doubleSpendSmall(Spender spender, uint256 amount) external { - spender.smallSpend(amount, msg.sender); - spender.smallSpend(amount, msg.sender); - } - - function doubleSpendMedium(Spender spender, uint256 amount) external { - spender.mediumSpend(amount, msg.sender); - spender.mediumSpend(amount, msg.sender); - } - - function doubleSpendLarge(Spender spender, uint256 amount) external { - spender.highSpend(amount, msg.sender); - spender.highSpend(amount, msg.sender); - } -} diff --git a/packages/council-typechain/contracts/mocks/MockERC20.sol b/packages/council-typechain/contracts/mocks/MockERC20.sol deleted file mode 100644 index 297a8c06..00000000 --- a/packages/council-typechain/contracts/mocks/MockERC20.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -// taken from our contracts repo - -import "../libraries/ERC20PermitWithMint.sol"; - -pragma solidity ^0.8.0; - -contract MockERC20 is ERC20PermitWithMint { - constructor( - string memory name_, - string memory symbol_, - address owner_ - ) ERC20PermitWithMint(name_, symbol_, owner_) {} - - function setBalance(address who, uint256 amount) external { - balanceOf[who] = amount; - } - - function setAllowance( - address source, - address spender, - uint256 amount - ) external { - allowance[source][spender] = amount; - } -} diff --git a/packages/council-typechain/contracts/mocks/MockHistoryTracker.sol b/packages/council-typechain/contracts/mocks/MockHistoryTracker.sol deleted file mode 100644 index dc2909b8..00000000 --- a/packages/council-typechain/contracts/mocks/MockHistoryTracker.sol +++ /dev/null @@ -1,202 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/History.sol"; - -// This contract is designed to let us test the storage and search on arrays -// in the historical balance tracking lib. Most patterns in this lib are -// anti patterns which should not be emulated in live systems since they -// break the abstraction layer between this contract and the lib. -contract MockHistoryTracker { - // Bring the internal library methods into scope for the the memory pointer - using History for History.HistoricalBalances; - - // A random [ish] testing address to index the array - address constant _presetUser = 0x829BD824B016326A401d083B33D092293333A830; - - function peekArrayData(uint256 start, uint256 end) - external - view - returns (uint256[] memory, uint256[] memory) - { - History.HistoricalBalances memory balances = History.load("balances"); - uint256[] storage balancesArray = - _load(balances.cachedPointer)[_presetUser]; - - uint256[] memory blockNumbers = new uint256[](end - start); - uint256[] memory storedData = new uint256[](end - start); - uint256 adjustedInd = 0; - for (uint256 i = start; i < end; i++) { - (uint256 blocknumber, uint256 loadedData) = - _loadAndUnpack(balancesArray, i); - blockNumbers[adjustedInd] = blocknumber; - storedData[adjustedInd] = loadedData; - adjustedInd++; - } - - return (blockNumbers, storedData); - } - - // Externally accessible versions of functions in - - function push(uint256 data) external { - History.HistoricalBalances memory balances = History.load("balances"); - balances.push(_presetUser, data); - } - - function multiPush(uint256[] calldata toBePushed) external { - History.HistoricalBalances memory balances = History.load("balances"); - - for (uint256 i = 0; i < toBePushed.length; i++) { - balances.push(_presetUser, toBePushed[i]); - } - } - - function find(uint256 which) external view returns (uint256) { - History.HistoricalBalances memory balances = History.load("balances"); - return balances.find(_presetUser, which); - } - - function findAndClear(uint256 which, uint256 stale) - external - returns (uint256) - { - History.HistoricalBalances memory balances = History.load("balances"); - return balances.findAndClear(_presetUser, which, stale); - } - - function loadBounds() external view returns (uint256, uint256) { - History.HistoricalBalances memory balances = History.load("balances"); - uint256[] storage balancesArray = - _load(balances.cachedPointer)[_presetUser]; - - return _loadBounds(balancesArray); - } - - function clear(uint256 newMin) external { - History.HistoricalBalances memory balances = History.load("balances"); - uint256[] storage balancesArray = - _load(balances.cachedPointer)[_presetUser]; - - (uint256 oldMin, uint256 length) = _loadBounds(balancesArray); - if (newMin > oldMin) { - _clear(oldMin, newMin, balancesArray); - _setBounds(balancesArray, newMin, length); - } else { - revert("Clear out of bounds"); - } - } - - function loadTop() external view returns (uint256) { - History.HistoricalBalances memory balances = History.load("balances"); - return (balances.loadTop(_presetUser)); - } - - // Copy of methods from History because inheritance of private methods is - // impossible. - - function _load(bytes32 pointer) - private - pure - returns (mapping(address => uint256[]) storage storageData) - { - assembly { - storageData.slot := pointer - } - } - - /// @notice Loads and unpacks the block number index and stored data from a data array - /// @param data the storage array - /// @param i the index to load and unpack - /// @return (block number, stored data) - function _loadAndUnpack(uint256[] storage data, uint256 i) - private - view - returns (uint256, uint256) - { - // This function is trusted and should only be called after checking data lengths - // we use assembly for the sload to avoid reloading length. - uint256 loaded; - assembly { - loaded := sload(add(add(data.slot, 1), i)) - } - // Unpack the packed 64 bit block number and 192 bit data field - return ( - loaded >> 192, - loaded & - 0x0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff - ); - } - - /// @notice This function loads and unpacks our packed min index and length for our custom storage array - /// @param data The pointer to the storage location - /// @return minInd the first filled index in the array - /// @return length the length of the array - function _loadBounds(uint256[] storage data) - private - view - returns (uint256 minInd, uint256 length) - { - // Use assembly to manually load the length storage field - uint256 packedData; - assembly { - packedData := sload(data.slot) - } - // We use a shift right to clear out the low order bits of the data field - minInd = packedData >> 128; - // We use a binary and to extract only the bottom 128 bits - length = - packedData & - 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff; - } - - /// @notice - function _clear( - uint256 oldMin, - uint256 newMin, - uint256[] storage data - ) private { - // This function is private and trusted and should be only called by functions which ensure - // that oldMin < newMin < length - assembly { - // The layout of arrays in solidity is [length][data]....[data] so this pointer is the - // slot to write to data - let dataLocation := add(data.slot, 1) - // Loop through each index which is below new min and clear the storage - // Note - Uses strict min so if given an input like oldMin = 5 newMin = 5 will be a no op - for { - let i := oldMin - } lt(i, newMin) { - i := add(i, 1) - } { - // store at the starting data pointer + i 256 bits of zero - sstore(add(dataLocation, i), 0) - } - } - } - - /// @notice This function sets our non standard bounds data field where a normal array - /// would have length - /// @param minIndex The minimum non stale index - /// @param length The length of the storage array - /// @param data the pointer to the storage array - function _setBounds( - uint256[] storage data, - uint256 minIndex, - uint256 length - ) private { - assembly { - // Ensure data cleanliness - let clearedLength := and( - length, - 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff - ) - // We move the min index into the top 128 bits by shifting it left by 128 bits - let minInd := shl(128, minIndex) - // We pack the data using binary or - let packed := or(minInd, clearedLength) - // We store in the packed data in the length field of this storage array - sstore(data.slot, packed) - } - } -} diff --git a/packages/council-typechain/contracts/mocks/MockLockingVault.sol b/packages/council-typechain/contracts/mocks/MockLockingVault.sol deleted file mode 100644 index 965c9c83..00000000 --- a/packages/council-typechain/contracts/mocks/MockLockingVault.sol +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.0; - -contract MockLockingVault { - mapping(address => uint256) public deposits; - mapping(address => address) public delegation; - - function deposit( - address fundedAccount, - uint256 amount, - address firstDelegation - ) external { - deposits[fundedAccount] += amount; - delegation[fundedAccount] = firstDelegation; - } -} diff --git a/packages/council-typechain/contracts/mocks/MockTokenLogic.sol b/packages/council-typechain/contracts/mocks/MockTokenLogic.sol deleted file mode 100644 index cf6f6cf8..00000000 --- a/packages/council-typechain/contracts/mocks/MockTokenLogic.sol +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/Storage.sol"; -import "./StorageRead.sol"; - -contract MockTokenLogic is ReadAndWriteAnyStorage { - // This contract is an implementation target for the proxy so uses the - // proxy storage lib for safe portable slotting cross upgrades. - using Storage for *; - - // We don't declare them but the following are our state variables - // uint256 totalSupply - // address owner - // mapping(address => balance) balances - // Access functions which prevent us from typo-ing the variable name below - function _getOwner() internal pure returns (Storage.Address storage) { - return Storage.addressPtr("owner"); - } - - function _getTotalSupply() internal pure returns (Storage.Uint256 storage) { - return Storage.uint256Ptr("totalSupply"); - } - - function _getBalancesMapping() - internal - pure - returns (mapping(address => uint256) storage) - { - return Storage.mappingAddressToUnit256Ptr("balances"); - } - - constructor(address _owner) { - Storage.Address storage owner = Storage.addressPtr("owner"); - owner.set(_owner); - } - - function transfer(address to, uint256 amount) external { - mapping(address => uint256) storage balances = _getBalancesMapping(); - - balances[msg.sender] -= amount; - balances[to] += amount; - } - - function balanceOf(address who) external view returns (uint256) { - mapping(address => uint256) storage balances = _getBalancesMapping(); - return (balances[who]); - } - - function totalSupply() external view returns (uint256) { - Storage.Uint256 storage _totalSupply = _getTotalSupply(); - return (_totalSupply.load()); - } - - modifier onlyOwner { - Storage.Address storage owner = _getOwner(); - require(msg.sender == owner.load(), "unauthorized"); - _; - } - - function mint(address to, uint256 amount) external onlyOwner() { - Storage.Uint256 storage _totalSupply = _getTotalSupply(); - mapping(address => uint256) storage balances = _getBalancesMapping(); - - balances[to] += amount; - uint256 localTotalSupply = _totalSupply.load(); - _totalSupply.set(localTotalSupply + amount); - } - - // A function purely for testing which is a totally unrestricted mint - function increaseBalance(address to, uint256 amount) external { - Storage.Uint256 storage _totalSupply = _getTotalSupply(); - mapping(address => uint256) storage balances = _getBalancesMapping(); - - balances[to] += amount; - uint256 localTotalSupply = _totalSupply.load(); - _totalSupply.set(localTotalSupply + amount); - } -} diff --git a/packages/council-typechain/contracts/mocks/MockVotingVault.sol b/packages/council-typechain/contracts/mocks/MockVotingVault.sol deleted file mode 100644 index eb587216..00000000 --- a/packages/council-typechain/contracts/mocks/MockVotingVault.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.0; - -import "../interfaces/IVotingVault.sol"; - -contract MockVotingVault is IVotingVault { - mapping(address => uint256) public votingPower; - - function setVotingPower(address _user, uint256 _amount) public { - votingPower[_user] = _amount; - } - - function queryVotePower( - address _user, - uint256 blockNumber, - bytes calldata - ) public view override returns (uint256) { - blockNumber; - return votingPower[_user]; - } -} diff --git a/packages/council-typechain/contracts/mocks/Reverter.sol b/packages/council-typechain/contracts/mocks/Reverter.sol deleted file mode 100644 index c731317a..00000000 --- a/packages/council-typechain/contracts/mocks/Reverter.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -contract Reverter { - function fail() external pure { - require(false); - } -} diff --git a/packages/council-typechain/contracts/mocks/StorageRead.sol b/packages/council-typechain/contracts/mocks/StorageRead.sol deleted file mode 100644 index 27193f16..00000000 --- a/packages/council-typechain/contracts/mocks/StorageRead.sol +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -contract ReadAndWriteAnyStorage { - function readStorage(uint256 slot) public view returns (bytes32 data) { - assembly { - data := sload(slot) - } - } - - function writeStorage(uint256 slot, bytes32 data) public { - assembly { - sstore(slot, data) - } - } -} diff --git a/packages/council-typechain/contracts/mocks/TestCoreVoting.sol b/packages/council-typechain/contracts/mocks/TestCoreVoting.sol deleted file mode 100644 index aa850b31..00000000 --- a/packages/council-typechain/contracts/mocks/TestCoreVoting.sol +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.0; - -import "../CoreVoting.sol"; - -contract TestCoreVoting is CoreVoting { - // public dummy value used to test calldata calls - uint256 public dummyValue; - - constructor( - address _timelock, - uint256 _baseQuorum, - uint256 _minProposalPower, - address _gsc, - address[] memory votingVaults - ) - CoreVoting( - _timelock, - _baseQuorum, - _minProposalPower, - _gsc, - votingVaults - ) - {} - - function getProposalData(uint256 _proposalID) - public - view - returns ( - bytes32, - uint128, - uint128, - uint128, - uint128[3] memory - ) - { - return ( - proposals[_proposalID].proposalHash, - proposals[_proposalID].created, - proposals[_proposalID].unlock, - proposals[_proposalID].quorum, - proposals[_proposalID].votingPower - ); - } - - function updateDummy(uint256 _newValue) public { - dummyValue = _newValue; - } - - function getVaultStatus(address _vault) public view returns (bool) { - return approvedVaults[_vault]; - } - - function getCustomQuorum(address _target, bytes4 _selector) - public - view - returns (uint256) - { - return quorums(_target, _selector); - } -} diff --git a/packages/council-typechain/contracts/mocks/TestTreasury.sol b/packages/council-typechain/contracts/mocks/TestTreasury.sol deleted file mode 100644 index 9e0b8391..00000000 --- a/packages/council-typechain/contracts/mocks/TestTreasury.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -import "../features/Treasury.sol"; - -pragma solidity ^0.8.3; - -// This contract is designed to hold the erc20 and eth reserves of the dao -// and will likely control a large amount of funds. It is designed to be -// flexible, secure and simple -contract TestTreasury is Treasury { - uint256 public dummy; - - constructor(address _governance) Treasury(_governance) {} - - // function to test call forwarding - function updateDummy(uint256 _newDummy) public { - dummy = _newDummy; - } -} diff --git a/packages/council-typechain/contracts/mocks/TestVestingVault.sol b/packages/council-typechain/contracts/mocks/TestVestingVault.sol deleted file mode 100644 index 3310569b..00000000 --- a/packages/council-typechain/contracts/mocks/TestVestingVault.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.8.0; - -import "../vaults/VestingVault.sol"; - -contract TestVestingVault is VestingVault { - constructor(IERC20 _token, uint256 _stale) VestingVault(_token, _stale) {} - - function unassigned() public view returns (uint256) { - return _unassigned().data; - } -} diff --git a/packages/council-typechain/contracts/simpleProxy.sol b/packages/council-typechain/contracts/simpleProxy.sol deleted file mode 100644 index 12533bb6..00000000 --- a/packages/council-typechain/contracts/simpleProxy.sol +++ /dev/null @@ -1,120 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -contract SimpleProxy { - // This contract splits the storage of a contract from its logic, it will - // call an implementation contract via delegatecall. That implementation - // changes what is stored in this contract, by changing the implementation - // address this contract effectively has different logic. - - // NOTE - Functions 'upgradeProxy', 'resetProxyOwner', 'proxyImplementation' and 'proxyGovernance' - // are occupied namespace and cannot be used in implementation contracts. In a very unlikely - // edge case a 4 bit hash collision between function selectors could block other function names. - - // The implementation contains the logic for this proxy, it for security reasons - // should not assume only this contract can call it. - // NOTE - It's insecure in implementation proxies to use the default storage layout since - // it is possible to overwrite this address. Use Storage.sol for storage. - address public proxyImplementation; - // The address which can upgrade this contract - address public proxyGovernance; - - /// @notice Sets up the authorizable library for the proxy - /// @param _governance An address which will be authorized to change the implementation - /// it will also be set at the owner of this contract. - /// @param _firstImplementation The first implementation address - constructor(address _governance, address _firstImplementation) { - // Set governance - proxyGovernance = _governance; - // Set the first implementation - proxyImplementation = _firstImplementation; - } - - /// @notice Allows authorized addresses to change the implementation - /// @param _newImplementation The new implementation address - function upgradeProxy(address _newImplementation) external { - require(msg.sender == proxyGovernance, "unauthorized"); - proxyImplementation = _newImplementation; - } - - /// @notice Sets the address which can upgrade this proxy, only callable - /// by the current address which can upgrade this proxy. - /// @param _newGovernance The new governance address - function resetProxyOwner(address _newGovernance) external { - require(msg.sender == proxyGovernance, "unauthorized"); - proxyGovernance = _newGovernance; - } - - /// @notice The fallback is the routing function for the proxy and uses delegatecall - /// to forward any calls which are made to this address to be executed by the - /// logic contract. - /// @dev WARNING - We don't do extcode size checks like high level solidity if the - /// implementation has 0 bytecode this will succeed but do nothing. - fallback() external payable { - assembly { - let calldataLength := calldatasize() - - // equivalent to receive() external payable {} - if iszero(calldataLength) { - return(0, 0) - } - - // We load the free memory pointer - // Note - We technically don't need to do this because the whole call is - // in assembly but it's good practice to match solidity's memory management - let ptr := mload(0x40) - // Copy the calldata into memory - calldatacopy( - // The position in memory this copies to - ptr, - // The calldata index this copies from - 0, - // The number of bytes to copy - calldataLength - ) - // Move the free memory pointer - mstore(0x40, add(ptr, calldataLength)) - // Load the implementation address - let implementation := sload(proxyImplementation.slot) - // It's very unlikely any extra data got loaded but we clean anyway - implementation := and( - implementation, - 0x000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - ) - // Now we make the delegatecall - let success := delegatecall( - // The gas param - gas(), - // The address - implementation, - // The memory location of the input data - ptr, - // The input size - calldataLength, - // The output memory pointer and size, we use the return data instead - 0, - 0 - ) - // Load our new free memory pointer - ptr := mload(0x40) - // Load the return data size - let returndataLength := returndatasize() - // Copy the return data - returndatacopy( - // Memory location of the output - ptr, - // Memory location of the input - 0, - // Length of the input - returndataLength - ) - // If the call was not successful we revert - if iszero(success) { - revert(ptr, returndataLength) - } - - // If the call was successful we return - return(ptr, returndataLength) - } - } -} diff --git a/packages/council-typechain/contracts/vaults/FrozenLockingVault.sol b/packages/council-typechain/contracts/vaults/FrozenLockingVault.sol deleted file mode 100644 index 96d32eb6..00000000 --- a/packages/council-typechain/contracts/vaults/FrozenLockingVault.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "./LockingVault.sol"; - -// All elves stay in the elfiverse -contract FrozenLockingVault is AbstractLockingVault { - /// @notice Constructs the contract by setting immutables - /// @param _token The external erc20 token contract - /// @param _staleBlockLag The number of blocks before the delegation history is forgotten - constructor(IERC20 _token, uint256 _staleBlockLag) - AbstractLockingVault(_token, _staleBlockLag) - {} - - // These functions are the only way for tokens to leave the contract - // Therefore they now revert - - /// @notice Does nothing, always reverts - function withdraw(uint256) external pure override { - revert("Frozen"); - } -} diff --git a/packages/council-typechain/contracts/vaults/FrozenVestingVault.sol b/packages/council-typechain/contracts/vaults/FrozenVestingVault.sol deleted file mode 100644 index 7371bb7e..00000000 --- a/packages/council-typechain/contracts/vaults/FrozenVestingVault.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "./VestingVault.sol"; - -// You can come in but you can never leave -contract FrozenVestingVault is AbstractVestingVault { - /// @notice Constructs the contract by passing through the the super - /// @param _token The erc20 token to grant. - /// @param _stale Stale block used for voting power calculations. - constructor(IERC20 _token, uint256 _stale) - AbstractVestingVault(_token, _stale) - {} - - // These functions are the only way for tokens to leave the contract - // Therefore they now revert - - /// @notice Does nothing, always reverts - function removeGrant(address) public pure override { - revert("Frozen"); - } - - /// @notice Does nothing, always reverts - function claim() public pure override { - revert("Frozen"); - } - - /// @notice Does nothing, always reverts - function withdraw(uint256, address) public pure override { - revert("Frozen"); - } -} diff --git a/packages/council-typechain/contracts/vaults/GSCVault.sol b/packages/council-typechain/contracts/vaults/GSCVault.sol deleted file mode 100644 index cb84b2e4..00000000 --- a/packages/council-typechain/contracts/vaults/GSCVault.sol +++ /dev/null @@ -1,194 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../interfaces/ICoreVoting.sol"; -import "../interfaces/IVotingVault.sol"; -import "../libraries/Authorizable.sol"; - -// This vault allows someone to gain one vote on the GSC and tracks that status through time -// it will be a voting vault of the gsc voting contract -// It is not going to be an upgradable proxy since only a few users use it and it doesn't have -// high migration overhead. It also won't have full historical tracking which will cause -// GSC votes to behave differently than others. Namely, anyone who is a member at any point -// in the voting period can vote. - -contract GSCVault is Authorizable, IVotingVault { - // Tracks which people are in the GSC, which vaults they use and when they became members - mapping(address => Member) public members; - // The core voting contract with approved voting vaults - ICoreVoting public coreVoting; - // The amount of votes needed to be on the GSC - uint256 public votingPowerBound; - // The duration during which a fresh gsc member cannot vote. - uint256 public idleDuration = 4 days; - - // Event to help tracking members - event MembershipProved(address indexed who, uint256 when); - // Event to help tracking kicks - event Kicked(address indexed who, uint256 when); - - struct Member { - // vaults used by the member to gain membership - address[] vaults; - // timestamp when the member joined - uint256 joined; - } - - /// @notice constructs this contract and initial vars - /// @param _coreVoting The core voting contract - /// @param _votingPowerBound The first voting power bound - /// @param _owner The owner of this contract, should be the timelock contract - constructor( - ICoreVoting _coreVoting, - uint256 _votingPowerBound, - address _owner - ) { - // Set the state variables - coreVoting = _coreVoting; - votingPowerBound = _votingPowerBound; - // Set the owner - setOwner(address(_owner)); - } - - /// @notice Called to prove membership in the GSC - /// @param votingVaults The contracts this person has their voting power in - /// @param extraData Extra data given to the vaults to help calculation - function proveMembership( - address[] calldata votingVaults, - bytes[] calldata extraData - ) external { - // Check for call validity - assert(votingVaults.length > 0); - // We loop through the voting vaults to check they are authorized - // We check all up front to prevent any reentrancy or weird side effects - for (uint256 i = 0; i < votingVaults.length; i++) { - // No repeated vaults in the list - for (uint256 j = i + 1; j < votingVaults.length; j++) { - require(votingVaults[i] != votingVaults[j], "duplicate vault"); - } - // Call the mapping the core voting contract to check that - // the provided address is in fact approved. - // Note - Post Berlin hardfork this repeated access is quite cheap. - bool vaultStatus = coreVoting.approvedVaults(votingVaults[i]); - require(vaultStatus, "Voting vault not approved"); - } - // Now we tally the caller's voting power - uint256 totalVotes = 0; - // Parse through the list of vaults - for (uint256 i = 0; i < votingVaults.length; i++) { - // Call the vault to check last block's voting power - // Last block to ensure there's no flash loan or other - // intra contract interaction - uint256 votes = - IVotingVault(votingVaults[i]).queryVotePower( - msg.sender, - block.number - 1, - extraData[i] - ); - // Add up the votes - totalVotes += votes; - } - // Require that the caller has proven that they have enough votes - require(totalVotes >= votingPowerBound, "Not enough votes"); - // if the caller has already provedMembership, update their votingPower without - // resetting their idle duration. - if (members[msg.sender].joined != 0) { - members[msg.sender].vaults = votingVaults; - } else { - members[msg.sender] = Member(votingVaults, block.timestamp); - } - // Emit the event tracking this - emit MembershipProved(msg.sender, block.timestamp); - } - - /// @notice Removes a GSC member who's registered vaults no longer contain enough votes - /// @param who The address to challenge. - /// @param extraData the extra data the vaults need to load the user's voting power - /// @dev NOTE - Because the bytes extra data must be supplied by the kicker vaults must - /// revert if not provided correct extra data [ie merkle proof for total power] - /// or they cannot be relied upon to maintain status in the GSC. - function kick(address who, bytes[] calldata extraData) external { - // Load the vaults into memory - address[] memory votingVaults = members[who].vaults; - // We verify that they have lost sufficient voting power to be kicked - uint256 totalVotes = 0; - // Parse through the list of vaults - for (uint256 i = 0; i < votingVaults.length; i++) { - // If the vault is not approved we don't count its votes now - if (coreVoting.approvedVaults(votingVaults[i])) { - // Call the vault to check last block's voting power - // Last block to ensure there's no flash loan or other - // intra contract interaction - uint256 votes = - IVotingVault(votingVaults[i]).queryVotePower( - who, - block.number - 1, - extraData[i] - ); - // Add up the votes - totalVotes += votes; - } - } - // Only proceed if the member is currently kick-able - require(totalVotes < votingPowerBound, "Not kick-able"); - // Delete the member - delete members[who]; - // Emit a challenge event - emit Kicked(who, block.number); - } - - /// @notice Queries voting power, GSC members get one vote and the owner gets 100k - /// @param who Which address to query - /// @return Returns the votes of the queried address - /// @dev Because this function ignores the when variable it creates a unique voting system - /// and should not be plugged in with truly historic ones. - function queryVotePower( - address who, - uint256, - bytes calldata - ) public view override returns (uint256) { - // If the address queried is the owner they get a huge number of votes - // This allows the primary governance timelock to take any action the GSC - // can make or block any action the GSC can make. But takes as many votes as - // a protocol upgrade. - if (who == owner) { - return 100000; - } - // If the who has been in the GSC longer than idleDuration - // return 1 and otherwise return 0. - if ( - members[who].joined > 0 && - (members[who].joined + idleDuration) <= block.timestamp - ) { - return 1; - } else { - return 0; - } - } - - /// @notice Queries user voting vaults used to gain membership. - /// @param who Which address to query - function getUserVaults(address who) public view returns (address[] memory) { - return members[who].vaults; - } - - /// Functions to allow gov to reset the state vars - - /// @notice Sets the core voting contract - /// @param _newVoting The new core voting contract - function setCoreVoting(ICoreVoting _newVoting) external onlyOwner() { - coreVoting = _newVoting; - } - - /// @notice Sets the vote power bound - /// @param _newBound The new vote power bound - function setVotePowerBound(uint256 _newBound) external onlyOwner() { - votingPowerBound = _newBound; - } - - /// @notice Sets the duration during which new gsc members remain unable to vote - /// @param _idleDuration The duration in seconds. - function setIdleDuration(uint256 _idleDuration) external onlyOwner() { - idleDuration = _idleDuration; - } -} diff --git a/packages/council-typechain/contracts/vaults/LockingVault.sol b/packages/council-typechain/contracts/vaults/LockingVault.sol deleted file mode 100644 index 6b0fafbe..00000000 --- a/packages/council-typechain/contracts/vaults/LockingVault.sol +++ /dev/null @@ -1,206 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/History.sol"; -import "../libraries/Storage.sol"; -import "../interfaces/IERC20.sol"; -import "../interfaces/IVotingVault.sol"; -import "../interfaces/ILockingVault.sol"; - -abstract contract AbstractLockingVault is IVotingVault, ILockingVault { - // Bring our libraries into scope - using History for *; - using Storage for *; - - // Immutables are in bytecode so don't need special storage treatment - IERC20 public immutable override token; - // A constant which is how far back stale blocks are - uint256 public immutable staleBlockLag; - - // Event to track delegation data - event VoteChange(address indexed from, address indexed to, int256 amount); - - /// @notice Constructs the contract by setting immutables - /// @param _token The external erc20 token contract - /// @param _staleBlockLag The number of blocks before the delegation history is forgotten - constructor(IERC20 _token, uint256 _staleBlockLag) { - token = _token; - staleBlockLag = _staleBlockLag; - } - - // This contract is a proxy so we use the custom state management system from - // storage and return the following as methods to isolate that call. - - // deposits mapping(address => (address, uint96)) - /// @notice A single function endpoint for loading storage for deposits - /// @return returns a storage mapping which can be used to look up deposit data - function _deposits() - internal - pure - returns (mapping(address => Storage.AddressUint) storage) - { - // This call returns a storage mapping with a unique non overwrite-able storage location - // which can be persisted through upgrades, even if they change storage layout - return (Storage.mappingAddressToPackedAddressUint("deposits")); - } - - /// Getter for the deposits mapping - /// @param who The user to query the balance of - /// @return (address delegated to, amount of deposit) - function deposits(address who) external view returns (address, uint96) { - Storage.AddressUint storage userData = _deposits()[who]; - return (userData.who, userData.amount); - } - - /// @notice Returns the historical voting power tracker - /// @return A struct which can push to and find items in block indexed storage - function _votingPower() - internal - pure - returns (History.HistoricalBalances memory) - { - // This call returns a storage mapping with a unique non overwrite-able storage location - // which can be persisted through upgrades, even if they change storage layout - return (History.load("votingPower")); - } - - /// @notice Attempts to load the voting power of a user - /// @param user The address we want to load the voting power of - /// @param blockNumber the block number we want the user's voting power at - /// @return the number of votes - function queryVotePower( - address user, - uint256 blockNumber, - bytes calldata - ) external override returns (uint256) { - // Get our reference to historical data - History.HistoricalBalances memory votingPower = _votingPower(); - // Find the historical data and clear everything more than 'staleBlockLag' into the past - return - votingPower.findAndClear( - user, - blockNumber, - block.number - staleBlockLag - ); - } - - /// @notice Loads the voting power of a user without changing state - /// @param user The address we want to load the voting power of - /// @param blockNumber the block number we want the user's voting power at - /// @return the number of votes - function queryVotePowerView(address user, uint256 blockNumber) - external - view - returns (uint256) - { - // Get our reference to historical data - History.HistoricalBalances memory votingPower = _votingPower(); - // Find the historical datum - return votingPower.find(user, blockNumber); - } - - /// @notice Deposits and delegates voting power to an address provided with the call - /// @param fundedAccount The address to credit this deposit to - /// @param amount The amount of token which is deposited - /// @param firstDelegation First delegation address - /// @dev Note - There's a minor griefing attack on this which sets someones delegation - /// address by depositing before them, requiring them to call delegate to reset it. - /// Given the gas price required and 0 financial benefit we consider it unlikely. - /// Warning - Users should not set delegation to the zero address as this will allow - /// someone to change their delegation by depositing a small amount to their - /// account. - function deposit( - address fundedAccount, - uint256 amount, - address firstDelegation - ) external override { - // No delegating to zero - require(firstDelegation != address(0), "Zero addr delegation"); - // Move the tokens into this contract - token.transferFrom(msg.sender, address(this), amount); - // Load our deposits storage - Storage.AddressUint storage userData = _deposits()[fundedAccount]; - // Load who has the user's votes - address delegate = userData.who; - - if (delegate == address(0)) { - // If the user is un-delegated we delegate to their indicated address - delegate = firstDelegation; - // Set the delegation - userData.who = delegate; - // Now we increase the user's balance - userData.amount += uint96(amount); - } else { - // In this case we make no change to the user's delegation - // Now we increase the user's balance - userData.amount += uint96(amount); - } - // Next we increase the delegation to their delegate - // Get the storage pointer - History.HistoricalBalances memory votingPower = _votingPower(); - // Load the most recent voter power stamp - uint256 delegateeVotes = votingPower.loadTop(delegate); - // Emit an event to track votes - emit VoteChange(fundedAccount, delegate, int256(amount)); - // Add the newly deposited votes to the delegate - votingPower.push(delegate, delegateeVotes + amount); - } - - /// @notice Removes tokens from this contract and the voting power they represent - /// @param amount The amount of token to withdraw - function withdraw(uint256 amount) external virtual override { - // Load our deposits storage - Storage.AddressUint storage userData = _deposits()[msg.sender]; - // Reduce the user's stored balance - // If properly optimized this block should result in 1 sload 1 store - userData.amount -= uint96(amount); - address delegate = userData.who; - // Reduce the delegate voting power - // Get the storage pointer - History.HistoricalBalances memory votingPower = _votingPower(); - // Load the most recent voter power stamp - uint256 delegateeVotes = votingPower.loadTop(delegate); - // remove the votes from the delegate - votingPower.push(delegate, delegateeVotes - amount); - // Emit an event to track votes - emit VoteChange(msg.sender, delegate, -1 * int256(amount)); - // Transfers the result to the sender - token.transfer(msg.sender, amount); - } - - /// @notice Changes a user's voting power - /// @param newDelegate The new address which gets voting power - function changeDelegation(address newDelegate) external override { - // Get the stored user data - Storage.AddressUint storage userData = _deposits()[msg.sender]; - // Get the user balance - uint256 userBalance = uint256(userData.amount); - address oldDelegate = userData.who; - // Reset the user delegation - userData.who = newDelegate; - // Reduce the old voting power - // Get the storage pointer - History.HistoricalBalances memory votingPower = _votingPower(); - // Load the old delegate's voting power - uint256 oldDelegateVotes = votingPower.loadTop(oldDelegate); - // Reduce the old voting power - votingPower.push(oldDelegate, oldDelegateVotes - userBalance); - // Emit an event to track votes - emit VoteChange(msg.sender, oldDelegate, -1 * int256(userBalance)); - // Get the new delegate's votes - uint256 newDelegateVotes = votingPower.loadTop(newDelegate); - // Store the increase in power - votingPower.push(newDelegate, newDelegateVotes + userBalance); - // Emit an event tracking this voting power change - emit VoteChange(msg.sender, newDelegate, int256(userBalance)); - } -} - -contract LockingVault is AbstractLockingVault { - /// @notice Constructs the contract by setting immutables - /// @param _token The external erc20 token contract - /// @param _staleBlockLag The number of blocks before the delegation history is forgotten - constructor(IERC20 _token, uint256 _staleBlockLag) - AbstractLockingVault(_token, _staleBlockLag) - {} -} diff --git a/packages/council-typechain/contracts/vaults/NonvotingVault.sol b/packages/council-typechain/contracts/vaults/NonvotingVault.sol deleted file mode 100644 index b11f2d2a..00000000 --- a/packages/council-typechain/contracts/vaults/NonvotingVault.sol +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../libraries/Authorizable.sol"; -import { ILockingVault } from "../interfaces/ILockingVault.sol"; -import { - SafeERC20, - IERC20 -} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; - -contract NonVotingVault is Authorizable { - using SafeERC20 for IERC20; - - // The locking gov vault - ILockingVault public lockingVault; - IERC20 public immutable token; - - /// @notice Constructs this contract - /// @param _owner The address authorized to withdraw - /// @param _lockingVault The governance vault which this withdraws from - constructor(address _owner, ILockingVault _lockingVault) Authorizable() { - setOwner(_owner); - lockingVault = _lockingVault; - address _token = address(lockingVault.token()); - token = IERC20(_token); - IERC20(_token).safeApprove(address(lockingVault), type(uint256).max); - } - - /// @notice Withdraws from the locking vault - /// @param amount The amount to withdraw - /// @param destination The location to send the withdrawn tokens - function withdraw(uint256 amount, address destination) external onlyOwner { - lockingVault.withdraw(amount); - token.safeTransfer(destination, amount); - } -} diff --git a/packages/council-typechain/contracts/vaults/OptimisticRewards.sol b/packages/council-typechain/contracts/vaults/OptimisticRewards.sol deleted file mode 100644 index 0867122a..00000000 --- a/packages/council-typechain/contracts/vaults/OptimisticRewards.sol +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../interfaces/IERC20.sol"; -import "../interfaces/IVotingVault.sol"; -import "../interfaces/ILockingVault.sol"; -import "../libraries/Authorizable.sol"; -import "../libraries/MerkleRewards.sol"; - -// This contract follows an optimistic reward model, an authorized address the 'proposer' -// can submit a new merkle root and after a delay it is set the new merkle root. -// Durning the period before the root is accepted governance can prevent the update -// by removing that proposed root and resetting the timer. - -// We've chosen this model to allow rewards flexibility. Any replicable off-chain program -// which can be run and verified by governance and community members, can be the rewards -// algorithm followed by this contract. - -contract OptimisticRewards is MerkleRewards, Authorizable, IVotingVault { - // The optional pending root for this rewards contract - bytes32 public pendingRoot; - // The time the pending proposal root was proposed. Note always check for 0 here when using. - uint256 public proposalTime; - // The address with the power to propose new roots. - address public proposer; - // Defaults to one week - uint256 public challengePeriod = 7 days; - - /// @notice Constructs this contract and sets state variables - /// @param _governance The address which owns this contract and can reset other vars - /// @param _startingRoot The starting merkle root for this contract - /// @param _proposer The address which can propose new roots - /// @param _revoker The address which can stop proposed roots - /// @param _token The token in which rewards are paid - /// @param _lockingVault The governance locking vault for this token - constructor( - address _governance, - bytes32 _startingRoot, - address _proposer, - address _revoker, - IERC20 _token, - ILockingVault _lockingVault - ) MerkleRewards(_startingRoot, _token, _lockingVault) { - proposer = _proposer; - _authorize(_revoker); - setOwner(_governance); - } - - /// @notice Two combined functions (1) check if the previous rewards are confirmed and if so post them - /// (2) propose rewards for the next period. By combining into one call we just need one regular maintenance - /// call instead of two. - /// @param newRoot The merkle root of the proposed new rewards - /// @dev NOTE - If called before a proposed root would take effect it will overwrite that root AND timestamp. Meaning - /// valid rewards may be delayed by a sloppy proposer sending a tx even a few minutes ahead of time. - function proposeRewards(bytes32 newRoot) external { - // First authorize the call - require(msg.sender == proposer, "Not proposer"); - // Second check if a valid outstanding update can be propagated to allow people to claim - if ( - // We check there is some update pending, no setting to zero - pendingRoot != bytes32(0) && - proposalTime != 0 && - // Then we check enough time has passed - block.timestamp > proposalTime + challengePeriod - ) { - // Set the root in the MerkleRewards contract - rewardsRoot = pendingRoot; - } - // Update state - pendingRoot = newRoot; - proposalTime = block.timestamp; - } - - /// @notice Attempts to load the voting power of a user via merkleProofs - /// @param user The address we want to load the voting power of - // @param blockNumber unused in this contract - /// @param extraData Abi encoded vault balance merkle proof pair - /// @return the number of votes - function queryVotePower( - address user, - uint256, - bytes calldata extraData - ) external view override returns (uint256) { - // Decode the extra data - (uint256 totalGrant, bytes32[] memory proof) = - abi.decode(extraData, (uint256, bytes32[])); - // Hash the user plus the total grant amount - bytes32 leafHash = keccak256(abi.encodePacked(user, totalGrant)); - - // Verify the proof for this leaf - require( - MerkleProof.verify(proof, rewardsRoot, leafHash), - "Invalid Proof" - ); - - // Return the total votes for the user - // Note - If you want to set up a system where unclaimed rewards have preferential voting treatment - // it is quite easy to add a multiplier to these lines and it will achieve that. - uint256 votes = totalGrant - claimed[user]; - return (votes); - } - - /// @notice Allows a revoker to remove a rewards root. This is a spam vector given a malicious revoker, - /// with the only solution being governance removal of that authorized revoker. - function challengeRewards() external onlyAuthorized { - // Delete pending rewards - pendingRoot = bytes32(0); - proposalTime = 0; - } - - /// @notice Allows changing the proposer by governance - /// @param _proposer The new proposer address - function setProposer(address _proposer) external onlyOwner { - proposer = _proposer; - } - - /// @notice Allows changing the proposal challenge period by governance - /// @param _challengePeriod The new challenge period - function setChallengePeriod(uint256 _challengePeriod) external onlyOwner { - challengePeriod = _challengePeriod; - } -} diff --git a/packages/council-typechain/contracts/vaults/VestingVault.sol b/packages/council-typechain/contracts/vaults/VestingVault.sol deleted file mode 100644 index fcb2a891..00000000 --- a/packages/council-typechain/contracts/vaults/VestingVault.sol +++ /dev/null @@ -1,529 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.3; - -import "../interfaces/IERC20.sol"; -import "../libraries/History.sol"; -import "../libraries/VestingVaultStorage.sol"; -import "../libraries/Storage.sol"; -import "../interfaces/IVotingVault.sol"; - -abstract contract AbstractVestingVault is IVotingVault { - // Bring our libraries into scope - using History for *; - using VestingVaultStorage for *; - using Storage for *; - - // NOTE: There is no emergency withdrawal, any funds not sent via deposit() are - // unrecoverable by this version of the VestingVault - - // This contract has a privileged grant manager who can add grants or remove grants - // It will not transfer in on each grant but rather check for solvency via state variables. - - // Immutables are in bytecode so don't need special storage treatment - IERC20 public immutable token; - - // A constant which is how far back stale blocks are - uint256 public immutable staleBlockLag; - - event VoteChange(address indexed to, address indexed from, int256 amount); - - /// @notice Constructs the contract. - /// @param _token The erc20 token to grant. - /// @param _stale Stale block used for voting power calculations. - constructor(IERC20 _token, uint256 _stale) { - token = _token; - staleBlockLag = _stale; - } - - /// @notice initialization function to set initial variables. - /// @dev Can only be called once after deployment. - /// @param manager_ The vault manager can add and remove grants. - /// @param timelock_ The timelock address can change the unvested multiplier. - function initialize(address manager_, address timelock_) public { - require(Storage.uint256Ptr("initialized").data == 0, "initialized"); - Storage.set(Storage.uint256Ptr("initialized"), 1); - Storage.set(Storage.addressPtr("manager"), manager_); - Storage.set(Storage.addressPtr("timelock"), timelock_); - Storage.set(Storage.uint256Ptr("unvestedMultiplier"), 100); - } - - // deposits mapping(address => Grant) - /// @notice A single function endpoint for loading grant storage - /// @dev Only one Grant is allowed per address. Grants SHOULD NOT - /// be modified. - /// @return returns a storage mapping which can be used to look up grant data - function _grants() - internal - pure - returns (mapping(address => VestingVaultStorage.Grant) storage) - { - // This call returns a storage mapping with a unique non overwrite-able storage location - // which can be persisted through upgrades, even if they change storage layout - return (VestingVaultStorage.mappingAddressToGrantPtr("grants")); - } - - /// @notice A single function endpoint for loading the starting - /// point of the range for each accepted grant - /// @dev This is modified any time a grant is accepted - /// @return returns the starting point uint - function _loadBound() internal pure returns (Storage.Uint256 memory) { - // This call returns a storage mapping with a unique non overwrite-able storage location - // which can be persisted through upgrades, even if they change storage layout - return Storage.uint256Ptr("bound"); - } - - /// @notice A function to access the storage of the unassigned token value - /// @dev The unassigned tokens are not part of any grant and can be used - /// for a future grant or withdrawn by the manager. - /// @return A struct containing the unassigned uint. - function _unassigned() internal pure returns (Storage.Uint256 storage) { - return Storage.uint256Ptr("unassigned"); - } - - /// @notice A function to access the storage of the manager address. - /// @dev The manager can access all functions with the onlyManager modifier. - /// @return A struct containing the manager address. - function _manager() internal pure returns (Storage.Address memory) { - return Storage.addressPtr("manager"); - } - - /// @notice A function to access the storage of the timelock address - /// @dev The timelock can access all functions with the onlyTimelock modifier. - /// @return A struct containing the timelock address. - function _timelock() internal pure returns (Storage.Address memory) { - return Storage.addressPtr("timelock"); - } - - /// @notice A function to access the storage of the unvestedMultiplier value - /// @dev The unvested multiplier is a number that represents the voting power of each - /// unvested token as a percentage of a vested token. For example if - /// unvested tokens have 50% voting power compared to vested ones, this value would be 50. - /// This can be changed by governance in the future. - /// @return A struct containing the unvestedMultiplier uint. - function _unvestedMultiplier() - internal - pure - returns (Storage.Uint256 memory) - { - return Storage.uint256Ptr("unvestedMultiplier"); - } - - modifier onlyManager() { - require(msg.sender == _manager().data, "!manager"); - _; - } - - modifier onlyTimelock() { - require(msg.sender == _timelock().data, "!timelock"); - _; - } - - /// @notice Getter for the grants mapping - /// @param _who The owner of the grant to query - /// @return Grant of the provided address - function getGrant(address _who) - external - view - returns (VestingVaultStorage.Grant memory) - { - return _grants()[_who]; - } - - /// @notice Accepts a grant - /// @dev Sends token from the contract to the sender and back to the contract - /// while assigning a numerical range to the unwithdrawn granted tokens. - function acceptGrant() public { - // load the grant - VestingVaultStorage.Grant storage grant = _grants()[msg.sender]; - uint256 availableTokens = grant.allocation - grant.withdrawn; - - // check that grant has unwithdrawn tokens - require(availableTokens > 0, "no grant available"); - - // transfer the token to the user - token.transfer(msg.sender, availableTokens); - // transfer from the user back to the contract - token.transferFrom(msg.sender, address(this), availableTokens); - - uint256 bound = _loadBound().data; - grant.range = [bound, bound + availableTokens]; - Storage.set(Storage.uint256Ptr("bound"), bound + availableTokens); - } - - /// @notice Adds a new grant. - /// @dev Manager can set who the voting power will be delegated to initially. - /// This potentially avoids the need for a delegation transaction by the grant recipient. - /// @param _who The Grant recipient. - /// @param _amount The total grant value. - /// @param _startTime Optionally set a non standard start time. If set to zero then the start time - /// will be made the block this is executed in. - /// @param _expiration timestamp when the grant ends (all tokens count as unlocked). - /// @param _cliff Timestamp when the cliff ends. No tokens are unlocked until this - /// timestamp is reached. - /// @param _delegatee Optional param. The address to delegate the voting power - /// associated with this grant to - function addGrantAndDelegate( - address _who, - uint128 _amount, - uint128 _startTime, - uint128 _expiration, - uint128 _cliff, - address _delegatee - ) public onlyManager { - // Consistency check - require( - _cliff <= _expiration && _startTime <= _expiration, - "Invalid configuration" - ); - // If no custom start time is needed we use this block. - if (_startTime == 0) { - _startTime = uint128(block.number); - } - - Storage.Uint256 storage unassigned = _unassigned(); - Storage.Uint256 memory unvestedMultiplier = _unvestedMultiplier(); - - require(unassigned.data >= _amount, "Insufficient balance"); - // load the grant. - VestingVaultStorage.Grant storage grant = _grants()[_who]; - - // If this address already has a grant, a different address must be provided - // topping up or editing active grants is not supported. - require(grant.allocation == 0, "Has Grant"); - - // load the delegate. Defaults to the grant owner - _delegatee = _delegatee == address(0) ? _who : _delegatee; - - // calculate the voting power. Assumes all voting power is initially locked. - // Come back to this assumption. - uint128 newVotingPower = - (_amount * uint128(unvestedMultiplier.data)) / 100; - - // set the new grant - _grants()[_who] = VestingVaultStorage.Grant( - _amount, - 0, - _startTime, - _expiration, - _cliff, - newVotingPower, - _delegatee, - [uint256(0), uint256(0)] - ); - - // update the amount of unassigned tokens - unassigned.data -= _amount; - - // update the delegatee's voting power - History.HistoricalBalances memory votingPower = _votingPower(); - uint256 delegateeVotes = votingPower.loadTop(grant.delegatee); - votingPower.push(grant.delegatee, delegateeVotes + newVotingPower); - - emit VoteChange(grant.delegatee, _who, int256(uint256(newVotingPower))); - } - - /// @notice Removes a grant. - /// @dev The manager has the power to remove a grant at any time. Any withdrawable tokens will be - /// sent to the grant owner. - /// @param _who The Grant owner. - function removeGrant(address _who) public virtual onlyManager { - // load the grant - VestingVaultStorage.Grant storage grant = _grants()[_who]; - // get the amount of withdrawable tokens - uint256 withdrawable = _getWithdrawableAmount(grant); - // it is simpler to just transfer withdrawable tokens instead of modifying the struct storage - // to allow withdrawal through claim() - token.transfer(_who, withdrawable); - - Storage.Uint256 storage unassigned = _unassigned(); - uint256 locked = grant.allocation - (grant.withdrawn + withdrawable); - - // return the unused tokens so they can be used for a different grant - unassigned.data += locked; - - // update the delegatee's voting power - History.HistoricalBalances memory votingPower = _votingPower(); - uint256 delegateeVotes = votingPower.loadTop(grant.delegatee); - votingPower.push( - grant.delegatee, - delegateeVotes - grant.latestVotingPower - ); - - // Emit the vote change event - emit VoteChange( - grant.delegatee, - _who, - -1 * int256(uint256(grant.latestVotingPower)) - ); - - // delete the grant - delete _grants()[_who]; - } - - /// @notice Claim all withdrawable value from a grant. - /// @dev claiming value resets the voting power, This could either increase or reduce the - /// total voting power associated with the caller's grant. - function claim() public virtual { - // load the grant - VestingVaultStorage.Grant storage grant = _grants()[msg.sender]; - // get the withdrawable amount - uint256 withdrawable = _getWithdrawableAmount(grant); - - // transfer the available amount - token.transfer(msg.sender, withdrawable); - grant.withdrawn += uint128(withdrawable); - - // only move range bound if grant was accepted - if (grant.range[1] > 0) { - grant.range[1] -= withdrawable; - } - - // update the user's voting power - _syncVotingPower(msg.sender, grant); - } - - /// @notice Changes the caller's token grant voting power delegation. - /// @dev The total voting power is not guaranteed to go up because - /// the unvested token multiplier can be updated at any time. - /// @param _to the address to delegate to - function delegate(address _to) public { - VestingVaultStorage.Grant storage grant = _grants()[msg.sender]; - // If the delegation has already happened we don't want the tx to send - require(_to != grant.delegatee, "Already delegated"); - History.HistoricalBalances memory votingPower = _votingPower(); - - uint256 oldDelegateeVotes = votingPower.loadTop(grant.delegatee); - uint256 newVotingPower = _currentVotingPower(grant); - - // Remove old delegatee's voting power and emit event - votingPower.push( - grant.delegatee, - oldDelegateeVotes - grant.latestVotingPower - ); - emit VoteChange( - grant.delegatee, - msg.sender, - -1 * int256(uint256(grant.latestVotingPower)) - ); - - // Note - It is important that this is loaded here and not before the previous state change because if - // _to == grant.delegatee and re-delegation was allowed we could be working with out of date state. - uint256 newDelegateeVotes = votingPower.loadTop(_to); - - // add voting power to the target delegatee and emit event - emit VoteChange(_to, msg.sender, int256(newVotingPower)); - votingPower.push(_to, newDelegateeVotes + newVotingPower); - - // update grant info - grant.latestVotingPower = uint128(newVotingPower); - grant.delegatee = _to; - } - - /// @notice Manager-only token deposit function. - /// @dev Deposited tokens are added to `_unassigned` and can be used to create grants. - /// WARNING: This is the only way to deposit tokens into the contract. Any tokens sent - /// via other means are not recoverable by this contract. - /// @param _amount The amount of tokens to deposit. - function deposit(uint256 _amount) public onlyManager { - Storage.Uint256 storage unassigned = _unassigned(); - // update unassigned value - unassigned.data += _amount; - token.transferFrom(msg.sender, address(this), _amount); - } - - /// @notice Manager-only token withdrawal function. - /// @dev The manager can withdraw tokens that are not being used by a grant. - /// This function cannot be used to recover tokens that were sent to this contract - /// by any means other than `deposit()` - /// @param _amount the amount to withdraw - /// @param _recipient the address to withdraw to - function withdraw(uint256 _amount, address _recipient) - public - virtual - onlyManager - { - Storage.Uint256 storage unassigned = _unassigned(); - require(unassigned.data >= _amount, "Insufficient balance"); - // update unassigned value - unassigned.data -= _amount; - token.transfer(_recipient, _amount); - } - - /// @notice Update a delegatee's voting power. - /// @dev Voting power is only updated for this block onward. - /// see `History` for more on how voting power is tracked and queried. - /// Anybody can update a grant's voting power. - /// @param _who the address who's voting power this function updates - function updateVotingPower(address _who) public { - VestingVaultStorage.Grant storage grant = _grants()[_who]; - _syncVotingPower(_who, grant); - } - - /// @notice Helper to update a delegatee's voting power. - /// @param _who the address who's voting power we need to sync - /// @param _grant the storage pointer to the grant of that user - function _syncVotingPower( - address _who, - VestingVaultStorage.Grant storage _grant - ) internal { - History.HistoricalBalances memory votingPower = _votingPower(); - - uint256 delegateeVotes = votingPower.loadTop(_grant.delegatee); - - uint256 newVotingPower = _currentVotingPower(_grant); - // get the change in voting power. Negative if the voting power is reduced - int256 change = - int256(newVotingPower) - int256(uint256(_grant.latestVotingPower)); - // do nothing if there is no change - if (change == 0) return; - if (change > 0) { - votingPower.push( - _grant.delegatee, - delegateeVotes + uint256(change) - ); - } else { - // if the change is negative, we multiply by -1 to avoid underflow when casting - votingPower.push( - _grant.delegatee, - delegateeVotes - uint256(change * -1) - ); - } - emit VoteChange(_grant.delegatee, _who, change); - _grant.latestVotingPower = uint128(newVotingPower); - } - - /// @notice Attempts to load the voting power of a user - /// @param user The address we want to load the voting power of - /// @param blockNumber the block number we want the user's voting power at - // @param calldata the extra calldata is unused in this contract - /// @return the number of votes - function queryVotePower( - address user, - uint256 blockNumber, - bytes calldata - ) external override returns (uint256) { - // Get our reference to historical data - History.HistoricalBalances memory votingPower = _votingPower(); - // Find the historical data and clear everything more than 'staleBlockLag' into the past - return - votingPower.findAndClear( - user, - blockNumber, - block.number - staleBlockLag - ); - } - - /// @notice Loads the voting power of a user without changing state - /// @param user The address we want to load the voting power of - /// @param blockNumber the block number we want the user's voting power at - /// @return the number of votes - function queryVotePowerView(address user, uint256 blockNumber) - external - view - returns (uint256) - { - // Get our reference to historical data - History.HistoricalBalances memory votingPower = _votingPower(); - // Find the historical data - return votingPower.find(user, blockNumber); - } - - /// @notice Calculates how much a grantee can withdraw - /// @param _grant the memory location of the loaded grant - /// @return the amount which can be withdrawn - function _getWithdrawableAmount(VestingVaultStorage.Grant memory _grant) - internal - view - returns (uint256) - { - if (block.number < _grant.cliff || block.number < _grant.created) { - return 0; - } - if (block.number >= _grant.expiration) { - return (_grant.allocation - _grant.withdrawn); - } - uint256 unlocked = - (_grant.allocation * (block.number - _grant.created)) / - (_grant.expiration - _grant.created); - return (unlocked - _grant.withdrawn); - } - - /// @notice Returns the historical voting power tracker. - /// @return A struct which can push to and find items in block indexed storage. - function _votingPower() - internal - pure - returns (History.HistoricalBalances memory) - { - // This call returns a storage mapping with a unique non overwrite-able storage location - // which can be persisted through upgrades, even if they change storage layout. - return (History.load("votingPower")); - } - - /// @notice Helper that returns the current voting power of a grant - /// @dev This is not always the recorded voting power since it uses the latest - /// _unvestedMultiplier. - /// @param _grant The grant to check for voting power. - /// @return The current voting power of the grant. - function _currentVotingPower(VestingVaultStorage.Grant memory _grant) - internal - view - returns (uint256) - { - uint256 withdrawable = _getWithdrawableAmount(_grant); - uint256 locked = _grant.allocation - (withdrawable + _grant.withdrawn); - return (withdrawable + (locked * _unvestedMultiplier().data) / 100); - } - - /// @notice timelock-only unvestedMultiplier update function. - /// @dev Allows the timelock to update the unvestedMultiplier. - /// @param _multiplier The new multiplier. - function changeUnvestedMultiplier(uint256 _multiplier) public onlyTimelock { - require(_multiplier <= 100, "Above 100%"); - Storage.set(Storage.uint256Ptr("unvestedMultiplier"), _multiplier); - } - - /// @notice timelock-only timelock update function. - /// @dev Allows the timelock to update the timelock address. - /// @param timelock_ The new timelock. - function setTimelock(address timelock_) public onlyTimelock { - Storage.set(Storage.addressPtr("timelock"), timelock_); - } - - /// @notice timelock-only manager update function. - /// @dev Allows the timelock to update the manager address. - /// @param manager_ The new manager. - function setManager(address manager_) public onlyTimelock { - Storage.set(Storage.addressPtr("manager"), manager_); - } - - /// @notice A function to access the storage of the timelock address - /// @dev The timelock can access all functions with the onlyTimelock modifier. - /// @return The timelock address. - function timelock() public pure returns (address) { - return _timelock().data; - } - - /// @notice A function to access the storage of the unvested token vote power multiplier. - /// @return The unvested token multiplier - function unvestedMultiplier() external pure returns (uint256) { - return _unvestedMultiplier().data; - } - - /// @notice A function to access the storage of the manager address. - /// @dev The manager can access all functions with the olyManager modifier. - /// @return The manager address. - function manager() public pure returns (address) { - return _manager().data; - } -} - -// Deployable version of the abstract contract -contract VestingVault is AbstractVestingVault { - /// @notice Constructs the contract. - /// @param _token The erc20 token to grant. - /// @param _stale Stale block used for voting power calculations. - constructor(IERC20 _token, uint256 _stale) - AbstractVestingVault(_token, _stale) - {} -} diff --git a/packages/council-typechain/hardhat.config.ts b/packages/council-typechain/hardhat.config.ts deleted file mode 100644 index 815e3506..00000000 --- a/packages/council-typechain/hardhat.config.ts +++ /dev/null @@ -1,29 +0,0 @@ -import "@typechain/hardhat"; -import { HardhatUserConfig } from "hardhat/config"; - -const config: HardhatUserConfig = { - defaultNetwork: "hardhat", - paths: { - sources: "contracts", - }, - solidity: { - compilers: [ - { - version: "0.8.3", - settings: { - optimizer: { - enabled: true, - runs: 7500, - }, - }, - }, - ], - }, - typechain: { - outDir: "src", - target: "ethers-v5", - alwaysGenerateOverloads: true, - }, -}; - -export default config; diff --git a/packages/council-typechain/package.json b/packages/council-typechain/package.json deleted file mode 100644 index 660178e4..00000000 --- a/packages/council-typechain/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@council/typechain", - "version": "1.0.0", - "description": "", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "scripts": { - "load-contracts": "sh scripts/load-contracts.sh", - "clean": "npx hardhat clean", - "compile": "npx hardhat compile", - "build:src": "npm run load-contracts && npm run clean && npm run compile", - "build": "tsc --project tsconfig.build.json", - "format": "prettier --write '**/*.{gql,graphql,js,jsx,ts,tsx,json,md,yaml,yml}'", - "format:check": "prettier --check '**/*.{gql,graphql,js,jsx,ts,tsx,json,md}'" - }, - "devDependencies": { - "@council/eslint-config": "*", - "@council/prettier-config": "*", - "@council/tsconfig": "*", - "@nomiclabs/hardhat-ethers": "^2.2.1", - "@openzeppelin/contracts": "^4.2.0", - "@typechain/ethers-v5": "^10.1.1", - "@typechain/hardhat": "^6.1.4", - "ethers": "^5.7.2", - "hardhat": "^2.12.2", - "tsc": "^2.0.4", - "typechain": "^8.1.1", - "typescript": "^4.9.3" - } -} diff --git a/packages/council-typechain/scripts/load-contracts.sh b/packages/council-typechain/scripts/load-contracts.sh deleted file mode 100644 index 4060e066..00000000 --- a/packages/council-typechain/scripts/load-contracts.sh +++ /dev/null @@ -1,17 +0,0 @@ -echo "Downloading contracts..." - -if [[ -z "${GITHUB_TOKEN}" ]]; then - git clone git@github.com:delvtech/council.git council -else - git clone https://$GITHUB_TOKEN@github.com/delvtech/council.git council -fi - -# blow away old-contracts -rm -rf contracts -mkdir contracts - -echo "Copying latest contracts..." -cp -R council/contracts/ contracts -rm -rf council - -echo "Done!" \ No newline at end of file diff --git a/packages/council-typechain/src/@openzeppelin/contracts/index.ts b/packages/council-typechain/src/@openzeppelin/contracts/index.ts deleted file mode 100644 index c2d4e462..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as token from "./token"; -export type { token }; diff --git a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/IERC20.ts b/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/IERC20.ts deleted file mode 100644 index 568551e9..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/IERC20.ts +++ /dev/null @@ -1,566 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "allowance(address,address)" - | "approve" - | "approve(address,uint256)" - | "balanceOf" - | "balanceOf(address)" - | "totalSupply" - | "totalSupply()" - | "transfer" - | "transfer(address,uint256)" - | "transferFrom" - | "transferFrom(address,address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "totalSupply()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "transferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowance(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom(address,address,uint256)", - data: BytesLike, - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Approval(address,address,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Transfer(address,address,uint256)", - ): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts b/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts deleted file mode 100644 index 4a3421ff..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts +++ /dev/null @@ -1,323 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../../../common"; - -export interface IERC20PermitInterface extends utils.Interface { - functions: { - "DOMAIN_SEPARATOR()": FunctionFragment; - "nonces(address)": FunctionFragment; - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DOMAIN_SEPARATOR" - | "DOMAIN_SEPARATOR()" - | "nonces" - | "nonces(address)" - | "permit" - | "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "nonces", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "nonces(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "permit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "nonces(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface IERC20Permit extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20PermitInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise<[string]>; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"( - overrides?: CallOverrides, - ): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts b/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts deleted file mode 100644 index 6673dc7d..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IERC20Permit } from "./IERC20Permit"; diff --git a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/index.ts deleted file mode 100644 index a3d47b2b..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/extensions/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as draftIerc20PermitSol from "./draft-IERC20Permit.sol"; -export type { draftIerc20PermitSol }; diff --git a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/index.ts b/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/index.ts deleted file mode 100644 index a8eb12b2..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/token/ERC20/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as extensions from "./extensions"; -export type { extensions }; -export type { IERC20 } from "./IERC20"; diff --git a/packages/council-typechain/src/@openzeppelin/contracts/token/index.ts b/packages/council-typechain/src/@openzeppelin/contracts/token/index.ts deleted file mode 100644 index 5c4062a9..00000000 --- a/packages/council-typechain/src/@openzeppelin/contracts/token/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as erc20 from "./ERC20"; -export type { erc20 }; diff --git a/packages/council-typechain/src/@openzeppelin/index.ts b/packages/council-typechain/src/@openzeppelin/index.ts deleted file mode 100644 index a11e4ca2..00000000 --- a/packages/council-typechain/src/@openzeppelin/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as contracts from "./contracts"; -export type { contracts }; diff --git a/packages/council-typechain/src/common.ts b/packages/council-typechain/src/common.ts deleted file mode 100644 index d06cebc7..00000000 --- a/packages/council-typechain/src/common.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { Listener } from "@ethersproject/providers"; -import type { Event, EventFilter } from "ethers"; - -export interface TypedEvent< - TArgsArray extends Array = any, - TArgsObject = any, -> extends Event { - args: TArgsArray & TArgsObject; -} - -export interface TypedEventFilter<_TEvent extends TypedEvent> - extends EventFilter {} - -export interface TypedListener { - (...listenerArg: [...__TypechainArgsArray, TEvent]): void; -} - -type __TypechainArgsArray = T extends TypedEvent ? U : never; - -export interface OnEvent { - ( - eventFilter: TypedEventFilter, - listener: TypedListener, - ): TRes; - (eventName: string, listener: Listener): TRes; -} - -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 PromiseOrValue = T | Promise; diff --git a/packages/council-typechain/src/contracts/CoreVoting.ts b/packages/council-typechain/src/contracts/CoreVoting.ts deleted file mode 100644 index 8d8fba27..00000000 --- a/packages/council-typechain/src/contracts/CoreVoting.ts +++ /dev/null @@ -1,1968 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../common"; - -export declare namespace CoreVoting { - export type VoteStruct = { - votingPower: PromiseOrValue; - castBallot: PromiseOrValue; - }; - - export type VoteStructOutput = [BigNumber, number] & { - votingPower: BigNumber; - castBallot: number; - }; -} - -export interface CoreVotingInterface extends utils.Interface { - functions: { - "DAY_IN_BLOCKS()": FunctionFragment; - "approvedVaults(address)": FunctionFragment; - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "baseQuorum()": FunctionFragment; - "changeExtraVotingTime(uint256)": FunctionFragment; - "changeVaultStatus(address,bool)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "execute(uint256,address[],bytes[])": FunctionFragment; - "extraVoteTime()": FunctionFragment; - "getProposalVotingPower(uint256)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "lockDuration()": FunctionFragment; - "minProposalPower()": FunctionFragment; - "owner()": FunctionFragment; - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)": FunctionFragment; - "proposalCount()": FunctionFragment; - "proposals(uint256)": FunctionFragment; - "quorums(address,bytes4)": FunctionFragment; - "setCustomQuorum(address,bytes4,uint256)": FunctionFragment; - "setDefaultQuorum(uint256)": FunctionFragment; - "setLockDuration(uint256)": FunctionFragment; - "setMinProposalPower(uint256)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "vote(address[],bytes[],uint256,uint8)": FunctionFragment; - "votes(address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DAY_IN_BLOCKS" - | "DAY_IN_BLOCKS()" - | "approvedVaults" - | "approvedVaults(address)" - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "baseQuorum" - | "baseQuorum()" - | "changeExtraVotingTime" - | "changeExtraVotingTime(uint256)" - | "changeVaultStatus" - | "changeVaultStatus(address,bool)" - | "deauthorize" - | "deauthorize(address)" - | "execute" - | "execute(uint256,address[],bytes[])" - | "extraVoteTime" - | "extraVoteTime()" - | "getProposalVotingPower" - | "getProposalVotingPower(uint256)" - | "isAuthorized" - | "isAuthorized(address)" - | "lockDuration" - | "lockDuration()" - | "minProposalPower" - | "minProposalPower()" - | "owner" - | "owner()" - | "proposal" - | "proposal(address[],bytes[],address[],bytes[],uint256,uint8)" - | "proposalCount" - | "proposalCount()" - | "proposals" - | "proposals(uint256)" - | "quorums" - | "quorums(address,bytes4)" - | "setCustomQuorum" - | "setCustomQuorum(address,bytes4,uint256)" - | "setDefaultQuorum" - | "setDefaultQuorum(uint256)" - | "setLockDuration" - | "setLockDuration(uint256)" - | "setMinProposalPower" - | "setMinProposalPower(uint256)" - | "setOwner" - | "setOwner(address)" - | "vote" - | "vote(address[],bytes[],uint256,uint8)" - | "votes" - | "votes(address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DAY_IN_BLOCKS", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DAY_IN_BLOCKS()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "approvedVaults", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approvedVaults(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "baseQuorum", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "baseQuorum()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "changeExtraVotingTime", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeExtraVotingTime(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeVaultStatus", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeVaultStatus(address,bool)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [ - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue[], - ], - ): string; - encodeFunctionData( - functionFragment: "execute(uint256,address[],bytes[])", - values: [ - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue[], - ], - ): string; - encodeFunctionData( - functionFragment: "extraVoteTime", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "extraVoteTime()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "getProposalVotingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getProposalVotingPower(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockDuration", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockDuration()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "minProposalPower", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "minProposalPower()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "proposal", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "proposal(address[],bytes[],address[],bytes[],uint256,uint8)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "proposalCount", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposalCount()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposals", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "proposals(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "quorums", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "quorums(address,bytes4)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setCustomQuorum", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setCustomQuorum(address,bytes4,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setDefaultQuorum", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setDefaultQuorum(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setLockDuration", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setLockDuration(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setMinProposalPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setMinProposalPower(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "vote", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "vote(address[],bytes[],uint256,uint8)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "votes", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "votes(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "DAY_IN_BLOCKS", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DAY_IN_BLOCKS()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "approvedVaults", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "approvedVaults(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "baseQuorum", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "baseQuorum()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeExtraVotingTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeExtraVotingTime(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeVaultStatus", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeVaultStatus(address,bool)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "execute(uint256,address[],bytes[])", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "extraVoteTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "extraVoteTime()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getProposalVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getProposalVotingPower(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockDuration", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockDuration()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "minProposalPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "minProposalPower()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "proposal", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proposal(address[],bytes[],address[],bytes[],uint256,uint8)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposalCount", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposalCount()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "proposals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proposals(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "quorums", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "quorums(address,bytes4)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setCustomQuorum", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setCustomQuorum(address,bytes4,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setDefaultQuorum", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setDefaultQuorum(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setLockDuration", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setLockDuration(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setMinProposalPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setMinProposalPower(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "vote", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "vote(address[],bytes[],uint256,uint8)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "votes", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "votes(address,uint256)", - data: BytesLike, - ): Result; - - events: { - "ProposalCreated(uint256,uint256,uint256,uint256)": EventFragment; - "ProposalExecuted(uint256)": EventFragment; - "Voted(address,uint256,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ProposalCreated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ProposalCreated(uint256,uint256,uint256,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ProposalExecuted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ProposalExecuted(uint256)"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Voted"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Voted(address,uint256,tuple)", - ): EventFragment; -} - -export interface ProposalCreatedEventObject { - proposalId: BigNumber; - created: BigNumber; - execution: BigNumber; - expiration: BigNumber; -} -export type ProposalCreatedEvent = TypedEvent< - [BigNumber, BigNumber, BigNumber, BigNumber], - ProposalCreatedEventObject ->; - -export type ProposalCreatedEventFilter = TypedEventFilter; - -export interface ProposalExecutedEventObject { - proposalId: BigNumber; -} -export type ProposalExecutedEvent = TypedEvent< - [BigNumber], - ProposalExecutedEventObject ->; - -export type ProposalExecutedEventFilter = - TypedEventFilter; - -export interface VotedEventObject { - voter: string; - proposalId: BigNumber; - vote: CoreVoting.VoteStructOutput; -} -export type VotedEvent = TypedEvent< - [string, BigNumber, CoreVoting.VoteStructOutput], - VotedEventObject ->; - -export type VotedEventFilter = TypedEventFilter; - -export interface CoreVoting extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: CoreVotingInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise<[BigNumber]>; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - baseQuorum(overrides?: CallOverrides): Promise<[BigNumber]>; - - "baseQuorum()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise<[BigNumber]>; - - "extraVoteTime()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[[BigNumber, BigNumber, BigNumber]]>; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[[BigNumber, BigNumber, BigNumber]]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - lockDuration(overrides?: CallOverrides): Promise<[BigNumber]>; - - "lockDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - minProposalPower(overrides?: CallOverrides): Promise<[BigNumber]>; - - "minProposalPower()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise<[BigNumber]>; - - "proposalCount()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - }; - - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - callStatic: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - }; - - filters: { - "ProposalCreated(uint256,uint256,uint256,uint256)"( - proposalId?: null, - created?: null, - execution?: null, - expiration?: null, - ): ProposalCreatedEventFilter; - ProposalCreated( - proposalId?: null, - created?: null, - execution?: null, - expiration?: null, - ): ProposalCreatedEventFilter; - - "ProposalExecuted(uint256)"(proposalId?: null): ProposalExecutedEventFilter; - ProposalExecuted(proposalId?: null): ProposalExecutedEventFilter; - - "Voted(address,uint256,tuple)"( - voter?: PromiseOrValue | null, - proposalId?: PromiseOrValue | null, - vote?: null, - ): VotedEventFilter; - Voted( - voter?: PromiseOrValue | null, - proposalId?: PromiseOrValue | null, - vote?: null, - ): VotedEventFilter; - }; - - estimateGas: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"( - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/features/Airdrop.ts b/packages/council-typechain/src/contracts/features/Airdrop.ts deleted file mode 100644 index 89a0c0f2..00000000 --- a/packages/council-typechain/src/contracts/features/Airdrop.ts +++ /dev/null @@ -1,937 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface AirdropInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "claim(uint256,uint256,bytes32[],address)": FunctionFragment; - "claimAndDelegate(uint256,address,uint256,bytes32[],address)": FunctionFragment; - "claimed(address)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "expiration()": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "lockingVault()": FunctionFragment; - "owner()": FunctionFragment; - "reclaim(address)": FunctionFragment; - "rewardsRoot()": FunctionFragment; - "setOwner(address)": FunctionFragment; - "token()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "claim" - | "claim(uint256,uint256,bytes32[],address)" - | "claimAndDelegate" - | "claimAndDelegate(uint256,address,uint256,bytes32[],address)" - | "claimed" - | "claimed(address)" - | "deauthorize" - | "deauthorize(address)" - | "expiration" - | "expiration()" - | "isAuthorized" - | "isAuthorized(address)" - | "lockingVault" - | "lockingVault()" - | "owner" - | "owner()" - | "reclaim" - | "reclaim(address)" - | "rewardsRoot" - | "rewardsRoot()" - | "setOwner" - | "setOwner(address)" - | "token" - | "token()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "claim", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimed", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "claimed(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "expiration", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "expiration()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockingVault", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockingVault()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "reclaim", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "reclaim(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claimed", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claimed(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "expiration", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "expiration()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "reclaim", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "reclaim(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - - events: {}; -} - -export interface Airdrop extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: AirdropInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - expiration(overrides?: CallOverrides): Promise<[BigNumber]>; - - "expiration()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - lockingVault(overrides?: CallOverrides): Promise<[string]>; - - "lockingVault()"(overrides?: CallOverrides): Promise<[string]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - reclaim( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "reclaim(address)"( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise<[string]>; - - "rewardsRoot()"(overrides?: CallOverrides): Promise<[string]>; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - expiration(overrides?: CallOverrides): Promise; - - "expiration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - reclaim( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "reclaim(address)"( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - expiration(overrides?: CallOverrides): Promise; - - "expiration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - reclaim( - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "reclaim(address)"( - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - expiration(overrides?: CallOverrides): Promise; - - "expiration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - reclaim( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "reclaim(address)"( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - expiration(overrides?: CallOverrides): Promise; - - "expiration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - reclaim( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "reclaim(address)"( - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/features/OptimisticGrants.ts b/packages/council-typechain/src/contracts/features/OptimisticGrants.ts deleted file mode 100644 index 3cd54589..00000000 --- a/packages/council-typechain/src/contracts/features/OptimisticGrants.ts +++ /dev/null @@ -1,514 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface OptimisticGrantsInterface extends utils.Interface { - functions: { - "claim(address)": FunctionFragment; - "configureGrant(address,uint128,uint128)": FunctionFragment; - "deposit(uint256)": FunctionFragment; - "grants(address)": FunctionFragment; - "solvency()": FunctionFragment; - "token()": FunctionFragment; - "withdraw(uint256,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "claim" - | "claim(address)" - | "configureGrant" - | "configureGrant(address,uint128,uint128)" - | "deposit" - | "deposit(uint256)" - | "grants" - | "grants(address)" - | "solvency" - | "solvency()" - | "token" - | "token()" - | "withdraw" - | "withdraw(uint256,address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "claim", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "claim(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "configureGrant", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "configureGrant(address,uint128,uint128)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "grants", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "grants(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "solvency", values?: undefined): string; - encodeFunctionData( - functionFragment: "solvency()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claim(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "configureGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "configureGrant(address,uint128,uint128)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "grants", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "grants(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "solvency", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "solvency()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256,address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface OptimisticGrants extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: OptimisticGrantsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - claim( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(address)"( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - configureGrant( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "configureGrant(address,uint128,uint128)"( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - grants( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, BigNumber] & { amount: BigNumber; expiration: BigNumber } - >; - - "grants(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, BigNumber] & { amount: BigNumber; expiration: BigNumber } - >; - - solvency(overrides?: CallOverrides): Promise<[BigNumber]>; - - "solvency()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - claim( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(address)"( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - configureGrant( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "configureGrant(address,uint128,uint128)"( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - grants( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, BigNumber] & { amount: BigNumber; expiration: BigNumber } - >; - - "grants(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, BigNumber] & { amount: BigNumber; expiration: BigNumber } - >; - - solvency(overrides?: CallOverrides): Promise; - - "solvency()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - claim( - _destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claim(address)"( - _destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - configureGrant( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "configureGrant(address,uint128,uint128)"( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - grants( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, BigNumber] & { amount: BigNumber; expiration: BigNumber } - >; - - "grants(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, BigNumber] & { amount: BigNumber; expiration: BigNumber } - >; - - solvency(overrides?: CallOverrides): Promise; - - "solvency()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - claim( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(address)"( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - configureGrant( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "configureGrant(address,uint128,uint128)"( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - grants( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "grants(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - solvency(overrides?: CallOverrides): Promise; - - "solvency()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - claim( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(address)"( - _destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - configureGrant( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "configureGrant(address,uint128,uint128)"( - _owner: PromiseOrValue, - _amount: PromiseOrValue, - _expiration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - grants( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "grants(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - solvency(overrides?: CallOverrides): Promise; - - "solvency()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/features/Spender.ts b/packages/council-typechain/src/contracts/features/Spender.ts deleted file mode 100644 index b840d7f5..00000000 --- a/packages/council-typechain/src/contracts/features/Spender.ts +++ /dev/null @@ -1,1032 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface SpenderInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "blockExpenditure(uint256)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "highSpend(uint256,address)": FunctionFragment; - "highSpendLimit()": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "mediumSpend(uint256,address)": FunctionFragment; - "mediumSpendLimit()": FunctionFragment; - "owner()": FunctionFragment; - "removeToken(uint256,address)": FunctionFragment; - "setLimits(uint256[])": FunctionFragment; - "setOwner(address)": FunctionFragment; - "smallSpend(uint256,address)": FunctionFragment; - "smallSpendLimit()": FunctionFragment; - "token()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "blockExpenditure" - | "blockExpenditure(uint256)" - | "deauthorize" - | "deauthorize(address)" - | "highSpend" - | "highSpend(uint256,address)" - | "highSpendLimit" - | "highSpendLimit()" - | "isAuthorized" - | "isAuthorized(address)" - | "mediumSpend" - | "mediumSpend(uint256,address)" - | "mediumSpendLimit" - | "mediumSpendLimit()" - | "owner" - | "owner()" - | "removeToken" - | "removeToken(uint256,address)" - | "setLimits" - | "setLimits(uint256[])" - | "setOwner" - | "setOwner(address)" - | "smallSpend" - | "smallSpend(uint256,address)" - | "smallSpendLimit" - | "smallSpendLimit()" - | "token" - | "token()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "blockExpenditure", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "blockExpenditure(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "highSpend", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "highSpend(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "highSpendLimit", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "highSpendLimit()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mediumSpend", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mediumSpend(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mediumSpendLimit", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "mediumSpendLimit()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "removeToken", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeToken(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setLimits", - values: [PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "setLimits(uint256[])", - values: [PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "smallSpend", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "smallSpend(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "smallSpendLimit", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "smallSpendLimit()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "blockExpenditure", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "blockExpenditure(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "highSpend", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "highSpend(uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "highSpendLimit", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "highSpendLimit()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "mediumSpend", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "mediumSpend(uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "mediumSpendLimit", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "mediumSpendLimit()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "removeToken", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeToken(uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setLimits", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setLimits(uint256[])", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "smallSpend", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "smallSpend(uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "smallSpendLimit", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "smallSpendLimit()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - - events: {}; -} - -export interface Spender extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SpenderInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - blockExpenditure( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "blockExpenditure(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "highSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpendLimit(overrides?: CallOverrides): Promise<[BigNumber]>; - - "highSpendLimit()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - mediumSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mediumSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mediumSpendLimit(overrides?: CallOverrides): Promise<[BigNumber]>; - - "mediumSpendLimit()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - removeToken( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeToken(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLimits( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLimits(uint256[])"( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "smallSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpendLimit(overrides?: CallOverrides): Promise<[BigNumber]>; - - "smallSpendLimit()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - blockExpenditure( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "blockExpenditure(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "highSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpendLimit(overrides?: CallOverrides): Promise; - - "highSpendLimit()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mediumSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mediumSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mediumSpendLimit(overrides?: CallOverrides): Promise; - - "mediumSpendLimit()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - removeToken( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeToken(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLimits( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLimits(uint256[])"( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "smallSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpendLimit(overrides?: CallOverrides): Promise; - - "smallSpendLimit()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - blockExpenditure( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "blockExpenditure(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - highSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "highSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - highSpendLimit(overrides?: CallOverrides): Promise; - - "highSpendLimit()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mediumSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "mediumSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mediumSpendLimit(overrides?: CallOverrides): Promise; - - "mediumSpendLimit()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - removeToken( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeToken(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setLimits( - limits: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "setLimits(uint256[])"( - limits: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - smallSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "smallSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - smallSpendLimit(overrides?: CallOverrides): Promise; - - "smallSpendLimit()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - blockExpenditure( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "blockExpenditure(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "highSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpendLimit(overrides?: CallOverrides): Promise; - - "highSpendLimit()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mediumSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mediumSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mediumSpendLimit(overrides?: CallOverrides): Promise; - - "mediumSpendLimit()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - removeToken( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeToken(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLimits( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLimits(uint256[])"( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "smallSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpendLimit(overrides?: CallOverrides): Promise; - - "smallSpendLimit()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - blockExpenditure( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "blockExpenditure(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "highSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - highSpendLimit(overrides?: CallOverrides): Promise; - - "highSpendLimit()"( - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mediumSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mediumSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mediumSpendLimit(overrides?: CallOverrides): Promise; - - "mediumSpendLimit()"( - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - removeToken( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeToken(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLimits( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLimits(uint256[])"( - limits: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpend( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "smallSpend(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - smallSpendLimit(overrides?: CallOverrides): Promise; - - "smallSpendLimit()"( - overrides?: CallOverrides, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/features/Timelock.ts b/packages/council-typechain/src/contracts/features/Timelock.ts deleted file mode 100644 index 264201d1..00000000 --- a/packages/council-typechain/src/contracts/features/Timelock.ts +++ /dev/null @@ -1,964 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface TimelockInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "callTimestamps(bytes32)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "execute(address[],bytes[])": FunctionFragment; - "increaseTime(uint256,bytes32)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "owner()": FunctionFragment; - "registerCall(bytes32)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "setWaitTime(uint256)": FunctionFragment; - "stopCall(bytes32)": FunctionFragment; - "timeIncreases(bytes32)": FunctionFragment; - "waitTime()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "callTimestamps" - | "callTimestamps(bytes32)" - | "deauthorize" - | "deauthorize(address)" - | "execute" - | "execute(address[],bytes[])" - | "increaseTime" - | "increaseTime(uint256,bytes32)" - | "isAuthorized" - | "isAuthorized(address)" - | "owner" - | "owner()" - | "registerCall" - | "registerCall(bytes32)" - | "setOwner" - | "setOwner(address)" - | "setWaitTime" - | "setWaitTime(uint256)" - | "stopCall" - | "stopCall(bytes32)" - | "timeIncreases" - | "timeIncreases(bytes32)" - | "waitTime" - | "waitTime()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "callTimestamps", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "callTimestamps(bytes32)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue[], PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "execute(address[],bytes[])", - values: [PromiseOrValue[], PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "increaseTime", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "increaseTime(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "registerCall", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "registerCall(bytes32)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setWaitTime", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setWaitTime(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "stopCall", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "stopCall(bytes32)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "timeIncreases", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "timeIncreases(bytes32)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "waitTime", values?: undefined): string; - encodeFunctionData( - functionFragment: "waitTime()", - values?: undefined, - ): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "callTimestamps", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "callTimestamps(bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "execute(address[],bytes[])", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "increaseTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "increaseTime(uint256,bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "registerCall", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "registerCall(bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setWaitTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setWaitTime(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "stopCall", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "stopCall(bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "timeIncreases", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "timeIncreases(bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "waitTime", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "waitTime()", data: BytesLike): Result; - - events: {}; -} - -export interface Timelock extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TimelockInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - callTimestamps( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "callTimestamps(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(address[],bytes[])"( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - increaseTime( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseTime(uint256,bytes32)"( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - registerCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "registerCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setWaitTime( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setWaitTime(uint256)"( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - stopCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "stopCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - timeIncreases( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "timeIncreases(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - waitTime(overrides?: CallOverrides): Promise<[BigNumber]>; - - "waitTime()"(overrides?: CallOverrides): Promise<[BigNumber]>; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callTimestamps( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "callTimestamps(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(address[],bytes[])"( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - increaseTime( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseTime(uint256,bytes32)"( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - registerCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "registerCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setWaitTime( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setWaitTime(uint256)"( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - stopCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "stopCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - timeIncreases( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "timeIncreases(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - waitTime(overrides?: CallOverrides): Promise; - - "waitTime()"(overrides?: CallOverrides): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callTimestamps( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "callTimestamps(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - execute( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "execute(address[],bytes[])"( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - increaseTime( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "increaseTime(uint256,bytes32)"( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - registerCall( - callHash: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "registerCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setWaitTime( - _waitTime: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setWaitTime(uint256)"( - _waitTime: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - stopCall( - callHash: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "stopCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - timeIncreases( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "timeIncreases(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - waitTime(overrides?: CallOverrides): Promise; - - "waitTime()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callTimestamps( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "callTimestamps(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(address[],bytes[])"( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - increaseTime( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseTime(uint256,bytes32)"( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - registerCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "registerCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setWaitTime( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setWaitTime(uint256)"( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - stopCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "stopCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - timeIncreases( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "timeIncreases(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - waitTime(overrides?: CallOverrides): Promise; - - "waitTime()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callTimestamps( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "callTimestamps(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - execute( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(address[],bytes[])"( - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - increaseTime( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseTime(uint256,bytes32)"( - timeValue: PromiseOrValue, - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - registerCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "registerCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setWaitTime( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setWaitTime(uint256)"( - _waitTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - stopCall( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "stopCall(bytes32)"( - callHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - timeIncreases( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "timeIncreases(bytes32)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - waitTime(overrides?: CallOverrides): Promise; - - "waitTime()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/features/Treasury.ts b/packages/council-typechain/src/contracts/features/Treasury.ts deleted file mode 100644 index 5b54e2cc..00000000 --- a/packages/council-typechain/src/contracts/features/Treasury.ts +++ /dev/null @@ -1,704 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface TreasuryInterface extends utils.Interface { - functions: { - "approve(address,address,uint256)": FunctionFragment; - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "genericCall(address,bytes)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "owner()": FunctionFragment; - "sendFunds(address,uint256,address)": FunctionFragment; - "setOwner(address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approve" - | "approve(address,address,uint256)" - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "deauthorize" - | "deauthorize(address)" - | "genericCall" - | "genericCall(address,bytes)" - | "isAuthorized" - | "isAuthorized(address)" - | "owner" - | "owner()" - | "sendFunds" - | "sendFunds(address,uint256,address)" - | "setOwner" - | "setOwner(address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approve", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "approve(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "genericCall", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "genericCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "sendFunds", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "sendFunds(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "genericCall", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "genericCall(address,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sendFunds", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "sendFunds(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface Treasury extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TreasuryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/features/index.ts b/packages/council-typechain/src/contracts/features/index.ts deleted file mode 100644 index 353c524c..00000000 --- a/packages/council-typechain/src/contracts/features/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { Airdrop } from "./Airdrop"; -export type { OptimisticGrants } from "./OptimisticGrants"; -export type { Spender } from "./Spender"; -export type { Timelock } from "./Timelock"; -export type { Treasury } from "./Treasury"; diff --git a/packages/council-typechain/src/contracts/index.ts b/packages/council-typechain/src/contracts/index.ts deleted file mode 100644 index 3880a0c6..00000000 --- a/packages/council-typechain/src/contracts/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as features from "./features"; -export type { features }; -import type * as interfaces from "./interfaces"; -export type { interfaces }; -import type * as libraries from "./libraries"; -export type { libraries }; -import type * as mocks from "./mocks"; -export type { mocks }; -import type * as simpleProxySol from "./simpleProxy.sol"; -export type { simpleProxySol }; -import type * as vaults from "./vaults"; -export type { vaults }; -export type { CoreVoting } from "./CoreVoting"; diff --git a/packages/council-typechain/src/contracts/interfaces/ICoreVoting.ts b/packages/council-typechain/src/contracts/interfaces/ICoreVoting.ts deleted file mode 100644 index bbdfb102..00000000 --- a/packages/council-typechain/src/contracts/interfaces/ICoreVoting.ts +++ /dev/null @@ -1,138 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ICoreVotingInterface extends utils.Interface { - functions: { - "approvedVaults(address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "approvedVaults" | "approvedVaults(address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approvedVaults", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approvedVaults(address)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "approvedVaults", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "approvedVaults(address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface ICoreVoting extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ICoreVotingInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approvedVaults( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "approvedVaults(address)"( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - }; - - approvedVaults( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - approvedVaults( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - approvedVaults( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - approvedVaults( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/interfaces/IERC20.ts b/packages/council-typechain/src/contracts/interfaces/IERC20.ts deleted file mode 100644 index 09ccede6..00000000 --- a/packages/council-typechain/src/contracts/interfaces/IERC20.ts +++ /dev/null @@ -1,584 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface IERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "symbol()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "allowance(address,address)" - | "approve" - | "approve(address,uint256)" - | "balanceOf" - | "balanceOf(address)" - | "decimals" - | "decimals()" - | "symbol" - | "symbol()" - | "transfer" - | "transfer(address,uint256)" - | "transferFrom" - | "transferFrom(address,address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decimals()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "transferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowance(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom(address,address,uint256)", - data: BytesLike, - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Approval(address,address,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Transfer(address,address,uint256)", - ): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - "decimals()"(overrides?: CallOverrides): Promise<[number]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - "symbol()"(overrides?: CallOverrides): Promise<[string]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/interfaces/IERC20Permit.ts b/packages/council-typechain/src/contracts/interfaces/IERC20Permit.ts deleted file mode 100644 index ec66107f..00000000 --- a/packages/council-typechain/src/contracts/interfaces/IERC20Permit.ts +++ /dev/null @@ -1,833 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface IERC20PermitInterface extends utils.Interface { - functions: { - "DOMAIN_SEPARATOR()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "nonces(address)": FunctionFragment; - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; - "symbol()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DOMAIN_SEPARATOR" - | "DOMAIN_SEPARATOR()" - | "allowance" - | "allowance(address,address)" - | "approve" - | "approve(address,uint256)" - | "balanceOf" - | "balanceOf(address)" - | "decimals" - | "decimals()" - | "nonces" - | "nonces(address)" - | "permit" - | "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - | "symbol" - | "symbol()" - | "transfer" - | "transfer(address,uint256)" - | "transferFrom" - | "transferFrom(address,address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decimals()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "nonces", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "nonces(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "permit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "transferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowance(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "nonces(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom(address,address,uint256)", - data: BytesLike, - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Approval(address,address,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Transfer(address,address,uint256)", - ): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC20Permit extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20PermitInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise<[string]>; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - "decimals()"(overrides?: CallOverrides): Promise<[number]>; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - "symbol()"(overrides?: CallOverrides): Promise<[string]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"( - overrides?: CallOverrides, - ): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - account: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - nonces( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - owner: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/interfaces/ILockingVault.ts b/packages/council-typechain/src/contracts/interfaces/ILockingVault.ts deleted file mode 100644 index 54391880..00000000 --- a/packages/council-typechain/src/contracts/interfaces/ILockingVault.ts +++ /dev/null @@ -1,346 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ILockingVaultInterface extends utils.Interface { - functions: { - "changeDelegation(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "token()": FunctionFragment; - "withdraw(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "changeDelegation" - | "changeDelegation(address)" - | "deposit" - | "deposit(address,uint256,address)" - | "token" - | "token()" - | "withdraw" - | "withdraw(uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "changeDelegation", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeDelegation(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "changeDelegation", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeDelegation(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface ILockingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ILockingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "token()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "token()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "token()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "token()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/interfaces/IVotingVault.ts b/packages/council-typechain/src/contracts/interfaces/IVotingVault.ts deleted file mode 100644 index 622599d8..00000000 --- a/packages/council-typechain/src/contracts/interfaces/IVotingVault.ts +++ /dev/null @@ -1,171 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface IVotingVaultInterface extends utils.Interface { - functions: { - "queryVotePower(address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface IVotingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IVotingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/interfaces/index.ts b/packages/council-typechain/src/contracts/interfaces/index.ts deleted file mode 100644 index 99d68c54..00000000 --- a/packages/council-typechain/src/contracts/interfaces/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { ICoreVoting } from "./ICoreVoting"; -export type { IERC20 } from "./IERC20"; -export type { IERC20Permit } from "./IERC20Permit"; -export type { ILockingVault } from "./ILockingVault"; -export type { IVotingVault } from "./IVotingVault"; diff --git a/packages/council-typechain/src/contracts/libraries/Authorizable.ts b/packages/council-typechain/src/contracts/libraries/Authorizable.ts deleted file mode 100644 index 65fbbe96..00000000 --- a/packages/council-typechain/src/contracts/libraries/Authorizable.ts +++ /dev/null @@ -1,436 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface AuthorizableInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "owner()": FunctionFragment; - "setOwner(address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "deauthorize" - | "deauthorize(address)" - | "isAuthorized" - | "isAuthorized(address)" - | "owner" - | "owner()" - | "setOwner" - | "setOwner(address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface Authorizable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: AuthorizableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/libraries/ERC20Permit.ts b/packages/council-typechain/src/contracts/libraries/ERC20Permit.ts deleted file mode 100644 index 8e55e80b..00000000 --- a/packages/council-typechain/src/contracts/libraries/ERC20Permit.ts +++ /dev/null @@ -1,901 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ERC20PermitInterface extends utils.Interface { - functions: { - "DOMAIN_SEPARATOR()": FunctionFragment; - "PERMIT_TYPEHASH()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "name()": FunctionFragment; - "nonces(address)": FunctionFragment; - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; - "symbol()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DOMAIN_SEPARATOR" - | "DOMAIN_SEPARATOR()" - | "PERMIT_TYPEHASH" - | "PERMIT_TYPEHASH()" - | "allowance" - | "allowance(address,address)" - | "approve" - | "approve(address,uint256)" - | "balanceOf" - | "balanceOf(address)" - | "decimals" - | "decimals()" - | "name" - | "name()" - | "nonces" - | "nonces(address)" - | "permit" - | "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - | "symbol" - | "symbol()" - | "transfer" - | "transfer(address,uint256)" - | "transferFrom" - | "transferFrom(address,address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "PERMIT_TYPEHASH", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "PERMIT_TYPEHASH()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decimals()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "name()", values?: undefined): string; - encodeFunctionData( - functionFragment: "nonces", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "nonces(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "permit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "transferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "PERMIT_TYPEHASH", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "PERMIT_TYPEHASH()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowance(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "nonces(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom(address,address,uint256)", - data: BytesLike, - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Approval(address,address,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Transfer(address,address,uint256)", - ): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ERC20Permit extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20PermitInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise<[string]>; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string]>; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise<[string]>; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - "decimals()"(overrides?: CallOverrides): Promise<[number]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - "name()"(overrides?: CallOverrides): Promise<[string]>; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - "symbol()"(overrides?: CallOverrides): Promise<[string]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"( - overrides?: CallOverrides, - ): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"( - overrides?: CallOverrides, - ): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/libraries/ERC20PermitWithMint.ts b/packages/council-typechain/src/contracts/libraries/ERC20PermitWithMint.ts deleted file mode 100644 index f5d57b1c..00000000 --- a/packages/council-typechain/src/contracts/libraries/ERC20PermitWithMint.ts +++ /dev/null @@ -1,1455 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ERC20PermitWithMintInterface extends utils.Interface { - functions: { - "DOMAIN_SEPARATOR()": FunctionFragment; - "PERMIT_TYPEHASH()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "burn(address,uint256)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "decimals()": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "mint(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "nonces(address)": FunctionFragment; - "owner()": FunctionFragment; - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DOMAIN_SEPARATOR" - | "DOMAIN_SEPARATOR()" - | "PERMIT_TYPEHASH" - | "PERMIT_TYPEHASH()" - | "allowance" - | "allowance(address,address)" - | "approve" - | "approve(address,uint256)" - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "balanceOf" - | "balanceOf(address)" - | "burn" - | "burn(address,uint256)" - | "deauthorize" - | "deauthorize(address)" - | "decimals" - | "decimals()" - | "isAuthorized" - | "isAuthorized(address)" - | "mint" - | "mint(address,uint256)" - | "name" - | "name()" - | "nonces" - | "nonces(address)" - | "owner" - | "owner()" - | "permit" - | "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - | "setOwner" - | "setOwner(address)" - | "symbol" - | "symbol()" - | "totalSupply" - | "totalSupply()" - | "transfer" - | "transfer(address,uint256)" - | "transferFrom" - | "transferFrom(address,address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "PERMIT_TYPEHASH", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "PERMIT_TYPEHASH()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "burn", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "burn(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decimals()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mint", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mint(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "name()", values?: undefined): string; - encodeFunctionData( - functionFragment: "nonces", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "nonces(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "permit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "totalSupply()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "transferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "PERMIT_TYPEHASH", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "PERMIT_TYPEHASH()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowance(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "burn(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "mint(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "nonces(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom(address,address,uint256)", - data: BytesLike, - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Approval(address,address,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Transfer(address,address,uint256)", - ): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ERC20PermitWithMint extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20PermitWithMintInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise<[string]>; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string]>; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise<[string]>; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - "decimals()"(overrides?: CallOverrides): Promise<[number]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - "name()"(overrides?: CallOverrides): Promise<[string]>; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - "symbol()"(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"( - overrides?: CallOverrides, - ): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"( - overrides?: CallOverrides, - ): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards.ts b/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards.ts deleted file mode 100644 index 83bba8d5..00000000 --- a/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards.ts +++ /dev/null @@ -1,472 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface AbstractMerkleRewardsInterface extends utils.Interface { - functions: { - "claim(uint256,uint256,bytes32[],address)": FunctionFragment; - "claimAndDelegate(uint256,address,uint256,bytes32[],address)": FunctionFragment; - "claimed(address)": FunctionFragment; - "lockingVault()": FunctionFragment; - "rewardsRoot()": FunctionFragment; - "token()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "claim" - | "claim(uint256,uint256,bytes32[],address)" - | "claimAndDelegate" - | "claimAndDelegate(uint256,address,uint256,bytes32[],address)" - | "claimed" - | "claimed(address)" - | "lockingVault" - | "lockingVault()" - | "rewardsRoot" - | "rewardsRoot()" - | "token" - | "token()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "claim", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimed", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "claimed(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockingVault", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockingVault()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claimed", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claimed(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - - events: {}; -} - -export interface AbstractMerkleRewards extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: AbstractMerkleRewardsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - lockingVault(overrides?: CallOverrides): Promise<[string]>; - - "lockingVault()"(overrides?: CallOverrides): Promise<[string]>; - - rewardsRoot(overrides?: CallOverrides): Promise<[string]>; - - "rewardsRoot()"(overrides?: CallOverrides): Promise<[string]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - }; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - callStatic: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/MerkleRewards.ts b/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/MerkleRewards.ts deleted file mode 100644 index aaac5acc..00000000 --- a/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/MerkleRewards.ts +++ /dev/null @@ -1,472 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface MerkleRewardsInterface extends utils.Interface { - functions: { - "claim(uint256,uint256,bytes32[],address)": FunctionFragment; - "claimAndDelegate(uint256,address,uint256,bytes32[],address)": FunctionFragment; - "claimed(address)": FunctionFragment; - "lockingVault()": FunctionFragment; - "rewardsRoot()": FunctionFragment; - "token()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "claim" - | "claim(uint256,uint256,bytes32[],address)" - | "claimAndDelegate" - | "claimAndDelegate(uint256,address,uint256,bytes32[],address)" - | "claimed" - | "claimed(address)" - | "lockingVault" - | "lockingVault()" - | "rewardsRoot" - | "rewardsRoot()" - | "token" - | "token()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "claim", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimed", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "claimed(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockingVault", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockingVault()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claimed", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claimed(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - - events: {}; -} - -export interface MerkleRewards extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MerkleRewardsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - lockingVault(overrides?: CallOverrides): Promise<[string]>; - - "lockingVault()"(overrides?: CallOverrides): Promise<[string]>; - - rewardsRoot(overrides?: CallOverrides): Promise<[string]>; - - "rewardsRoot()"(overrides?: CallOverrides): Promise<[string]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - }; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - callStatic: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/index.ts b/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/index.ts deleted file mode 100644 index 9b7cc253..00000000 --- a/packages/council-typechain/src/contracts/libraries/MerkleRewards.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { AbstractMerkleRewards } from "./AbstractMerkleRewards"; -export type { MerkleRewards } from "./MerkleRewards"; diff --git a/packages/council-typechain/src/contracts/libraries/Storage.ts b/packages/council-typechain/src/contracts/libraries/Storage.ts deleted file mode 100644 index 5bb7868f..00000000 --- a/packages/council-typechain/src/contracts/libraries/Storage.ts +++ /dev/null @@ -1,145 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface StorageInterface extends utils.Interface { - functions: { - "getPtr(string,string)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "getPtr" | "getPtr(string,string)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "getPtr", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getPtr(string,string)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "getPtr", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getPtr(string,string)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface Storage extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: StorageInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - getPtr( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "getPtr(string,string)"( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - }; - - getPtr( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getPtr(string,string)"( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - getPtr( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getPtr(string,string)"( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - getPtr( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getPtr(string,string)"( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - getPtr( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getPtr(string,string)"( - typeString: PromiseOrValue, - name: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/libraries/index.ts b/packages/council-typechain/src/contracts/libraries/index.ts deleted file mode 100644 index 6031ac22..00000000 --- a/packages/council-typechain/src/contracts/libraries/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as merkleRewardsSol from "./MerkleRewards.sol"; -export type { merkleRewardsSol }; -export type { Authorizable } from "./Authorizable"; -export type { ERC20Permit } from "./ERC20Permit"; -export type { ERC20PermitWithMint } from "./ERC20PermitWithMint"; -export type { Storage } from "./Storage"; diff --git a/packages/council-typechain/src/contracts/mocks/MockCoreVoting.ts b/packages/council-typechain/src/contracts/mocks/MockCoreVoting.ts deleted file mode 100644 index 87007c10..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockCoreVoting.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockCoreVotingInterface extends utils.Interface { - functions: { - "approvedVaults(address)": FunctionFragment; - "setVault(address,bool)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approvedVaults" - | "approvedVaults(address)" - | "setVault" - | "setVault(address,bool)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approvedVaults", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approvedVaults(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setVault", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setVault(address,bool)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "approvedVaults", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "approvedVaults(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setVault", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setVault(address,bool)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface MockCoreVoting extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockCoreVotingInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - setVault( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVault(address,bool)"( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVault( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVault(address,bool)"( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVault( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setVault(address,bool)"( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVault( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVault(address,bool)"( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVault( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVault(address,bool)"( - vault: PromiseOrValue, - what: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/MockDoubleSpender.ts b/packages/council-typechain/src/contracts/mocks/MockDoubleSpender.ts deleted file mode 100644 index 6a19cc54..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockDoubleSpender.ts +++ /dev/null @@ -1,311 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockDoubleSpenderInterface extends utils.Interface { - functions: { - "doubleSpendLarge(address,uint256)": FunctionFragment; - "doubleSpendMedium(address,uint256)": FunctionFragment; - "doubleSpendSmall(address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "doubleSpendLarge" - | "doubleSpendLarge(address,uint256)" - | "doubleSpendMedium" - | "doubleSpendMedium(address,uint256)" - | "doubleSpendSmall" - | "doubleSpendSmall(address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "doubleSpendLarge", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "doubleSpendLarge(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "doubleSpendMedium", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "doubleSpendMedium(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "doubleSpendSmall", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "doubleSpendSmall(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "doubleSpendLarge", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "doubleSpendLarge(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "doubleSpendMedium", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "doubleSpendMedium(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "doubleSpendSmall", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "doubleSpendSmall(address,uint256)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface MockDoubleSpender extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockDoubleSpenderInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - doubleSpendLarge( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendLarge(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendMedium( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendMedium(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendSmall( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendSmall(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - doubleSpendLarge( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendLarge(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendMedium( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendMedium(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendSmall( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendSmall(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - doubleSpendLarge( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "doubleSpendLarge(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - doubleSpendMedium( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "doubleSpendMedium(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - doubleSpendSmall( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "doubleSpendSmall(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - doubleSpendLarge( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendLarge(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendMedium( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendMedium(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendSmall( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendSmall(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - doubleSpendLarge( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendLarge(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendMedium( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendMedium(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - doubleSpendSmall( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "doubleSpendSmall(address,uint256)"( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/MockERC20.ts b/packages/council-typechain/src/contracts/mocks/MockERC20.ts deleted file mode 100644 index c47589cd..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockERC20.ts +++ /dev/null @@ -1,1628 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockERC20Interface extends utils.Interface { - functions: { - "DOMAIN_SEPARATOR()": FunctionFragment; - "PERMIT_TYPEHASH()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "burn(address,uint256)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "decimals()": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "mint(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "nonces(address)": FunctionFragment; - "owner()": FunctionFragment; - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; - "setAllowance(address,address,uint256)": FunctionFragment; - "setBalance(address,uint256)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DOMAIN_SEPARATOR" - | "DOMAIN_SEPARATOR()" - | "PERMIT_TYPEHASH" - | "PERMIT_TYPEHASH()" - | "allowance" - | "allowance(address,address)" - | "approve" - | "approve(address,uint256)" - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "balanceOf" - | "balanceOf(address)" - | "burn" - | "burn(address,uint256)" - | "deauthorize" - | "deauthorize(address)" - | "decimals" - | "decimals()" - | "isAuthorized" - | "isAuthorized(address)" - | "mint" - | "mint(address,uint256)" - | "name" - | "name()" - | "nonces" - | "nonces(address)" - | "owner" - | "owner()" - | "permit" - | "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - | "setAllowance" - | "setAllowance(address,address,uint256)" - | "setBalance" - | "setBalance(address,uint256)" - | "setOwner" - | "setOwner(address)" - | "symbol" - | "symbol()" - | "totalSupply" - | "totalSupply()" - | "transfer" - | "transfer(address,uint256)" - | "transferFrom" - | "transferFrom(address,address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "PERMIT_TYPEHASH", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "PERMIT_TYPEHASH()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "allowance(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approve(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "burn", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "burn(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decimals()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mint", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mint(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "name()", values?: undefined): string; - encodeFunctionData( - functionFragment: "nonces", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "nonces(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "permit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setAllowance", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setAllowance(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setBalance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setBalance(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol()", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "totalSupply()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "transferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "PERMIT_TYPEHASH", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "PERMIT_TYPEHASH()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowance(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "burn(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "mint(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "nonces(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setAllowance", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setAllowance(address,address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setBalance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setBalance(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom(address,address,uint256)", - data: BytesLike, - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Approval(address,address,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Transfer(address,address,uint256)", - ): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface MockERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise<[string]>; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string]>; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise<[string]>; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - "decimals()"(overrides?: CallOverrides): Promise<[number]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - "name()"(overrides?: CallOverrides): Promise<[string]>; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setAllowance( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setAllowance(address,address,uint256)"( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setBalance( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setBalance(address,uint256)"( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - "symbol()"(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setAllowance( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setAllowance(address,address,uint256)"( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setBalance( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setBalance(address,uint256)"( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setAllowance( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setAllowance(address,address,uint256)"( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setBalance( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setBalance(address,uint256)"( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null, - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null, - ): TransferEventFilter; - }; - - estimateGas: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setAllowance( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setAllowance(address,address,uint256)"( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setBalance( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setBalance(address,uint256)"( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - "DOMAIN_SEPARATOR()"( - overrides?: CallOverrides, - ): Promise; - - PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; - - "PERMIT_TYPEHASH()"( - overrides?: CallOverrides, - ): Promise; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "allowance(address,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - approve( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - burn( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "burn(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - "decimals()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - "name()"(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "nonces(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setAllowance( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setAllowance(address,address,uint256)"( - source: PromiseOrValue, - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setBalance( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setBalance(address,uint256)"( - who: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - "symbol()"(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - transferFrom( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transferFrom(address,address,uint256)"( - spender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/MockHistoryTracker.ts b/packages/council-typechain/src/contracts/mocks/MockHistoryTracker.ts deleted file mode 100644 index 49d86d67..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockHistoryTracker.ts +++ /dev/null @@ -1,559 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockHistoryTrackerInterface extends utils.Interface { - functions: { - "clear(uint256)": FunctionFragment; - "find(uint256)": FunctionFragment; - "findAndClear(uint256,uint256)": FunctionFragment; - "loadBounds()": FunctionFragment; - "loadTop()": FunctionFragment; - "multiPush(uint256[])": FunctionFragment; - "peekArrayData(uint256,uint256)": FunctionFragment; - "push(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "clear" - | "clear(uint256)" - | "find" - | "find(uint256)" - | "findAndClear" - | "findAndClear(uint256,uint256)" - | "loadBounds" - | "loadBounds()" - | "loadTop" - | "loadTop()" - | "multiPush" - | "multiPush(uint256[])" - | "peekArrayData" - | "peekArrayData(uint256,uint256)" - | "push" - | "push(uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "clear", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "clear(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "find", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "find(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "findAndClear", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "findAndClear(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "loadBounds", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "loadBounds()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "loadTop", values?: undefined): string; - encodeFunctionData(functionFragment: "loadTop()", values?: undefined): string; - encodeFunctionData( - functionFragment: "multiPush", - values: [PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "multiPush(uint256[])", - values: [PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "peekArrayData", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "peekArrayData(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "push", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "push(uint256)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "clear", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "clear(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "find(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "findAndClear", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "findAndClear(uint256,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "loadBounds", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "loadBounds()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "loadTop", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "loadTop()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "multiPush", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "multiPush(uint256[])", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "peekArrayData", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "peekArrayData(uint256,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "push", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "push(uint256)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface MockHistoryTracker extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockHistoryTrackerInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - clear( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "clear(uint256)"( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - find( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "find(uint256)"( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - findAndClear( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "findAndClear(uint256,uint256)"( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - loadBounds(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; - - "loadBounds()"(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; - - loadTop(overrides?: CallOverrides): Promise<[BigNumber]>; - - "loadTop()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - multiPush( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "multiPush(uint256[])"( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - peekArrayData( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber[], BigNumber[]]>; - - "peekArrayData(uint256,uint256)"( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber[], BigNumber[]]>; - - push( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "push(uint256)"( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - clear( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "clear(uint256)"( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - find( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "find(uint256)"( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - findAndClear( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "findAndClear(uint256,uint256)"( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - loadBounds(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; - - "loadBounds()"(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; - - loadTop(overrides?: CallOverrides): Promise; - - "loadTop()"(overrides?: CallOverrides): Promise; - - multiPush( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "multiPush(uint256[])"( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - peekArrayData( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber[], BigNumber[]]>; - - "peekArrayData(uint256,uint256)"( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber[], BigNumber[]]>; - - push( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "push(uint256)"( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - clear( - newMin: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "clear(uint256)"( - newMin: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - find( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "find(uint256)"( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - findAndClear( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "findAndClear(uint256,uint256)"( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - loadBounds(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; - - "loadBounds()"(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; - - loadTop(overrides?: CallOverrides): Promise; - - "loadTop()"(overrides?: CallOverrides): Promise; - - multiPush( - toBePushed: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "multiPush(uint256[])"( - toBePushed: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - peekArrayData( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber[], BigNumber[]]>; - - "peekArrayData(uint256,uint256)"( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber[], BigNumber[]]>; - - push( - data: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "push(uint256)"( - data: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - clear( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "clear(uint256)"( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - find( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "find(uint256)"( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - findAndClear( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "findAndClear(uint256,uint256)"( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - loadBounds(overrides?: CallOverrides): Promise; - - "loadBounds()"(overrides?: CallOverrides): Promise; - - loadTop(overrides?: CallOverrides): Promise; - - "loadTop()"(overrides?: CallOverrides): Promise; - - multiPush( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "multiPush(uint256[])"( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - peekArrayData( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "peekArrayData(uint256,uint256)"( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - push( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "push(uint256)"( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - clear( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "clear(uint256)"( - newMin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - find( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "find(uint256)"( - which: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - findAndClear( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "findAndClear(uint256,uint256)"( - which: PromiseOrValue, - stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - loadBounds(overrides?: CallOverrides): Promise; - - "loadBounds()"(overrides?: CallOverrides): Promise; - - loadTop(overrides?: CallOverrides): Promise; - - "loadTop()"(overrides?: CallOverrides): Promise; - - multiPush( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "multiPush(uint256[])"( - toBePushed: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - peekArrayData( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "peekArrayData(uint256,uint256)"( - start: PromiseOrValue, - end: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - push( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "push(uint256)"( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/MockLockingVault.ts b/packages/council-typechain/src/contracts/mocks/MockLockingVault.ts deleted file mode 100644 index e57f7dba..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockLockingVault.ts +++ /dev/null @@ -1,300 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockLockingVaultInterface extends utils.Interface { - functions: { - "delegation(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "deposits(address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "delegation" - | "delegation(address)" - | "deposit" - | "deposit(address,uint256,address)" - | "deposits" - | "deposits(address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "delegation", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "delegation(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposits", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposits(address)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "delegation", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "delegation(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposits(address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface MockLockingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockLockingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - delegation( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string]>; - - "delegation(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string]>; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "deposits(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - }; - - delegation( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegation(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - delegation( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegation(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposits( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - delegation( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegation(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - delegation( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegation(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/MockTokenLogic.ts b/packages/council-typechain/src/contracts/mocks/MockTokenLogic.ts deleted file mode 100644 index 1d63a178..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockTokenLogic.ts +++ /dev/null @@ -1,558 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockTokenLogicInterface extends utils.Interface { - functions: { - "balanceOf(address)": FunctionFragment; - "increaseBalance(address,uint256)": FunctionFragment; - "mint(address,uint256)": FunctionFragment; - "readStorage(uint256)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "writeStorage(uint256,bytes32)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "balanceOf" - | "balanceOf(address)" - | "increaseBalance" - | "increaseBalance(address,uint256)" - | "mint" - | "mint(address,uint256)" - | "readStorage" - | "readStorage(uint256)" - | "totalSupply" - | "totalSupply()" - | "transfer" - | "transfer(address,uint256)" - | "writeStorage" - | "writeStorage(uint256,bytes32)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "increaseBalance", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "increaseBalance(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mint", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "mint(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "readStorage", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "readStorage(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "totalSupply()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "transfer(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "writeStorage", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "writeStorage(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "balanceOf(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "increaseBalance", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "increaseBalance(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "mint(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "readStorage", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "readStorage(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transfer(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "writeStorage", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "writeStorage(uint256,bytes32)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface MockTokenLogic extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockTokenLogicInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - balanceOf( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "balanceOf(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - increaseBalance( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseBalance(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string] & { data: string }>; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string] & { data: string }>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - balanceOf( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - increaseBalance( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseBalance(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - balanceOf( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - increaseBalance( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "increaseBalance(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "mint(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - balanceOf( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - increaseBalance( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseBalance(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - balanceOf( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "balanceOf(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - increaseBalance( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "increaseBalance(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "mint(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - "totalSupply()"(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "transfer(address,uint256)"( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/MockVotingVault.ts b/packages/council-typechain/src/contracts/mocks/MockVotingVault.ts deleted file mode 100644 index 0a76fbb6..00000000 --- a/packages/council-typechain/src/contracts/mocks/MockVotingVault.ts +++ /dev/null @@ -1,319 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockVotingVaultInterface extends utils.Interface { - functions: { - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "setVotingPower(address,uint256)": FunctionFragment; - "votingPower(address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "setVotingPower" - | "setVotingPower(address,uint256)" - | "votingPower" - | "votingPower(address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setVotingPower", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setVotingPower(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "votingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "votingPower(address)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setVotingPower(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "votingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "votingPower(address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface MockVotingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockVotingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - queryVotePower( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePower(address,uint256,bytes)"( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - setVotingPower( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotingPower(address,uint256)"( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPower( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "votingPower(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - }; - - queryVotePower( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVotingPower( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotingPower(address,uint256)"( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPower( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votingPower(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - queryVotePower( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVotingPower( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setVotingPower(address,uint256)"( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - votingPower( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votingPower(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - queryVotePower( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVotingPower( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotingPower(address,uint256)"( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPower( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votingPower(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - queryVotePower( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - _user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVotingPower( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotingPower(address,uint256)"( - _user: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPower( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votingPower(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/Reverter.ts b/packages/council-typechain/src/contracts/mocks/Reverter.ts deleted file mode 100644 index 17d438ec..00000000 --- a/packages/council-typechain/src/contracts/mocks/Reverter.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ReverterInterface extends utils.Interface { - functions: { - "fail()": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "fail" | "fail()"): FunctionFragment; - - encodeFunctionData(functionFragment: "fail", values?: undefined): string; - encodeFunctionData(functionFragment: "fail()", values?: undefined): string; - - decodeFunctionResult(functionFragment: "fail", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "fail()", data: BytesLike): Result; - - events: {}; -} - -export interface Reverter extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReverterInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - fail(overrides?: CallOverrides): Promise<[void]>; - - "fail()"(overrides?: CallOverrides): Promise<[void]>; - }; - - fail(overrides?: CallOverrides): Promise; - - "fail()"(overrides?: CallOverrides): Promise; - - callStatic: { - fail(overrides?: CallOverrides): Promise; - - "fail()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - fail(overrides?: CallOverrides): Promise; - - "fail()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - fail(overrides?: CallOverrides): Promise; - - "fail()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage.ts b/packages/council-typechain/src/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage.ts deleted file mode 100644 index 36b9aafe..00000000 --- a/packages/council-typechain/src/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage.ts +++ /dev/null @@ -1,222 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ReadAndWriteAnyStorageInterface extends utils.Interface { - functions: { - "readStorage(uint256)": FunctionFragment; - "writeStorage(uint256,bytes32)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "readStorage" - | "readStorage(uint256)" - | "writeStorage" - | "writeStorage(uint256,bytes32)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "readStorage", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "readStorage(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "writeStorage", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "writeStorage(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "readStorage", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "readStorage(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "writeStorage", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "writeStorage(uint256,bytes32)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface ReadAndWriteAnyStorage extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReadAndWriteAnyStorageInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string] & { data: string }>; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string] & { data: string }>; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - readStorage( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "readStorage(uint256)"( - slot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - writeStorage( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "writeStorage(uint256,bytes32)"( - slot: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/StorageRead.sol/index.ts b/packages/council-typechain/src/contracts/mocks/StorageRead.sol/index.ts deleted file mode 100644 index 1bacc1bc..00000000 --- a/packages/council-typechain/src/contracts/mocks/StorageRead.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { ReadAndWriteAnyStorage } from "./ReadAndWriteAnyStorage"; diff --git a/packages/council-typechain/src/contracts/mocks/TestCoreVoting.ts b/packages/council-typechain/src/contracts/mocks/TestCoreVoting.ts deleted file mode 100644 index 997a7565..00000000 --- a/packages/council-typechain/src/contracts/mocks/TestCoreVoting.ts +++ /dev/null @@ -1,2326 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace CoreVoting { - export type VoteStruct = { - votingPower: PromiseOrValue; - castBallot: PromiseOrValue; - }; - - export type VoteStructOutput = [BigNumber, number] & { - votingPower: BigNumber; - castBallot: number; - }; -} - -export interface TestCoreVotingInterface extends utils.Interface { - functions: { - "DAY_IN_BLOCKS()": FunctionFragment; - "approvedVaults(address)": FunctionFragment; - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "baseQuorum()": FunctionFragment; - "changeExtraVotingTime(uint256)": FunctionFragment; - "changeVaultStatus(address,bool)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "dummyValue()": FunctionFragment; - "execute(uint256,address[],bytes[])": FunctionFragment; - "extraVoteTime()": FunctionFragment; - "getCustomQuorum(address,bytes4)": FunctionFragment; - "getProposalData(uint256)": FunctionFragment; - "getProposalVotingPower(uint256)": FunctionFragment; - "getVaultStatus(address)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "lockDuration()": FunctionFragment; - "minProposalPower()": FunctionFragment; - "owner()": FunctionFragment; - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)": FunctionFragment; - "proposalCount()": FunctionFragment; - "proposals(uint256)": FunctionFragment; - "quorums(address,bytes4)": FunctionFragment; - "setCustomQuorum(address,bytes4,uint256)": FunctionFragment; - "setDefaultQuorum(uint256)": FunctionFragment; - "setLockDuration(uint256)": FunctionFragment; - "setMinProposalPower(uint256)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "updateDummy(uint256)": FunctionFragment; - "vote(address[],bytes[],uint256,uint8)": FunctionFragment; - "votes(address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DAY_IN_BLOCKS" - | "DAY_IN_BLOCKS()" - | "approvedVaults" - | "approvedVaults(address)" - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "baseQuorum" - | "baseQuorum()" - | "changeExtraVotingTime" - | "changeExtraVotingTime(uint256)" - | "changeVaultStatus" - | "changeVaultStatus(address,bool)" - | "deauthorize" - | "deauthorize(address)" - | "dummyValue" - | "dummyValue()" - | "execute" - | "execute(uint256,address[],bytes[])" - | "extraVoteTime" - | "extraVoteTime()" - | "getCustomQuorum" - | "getCustomQuorum(address,bytes4)" - | "getProposalData" - | "getProposalData(uint256)" - | "getProposalVotingPower" - | "getProposalVotingPower(uint256)" - | "getVaultStatus" - | "getVaultStatus(address)" - | "isAuthorized" - | "isAuthorized(address)" - | "lockDuration" - | "lockDuration()" - | "minProposalPower" - | "minProposalPower()" - | "owner" - | "owner()" - | "proposal" - | "proposal(address[],bytes[],address[],bytes[],uint256,uint8)" - | "proposalCount" - | "proposalCount()" - | "proposals" - | "proposals(uint256)" - | "quorums" - | "quorums(address,bytes4)" - | "setCustomQuorum" - | "setCustomQuorum(address,bytes4,uint256)" - | "setDefaultQuorum" - | "setDefaultQuorum(uint256)" - | "setLockDuration" - | "setLockDuration(uint256)" - | "setMinProposalPower" - | "setMinProposalPower(uint256)" - | "setOwner" - | "setOwner(address)" - | "updateDummy" - | "updateDummy(uint256)" - | "vote" - | "vote(address[],bytes[],uint256,uint8)" - | "votes" - | "votes(address,uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DAY_IN_BLOCKS", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "DAY_IN_BLOCKS()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "approvedVaults", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "approvedVaults(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "baseQuorum", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "baseQuorum()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "changeExtraVotingTime", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeExtraVotingTime(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeVaultStatus", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeVaultStatus(address,bool)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "dummyValue", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "dummyValue()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [ - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue[], - ], - ): string; - encodeFunctionData( - functionFragment: "execute(uint256,address[],bytes[])", - values: [ - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue[], - ], - ): string; - encodeFunctionData( - functionFragment: "extraVoteTime", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "extraVoteTime()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "getCustomQuorum", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getCustomQuorum(address,bytes4)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getProposalData", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getProposalData(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getProposalVotingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getProposalVotingPower(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getVaultStatus", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getVaultStatus(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockDuration", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockDuration()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "minProposalPower", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "minProposalPower()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "proposal", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "proposal(address[],bytes[],address[],bytes[],uint256,uint8)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "proposalCount", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposalCount()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposals", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "proposals(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "quorums", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "quorums(address,bytes4)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setCustomQuorum", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setCustomQuorum(address,bytes4,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setDefaultQuorum", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setDefaultQuorum(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setLockDuration", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setLockDuration(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setMinProposalPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setMinProposalPower(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateDummy", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateDummy(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "vote", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "vote(address[],bytes[],uint256,uint8)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "votes", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "votes(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "DAY_IN_BLOCKS", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "DAY_IN_BLOCKS()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "approvedVaults", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "approvedVaults(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "baseQuorum", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "baseQuorum()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeExtraVotingTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeExtraVotingTime(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeVaultStatus", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeVaultStatus(address,bool)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "dummyValue", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "dummyValue()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "execute(uint256,address[],bytes[])", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "extraVoteTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "extraVoteTime()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getCustomQuorum", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getCustomQuorum(address,bytes4)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getProposalData", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getProposalData(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getProposalVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getProposalVotingPower(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getVaultStatus", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getVaultStatus(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockDuration", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockDuration()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "minProposalPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "minProposalPower()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "proposal", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proposal(address[],bytes[],address[],bytes[],uint256,uint8)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposalCount", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposalCount()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "proposals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proposals(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "quorums", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "quorums(address,bytes4)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setCustomQuorum", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setCustomQuorum(address,bytes4,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setDefaultQuorum", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setDefaultQuorum(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setLockDuration", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setLockDuration(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setMinProposalPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setMinProposalPower(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateDummy", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateDummy(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "vote", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "vote(address[],bytes[],uint256,uint8)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "votes", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "votes(address,uint256)", - data: BytesLike, - ): Result; - - events: { - "ProposalCreated(uint256,uint256,uint256,uint256)": EventFragment; - "ProposalExecuted(uint256)": EventFragment; - "Voted(address,uint256,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ProposalCreated"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "ProposalCreated(uint256,uint256,uint256,uint256)", - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "ProposalExecuted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ProposalExecuted(uint256)"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Voted"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Voted(address,uint256,tuple)", - ): EventFragment; -} - -export interface ProposalCreatedEventObject { - proposalId: BigNumber; - created: BigNumber; - execution: BigNumber; - expiration: BigNumber; -} -export type ProposalCreatedEvent = TypedEvent< - [BigNumber, BigNumber, BigNumber, BigNumber], - ProposalCreatedEventObject ->; - -export type ProposalCreatedEventFilter = TypedEventFilter; - -export interface ProposalExecutedEventObject { - proposalId: BigNumber; -} -export type ProposalExecutedEvent = TypedEvent< - [BigNumber], - ProposalExecutedEventObject ->; - -export type ProposalExecutedEventFilter = - TypedEventFilter; - -export interface VotedEventObject { - voter: string; - proposalId: BigNumber; - vote: CoreVoting.VoteStructOutput; -} -export type VotedEvent = TypedEvent< - [string, BigNumber, CoreVoting.VoteStructOutput], - VotedEventObject ->; - -export type VotedEventFilter = TypedEventFilter; - -export interface TestCoreVoting extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestCoreVotingInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise<[BigNumber]>; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - baseQuorum(overrides?: CallOverrides): Promise<[BigNumber]>; - - "baseQuorum()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummyValue(overrides?: CallOverrides): Promise<[BigNumber]>; - - "dummyValue()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise<[BigNumber]>; - - "extraVoteTime()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - getCustomQuorum( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "getCustomQuorum(address,bytes4)"( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - getProposalData( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [ - string, - BigNumber, - BigNumber, - BigNumber, - [BigNumber, BigNumber, BigNumber], - ] - >; - - "getProposalData(uint256)"( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [ - string, - BigNumber, - BigNumber, - BigNumber, - [BigNumber, BigNumber, BigNumber], - ] - >; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[[BigNumber, BigNumber, BigNumber]]>; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[[BigNumber, BigNumber, BigNumber]]>; - - getVaultStatus( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "getVaultStatus(address)"( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - lockDuration(overrides?: CallOverrides): Promise<[BigNumber]>; - - "lockDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - minProposalPower(overrides?: CallOverrides): Promise<[BigNumber]>; - - "minProposalPower()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise<[BigNumber]>; - - "proposalCount()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - }; - - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummyValue(overrides?: CallOverrides): Promise; - - "dummyValue()"(overrides?: CallOverrides): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getCustomQuorum( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getCustomQuorum(address,bytes4)"( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getProposalData( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, [BigNumber, BigNumber, BigNumber]] - >; - - "getProposalData(uint256)"( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, [BigNumber, BigNumber, BigNumber]] - >; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - getVaultStatus( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getVaultStatus(address)"( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - callStatic: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - dummyValue(overrides?: CallOverrides): Promise; - - "dummyValue()"(overrides?: CallOverrides): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getCustomQuorum( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getCustomQuorum(address,bytes4)"( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getProposalData( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [ - string, - BigNumber, - BigNumber, - BigNumber, - [BigNumber, BigNumber, BigNumber], - ] - >; - - "getProposalData(uint256)"( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [ - string, - BigNumber, - BigNumber, - BigNumber, - [BigNumber, BigNumber, BigNumber], - ] - >; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber, BigNumber, BigNumber]>; - - getVaultStatus( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getVaultStatus(address)"( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { - proposalHash: string; - created: BigNumber; - unlock: BigNumber; - expiration: BigNumber; - quorum: BigNumber; - lastCall: BigNumber; - } - >; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - updateDummy( - _newValue: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "updateDummy(uint256)"( - _newValue: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise< - [BigNumber, number] & { votingPower: BigNumber; castBallot: number } - >; - }; - - filters: { - "ProposalCreated(uint256,uint256,uint256,uint256)"( - proposalId?: null, - created?: null, - execution?: null, - expiration?: null, - ): ProposalCreatedEventFilter; - ProposalCreated( - proposalId?: null, - created?: null, - execution?: null, - expiration?: null, - ): ProposalCreatedEventFilter; - - "ProposalExecuted(uint256)"(proposalId?: null): ProposalExecutedEventFilter; - ProposalExecuted(proposalId?: null): ProposalExecutedEventFilter; - - "Voted(address,uint256,tuple)"( - voter?: PromiseOrValue | null, - proposalId?: PromiseOrValue | null, - vote?: null, - ): VotedEventFilter; - Voted( - voter?: PromiseOrValue | null, - proposalId?: PromiseOrValue | null, - vote?: null, - ): VotedEventFilter; - }; - - estimateGas: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummyValue(overrides?: CallOverrides): Promise; - - "dummyValue()"(overrides?: CallOverrides): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getCustomQuorum( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getCustomQuorum(address,bytes4)"( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getProposalData( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getProposalData(uint256)"( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getVaultStatus( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getVaultStatus(address)"( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - DAY_IN_BLOCKS(overrides?: CallOverrides): Promise; - - "DAY_IN_BLOCKS()"(overrides?: CallOverrides): Promise; - - approvedVaults( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approvedVaults(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - baseQuorum(overrides?: CallOverrides): Promise; - - "baseQuorum()"(overrides?: CallOverrides): Promise; - - changeExtraVotingTime( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeExtraVotingTime(uint256)"( - _extraVoteTime: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeVaultStatus( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeVaultStatus(address,bool)"( - vault: PromiseOrValue, - isValid: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummyValue(overrides?: CallOverrides): Promise; - - "dummyValue()"(overrides?: CallOverrides): Promise; - - execute( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "execute(uint256,address[],bytes[])"( - proposalId: PromiseOrValue, - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - extraVoteTime(overrides?: CallOverrides): Promise; - - "extraVoteTime()"(overrides?: CallOverrides): Promise; - - getCustomQuorum( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getCustomQuorum(address,bytes4)"( - _target: PromiseOrValue, - _selector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getProposalData( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getProposalData(uint256)"( - _proposalID: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getProposalVotingPower( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getProposalVotingPower(uint256)"( - proposalId: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getVaultStatus( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getVaultStatus(address)"( - _vault: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockDuration(overrides?: CallOverrides): Promise; - - "lockDuration()"(overrides?: CallOverrides): Promise; - - minProposalPower(overrides?: CallOverrides): Promise; - - "minProposalPower()"( - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proposal( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposal(address[],bytes[],address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - targets: PromiseOrValue[], - calldatas: PromiseOrValue[], - lastCall: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposalCount(overrides?: CallOverrides): Promise; - - "proposalCount()"(overrides?: CallOverrides): Promise; - - proposals( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposals(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - quorums( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "quorums(address,bytes4)"( - target: PromiseOrValue, - functionSelector: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCustomQuorum( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCustomQuorum(address,bytes4,uint256)"( - target: PromiseOrValue, - selector: PromiseOrValue, - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setDefaultQuorum( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setDefaultQuorum(uint256)"( - quorum: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setLockDuration( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setLockDuration(uint256)"( - _lockDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setMinProposalPower( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setMinProposalPower(uint256)"( - _minProposalPower: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - vote( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "vote(address[],bytes[],uint256,uint8)"( - votingVaults: PromiseOrValue[], - extraVaultData: PromiseOrValue[], - proposalId: PromiseOrValue, - ballot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votes( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "votes(address,uint256)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/TestTreasury.ts b/packages/council-typechain/src/contracts/mocks/TestTreasury.ts deleted file mode 100644 index c60fa763..00000000 --- a/packages/council-typechain/src/contracts/mocks/TestTreasury.ts +++ /dev/null @@ -1,800 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface TestTreasuryInterface extends utils.Interface { - functions: { - "approve(address,address,uint256)": FunctionFragment; - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "dummy()": FunctionFragment; - "genericCall(address,bytes)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "owner()": FunctionFragment; - "sendFunds(address,uint256,address)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "updateDummy(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approve" - | "approve(address,address,uint256)" - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "deauthorize" - | "deauthorize(address)" - | "dummy" - | "dummy()" - | "genericCall" - | "genericCall(address,bytes)" - | "isAuthorized" - | "isAuthorized(address)" - | "owner" - | "owner()" - | "sendFunds" - | "sendFunds(address,uint256,address)" - | "setOwner" - | "setOwner(address)" - | "updateDummy" - | "updateDummy(uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approve", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "approve(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "dummy", values?: undefined): string; - encodeFunctionData(functionFragment: "dummy()", values?: undefined): string; - encodeFunctionData( - functionFragment: "genericCall", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "genericCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "sendFunds", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "sendFunds(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateDummy", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateDummy(uint256)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "approve(address,address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "dummy", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "dummy()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "genericCall", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "genericCall(address,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sendFunds", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "sendFunds(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateDummy", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateDummy(uint256)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface TestTreasury extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestTreasuryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummy(overrides?: CallOverrides): Promise<[BigNumber]>; - - "dummy()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummy(overrides?: CallOverrides): Promise; - - "dummy()"(overrides?: CallOverrides): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - dummy(overrides?: CallOverrides): Promise; - - "dummy()"(overrides?: CallOverrides): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - updateDummy( - _newDummy: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "updateDummy(uint256)"( - _newDummy: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummy(overrides?: CallOverrides): Promise; - - "dummy()"(overrides?: CallOverrides): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - approve( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "approve(address,address,uint256)"( - _token: PromiseOrValue, - _spender: PromiseOrValue, - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - dummy(overrides?: CallOverrides): Promise; - - "dummy()"(overrides?: CallOverrides): Promise; - - genericCall( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "genericCall(address,bytes)"( - _target: PromiseOrValue, - _callData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - sendFunds( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "sendFunds(address,uint256,address)"( - _token: PromiseOrValue, - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - updateDummy( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateDummy(uint256)"( - _newDummy: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/TestVestingVault.ts b/packages/council-typechain/src/contracts/mocks/TestVestingVault.ts deleted file mode 100644 index e495f19c..00000000 --- a/packages/council-typechain/src/contracts/mocks/TestVestingVault.ts +++ /dev/null @@ -1,1442 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace VestingVaultStorage { - export type GrantStruct = { - allocation: PromiseOrValue; - withdrawn: PromiseOrValue; - created: PromiseOrValue; - expiration: PromiseOrValue; - cliff: PromiseOrValue; - latestVotingPower: PromiseOrValue; - delegatee: PromiseOrValue; - range: [PromiseOrValue, PromiseOrValue]; - }; - - export type GrantStructOutput = [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - string, - [BigNumber, BigNumber], - ] & { - allocation: BigNumber; - withdrawn: BigNumber; - created: BigNumber; - expiration: BigNumber; - cliff: BigNumber; - latestVotingPower: BigNumber; - delegatee: string; - range: [BigNumber, BigNumber]; - }; -} - -export interface TestVestingVaultInterface extends utils.Interface { - functions: { - "acceptGrant()": FunctionFragment; - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)": FunctionFragment; - "changeUnvestedMultiplier(uint256)": FunctionFragment; - "claim()": FunctionFragment; - "delegate(address)": FunctionFragment; - "deposit(uint256)": FunctionFragment; - "getGrant(address)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "manager()": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "removeGrant(address)": FunctionFragment; - "setManager(address)": FunctionFragment; - "setTimelock(address)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "timelock()": FunctionFragment; - "token()": FunctionFragment; - "unassigned()": FunctionFragment; - "unvestedMultiplier()": FunctionFragment; - "updateVotingPower(address)": FunctionFragment; - "withdraw(uint256,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "acceptGrant" - | "acceptGrant()" - | "addGrantAndDelegate" - | "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)" - | "changeUnvestedMultiplier" - | "changeUnvestedMultiplier(uint256)" - | "claim" - | "claim()" - | "delegate" - | "delegate(address)" - | "deposit" - | "deposit(uint256)" - | "getGrant" - | "getGrant(address)" - | "initialize" - | "initialize(address,address)" - | "manager" - | "manager()" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "removeGrant" - | "removeGrant(address)" - | "setManager" - | "setManager(address)" - | "setTimelock" - | "setTimelock(address)" - | "staleBlockLag" - | "staleBlockLag()" - | "timelock" - | "timelock()" - | "token" - | "token()" - | "unassigned" - | "unassigned()" - | "unvestedMultiplier" - | "unvestedMultiplier()" - | "updateVotingPower" - | "updateVotingPower(address)" - | "withdraw" - | "withdraw(uint256,address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "acceptGrant", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "acceptGrant()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "claim", values?: undefined): string; - encodeFunctionData(functionFragment: "claim()", values?: undefined): string; - encodeFunctionData( - functionFragment: "delegate", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "delegate(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "manager", values?: undefined): string; - encodeFunctionData(functionFragment: "manager()", values?: undefined): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "timelock", values?: undefined): string; - encodeFunctionData( - functionFragment: "timelock()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "unassigned", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "unassigned()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "acceptGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "acceptGrant()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "claim()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "delegate", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "delegate(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "getGrant", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "initialize(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "manager", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "manager()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setManager", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setManager(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "timelock()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "unassigned", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "unassigned()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256,address)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - to: string; - from: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface TestVestingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestVestingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise<[string]>; - - "manager()"(overrides?: CallOverrides): Promise<[string]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - timelock(overrides?: CallOverrides): Promise<[string]>; - - "timelock()"(overrides?: CallOverrides): Promise<[string]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - unassigned(overrides?: CallOverrides): Promise<[BigNumber]>; - - "unassigned()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - unvestedMultiplier(overrides?: CallOverrides): Promise<[BigNumber]>; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unassigned(overrides?: CallOverrides): Promise; - - "unassigned()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - acceptGrant(overrides?: CallOverrides): Promise; - - "acceptGrant()"(overrides?: CallOverrides): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unassigned(overrides?: CallOverrides): Promise; - - "unassigned()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unassigned(overrides?: CallOverrides): Promise; - - "unassigned()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unassigned(overrides?: CallOverrides): Promise; - - "unassigned()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier( - overrides?: CallOverrides, - ): Promise; - - "unvestedMultiplier()"( - overrides?: CallOverrides, - ): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/mocks/index.ts b/packages/council-typechain/src/contracts/mocks/index.ts deleted file mode 100644 index 176096cc..00000000 --- a/packages/council-typechain/src/contracts/mocks/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as storageReadSol from "./StorageRead.sol"; -export type { storageReadSol }; -export type { MockCoreVoting } from "./MockCoreVoting"; -export type { MockDoubleSpender } from "./MockDoubleSpender"; -export type { MockERC20 } from "./MockERC20"; -export type { MockHistoryTracker } from "./MockHistoryTracker"; -export type { MockLockingVault } from "./MockLockingVault"; -export type { MockTokenLogic } from "./MockTokenLogic"; -export type { MockVotingVault } from "./MockVotingVault"; -export type { Reverter } from "./Reverter"; -export type { TestCoreVoting } from "./TestCoreVoting"; -export type { TestTreasury } from "./TestTreasury"; -export type { TestVestingVault } from "./TestVestingVault"; diff --git a/packages/council-typechain/src/contracts/simpleProxy.sol/SimpleProxy.ts b/packages/council-typechain/src/contracts/simpleProxy.sol/SimpleProxy.ts deleted file mode 100644 index dc32179e..00000000 --- a/packages/council-typechain/src/contracts/simpleProxy.sol/SimpleProxy.ts +++ /dev/null @@ -1,295 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface SimpleProxyInterface extends utils.Interface { - functions: { - "proxyGovernance()": FunctionFragment; - "proxyImplementation()": FunctionFragment; - "resetProxyOwner(address)": FunctionFragment; - "upgradeProxy(address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "proxyGovernance" - | "proxyGovernance()" - | "proxyImplementation" - | "proxyImplementation()" - | "resetProxyOwner" - | "resetProxyOwner(address)" - | "upgradeProxy" - | "upgradeProxy(address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "proxyGovernance", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proxyGovernance()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proxyImplementation", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proxyImplementation()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "resetProxyOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "resetProxyOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "upgradeProxy", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "upgradeProxy(address)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "proxyGovernance", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proxyGovernance()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proxyImplementation", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proxyImplementation()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "resetProxyOwner", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "resetProxyOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "upgradeProxy", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "upgradeProxy(address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface SimpleProxy extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SimpleProxyInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - proxyGovernance(overrides?: CallOverrides): Promise<[string]>; - - "proxyGovernance()"(overrides?: CallOverrides): Promise<[string]>; - - proxyImplementation(overrides?: CallOverrides): Promise<[string]>; - - "proxyImplementation()"(overrides?: CallOverrides): Promise<[string]>; - - resetProxyOwner( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "resetProxyOwner(address)"( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - upgradeProxy( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "upgradeProxy(address)"( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - proxyGovernance(overrides?: CallOverrides): Promise; - - "proxyGovernance()"(overrides?: CallOverrides): Promise; - - proxyImplementation(overrides?: CallOverrides): Promise; - - "proxyImplementation()"(overrides?: CallOverrides): Promise; - - resetProxyOwner( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "resetProxyOwner(address)"( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - upgradeProxy( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "upgradeProxy(address)"( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - proxyGovernance(overrides?: CallOverrides): Promise; - - "proxyGovernance()"(overrides?: CallOverrides): Promise; - - proxyImplementation(overrides?: CallOverrides): Promise; - - "proxyImplementation()"(overrides?: CallOverrides): Promise; - - resetProxyOwner( - _newGovernance: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "resetProxyOwner(address)"( - _newGovernance: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - upgradeProxy( - _newImplementation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "upgradeProxy(address)"( - _newImplementation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - proxyGovernance(overrides?: CallOverrides): Promise; - - "proxyGovernance()"(overrides?: CallOverrides): Promise; - - proxyImplementation(overrides?: CallOverrides): Promise; - - "proxyImplementation()"(overrides?: CallOverrides): Promise; - - resetProxyOwner( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "resetProxyOwner(address)"( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - upgradeProxy( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "upgradeProxy(address)"( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - proxyGovernance(overrides?: CallOverrides): Promise; - - "proxyGovernance()"( - overrides?: CallOverrides, - ): Promise; - - proxyImplementation( - overrides?: CallOverrides, - ): Promise; - - "proxyImplementation()"( - overrides?: CallOverrides, - ): Promise; - - resetProxyOwner( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "resetProxyOwner(address)"( - _newGovernance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - upgradeProxy( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "upgradeProxy(address)"( - _newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/simpleProxy.sol/index.ts b/packages/council-typechain/src/contracts/simpleProxy.sol/index.ts deleted file mode 100644 index 01accddb..00000000 --- a/packages/council-typechain/src/contracts/simpleProxy.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { SimpleProxy } from "./SimpleProxy"; diff --git a/packages/council-typechain/src/contracts/vaults/FrozenLockingVault.ts b/packages/council-typechain/src/contracts/vaults/FrozenLockingVault.ts deleted file mode 100644 index 4e246a40..00000000 --- a/packages/council-typechain/src/contracts/vaults/FrozenLockingVault.ts +++ /dev/null @@ -1,645 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface FrozenLockingVaultInterface extends utils.Interface { - functions: { - "changeDelegation(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "deposits(address)": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "token()": FunctionFragment; - "withdraw(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "changeDelegation" - | "changeDelegation(address)" - | "deposit" - | "deposit(address,uint256,address)" - | "deposits" - | "deposits(address)" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "staleBlockLag" - | "staleBlockLag()" - | "token" - | "token()" - | "withdraw" - | "withdraw(uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "changeDelegation", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeDelegation(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposits", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposits(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "changeDelegation", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeDelegation(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposits(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - from: string; - to: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface FrozenLockingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: FrozenLockingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[void]>; - - "withdraw(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[void]>; - }; - - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/FrozenVestingVault.ts b/packages/council-typechain/src/contracts/vaults/FrozenVestingVault.ts deleted file mode 100644 index 5d5e4eed..00000000 --- a/packages/council-typechain/src/contracts/vaults/FrozenVestingVault.ts +++ /dev/null @@ -1,1390 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace VestingVaultStorage { - export type GrantStruct = { - allocation: PromiseOrValue; - withdrawn: PromiseOrValue; - created: PromiseOrValue; - expiration: PromiseOrValue; - cliff: PromiseOrValue; - latestVotingPower: PromiseOrValue; - delegatee: PromiseOrValue; - range: [PromiseOrValue, PromiseOrValue]; - }; - - export type GrantStructOutput = [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - string, - [BigNumber, BigNumber], - ] & { - allocation: BigNumber; - withdrawn: BigNumber; - created: BigNumber; - expiration: BigNumber; - cliff: BigNumber; - latestVotingPower: BigNumber; - delegatee: string; - range: [BigNumber, BigNumber]; - }; -} - -export interface FrozenVestingVaultInterface extends utils.Interface { - functions: { - "acceptGrant()": FunctionFragment; - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)": FunctionFragment; - "changeUnvestedMultiplier(uint256)": FunctionFragment; - "claim()": FunctionFragment; - "delegate(address)": FunctionFragment; - "deposit(uint256)": FunctionFragment; - "getGrant(address)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "manager()": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "removeGrant(address)": FunctionFragment; - "setManager(address)": FunctionFragment; - "setTimelock(address)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "timelock()": FunctionFragment; - "token()": FunctionFragment; - "unvestedMultiplier()": FunctionFragment; - "updateVotingPower(address)": FunctionFragment; - "withdraw(uint256,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "acceptGrant" - | "acceptGrant()" - | "addGrantAndDelegate" - | "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)" - | "changeUnvestedMultiplier" - | "changeUnvestedMultiplier(uint256)" - | "claim" - | "claim()" - | "delegate" - | "delegate(address)" - | "deposit" - | "deposit(uint256)" - | "getGrant" - | "getGrant(address)" - | "initialize" - | "initialize(address,address)" - | "manager" - | "manager()" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "removeGrant" - | "removeGrant(address)" - | "setManager" - | "setManager(address)" - | "setTimelock" - | "setTimelock(address)" - | "staleBlockLag" - | "staleBlockLag()" - | "timelock" - | "timelock()" - | "token" - | "token()" - | "unvestedMultiplier" - | "unvestedMultiplier()" - | "updateVotingPower" - | "updateVotingPower(address)" - | "withdraw" - | "withdraw(uint256,address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "acceptGrant", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "acceptGrant()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "claim", values?: undefined): string; - encodeFunctionData(functionFragment: "claim()", values?: undefined): string; - encodeFunctionData( - functionFragment: "delegate", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "delegate(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "manager", values?: undefined): string; - encodeFunctionData(functionFragment: "manager()", values?: undefined): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "timelock", values?: undefined): string; - encodeFunctionData( - functionFragment: "timelock()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "acceptGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "acceptGrant()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "claim()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "delegate", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "delegate(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "getGrant", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "initialize(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "manager", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "manager()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setManager", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setManager(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "timelock()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256,address)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - to: string; - from: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface FrozenVestingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: FrozenVestingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim(overrides?: CallOverrides): Promise<[void]>; - - "claim()"(overrides?: CallOverrides): Promise<[void]>; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise<[string]>; - - "manager()"(overrides?: CallOverrides): Promise<[string]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - removeGrant( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[void]>; - - "removeGrant(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[void]>; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - timelock(overrides?: CallOverrides): Promise<[string]>; - - "timelock()"(overrides?: CallOverrides): Promise<[string]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - unvestedMultiplier(overrides?: CallOverrides): Promise<[BigNumber]>; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[void]>; - - "withdraw(uint256,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[void]>; - }; - - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - callStatic: { - acceptGrant(overrides?: CallOverrides): Promise; - - "acceptGrant()"(overrides?: CallOverrides): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - withdraw( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - populateTransaction: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier( - overrides?: CallOverrides, - ): Promise; - - "unvestedMultiplier()"( - overrides?: CallOverrides, - ): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/GSCVault.ts b/packages/council-typechain/src/contracts/vaults/GSCVault.ts deleted file mode 100644 index 52188bd2..00000000 --- a/packages/council-typechain/src/contracts/vaults/GSCVault.ts +++ /dev/null @@ -1,1196 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface GSCVaultInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "coreVoting()": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "getUserVaults(address)": FunctionFragment; - "idleDuration()": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "kick(address,bytes[])": FunctionFragment; - "members(address)": FunctionFragment; - "owner()": FunctionFragment; - "proveMembership(address[],bytes[])": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "setCoreVoting(address)": FunctionFragment; - "setIdleDuration(uint256)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "setVotePowerBound(uint256)": FunctionFragment; - "votingPowerBound()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "coreVoting" - | "coreVoting()" - | "deauthorize" - | "deauthorize(address)" - | "getUserVaults" - | "getUserVaults(address)" - | "idleDuration" - | "idleDuration()" - | "isAuthorized" - | "isAuthorized(address)" - | "kick" - | "kick(address,bytes[])" - | "members" - | "members(address)" - | "owner" - | "owner()" - | "proveMembership" - | "proveMembership(address[],bytes[])" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "setCoreVoting" - | "setCoreVoting(address)" - | "setIdleDuration" - | "setIdleDuration(uint256)" - | "setOwner" - | "setOwner(address)" - | "setVotePowerBound" - | "setVotePowerBound(uint256)" - | "votingPowerBound" - | "votingPowerBound()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "coreVoting", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "coreVoting()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getUserVaults", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getUserVaults(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "idleDuration", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "idleDuration()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "kick", - values: [PromiseOrValue, PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "kick(address,bytes[])", - values: [PromiseOrValue, PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "members", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "members(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "proveMembership", - values: [PromiseOrValue[], PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "proveMembership(address[],bytes[])", - values: [PromiseOrValue[], PromiseOrValue[]], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "setCoreVoting", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setCoreVoting(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setIdleDuration", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setIdleDuration(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setVotePowerBound", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setVotePowerBound(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "votingPowerBound", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "votingPowerBound()", - values?: undefined, - ): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "coreVoting", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "coreVoting()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getUserVaults", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "getUserVaults(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "idleDuration", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "idleDuration()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "kick", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "kick(address,bytes[])", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "members", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "members(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proveMembership", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proveMembership(address[],bytes[])", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setCoreVoting", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setCoreVoting(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setIdleDuration", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setIdleDuration(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setVotePowerBound", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setVotePowerBound(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "votingPowerBound", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "votingPowerBound()", - data: BytesLike, - ): Result; - - events: { - "Kicked(address,uint256)": EventFragment; - "MembershipProved(address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Kicked"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Kicked(address,uint256)"): EventFragment; - getEvent(nameOrSignatureOrTopic: "MembershipProved"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "MembershipProved(address,uint256)", - ): EventFragment; -} - -export interface KickedEventObject { - who: string; - when: BigNumber; -} -export type KickedEvent = TypedEvent<[string, BigNumber], KickedEventObject>; - -export type KickedEventFilter = TypedEventFilter; - -export interface MembershipProvedEventObject { - who: string; - when: BigNumber; -} -export type MembershipProvedEvent = TypedEvent< - [string, BigNumber], - MembershipProvedEventObject ->; - -export type MembershipProvedEventFilter = - TypedEventFilter; - -export interface GSCVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GSCVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - coreVoting(overrides?: CallOverrides): Promise<[string]>; - - "coreVoting()"(overrides?: CallOverrides): Promise<[string]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getUserVaults( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string[]]>; - - "getUserVaults(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string[]]>; - - idleDuration(overrides?: CallOverrides): Promise<[BigNumber]>; - - "idleDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - kick( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "kick(address,bytes[])"( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - members( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber] & { joined: BigNumber }>; - - "members(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber] & { joined: BigNumber }>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - proveMembership( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proveMembership(address[],bytes[])"( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePower( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePower(address,uint256,bytes)"( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - setCoreVoting( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCoreVoting(address)"( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setIdleDuration( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setIdleDuration(uint256)"( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setVotePowerBound( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotePowerBound(uint256)"( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPowerBound(overrides?: CallOverrides): Promise<[BigNumber]>; - - "votingPowerBound()"(overrides?: CallOverrides): Promise<[BigNumber]>; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - coreVoting(overrides?: CallOverrides): Promise; - - "coreVoting()"(overrides?: CallOverrides): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getUserVaults( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getUserVaults(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - idleDuration(overrides?: CallOverrides): Promise; - - "idleDuration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - kick( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "kick(address,bytes[])"( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - members( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "members(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proveMembership( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proveMembership(address[],bytes[])"( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePower( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCoreVoting( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCoreVoting(address)"( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setIdleDuration( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setIdleDuration(uint256)"( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setVotePowerBound( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotePowerBound(uint256)"( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPowerBound(overrides?: CallOverrides): Promise; - - "votingPowerBound()"(overrides?: CallOverrides): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - coreVoting(overrides?: CallOverrides): Promise; - - "coreVoting()"(overrides?: CallOverrides): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getUserVaults( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getUserVaults(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - idleDuration(overrides?: CallOverrides): Promise; - - "idleDuration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - kick( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "kick(address,bytes[])"( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - members( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "members(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proveMembership( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - "proveMembership(address[],bytes[])"( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCoreVoting( - _newVoting: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setCoreVoting(address)"( - _newVoting: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setIdleDuration( - _idleDuration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setIdleDuration(uint256)"( - _idleDuration: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setVotePowerBound( - _newBound: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setVotePowerBound(uint256)"( - _newBound: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - votingPowerBound(overrides?: CallOverrides): Promise; - - "votingPowerBound()"(overrides?: CallOverrides): Promise; - }; - - filters: { - "Kicked(address,uint256)"( - who?: PromiseOrValue | null, - when?: null, - ): KickedEventFilter; - Kicked(who?: PromiseOrValue | null, when?: null): KickedEventFilter; - - "MembershipProved(address,uint256)"( - who?: PromiseOrValue | null, - when?: null, - ): MembershipProvedEventFilter; - MembershipProved( - who?: PromiseOrValue | null, - when?: null, - ): MembershipProvedEventFilter; - }; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - coreVoting(overrides?: CallOverrides): Promise; - - "coreVoting()"(overrides?: CallOverrides): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getUserVaults( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getUserVaults(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - idleDuration(overrides?: CallOverrides): Promise; - - "idleDuration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - kick( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "kick(address,bytes[])"( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - members( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "members(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proveMembership( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proveMembership(address[],bytes[])"( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePower( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCoreVoting( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCoreVoting(address)"( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setIdleDuration( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setIdleDuration(uint256)"( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setVotePowerBound( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotePowerBound(uint256)"( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPowerBound(overrides?: CallOverrides): Promise; - - "votingPowerBound()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - coreVoting(overrides?: CallOverrides): Promise; - - "coreVoting()"(overrides?: CallOverrides): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getUserVaults( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getUserVaults(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - idleDuration(overrides?: CallOverrides): Promise; - - "idleDuration()"(overrides?: CallOverrides): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - kick( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "kick(address,bytes[])"( - who: PromiseOrValue, - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - members( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "members(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - proveMembership( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proveMembership(address[],bytes[])"( - votingVaults: PromiseOrValue[], - extraData: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePower( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - who: PromiseOrValue, - arg1: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setCoreVoting( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setCoreVoting(address)"( - _newVoting: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setIdleDuration( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setIdleDuration(uint256)"( - _idleDuration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setVotePowerBound( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setVotePowerBound(uint256)"( - _newBound: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - votingPowerBound(overrides?: CallOverrides): Promise; - - "votingPowerBound()"( - overrides?: CallOverrides, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/LockingVault.sol/AbstractLockingVault.ts b/packages/council-typechain/src/contracts/vaults/LockingVault.sol/AbstractLockingVault.ts deleted file mode 100644 index 45abd0a6..00000000 --- a/packages/council-typechain/src/contracts/vaults/LockingVault.sol/AbstractLockingVault.ts +++ /dev/null @@ -1,645 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface AbstractLockingVaultInterface extends utils.Interface { - functions: { - "changeDelegation(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "deposits(address)": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "token()": FunctionFragment; - "withdraw(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "changeDelegation" - | "changeDelegation(address)" - | "deposit" - | "deposit(address,uint256,address)" - | "deposits" - | "deposits(address)" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "staleBlockLag" - | "staleBlockLag()" - | "token" - | "token()" - | "withdraw" - | "withdraw(uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "changeDelegation", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeDelegation(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposits", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposits(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "changeDelegation", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeDelegation(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposits(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - from: string; - to: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface AbstractLockingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: AbstractLockingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/LockingVault.sol/LockingVault.ts b/packages/council-typechain/src/contracts/vaults/LockingVault.sol/LockingVault.ts deleted file mode 100644 index b9760993..00000000 --- a/packages/council-typechain/src/contracts/vaults/LockingVault.sol/LockingVault.ts +++ /dev/null @@ -1,645 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface LockingVaultInterface extends utils.Interface { - functions: { - "changeDelegation(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "deposits(address)": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "token()": FunctionFragment; - "withdraw(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "changeDelegation" - | "changeDelegation(address)" - | "deposit" - | "deposit(address,uint256,address)" - | "deposits" - | "deposits(address)" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "staleBlockLag" - | "staleBlockLag()" - | "token" - | "token()" - | "withdraw" - | "withdraw(uint256)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "changeDelegation", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeDelegation(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "deposits", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposits(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256)", - values: [PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "changeDelegation", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeDelegation(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposits(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - from: string; - to: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface LockingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: LockingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[string, BigNumber]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - changeDelegation( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeDelegation(address)"( - newDelegate: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(address,uint256,address)"( - fundedAccount: PromiseOrValue, - amount: PromiseOrValue, - firstDelegation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposits( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposits(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/LockingVault.sol/index.ts b/packages/council-typechain/src/contracts/vaults/LockingVault.sol/index.ts deleted file mode 100644 index e0113ee4..00000000 --- a/packages/council-typechain/src/contracts/vaults/LockingVault.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { AbstractLockingVault } from "./AbstractLockingVault"; -export type { LockingVault } from "./LockingVault"; diff --git a/packages/council-typechain/src/contracts/vaults/NonvotingVault.sol/NonVotingVault.ts b/packages/council-typechain/src/contracts/vaults/NonvotingVault.sol/NonVotingVault.ts deleted file mode 100644 index 2d265f67..00000000 --- a/packages/council-typechain/src/contracts/vaults/NonvotingVault.sol/NonVotingVault.ts +++ /dev/null @@ -1,579 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface NonVotingVaultInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "lockingVault()": FunctionFragment; - "owner()": FunctionFragment; - "setOwner(address)": FunctionFragment; - "token()": FunctionFragment; - "withdraw(uint256,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "deauthorize" - | "deauthorize(address)" - | "isAuthorized" - | "isAuthorized(address)" - | "lockingVault" - | "lockingVault()" - | "owner" - | "owner()" - | "setOwner" - | "setOwner(address)" - | "token" - | "token()" - | "withdraw" - | "withdraw(uint256,address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockingVault", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockingVault()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256,address)", - data: BytesLike, - ): Result; - - events: {}; -} - -export interface NonVotingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: NonVotingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - lockingVault(overrides?: CallOverrides): Promise<[string]>; - - "lockingVault()"(overrides?: CallOverrides): Promise<[string]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: {}; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - withdraw( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - amount: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/NonvotingVault.sol/index.ts b/packages/council-typechain/src/contracts/vaults/NonvotingVault.sol/index.ts deleted file mode 100644 index 36b84603..00000000 --- a/packages/council-typechain/src/contracts/vaults/NonvotingVault.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { NonVotingVault } from "./NonVotingVault"; diff --git a/packages/council-typechain/src/contracts/vaults/OptimisticRewards.ts b/packages/council-typechain/src/contracts/vaults/OptimisticRewards.ts deleted file mode 100644 index 544c9b11..00000000 --- a/packages/council-typechain/src/contracts/vaults/OptimisticRewards.ts +++ /dev/null @@ -1,1343 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface OptimisticRewardsInterface extends utils.Interface { - functions: { - "authorize(address)": FunctionFragment; - "authorized(address)": FunctionFragment; - "challengePeriod()": FunctionFragment; - "challengeRewards()": FunctionFragment; - "claim(uint256,uint256,bytes32[],address)": FunctionFragment; - "claimAndDelegate(uint256,address,uint256,bytes32[],address)": FunctionFragment; - "claimed(address)": FunctionFragment; - "deauthorize(address)": FunctionFragment; - "isAuthorized(address)": FunctionFragment; - "lockingVault()": FunctionFragment; - "owner()": FunctionFragment; - "pendingRoot()": FunctionFragment; - "proposalTime()": FunctionFragment; - "proposeRewards(bytes32)": FunctionFragment; - "proposer()": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "rewardsRoot()": FunctionFragment; - "setChallengePeriod(uint256)": FunctionFragment; - "setOwner(address)": FunctionFragment; - "setProposer(address)": FunctionFragment; - "token()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "authorize" - | "authorize(address)" - | "authorized" - | "authorized(address)" - | "challengePeriod" - | "challengePeriod()" - | "challengeRewards" - | "challengeRewards()" - | "claim" - | "claim(uint256,uint256,bytes32[],address)" - | "claimAndDelegate" - | "claimAndDelegate(uint256,address,uint256,bytes32[],address)" - | "claimed" - | "claimed(address)" - | "deauthorize" - | "deauthorize(address)" - | "isAuthorized" - | "isAuthorized(address)" - | "lockingVault" - | "lockingVault()" - | "owner" - | "owner()" - | "pendingRoot" - | "pendingRoot()" - | "proposalTime" - | "proposalTime()" - | "proposeRewards" - | "proposeRewards(bytes32)" - | "proposer" - | "proposer()" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "rewardsRoot" - | "rewardsRoot()" - | "setChallengePeriod" - | "setChallengePeriod(uint256)" - | "setOwner" - | "setOwner(address)" - | "setProposer" - | "setProposer(address)" - | "token" - | "token()", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "authorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "authorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "challengePeriod", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "challengePeriod()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "challengeRewards", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "challengeRewards()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "claim", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[], - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "claimed", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "claimed(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deauthorize(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "isAuthorized(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "lockingVault", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "lockingVault()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData(functionFragment: "owner()", values?: undefined): string; - encodeFunctionData( - functionFragment: "pendingRoot", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "pendingRoot()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposalTime", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposalTime()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "proposeRewards", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "proposeRewards(bytes32)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "proposer", values?: undefined): string; - encodeFunctionData( - functionFragment: "proposer()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "rewardsRoot()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "setChallengePeriod", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setChallengePeriod(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setOwner(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setProposer", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setProposer(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - - decodeFunctionResult(functionFragment: "authorize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "authorized", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "authorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "challengePeriod", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "challengePeriod()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "challengeRewards", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "challengeRewards()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claim(uint256,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "claimAndDelegate(uint256,address,uint256,bytes32[],address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claimed", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "claimed(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "deauthorize(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "isAuthorized(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "lockingVault()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "pendingRoot", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "pendingRoot()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposalTime", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposalTime()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposeRewards", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "proposeRewards(bytes32)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "proposer", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "proposer()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "rewardsRoot()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setChallengePeriod", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setChallengePeriod(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setOwner(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setProposer", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setProposer(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - - events: {}; -} - -export interface OptimisticRewards extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: OptimisticRewardsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - challengePeriod(overrides?: CallOverrides): Promise<[BigNumber]>; - - "challengePeriod()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - challengeRewards( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "challengeRewards()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[boolean]>; - - lockingVault(overrides?: CallOverrides): Promise<[string]>; - - "lockingVault()"(overrides?: CallOverrides): Promise<[string]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - "owner()"(overrides?: CallOverrides): Promise<[string]>; - - pendingRoot(overrides?: CallOverrides): Promise<[string]>; - - "pendingRoot()"(overrides?: CallOverrides): Promise<[string]>; - - proposalTime(overrides?: CallOverrides): Promise<[BigNumber]>; - - "proposalTime()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - proposeRewards( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposeRewards(bytes32)"( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposer(overrides?: CallOverrides): Promise<[string]>; - - "proposer()"(overrides?: CallOverrides): Promise<[string]>; - - queryVotePower( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - rewardsRoot(overrides?: CallOverrides): Promise<[string]>; - - "rewardsRoot()"(overrides?: CallOverrides): Promise<[string]>; - - setChallengePeriod( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setChallengePeriod(uint256)"( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setProposer( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setProposer(address)"( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - }; - - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - challengePeriod(overrides?: CallOverrides): Promise; - - "challengePeriod()"(overrides?: CallOverrides): Promise; - - challengeRewards( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "challengeRewards()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - pendingRoot(overrides?: CallOverrides): Promise; - - "pendingRoot()"(overrides?: CallOverrides): Promise; - - proposalTime(overrides?: CallOverrides): Promise; - - "proposalTime()"(overrides?: CallOverrides): Promise; - - proposeRewards( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposeRewards(bytes32)"( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposer(overrides?: CallOverrides): Promise; - - "proposer()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setChallengePeriod( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setChallengePeriod(uint256)"( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setProposer( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setProposer(address)"( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - callStatic: { - authorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - challengePeriod(overrides?: CallOverrides): Promise; - - "challengePeriod()"(overrides?: CallOverrides): Promise; - - challengeRewards(overrides?: CallOverrides): Promise; - - "challengeRewards()"(overrides?: CallOverrides): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - pendingRoot(overrides?: CallOverrides): Promise; - - "pendingRoot()"(overrides?: CallOverrides): Promise; - - proposalTime(overrides?: CallOverrides): Promise; - - "proposalTime()"(overrides?: CallOverrides): Promise; - - proposeRewards( - newRoot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "proposeRewards(bytes32)"( - newRoot: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - proposer(overrides?: CallOverrides): Promise; - - "proposer()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setChallengePeriod( - _challengePeriod: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setChallengePeriod(uint256)"( - _challengePeriod: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setProposer( - _proposer: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setProposer(address)"( - _proposer: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - challengePeriod(overrides?: CallOverrides): Promise; - - "challengePeriod()"(overrides?: CallOverrides): Promise; - - challengeRewards( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "challengeRewards()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - pendingRoot(overrides?: CallOverrides): Promise; - - "pendingRoot()"(overrides?: CallOverrides): Promise; - - proposalTime(overrides?: CallOverrides): Promise; - - "proposalTime()"(overrides?: CallOverrides): Promise; - - proposeRewards( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposeRewards(bytes32)"( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposer(overrides?: CallOverrides): Promise; - - "proposer()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setChallengePeriod( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setChallengePeriod(uint256)"( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setProposer( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setProposer(address)"( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - authorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "authorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - authorized( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "authorized(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - challengePeriod(overrides?: CallOverrides): Promise; - - "challengePeriod()"( - overrides?: CallOverrides, - ): Promise; - - challengeRewards( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "challengeRewards()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim(uint256,uint256,bytes32[],address)"( - amount: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimAndDelegate( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claimAndDelegate(uint256,address,uint256,bytes32[],address)"( - amount: PromiseOrValue, - delegate: PromiseOrValue, - totalGrant: PromiseOrValue, - merkleProof: PromiseOrValue[], - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claimed( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "claimed(address)"( - arg0: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deauthorize( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deauthorize(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - isAuthorized( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "isAuthorized(address)"( - who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - lockingVault(overrides?: CallOverrides): Promise; - - "lockingVault()"(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - "owner()"(overrides?: CallOverrides): Promise; - - pendingRoot(overrides?: CallOverrides): Promise; - - "pendingRoot()"(overrides?: CallOverrides): Promise; - - proposalTime(overrides?: CallOverrides): Promise; - - "proposalTime()"(overrides?: CallOverrides): Promise; - - proposeRewards( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "proposeRewards(bytes32)"( - newRoot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - proposer(overrides?: CallOverrides): Promise; - - "proposer()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - arg1: PromiseOrValue, - extraData: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - rewardsRoot(overrides?: CallOverrides): Promise; - - "rewardsRoot()"(overrides?: CallOverrides): Promise; - - setChallengePeriod( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setChallengePeriod(uint256)"( - _challengePeriod: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setOwner( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setOwner(address)"( - who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setProposer( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setProposer(address)"( - _proposer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/VestingVault.sol/AbstractVestingVault.ts b/packages/council-typechain/src/contracts/vaults/VestingVault.sol/AbstractVestingVault.ts deleted file mode 100644 index f3003284..00000000 --- a/packages/council-typechain/src/contracts/vaults/VestingVault.sol/AbstractVestingVault.ts +++ /dev/null @@ -1,1406 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export declare namespace VestingVaultStorage { - export type GrantStruct = { - allocation: PromiseOrValue; - withdrawn: PromiseOrValue; - created: PromiseOrValue; - expiration: PromiseOrValue; - cliff: PromiseOrValue; - latestVotingPower: PromiseOrValue; - delegatee: PromiseOrValue; - range: [PromiseOrValue, PromiseOrValue]; - }; - - export type GrantStructOutput = [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - string, - [BigNumber, BigNumber], - ] & { - allocation: BigNumber; - withdrawn: BigNumber; - created: BigNumber; - expiration: BigNumber; - cliff: BigNumber; - latestVotingPower: BigNumber; - delegatee: string; - range: [BigNumber, BigNumber]; - }; -} - -export interface AbstractVestingVaultInterface extends utils.Interface { - functions: { - "acceptGrant()": FunctionFragment; - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)": FunctionFragment; - "changeUnvestedMultiplier(uint256)": FunctionFragment; - "claim()": FunctionFragment; - "delegate(address)": FunctionFragment; - "deposit(uint256)": FunctionFragment; - "getGrant(address)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "manager()": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "removeGrant(address)": FunctionFragment; - "setManager(address)": FunctionFragment; - "setTimelock(address)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "timelock()": FunctionFragment; - "token()": FunctionFragment; - "unvestedMultiplier()": FunctionFragment; - "updateVotingPower(address)": FunctionFragment; - "withdraw(uint256,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "acceptGrant" - | "acceptGrant()" - | "addGrantAndDelegate" - | "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)" - | "changeUnvestedMultiplier" - | "changeUnvestedMultiplier(uint256)" - | "claim" - | "claim()" - | "delegate" - | "delegate(address)" - | "deposit" - | "deposit(uint256)" - | "getGrant" - | "getGrant(address)" - | "initialize" - | "initialize(address,address)" - | "manager" - | "manager()" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "removeGrant" - | "removeGrant(address)" - | "setManager" - | "setManager(address)" - | "setTimelock" - | "setTimelock(address)" - | "staleBlockLag" - | "staleBlockLag()" - | "timelock" - | "timelock()" - | "token" - | "token()" - | "unvestedMultiplier" - | "unvestedMultiplier()" - | "updateVotingPower" - | "updateVotingPower(address)" - | "withdraw" - | "withdraw(uint256,address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "acceptGrant", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "acceptGrant()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "claim", values?: undefined): string; - encodeFunctionData(functionFragment: "claim()", values?: undefined): string; - encodeFunctionData( - functionFragment: "delegate", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "delegate(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "manager", values?: undefined): string; - encodeFunctionData(functionFragment: "manager()", values?: undefined): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "timelock", values?: undefined): string; - encodeFunctionData( - functionFragment: "timelock()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "acceptGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "acceptGrant()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "claim()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "delegate", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "delegate(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "getGrant", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "initialize(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "manager", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "manager()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setManager", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setManager(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "timelock()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256,address)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - to: string; - from: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface AbstractVestingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: AbstractVestingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise<[string]>; - - "manager()"(overrides?: CallOverrides): Promise<[string]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - timelock(overrides?: CallOverrides): Promise<[string]>; - - "timelock()"(overrides?: CallOverrides): Promise<[string]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - unvestedMultiplier(overrides?: CallOverrides): Promise<[BigNumber]>; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - acceptGrant(overrides?: CallOverrides): Promise; - - "acceptGrant()"(overrides?: CallOverrides): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier( - overrides?: CallOverrides, - ): Promise; - - "unvestedMultiplier()"( - overrides?: CallOverrides, - ): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/VestingVault.sol/VestingVault.ts b/packages/council-typechain/src/contracts/vaults/VestingVault.sol/VestingVault.ts deleted file mode 100644 index 9415674c..00000000 --- a/packages/council-typechain/src/contracts/vaults/VestingVault.sol/VestingVault.ts +++ /dev/null @@ -1,1406 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export declare namespace VestingVaultStorage { - export type GrantStruct = { - allocation: PromiseOrValue; - withdrawn: PromiseOrValue; - created: PromiseOrValue; - expiration: PromiseOrValue; - cliff: PromiseOrValue; - latestVotingPower: PromiseOrValue; - delegatee: PromiseOrValue; - range: [PromiseOrValue, PromiseOrValue]; - }; - - export type GrantStructOutput = [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - string, - [BigNumber, BigNumber], - ] & { - allocation: BigNumber; - withdrawn: BigNumber; - created: BigNumber; - expiration: BigNumber; - cliff: BigNumber; - latestVotingPower: BigNumber; - delegatee: string; - range: [BigNumber, BigNumber]; - }; -} - -export interface VestingVaultInterface extends utils.Interface { - functions: { - "acceptGrant()": FunctionFragment; - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)": FunctionFragment; - "changeUnvestedMultiplier(uint256)": FunctionFragment; - "claim()": FunctionFragment; - "delegate(address)": FunctionFragment; - "deposit(uint256)": FunctionFragment; - "getGrant(address)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "manager()": FunctionFragment; - "queryVotePower(address,uint256,bytes)": FunctionFragment; - "queryVotePowerView(address,uint256)": FunctionFragment; - "removeGrant(address)": FunctionFragment; - "setManager(address)": FunctionFragment; - "setTimelock(address)": FunctionFragment; - "staleBlockLag()": FunctionFragment; - "timelock()": FunctionFragment; - "token()": FunctionFragment; - "unvestedMultiplier()": FunctionFragment; - "updateVotingPower(address)": FunctionFragment; - "withdraw(uint256,address)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "acceptGrant" - | "acceptGrant()" - | "addGrantAndDelegate" - | "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)" - | "changeUnvestedMultiplier" - | "changeUnvestedMultiplier(uint256)" - | "claim" - | "claim()" - | "delegate" - | "delegate(address)" - | "deposit" - | "deposit(uint256)" - | "getGrant" - | "getGrant(address)" - | "initialize" - | "initialize(address,address)" - | "manager" - | "manager()" - | "queryVotePower" - | "queryVotePower(address,uint256,bytes)" - | "queryVotePowerView" - | "queryVotePowerView(address,uint256)" - | "removeGrant" - | "removeGrant(address)" - | "setManager" - | "setManager(address)" - | "setTimelock" - | "setTimelock(address)" - | "staleBlockLag" - | "staleBlockLag()" - | "timelock" - | "timelock()" - | "token" - | "token()" - | "unvestedMultiplier" - | "unvestedMultiplier()" - | "updateVotingPower" - | "updateVotingPower(address)" - | "withdraw" - | "withdraw(uint256,address)", - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "acceptGrant", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "acceptGrant()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "changeUnvestedMultiplier(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "claim", values?: undefined): string; - encodeFunctionData(functionFragment: "claim()", values?: undefined): string; - encodeFunctionData( - functionFragment: "delegate", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "delegate(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "deposit(uint256)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "getGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "initialize(address,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData(functionFragment: "manager", values?: undefined): string; - encodeFunctionData(functionFragment: "manager()", values?: undefined): string; - encodeFunctionData( - functionFragment: "queryVotePower", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePower(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - ], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "queryVotePowerView(address,uint256)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "removeGrant(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setManager(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "setTimelock(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "staleBlockLag()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "timelock", values?: undefined): string; - encodeFunctionData( - functionFragment: "timelock()", - values?: undefined, - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData(functionFragment: "token()", values?: undefined): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "unvestedMultiplier()", - values?: undefined, - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "updateVotingPower(address)", - values: [PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue], - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256,address)", - values: [PromiseOrValue, PromiseOrValue], - ): string; - - decodeFunctionResult( - functionFragment: "acceptGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "acceptGrant()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "changeUnvestedMultiplier(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "claim()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "delegate", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "delegate(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "getGrant", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "initialize(address,address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "manager", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "manager()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "queryVotePower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePower(address,uint256,bytes)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "queryVotePowerView(address,uint256)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "removeGrant(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "setManager", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setManager(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "setTimelock(address)", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "staleBlockLag()", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "timelock()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token()", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "unvestedMultiplier()", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower", - data: BytesLike, - ): Result; - decodeFunctionResult( - functionFragment: "updateVotingPower(address)", - data: BytesLike, - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256,address)", - data: BytesLike, - ): Result; - - events: { - "VoteChange(address,address,int256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "VoteChange"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "VoteChange(address,address,int256)", - ): EventFragment; -} - -export interface VoteChangeEventObject { - to: string; - from: string; - amount: BigNumber; -} -export type VoteChangeEvent = TypedEvent< - [string, string, BigNumber], - VoteChangeEventObject ->; - -export type VoteChangeEventFilter = TypedEventFilter; - -export interface VestingVault extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: VestingVaultInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter, - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter, - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[VestingVaultStorage.GrantStructOutput]>; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise<[string]>; - - "manager()"(overrides?: CallOverrides): Promise<[string]>; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber]>; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise<[BigNumber]>; - - "staleBlockLag()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - timelock(overrides?: CallOverrides): Promise<[string]>; - - "timelock()"(overrides?: CallOverrides): Promise<[string]>; - - token(overrides?: CallOverrides): Promise<[string]>; - - "token()"(overrides?: CallOverrides): Promise<[string]>; - - unvestedMultiplier(overrides?: CallOverrides): Promise<[BigNumber]>; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise<[BigNumber]>; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - callStatic: { - acceptGrant(overrides?: CallOverrides): Promise; - - "acceptGrant()"(overrides?: CallOverrides): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - claim(overrides?: CallOverrides): Promise; - - "claim()"(overrides?: CallOverrides): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - }; - - filters: { - "VoteChange(address,address,int256)"( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - VoteChange( - to?: PromiseOrValue | null, - from?: PromiseOrValue | null, - amount?: null, - ): VoteChangeEventFilter; - }; - - estimateGas: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier(overrides?: CallOverrides): Promise; - - "unvestedMultiplier()"(overrides?: CallOverrides): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; - - populateTransaction: { - acceptGrant( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "acceptGrant()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - addGrantAndDelegate( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "addGrantAndDelegate(address,uint128,uint128,uint128,uint128,address)"( - _who: PromiseOrValue, - _amount: PromiseOrValue, - _startTime: PromiseOrValue, - _expiration: PromiseOrValue, - _cliff: PromiseOrValue, - _delegatee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - changeUnvestedMultiplier( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "changeUnvestedMultiplier(uint256)"( - _multiplier: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - claim( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "claim()"( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - delegate( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "delegate(address)"( - _to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - deposit( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "deposit(uint256)"( - _amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - getGrant( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "getGrant(address)"( - _who: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - initialize( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "initialize(address,address)"( - manager_: PromiseOrValue, - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - manager(overrides?: CallOverrides): Promise; - - "manager()"(overrides?: CallOverrides): Promise; - - queryVotePower( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "queryVotePower(address,uint256,bytes)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - arg2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - queryVotePowerView( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - "queryVotePowerView(address,uint256)"( - user: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides, - ): Promise; - - removeGrant( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "removeGrant(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setManager( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setManager(address)"( - manager_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - setTimelock( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "setTimelock(address)"( - timelock_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - staleBlockLag(overrides?: CallOverrides): Promise; - - "staleBlockLag()"(overrides?: CallOverrides): Promise; - - timelock(overrides?: CallOverrides): Promise; - - "timelock()"(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - "token()"(overrides?: CallOverrides): Promise; - - unvestedMultiplier( - overrides?: CallOverrides, - ): Promise; - - "unvestedMultiplier()"( - overrides?: CallOverrides, - ): Promise; - - updateVotingPower( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "updateVotingPower(address)"( - _who: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - withdraw( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - - "withdraw(uint256,address)"( - _amount: PromiseOrValue, - _recipient: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise; - }; -} diff --git a/packages/council-typechain/src/contracts/vaults/VestingVault.sol/index.ts b/packages/council-typechain/src/contracts/vaults/VestingVault.sol/index.ts deleted file mode 100644 index 8bcd3124..00000000 --- a/packages/council-typechain/src/contracts/vaults/VestingVault.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { AbstractVestingVault } from "./AbstractVestingVault"; -export type { VestingVault } from "./VestingVault"; diff --git a/packages/council-typechain/src/contracts/vaults/index.ts b/packages/council-typechain/src/contracts/vaults/index.ts deleted file mode 100644 index ec61293b..00000000 --- a/packages/council-typechain/src/contracts/vaults/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as lockingVaultSol from "./LockingVault.sol"; -export type { lockingVaultSol }; -import type * as nonvotingVaultSol from "./NonvotingVault.sol"; -export type { nonvotingVaultSol }; -import type * as vestingVaultSol from "./VestingVault.sol"; -export type { vestingVaultSol }; -export type { FrozenLockingVault } from "./FrozenLockingVault"; -export type { FrozenVestingVault } from "./FrozenVestingVault"; -export type { GSCVault } from "./GSCVault"; -export type { OptimisticRewards } from "./OptimisticRewards"; diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/index.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/index.ts deleted file mode 100644 index a9780efc..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as token from "./token"; diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts deleted file mode 100644 index 52ad5a1f..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +++ /dev/null @@ -1,206 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20, - IERC20Interface, -} from "../../../../../@openzeppelin/contracts/token/ERC20/IERC20"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC20__factory { - static readonly abi = _abi; - static createInterface(): IERC20Interface { - return new utils.Interface(_abi) as IERC20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): IERC20 { - return new Contract(address, _abi, signerOrProvider) as IERC20; - } -} diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts deleted file mode 100644 index c3a39ef7..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20Permit, - IERC20PermitInterface, -} from "../../../../../../../@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit"; - -const _abi = [ - { - inputs: [], - name: "DOMAIN_SEPARATOR", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "nonces", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "uint256", - name: "deadline", - type: "uint256", - }, - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - name: "permit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC20Permit__factory { - static readonly abi = _abi; - static createInterface(): IERC20PermitInterface { - return new utils.Interface(_abi) as IERC20PermitInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): IERC20Permit { - return new Contract(address, _abi, signerOrProvider) as IERC20Permit; - } -} diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts deleted file mode 100644 index 5f347d4a..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IERC20Permit__factory } from "./IERC20Permit__factory"; diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts deleted file mode 100644 index 65b92a64..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as draftIerc20PermitSol from "./draft-IERC20Permit.sol"; diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/index.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/index.ts deleted file mode 100644 index 6e86faa7..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/ERC20/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as extensions from "./extensions"; -export { IERC20__factory } from "./IERC20__factory"; diff --git a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/index.ts b/packages/council-typechain/src/factories/@openzeppelin/contracts/token/index.ts deleted file mode 100644 index da1e061e..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/contracts/token/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as erc20 from "./ERC20"; diff --git a/packages/council-typechain/src/factories/@openzeppelin/index.ts b/packages/council-typechain/src/factories/@openzeppelin/index.ts deleted file mode 100644 index 6397da09..00000000 --- a/packages/council-typechain/src/factories/@openzeppelin/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as contracts from "./contracts"; diff --git a/packages/council-typechain/src/factories/contracts/CoreVoting__factory.ts b/packages/council-typechain/src/factories/contracts/CoreVoting__factory.ts deleted file mode 100644 index 4f542579..00000000 --- a/packages/council-typechain/src/factories/contracts/CoreVoting__factory.ts +++ /dev/null @@ -1,697 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; -import type { - CoreVoting, - CoreVotingInterface, -} from "../../contracts/CoreVoting"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_timelock", - type: "address", - }, - { - internalType: "uint256", - name: "_baseQuorum", - type: "uint256", - }, - { - internalType: "uint256", - name: "_minProposalPower", - type: "uint256", - }, - { - internalType: "address", - name: "_gsc", - type: "address", - }, - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "created", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "execution", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "expiration", - type: "uint256", - }, - ], - name: "ProposalCreated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - ], - name: "ProposalExecuted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "voter", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - components: [ - { - internalType: "uint128", - name: "votingPower", - type: "uint128", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "castBallot", - type: "uint8", - }, - ], - indexed: false, - internalType: "struct CoreVoting.Vote", - name: "vote", - type: "tuple", - }, - ], - name: "Voted", - type: "event", - }, - { - inputs: [], - name: "DAY_IN_BLOCKS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "approvedVaults", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "baseQuorum", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_extraVoteTime", - type: "uint256", - }, - ], - name: "changeExtraVotingTime", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "vault", - type: "address", - }, - { - internalType: "bool", - name: "isValid", - type: "bool", - }, - ], - name: "changeVaultStatus", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - internalType: "address[]", - name: "targets", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "calldatas", - type: "bytes[]", - }, - ], - name: "execute", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "extraVoteTime", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - ], - name: "getProposalVotingPower", - outputs: [ - { - internalType: "uint128[3]", - name: "", - type: "uint128[3]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockDuration", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "minProposalPower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "extraVaultData", - type: "bytes[]", - }, - { - internalType: "address[]", - name: "targets", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "calldatas", - type: "bytes[]", - }, - { - internalType: "uint256", - name: "lastCall", - type: "uint256", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "ballot", - type: "uint8", - }, - ], - name: "proposal", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "proposalCount", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "proposals", - outputs: [ - { - internalType: "bytes32", - name: "proposalHash", - type: "bytes32", - }, - { - internalType: "uint128", - name: "created", - type: "uint128", - }, - { - internalType: "uint128", - name: "unlock", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "quorum", - type: "uint128", - }, - { - internalType: "uint128", - name: "lastCall", - type: "uint128", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes4", - name: "functionSelector", - type: "bytes4", - }, - ], - name: "quorums", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes4", - name: "selector", - type: "bytes4", - }, - { - internalType: "uint256", - name: "quorum", - type: "uint256", - }, - ], - name: "setCustomQuorum", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "quorum", - type: "uint256", - }, - ], - name: "setDefaultQuorum", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_lockDuration", - type: "uint256", - }, - ], - name: "setLockDuration", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_minProposalPower", - type: "uint256", - }, - ], - name: "setMinProposalPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "extraVaultData", - type: "bytes[]", - }, - { - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "ballot", - type: "uint8", - }, - ], - name: "vote", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "votes", - outputs: [ - { - internalType: "uint128", - name: "votingPower", - type: "uint128", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "castBallot", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x6080604052620000136119606003620002d1565b600455620000256119606005620002d1565b6005553480156200003557600080fd5b5060405162002c2538038062002c258339810160408190526200005891620001c1565b600080546001600160a01b03191633178155600385905560068490555b8151811015620000ed57600160096000848481518110620000a657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e481620002f3565b91505062000075565b50620000f98562000130565b62000125826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b50505050506200033d565b6000546001600160a01b03163314620001825760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001bc57600080fd5b919050565b600080600080600060a08688031215620001d9578081fd5b620001e486620001a4565b94506020808701519450604087015193506200020360608801620001a4565b60808801519093506001600160401b038082111562000220578384fd5b818901915089601f83011262000234578384fd5b81518181111562000249576200024962000327565b8060051b604051601f19603f8301168101818110858211171562000271576200027162000327565b604052828152858101935084860182860187018e101562000290578788fd5b8795505b83861015620002bd57620002a881620001a4565b85526001959095019493860193860162000294565b508096505050505050509295509295909350565b6000816000190483118215151615620002ee57620002ee62000311565b500290565b60006000198214156200030a576200030a62000311565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128d8806200034d6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033"; - -type CoreVotingConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: CoreVotingConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class CoreVoting__factory extends ContractFactory { - constructor(...args: CoreVotingConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _timelock: PromiseOrValue, - _baseQuorum: PromiseOrValue, - _minProposalPower: PromiseOrValue, - _gsc: PromiseOrValue, - votingVaults: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _timelock, - _baseQuorum, - _minProposalPower, - _gsc, - votingVaults, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _timelock: PromiseOrValue, - _baseQuorum: PromiseOrValue, - _minProposalPower: PromiseOrValue, - _gsc: PromiseOrValue, - votingVaults: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _timelock, - _baseQuorum, - _minProposalPower, - _gsc, - votingVaults, - overrides || {}, - ); - } - override attach(address: string): CoreVoting { - return super.attach(address) as CoreVoting; - } - override connect(signer: Signer): CoreVoting__factory { - return super.connect(signer) as CoreVoting__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): CoreVotingInterface { - return new utils.Interface(_abi) as CoreVotingInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): CoreVoting { - return new Contract(address, _abi, signerOrProvider) as CoreVoting; - } -} diff --git a/packages/council-typechain/src/factories/contracts/features/Airdrop__factory.ts b/packages/council-typechain/src/factories/contracts/features/Airdrop__factory.ts deleted file mode 100644 index 8c207708..00000000 --- a/packages/council-typechain/src/factories/contracts/features/Airdrop__factory.ts +++ /dev/null @@ -1,361 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BytesLike, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Airdrop, - AirdropInterface, -} from "../../../contracts/features/Airdrop"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_governance", - type: "address", - }, - { - internalType: "bytes32", - name: "_merkleRoot", - type: "bytes32", - }, - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_expiration", - type: "uint256", - }, - { - internalType: "contract ILockingVault", - name: "_lockingVault", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "delegate", - type: "address", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claimAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "claimed", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "expiration", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockingVault", - outputs: [ - { - internalType: "contract ILockingVault", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "reclaim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "rewardsRoot", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620011483803806200114883398101604081905262000034916200019f565b6000849055606083901b6001600160601b031916608052600280546001600160a01b0319166001600160a01b0383811691821790925560405163095ea7b360e01b8152600481019190915260001960248201528591859184918491849184919083169063095ea7b390604401602060405180830381600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f6919062000206565b5050600380546001600160a01b0319163317905550505060a084905250620001209050856200012b565b505050505062000248565b6003546001600160a01b031633146200017d5760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600060a08688031215620001b7578081fd5b8551620001c4816200022f565b602087015160408801519196509450620001de816200022f565b606087015160808801519194509250620001f8816200022f565b809150509295509295909350565b60006020828403121562000218578081fd5b8151801515811462000228578182fd5b9392505050565b6001600160a01b03811681146200024557600080fd5b50565b60805160601c60a051610ebb6200028d6000396000818161015e01526107f101526000818161025001528181610322015281816108a901526109870152610ebb6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b6a5d7de1161008c578063d2a0434511610066578063d2a043451461022b578063fc0c546a1461024b578063fc772c8b14610272578063fe9fbb8014610285576100ea565b8063b6a5d7de146101c5578063b9181611146101d8578063c884ef831461020b576100ea565b8063217863b7116100c8578063217863b71461012a57806327c97fa5146101465780634665096d146101595780638da5cb5b14610180576100ea565b806309ed28f1146100ef5780630a33e8c21461010457806313af403514610117575b600080fd5b6101026100fd366004610d9f565b610298565b005b610102610112366004610d2a565b6103a6565b610102610125366004610cd8565b610502565b61013360005481565b6040519081526020015b60405180910390f35b610102610154366004610cd8565b6105ca565b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6003546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013d565b6101026101d3366004610cd8565b610697565b6101fb6101e6366004610cd8565b60046020526000908152604090205460ff1681565b604051901515815260200161013d565b610133610219366004610cd8565b60016020526000908152604090205481565b6002546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610102610280366004610cd8565b61076e565b6101fb610293366004610cd8565b610a0a565b6102d68585858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a3992505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561036657600080fd5b505af115801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190610cf2565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b6104668685858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a3992505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b50505050505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b61076b8173ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161041f565b7f00000000000000000000000000000000000000000000000000000000000000004211610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f742065787069726564000000000000000000000000000000000000000000604482015260640161041f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190610d12565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b1580156109cd57600080fd5b505af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190610cf2565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff165b919050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260348101839052600090605401604051602081830303815290604052805190602001209050610a998260005483610bae565b610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f6600000000000000000000000000000000000000604482015260640161041f565b336000908152600160205260409020548390610b1c908690610e05565b1115610b84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f436c61696d656420746f6f206d75636800000000000000000000000000000000604482015260640161041f565b3360009081526001602052604081208054869290610ba3908490610e05565b909155505050505050565b600082610bbb8584610bc4565b14949350505050565b600081815b8451811015610c3057610c1c82868381518110610c0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610c38565b915080610c2881610e1d565b915050610bc9565b509392505050565b6000818310610c54576000828152602084905260409020610c63565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3457600080fd5b60008083601f840112610c9f578182fd5b50813567ffffffffffffffff811115610cb6578182fd5b6020830191508360208260051b8501011115610cd157600080fd5b9250929050565b600060208284031215610ce9578081fd5b610c6382610c6a565b600060208284031215610d03578081fd5b81518015158114610c63578182fd5b600060208284031215610d23578081fd5b5051919050565b60008060008060008060a08789031215610d42578182fd5b86359550610d5260208801610c6a565b945060408701359350606087013567ffffffffffffffff811115610d74578283fd5b610d8089828a01610c8e565b9094509250610d93905060808801610c6a565b90509295509295509295565b600080600080600060808688031215610db6578081fd5b8535945060208601359350604086013567ffffffffffffffff811115610dda578182fd5b610de688828901610c8e565b9094509250610df9905060608701610c6a565b90509295509295909350565b60008219821115610e1857610e18610e56565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610e4f57610e4f610e56565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207acf83a1a5b72675acb7f10b0e6114b62c8dd3945591193810994464ecc0827364736f6c63430008030033"; - -type AirdropConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: AirdropConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Airdrop__factory extends ContractFactory { - constructor(...args: AirdropConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _governance: PromiseOrValue, - _merkleRoot: PromiseOrValue, - _token: PromiseOrValue, - _expiration: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _governance, - _merkleRoot, - _token, - _expiration, - _lockingVault, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _governance: PromiseOrValue, - _merkleRoot: PromiseOrValue, - _token: PromiseOrValue, - _expiration: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _governance, - _merkleRoot, - _token, - _expiration, - _lockingVault, - overrides || {}, - ); - } - override attach(address: string): Airdrop { - return super.attach(address) as Airdrop; - } - override connect(signer: Signer): Airdrop__factory { - return super.connect(signer) as Airdrop__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): AirdropInterface { - return new utils.Interface(_abi) as AirdropInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Airdrop { - return new Contract(address, _abi, signerOrProvider) as Airdrop; - } -} diff --git a/packages/council-typechain/src/factories/contracts/features/OptimisticGrants__factory.ts b/packages/council-typechain/src/factories/contracts/features/OptimisticGrants__factory.ts deleted file mode 100644 index c0dff0bc..00000000 --- a/packages/council-typechain/src/factories/contracts/features/OptimisticGrants__factory.ts +++ /dev/null @@ -1,204 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - OptimisticGrants, - OptimisticGrantsInterface, -} from "../../../contracts/features/OptimisticGrants"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "address", - name: "__governance", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "_destination", - type: "address", - }, - ], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "uint128", - name: "_amount", - type: "uint128", - }, - { - internalType: "uint128", - name: "_expiration", - type: "uint128", - }, - ], - name: "configureGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "grants", - outputs: [ - { - internalType: "uint128", - name: "amount", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "solvency", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - { - internalType: "address", - name: "_recipient", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b506040516109f03803806109f083398101604081905261002f91610064565b600080546001600160a01b0319166001600160a01b039290921691909117905560601b6001600160601b0319166080526100b5565b60008060408385031215610076578182fd5b82516100818161009d565b60208401519092506100928161009d565b809150509250929050565b6001600160a01b03811681146100b257600080fd5b50565b60805160601c6109086100e860003960008181610163015281816102ff0152818161049401526104fe01526109086000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c8063b6b55f251161005b578063b6b55f25146100c5578063b869cea3146100d8578063d16649761461014b578063fc0c546a1461015e5761007c565b8062f714ce146100815780631e83409a14610096578063773c5049146100a9575b600080fd5b61009461008f366004610818565b6101aa565b005b6100946100a436600461077d565b610381565b6100b260015481565b6040519081526020015b60405180910390f35b6100946100d3366004610800565b6104c3565b6101226100e636600461077d565b6002602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016100bc565b61009461015936600461079e565b6105aa565b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e636500000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015482111561029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742066756e647300000000000000000000000000006044820152606401610227565b81600160008282546102ae919061088c565b90915550506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015b602060405180830381600087803b15801561034457600080fd5b505af1158015610358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037c91906107e0565b505050565b3360009081526002602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421015610420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74206d6174757265000000000000000000000000000000000000000000006044820152606401610227565b336000908152600260205260408082208054929055517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526fffffffffffffffffffffffffffffffff90921660248201819052917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9060440161032a565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561055757600080fd5b505af115801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906107e0565b5080600160008282546105a29190610843565b909155505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461062b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676f7665726e616e63650000000000000000000000000000000000000000006044820152606401610227565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409020546fffffffffffffffffffffffffffffffff9081169083168110156106a757610679818461085b565b6fffffffffffffffffffffffffffffffff166001600082825461069c919061088c565b909155506106da9050565b6106b1838261085b565b6fffffffffffffffffffffffffffffffff16600160008282546106d49190610843565b90915550505b5073ffffffffffffffffffffffffffffffffffffffff90921660009081526002602052604090206fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292909116919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075857600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461075857600080fd5b60006020828403121561078e578081fd5b61079782610734565b9392505050565b6000806000606084860312156107b2578182fd5b6107bb84610734565b92506107c96020850161075d565b91506107d76040850161075d565b90509250925092565b6000602082840312156107f1578081fd5b81518015158114610797578182fd5b600060208284031215610811578081fd5b5035919050565b6000806040838503121561082a578182fd5b8235915061083a60208401610734565b90509250929050565b60008219821115610856576108566108a3565b500190565b60006fffffffffffffffffffffffffffffffff83811690831681811015610884576108846108a3565b039392505050565b60008282101561089e5761089e6108a3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220ccab291d2d30e29053f93b57347be56b88fd50381a2a94088f3e67c7141e612a64736f6c63430008030033"; - -type OptimisticGrantsConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: OptimisticGrantsConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class OptimisticGrants__factory extends ContractFactory { - constructor(...args: OptimisticGrantsConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _token: PromiseOrValue, - __governance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _token, - __governance, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _token: PromiseOrValue, - __governance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_token, __governance, overrides || {}); - } - override attach(address: string): OptimisticGrants { - return super.attach(address) as OptimisticGrants; - } - override connect(signer: Signer): OptimisticGrants__factory { - return super.connect(signer) as OptimisticGrants__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): OptimisticGrantsInterface { - return new utils.Interface(_abi) as OptimisticGrantsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): OptimisticGrants { - return new Contract(address, _abi, signerOrProvider) as OptimisticGrants; - } -} diff --git a/packages/council-typechain/src/factories/contracts/features/Spender__factory.ts b/packages/council-typechain/src/factories/contracts/features/Spender__factory.ts deleted file mode 100644 index 0013a545..00000000 --- a/packages/council-typechain/src/factories/contracts/features/Spender__factory.ts +++ /dev/null @@ -1,380 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Spender, - SpenderInterface, -} from "../../../contracts/features/Spender"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "address", - name: "_spender", - type: "address", - }, - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_smallSpendLimit", - type: "uint256", - }, - { - internalType: "uint256", - name: "_mediumSpendLimit", - type: "uint256", - }, - { - internalType: "uint256", - name: "_highSpendLimit", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "blockExpenditure", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "highSpend", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "highSpendLimit", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "mediumSpend", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "mediumSpendLimit", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "removeToken", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "limits", - type: "uint256[]", - }, - ], - name: "setLimits", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "smallSpend", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "smallSpendLimit", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b50604051610ed3380380610ed383398101604081905261002f9161010f565b600080546001600160a01b0319163317905561006c856001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6100758661009c565b60609390931b6001600160601b0319166080526003919091556004556005555061018f9050565b6000546001600160a01b031633146100ed5760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008060008060c08789031215610127578182fd5b865161013281610177565b602088015190965061014381610177565b604088015190955061015481610177565b80945050606087015192506080870151915060a087015190509295509295509295565b6001600160a01b038116811461018c57600080fd5b50565b60805160601c610d116101c26000396000818161026a0152818161058a015281816106680152610a4e0152610d116000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639c19fa8111610097578063d6343f1411610066578063d6343f141461023c578063ec36ca8c14610245578063fc0c546a14610265578063fe9fbb801461028c57610100565b80639c19fa81146101da578063b6a5d7de146101e3578063b9181611146101f6578063ce0891d51461022957610100565b806327c97fa5116100d357806327c97fa51461015c57806333fe56761461016f5780635919ffb2146101825780638da5cb5b1461019557610100565b806303e41d20146101055780630d9460a01461011a57806313af40351461012d578063157e664a14610140575b600080fd5b610118610113366004610c44565b61029f565b005b610118610128366004610c44565b61030a565b61011861013b366004610af5565b61036c565b61014960035481565b6040519081526020015b60405180910390f35b61011861016a366004610af5565b61041a565b61011861017d366004610c44565b6104cd565b610118610190366004610b16565b6106e9565b6000546101b59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610153565b61014960045481565b6101186101f1366004610af5565b61082b565b610219610204366004610af5565b60016020526000908152604090205460ff1681565b6040519015158152602001610153565b610118610237366004610c44565b6108eb565b61014960055481565b610149610253366004610c14565b60026020526000908152604090205481565b6101b57f000000000000000000000000000000000000000000000000000000000000000081565b61021961029a366004610af5565b61094d565b6102a83361094d565b6102f95760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064015b60405180910390fd5b610306828260045461097c565b5050565b6103133361094d565b61035f5760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102f0565b610306828260035461097c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104815760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105345760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561061c576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156105e157600080fd5b505afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190610c2c565b91505b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610bf4565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107505760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b8060008151811061078a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600381905550806001815181106107d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516004819055508060028151811061081a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160058190555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108925760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102f0565b6108e88173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6108f43361094d565b6109405760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102f0565b610306828260055461097c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b43600090815260026020526040902054816109978286610c6f565b11156109e55760405162461bcd60e51b815260206004820152601460248201527f5370656e64204c696d697420457863656564656400000000000000000000000060448201526064016102f0565b6109ef8185610c6f565b436000908152600260205260409081902091909155517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190610bf4565b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097757600080fd5b600060208284031215610b06578081fd5b610b0f82610ad1565b9392505050565b60006020808385031215610b28578182fd5b823567ffffffffffffffff80821115610b3f578384fd5b818501915085601f830112610b52578384fd5b813581811115610b6457610b64610cac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610ba757610ba7610cac565b604052828152858101935084860182860187018a1015610bc5578788fd5b8795505b83861015610be7578035855260019590950194938601938601610bc9565b5098975050505050505050565b600060208284031215610c05578081fd5b81518015158114610b0f578182fd5b600060208284031215610c25578081fd5b5035919050565b600060208284031215610c3d578081fd5b5051919050565b60008060408385031215610c56578081fd5b82359150610c6660208401610ad1565b90509250929050565b60008219821115610ca7577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122004eb5a03f19781eea96ed8a846e68ec2dfe279abfe9971499221248fd2be483b64736f6c63430008030033"; - -type SpenderConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SpenderConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Spender__factory extends ContractFactory { - constructor(...args: SpenderConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - _token: PromiseOrValue, - _smallSpendLimit: PromiseOrValue, - _mediumSpendLimit: PromiseOrValue, - _highSpendLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _owner, - _spender, - _token, - _smallSpendLimit, - _mediumSpendLimit, - _highSpendLimit, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _owner: PromiseOrValue, - _spender: PromiseOrValue, - _token: PromiseOrValue, - _smallSpendLimit: PromiseOrValue, - _mediumSpendLimit: PromiseOrValue, - _highSpendLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _owner, - _spender, - _token, - _smallSpendLimit, - _mediumSpendLimit, - _highSpendLimit, - overrides || {}, - ); - } - override attach(address: string): Spender { - return super.attach(address) as Spender; - } - override connect(signer: Signer): Spender__factory { - return super.connect(signer) as Spender__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SpenderInterface { - return new utils.Interface(_abi) as SpenderInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Spender { - return new Contract(address, _abi, signerOrProvider) as Spender; - } -} diff --git a/packages/council-typechain/src/factories/contracts/features/Timelock__factory.ts b/packages/council-typechain/src/factories/contracts/features/Timelock__factory.ts deleted file mode 100644 index e7d52712..00000000 --- a/packages/council-typechain/src/factories/contracts/features/Timelock__factory.ts +++ /dev/null @@ -1,323 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Timelock, - TimelockInterface, -} from "../../../contracts/features/Timelock"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "_waitTime", - type: "uint256", - }, - { - internalType: "address", - name: "_governance", - type: "address", - }, - { - internalType: "address", - name: "_gsc", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - name: "callTimestamps", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "targets", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "calldatas", - type: "bytes[]", - }, - ], - name: "execute", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "timeValue", - type: "uint256", - }, - { - internalType: "bytes32", - name: "callHash", - type: "bytes32", - }, - ], - name: "increaseTime", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "callHash", - type: "bytes32", - }, - ], - name: "registerCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_waitTime", - type: "uint256", - }, - ], - name: "setWaitTime", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "callHash", - type: "bytes32", - }, - ], - name: "stopCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - name: "timeIncreases", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "waitTime", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b506040516110eb3803806110eb83398101604081905261002f91610111565b600080546001600160a01b0319163317905561006c816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600383905561007a82610082565b50505061014c565b6000546001600160a01b031633146100d35760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b038116811461010c57600080fd5b919050565b600080600060608486031215610125578283fd5b83519250610135602085016100f5565b9150610143604085016100f5565b90509250925092565b610f908061015b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063c8d18a451161008c578063d8e4677511610066578063d8e4677514610217578063df351aaf1461023a578063e4d532661461024d578063fe9fbb8014610260576100ea565b8063c8d18a45146101cd578063ccca123b146101e0578063d7bcb566146101f7576100ea565b806388b49b83116100c857806388b49b831461012a5780638da5cb5b1461013d578063b6a5d7de14610187578063b91816111461019a576100ea565b806313af4035146100ef57806327c97fa514610104578063821127d414610117575b600080fd5b6101026100fd366004610bc3565b610273565b005b610102610112366004610bc3565b610326565b610102610125366004610cea565b6103bb565b610102610138366004610cd2565b61052e565b60005461015d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610102610195366004610bc3565b610604565b6101bd6101a8366004610bc3565b60016020526000908152604090205460ff1681565b604051901515815260200161017e565b6101026101db366004610be4565b6106a6565b6101e960035481565b60405190815260200161017e565b6101e9610205366004610cd2565b60046020526000908152604090205481565b6101bd610225366004610cd2565b60056020526000908152604090205460ff1681565b610102610248366004610cd2565b6109eb565b61010261025b366004610cd2565b610a3f565b6101bd61026e366004610bc3565b610b26565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102df5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461038d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b6103c433610b26565b6104105760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016102d6565b60008181526005602052604090205460ff161561046f5760405162461bcd60e51b815260206004820152601e60248201527f76616c75652063616e206f6e6c79206265206368616e676564206f6e6365000060448201526064016102d6565b6000818152600460205260409020546104ef5760405162461bcd60e51b8152602060048201526024808201527f6d7573742068617665206265656e2070726576696f75736c792072656769737460448201527f657265640000000000000000000000000000000000000000000000000000000060648201526084016102d6565b6000818152600460205260408120805484929061050d908490610eab565b90915550506000908152600560205260409020805460ff1916600117905550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105955760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b600081815260046020526040902054156105f15760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016102d6565b6000908152600460205260409020429055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461066b5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b6106a38173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b60025460ff16156106f95760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e63790000000000000000000000000000000000000000000060448201526064016102d6565b6002805460ff1916600117905560405160009061071e90859085908590602001610d45565b60408051601f198184030181529181528151602092830120600081815260049093529120549091506107925760405162461bcd60e51b815260206004820152601d60248201527f63616c6c20686173206e6f74206265656e20696e697469616c697a656400000060448201526064016102d6565b60035460008281526004602052604090205442916107af91610eab565b106107fc5760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682074696d65206861732070617373656400000000000060448201526064016102d6565b8351821461084c5760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420666f726d617474696e67000000000000000000000000000060448201526064016102d6565b60005b84518110156109b6576000858281518110610893577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168585848181106108ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906108fc9190610e48565b60405161090a929190610d35565b6000604051808303816000865af19150503d8060008114610947576040519150601f19603f3d011682016040523d82523d6000602084013e61094c565b606091505b50909150506001811515146109a35760405162461bcd60e51b815260206004820152600d60248201527f63616c6c2072657665727465640000000000000000000000000000000000000060448201526064016102d6565b50806109ae81610ec3565b91505061084f565b50600090815260046020908152604080832083905560059091529020805460ff19908116909155600280549091169055505050565b333014610a3a5760405162461bcd60e51b815260206004820152601560248201527f636f6e7472616374206d7573742062652073656c66000000000000000000000060448201526064016102d6565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aa65760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102d6565b600081815260046020526040902054610b015760405162461bcd60e51b815260206004820152601560248201527f4e6f2063616c6c20746f2062652072656d6f766564000000000000000000000060448201526064016102d6565b600090815260046020908152604080832083905560059091529020805460ff19169055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5057600080fd5b60008083601f840112610b8a578081fd5b50813567ffffffffffffffff811115610ba1578182fd5b6020830191508360208260051b8501011115610bbc57600080fd5b9250929050565b600060208284031215610bd4578081fd5b610bdd82610b55565b9392505050565b600080600060408486031215610bf8578182fd5b833567ffffffffffffffff80821115610c0f578384fd5b818601915086601f830112610c22578384fd5b8135602082821115610c3657610c36610f2b565b8160051b604051601f19603f83011681018181108682111715610c5b57610c5b610f2b565b60405283815282810186840183880185018d1015610c7757898afd5b8997505b85881015610ca057610c8c81610b55565b825260019790970196908401908401610c7b565b50909850505087013592505080821115610cb8578384fd5b50610cc586828701610b79565b9497909650939450505050565b600060208284031215610ce3578081fd5b5035919050565b60008060408385031215610cfc578182fd5b50508035926020909101359150565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b604080825284519082018190526000906020906060840190828801845b82811015610d9457815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610d62565b50505083810382850152848152818101600586901b8201830187855b88811015610e3957601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112610df2578788fd5b8a01803567ffffffffffffffff811115610e0a578889fd5b8036038c1315610e18578889fd5b610e2585828a8501610d0b565b958801959450505090850190600101610db0565b50909998505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e7c578283fd5b83018035915067ffffffffffffffff821115610e96578283fd5b602001915036819003821315610bbc57600080fd5b60008219821115610ebe57610ebe610efc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ef557610ef5610efc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220da1a101af37c223740adb0dfb67990886d09d93a0b2f9efcf1d79b292d4f265764736f6c63430008030033"; - -type TimelockConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TimelockConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Timelock__factory extends ContractFactory { - constructor(...args: TimelockConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _waitTime: PromiseOrValue, - _governance: PromiseOrValue, - _gsc: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _waitTime, - _governance, - _gsc, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _waitTime: PromiseOrValue, - _governance: PromiseOrValue, - _gsc: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _waitTime, - _governance, - _gsc, - overrides || {}, - ); - } - override attach(address: string): Timelock { - return super.attach(address) as Timelock; - } - override connect(signer: Signer): Timelock__factory { - return super.connect(signer) as Timelock__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TimelockInterface { - return new utils.Interface(_abi) as TimelockInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Timelock { - return new Contract(address, _abi, signerOrProvider) as Timelock; - } -} diff --git a/packages/council-typechain/src/factories/contracts/features/Treasury__factory.ts b/packages/council-typechain/src/factories/contracts/features/Treasury__factory.ts deleted file mode 100644 index b5382c7e..00000000 --- a/packages/council-typechain/src/factories/contracts/features/Treasury__factory.ts +++ /dev/null @@ -1,234 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Treasury, - TreasuryInterface, -} from "../../../contracts/features/Treasury"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "__governance", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "_token", - type: "address", - }, - { - internalType: "address", - name: "_spender", - type: "address", - }, - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_target", - type: "address", - }, - { - internalType: "bytes", - name: "_callData", - type: "bytes", - }, - ], - name: "genericCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - { - internalType: "address", - name: "_recipient", - type: "address", - }, - ], - name: "sendFunds", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - stateMutability: "payable", - type: "receive", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b44380380610b4483398101604081905261002f916100c3565b600080546001600160a01b0319163317905561004a81610050565b506100f1565b6000546001600160a01b031633146100a15760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156100d4578081fd5b81516001600160a01b03811681146100ea578182fd5b9392505050565b610a44806101006000396000f3fe60806040526004361061009a5760003560e01c80638da5cb5b11610069578063b91816111161004e578063b91816111461019f578063e1f21c67146101df578063fe9fbb80146101ff576100a1565b80638da5cb5b14610128578063b6a5d7de1461017f576100a1565b806313af4035146100a657806327c97fa5146100c85780634650c308146100e85780638522d1b214610108576100a1565b366100a157005b600080fd5b3480156100b257600080fd5b506100c66100c13660046108c9565b61021f565b005b3480156100d457600080fd5b506100c66100e33660046108c9565b6102ec565b3480156100f457600080fd5b506100c6610103366004610925565b6103b9565b34801561011457600080fd5b506100c66101233660046109a3565b610516565b34801561013457600080fd5b506000546101559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018b57600080fd5b506100c661019a3660046108c9565b6106c0565b3480156101ab57600080fd5b506101cf6101ba3660046108c9565b60016020526000908152604090205460ff1681565b6040519015158152602001610176565b3480156101eb57600080fd5b506100c66101fa3660046108ea565b61079a565b34801561020b57600080fd5b506101cf61021a3660046108c9565b610876565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461036d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461043a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104639291906109fe565b6000604051808303816000865af19150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5050905080610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616c6c206661696c6564000000000000000000000000000000000000000000604482015260640161029c565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156106125760405173ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f1935050505015801561060c573d6000803e3d6000fd5b506106bb565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044015b602060405180830381600087803b15801561068357600080fd5b505af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051091906109de565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b6107978173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161029c565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b390604401610669565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a057600080fd5b6000602082840312156108da578081fd5b6108e3826108a5565b9392505050565b6000806000606084860312156108fe578182fd5b610907846108a5565b9250610915602085016108a5565b9150604084013590509250925092565b600080600060408486031215610939578283fd5b610942846108a5565b9250602084013567ffffffffffffffff8082111561095e578384fd5b818601915086601f830112610971578384fd5b81358181111561097f578485fd5b876020828501011115610990578485fd5b6020830194508093505050509250925092565b6000806000606084860312156109b7578283fd5b6109c0846108a5565b9250602084013591506109d5604085016108a5565b90509250925092565b6000602082840312156109ef578081fd5b815180151581146108e3578182fd5b600082848337910190815291905056fea26469706673582212201040707a315ef7791aa6ec5d8865b0891653213ada17d49570deca6b4d0dc80164736f6c63430008030033"; - -type TreasuryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TreasuryConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Treasury__factory extends ContractFactory { - constructor(...args: TreasuryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - __governance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(__governance, overrides || {}) as Promise; - } - override getDeployTransaction( - __governance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(__governance, overrides || {}); - } - override attach(address: string): Treasury { - return super.attach(address) as Treasury; - } - override connect(signer: Signer): Treasury__factory { - return super.connect(signer) as Treasury__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TreasuryInterface { - return new utils.Interface(_abi) as TreasuryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Treasury { - return new Contract(address, _abi, signerOrProvider) as Treasury; - } -} diff --git a/packages/council-typechain/src/factories/contracts/features/index.ts b/packages/council-typechain/src/factories/contracts/features/index.ts deleted file mode 100644 index 1a1f9dbf..00000000 --- a/packages/council-typechain/src/factories/contracts/features/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { Airdrop__factory } from "./Airdrop__factory"; -export { OptimisticGrants__factory } from "./OptimisticGrants__factory"; -export { Spender__factory } from "./Spender__factory"; -export { Timelock__factory } from "./Timelock__factory"; -export { Treasury__factory } from "./Treasury__factory"; diff --git a/packages/council-typechain/src/factories/contracts/index.ts b/packages/council-typechain/src/factories/contracts/index.ts deleted file mode 100644 index f33b34ad..00000000 --- a/packages/council-typechain/src/factories/contracts/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as features from "./features"; -export * as interfaces from "./interfaces"; -export * as libraries from "./libraries"; -export * as mocks from "./mocks"; -export * as simpleProxySol from "./simpleProxy.sol"; -export * as vaults from "./vaults"; -export { CoreVoting__factory } from "./CoreVoting__factory"; diff --git a/packages/council-typechain/src/factories/contracts/interfaces/ICoreVoting__factory.ts b/packages/council-typechain/src/factories/contracts/interfaces/ICoreVoting__factory.ts deleted file mode 100644 index 848dba7a..00000000 --- a/packages/council-typechain/src/factories/contracts/interfaces/ICoreVoting__factory.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ICoreVoting, - ICoreVotingInterface, -} from "../../../contracts/interfaces/ICoreVoting"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "vault", - type: "address", - }, - ], - name: "approvedVaults", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class ICoreVoting__factory { - static readonly abi = _abi; - static createInterface(): ICoreVotingInterface { - return new utils.Interface(_abi) as ICoreVotingInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): ICoreVoting { - return new Contract(address, _abi, signerOrProvider) as ICoreVoting; - } -} diff --git a/packages/council-typechain/src/factories/contracts/interfaces/IERC20Permit__factory.ts b/packages/council-typechain/src/factories/contracts/interfaces/IERC20Permit__factory.ts deleted file mode 100644 index 004943ec..00000000 --- a/packages/council-typechain/src/factories/contracts/interfaces/IERC20Permit__factory.ts +++ /dev/null @@ -1,297 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20Permit, - IERC20PermitInterface, -} from "../../../contracts/interfaces/IERC20Permit"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [], - name: "DOMAIN_SEPARATOR", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "nonces", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "uint256", - name: "deadline", - type: "uint256", - }, - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - name: "permit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC20Permit__factory { - static readonly abi = _abi; - static createInterface(): IERC20PermitInterface { - return new utils.Interface(_abi) as IERC20PermitInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): IERC20Permit { - return new Contract(address, _abi, signerOrProvider) as IERC20Permit; - } -} diff --git a/packages/council-typechain/src/factories/contracts/interfaces/IERC20__factory.ts b/packages/council-typechain/src/factories/contracts/interfaces/IERC20__factory.ts deleted file mode 100644 index c650a167..00000000 --- a/packages/council-typechain/src/factories/contracts/interfaces/IERC20__factory.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20, - IERC20Interface, -} from "../../../contracts/interfaces/IERC20"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC20__factory { - static readonly abi = _abi; - static createInterface(): IERC20Interface { - return new utils.Interface(_abi) as IERC20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): IERC20 { - return new Contract(address, _abi, signerOrProvider) as IERC20; - } -} diff --git a/packages/council-typechain/src/factories/contracts/interfaces/ILockingVault__factory.ts b/packages/council-typechain/src/factories/contracts/interfaces/ILockingVault__factory.ts deleted file mode 100644 index 6baff7c2..00000000 --- a/packages/council-typechain/src/factories/contracts/interfaces/ILockingVault__factory.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ILockingVault, - ILockingVaultInterface, -} from "../../../contracts/interfaces/ILockingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "newDelegate", - type: "address", - }, - ], - name: "changeDelegation", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "fundedAccount", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "firstDelegation", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class ILockingVault__factory { - static readonly abi = _abi; - static createInterface(): ILockingVaultInterface { - return new utils.Interface(_abi) as ILockingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): ILockingVault { - return new Contract(address, _abi, signerOrProvider) as ILockingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/interfaces/IVotingVault__factory.ts b/packages/council-typechain/src/factories/contracts/interfaces/IVotingVault__factory.ts deleted file mode 100644 index 47540833..00000000 --- a/packages/council-typechain/src/factories/contracts/interfaces/IVotingVault__factory.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IVotingVault, - IVotingVaultInterface, -} from "../../../contracts/interfaces/IVotingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "extraData", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IVotingVault__factory { - static readonly abi = _abi; - static createInterface(): IVotingVaultInterface { - return new utils.Interface(_abi) as IVotingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): IVotingVault { - return new Contract(address, _abi, signerOrProvider) as IVotingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/interfaces/index.ts b/packages/council-typechain/src/factories/contracts/interfaces/index.ts deleted file mode 100644 index 20c7b01b..00000000 --- a/packages/council-typechain/src/factories/contracts/interfaces/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { ICoreVoting__factory } from "./ICoreVoting__factory"; -export { IERC20__factory } from "./IERC20__factory"; -export { IERC20Permit__factory } from "./IERC20Permit__factory"; -export { ILockingVault__factory } from "./ILockingVault__factory"; -export { IVotingVault__factory } from "./IVotingVault__factory"; diff --git a/packages/council-typechain/src/factories/contracts/libraries/Authorizable__factory.ts b/packages/council-typechain/src/factories/contracts/libraries/Authorizable__factory.ts deleted file mode 100644 index 0b2c8516..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/Authorizable__factory.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Authorizable, - AuthorizableInterface, -} from "../../../contracts/libraries/Authorizable"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163317905561044d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063b6a5d7de11610050578063b6a5d7de146100e9578063b9181611146100fc578063fe9fbb801461012f57610072565b806313af40351461007757806327c97fa51461008c5780638da5cb5b1461009f575b600080fd5b61008a6100853660046103dc565b610168565b005b61008a61009a3660046103dc565b610235565b6000546100bf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a6100f73660046103dc565b610302565b61011f61010a3660046103dc565b60016020526000908152604090205460ff1681565b60405190151581526020016100e0565b61011f61013d3660046103dc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016101e5565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016101e5565b6103d98173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6000602082840312156103ed578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610410578182fd5b939250505056fea26469706673582212203ed5a76450ed5c578176510b676ecdd83e5a75c6a2ab37f0d461205642d9da8864736f6c63430008030033"; - -type AuthorizableConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: AuthorizableConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Authorizable__factory extends ContractFactory { - constructor(...args: AuthorizableConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Authorizable { - return super.attach(address) as Authorizable; - } - override connect(signer: Signer): Authorizable__factory { - return super.connect(signer) as Authorizable__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): AuthorizableInterface { - return new utils.Interface(_abi) as AuthorizableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Authorizable { - return new Contract(address, _abi, signerOrProvider) as Authorizable; - } -} diff --git a/packages/council-typechain/src/factories/contracts/libraries/ERC20PermitWithMint__factory.ts b/packages/council-typechain/src/factories/contracts/libraries/ERC20PermitWithMint__factory.ts deleted file mode 100644 index d8f892b5..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/ERC20PermitWithMint__factory.ts +++ /dev/null @@ -1,462 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ERC20PermitWithMint, - ERC20PermitWithMintInterface, -} from "../../../contracts/libraries/ERC20PermitWithMint"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [], - name: "DOMAIN_SEPARATOR", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "PERMIT_TYPEHASH", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burn", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "nonces", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "uint256", - name: "deadline", - type: "uint256", - }, - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - name: "permit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class ERC20PermitWithMint__factory { - static readonly abi = _abi; - static createInterface(): ERC20PermitWithMintInterface { - return new utils.Interface(_abi) as ERC20PermitWithMintInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): ERC20PermitWithMint { - return new Contract(address, _abi, signerOrProvider) as ERC20PermitWithMint; - } -} diff --git a/packages/council-typechain/src/factories/contracts/libraries/ERC20Permit__factory.ts b/packages/council-typechain/src/factories/contracts/libraries/ERC20Permit__factory.ts deleted file mode 100644 index cf7a6d00..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/ERC20Permit__factory.ts +++ /dev/null @@ -1,323 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ERC20Permit, - ERC20PermitInterface, -} from "../../../contracts/libraries/ERC20Permit"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [], - name: "DOMAIN_SEPARATOR", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "PERMIT_TYPEHASH", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "nonces", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "uint256", - name: "deadline", - type: "uint256", - }, - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - name: "permit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class ERC20Permit__factory { - static readonly abi = _abi; - static createInterface(): ERC20PermitInterface { - return new utils.Interface(_abi) as ERC20PermitInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): ERC20Permit { - return new Contract(address, _abi, signerOrProvider) as ERC20Permit; - } -} diff --git a/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards__factory.ts b/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards__factory.ts deleted file mode 100644 index d94eb43f..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards__factory.ts +++ /dev/null @@ -1,149 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - AbstractMerkleRewards, - AbstractMerkleRewardsInterface, -} from "../../../../contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "delegate", - type: "address", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claimAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "claimed", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockingVault", - outputs: [ - { - internalType: "contract ILockingVault", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rewardsRoot", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class AbstractMerkleRewards__factory { - static readonly abi = _abi; - static createInterface(): AbstractMerkleRewardsInterface { - return new utils.Interface(_abi) as AbstractMerkleRewardsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): AbstractMerkleRewards { - return new Contract( - address, - _abi, - signerOrProvider, - ) as AbstractMerkleRewards; - } -} diff --git a/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/MerkleRewards__factory.ts b/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/MerkleRewards__factory.ts deleted file mode 100644 index 25a1611b..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/MerkleRewards__factory.ts +++ /dev/null @@ -1,226 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BytesLike, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - MerkleRewards, - MerkleRewardsInterface, -} from "../../../../contracts/libraries/MerkleRewards.sol/MerkleRewards"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes32", - name: "_rewardsRoot", - type: "bytes32", - }, - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "contract ILockingVault", - name: "_lockingVault", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "delegate", - type: "address", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claimAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "claimed", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockingVault", - outputs: [ - { - internalType: "contract ILockingVault", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rewardsRoot", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b506040516109b83803806109b883398101604081905261002f91610119565b6000839055606082901b6001600160601b031916608052600280546001600160a01b0319166001600160a01b0383811691821790925560405163095ea7b360e01b81526004810191909152600019602482015284918491849183169063095ea7b390604401602060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e691906100f2565b50505050505050610173565b600060208284031215610103578081fd5b81518015158114610112578182fd5b9392505050565b60008060006060848603121561012d578182fd5b83519250602084015161013f8161015b565b60408501519092506101508161015b565b809150509250925092565b6001600160a01b038116811461017057600080fd5b50565b60805160601c6108206101986000396000818161012501526101d101526108206000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c884ef8311610050578063c884ef83146100bb578063d2a04345146100db578063fc0c546a1461012057610072565b806309ed28f1146100775780630a33e8c21461008c578063217863b71461009f575b600080fd5b61008a610085366004610704565b610147565b005b61008a61009a36600461068f565b610255565b6100a860005481565b6040519081526020015b60405180910390f35b6100a86100c9366004610655565b60016020526000908152604090205481565b6002546100fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b2565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b61018585858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103b192505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561021557600080fd5b505af1158015610229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024d919061066f565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b61031586858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103b192505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b15801561039157600080fd5b505af11580156103a5573d6000803e3d6000fd5b50505050505050505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012090506104118260005483610526565b610477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016102ce565b33600090815260016020526040902054839061049490869061076a565b11156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f436c61696d656420746f6f206d7563680000000000000000000000000000000060448201526064016102ce565b336000908152600160205260408120805486929061051b90849061076a565b909155505050505050565b600082610533858461053c565b14949350505050565b600081815b84518110156105a85761059482868381518110610587577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105b0565b9150806105a081610782565b915050610541565b509392505050565b60008183106105cc5760008281526020849052604090206105db565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060657600080fd5b919050565b60008083601f84011261061c578182fd5b50813567ffffffffffffffff811115610633578182fd5b6020830191508360208260051b850101111561064e57600080fd5b9250929050565b600060208284031215610666578081fd5b6105db826105e2565b600060208284031215610680578081fd5b815180151581146105db578182fd5b60008060008060008060a087890312156106a7578182fd5b863595506106b7602088016105e2565b945060408701359350606087013567ffffffffffffffff8111156106d9578283fd5b6106e589828a0161060b565b90945092506106f89050608088016105e2565b90509295509295509295565b60008060008060006080868803121561071b578081fd5b8535945060208601359350604086013567ffffffffffffffff81111561073f578182fd5b61074b8882890161060b565b909450925061075e9050606087016105e2565b90509295509295909350565b6000821982111561077d5761077d6107bb565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156107b4576107b46107bb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205c5952d2b168da46cf6cfc8197c592187b12d0c1879fdc3f9874aad5aadb14a864736f6c63430008030033"; - -type MerkleRewardsConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MerkleRewardsConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MerkleRewards__factory extends ContractFactory { - constructor(...args: MerkleRewardsConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _rewardsRoot: PromiseOrValue, - _token: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _rewardsRoot, - _token, - _lockingVault, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _rewardsRoot: PromiseOrValue, - _token: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _rewardsRoot, - _token, - _lockingVault, - overrides || {}, - ); - } - override attach(address: string): MerkleRewards { - return super.attach(address) as MerkleRewards; - } - override connect(signer: Signer): MerkleRewards__factory { - return super.connect(signer) as MerkleRewards__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MerkleRewardsInterface { - return new utils.Interface(_abi) as MerkleRewardsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MerkleRewards { - return new Contract(address, _abi, signerOrProvider) as MerkleRewards; - } -} diff --git a/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/index.ts b/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/index.ts deleted file mode 100644 index 8059fd6a..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/MerkleRewards.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { AbstractMerkleRewards__factory } from "./AbstractMerkleRewards__factory"; -export { MerkleRewards__factory } from "./MerkleRewards__factory"; diff --git a/packages/council-typechain/src/factories/contracts/libraries/Storage__factory.ts b/packages/council-typechain/src/factories/contracts/libraries/Storage__factory.ts deleted file mode 100644 index 570f38ba..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/Storage__factory.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Storage, - StorageInterface, -} from "../../../contracts/libraries/Storage"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "typeString", - type: "string", - }, - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "getPtr", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, -]; - -const _bytecode = - "0x6102b061003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806387ec29271461003a575b600080fd5b61004d610048366004610184565b61005f565b60405190815260200160405180910390f35b600080836040516020016100739190610238565b604051602081830303815290604052805190602001209050600081846040516020016100a092919061021e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b600082601f8301126100ef578081fd5b813567ffffffffffffffff8082111561010a5761010a61024b565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156101505761015061024b565b81604052838152866020858801011115610168578485fd5b8360208701602083013792830160200193909352509392505050565b60008060408385031215610196578182fd5b823567ffffffffffffffff808211156101ad578384fd5b6101b9868387016100df565b935060208501359150808211156101ce578283fd5b506101db858286016100df565b9150509250929050565b60008151815b8181101561020557602081850181015186830152016101eb565b818111156102135782828601525b509290920192915050565b600083825261023060208301846101e5565b949350505050565b600061024482846101e5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fdd574028e73d7d54dd0666d1fa26a01150af5440e697fc2590842048e31d3e964736f6c63430008030033"; - -type StorageConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: StorageConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Storage__factory extends ContractFactory { - constructor(...args: StorageConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Storage { - return super.attach(address) as Storage; - } - override connect(signer: Signer): Storage__factory { - return super.connect(signer) as Storage__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): StorageInterface { - return new utils.Interface(_abi) as StorageInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Storage { - return new Contract(address, _abi, signerOrProvider) as Storage; - } -} diff --git a/packages/council-typechain/src/factories/contracts/libraries/index.ts b/packages/council-typechain/src/factories/contracts/libraries/index.ts deleted file mode 100644 index 3b5d7693..00000000 --- a/packages/council-typechain/src/factories/contracts/libraries/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as merkleRewardsSol from "./MerkleRewards.sol"; -export { Authorizable__factory } from "./Authorizable__factory"; -export { ERC20Permit__factory } from "./ERC20Permit__factory"; -export { ERC20PermitWithMint__factory } from "./ERC20PermitWithMint__factory"; -export { Storage__factory } from "./Storage__factory"; diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockCoreVoting__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockCoreVoting__factory.ts deleted file mode 100644 index 46c3bd1b..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockCoreVoting__factory.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockCoreVoting, - MockCoreVotingInterface, -} from "../../../contracts/mocks/MockCoreVoting"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "approvedVaults", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "vault", - type: "address", - }, - { - internalType: "bool", - name: "what", - type: "bool", - }, - ], - name: "setVault", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610192806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063627f66c61461003b578063af7a060c146100a1575b600080fd5b61009f610049366004610122565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100c46100af366004610101565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b803573ffffffffffffffffffffffffffffffffffffffff811681146100fc57600080fd5b919050565b600060208284031215610112578081fd5b61011b826100d8565b9392505050565b60008060408385031215610134578081fd5b61013d836100d8565b915060208301358015158114610151578182fd5b80915050925092905056fea264697066735822122068a8e308aedfe2b4e7bf6e998de1ff9dd5b4271f63e2c371d001a6c21ccd48e164736f6c63430008030033"; - -type MockCoreVotingConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockCoreVotingConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockCoreVoting__factory extends ContractFactory { - constructor(...args: MockCoreVotingConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockCoreVoting { - return super.attach(address) as MockCoreVoting; - } - override connect(signer: Signer): MockCoreVoting__factory { - return super.connect(signer) as MockCoreVoting__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockCoreVotingInterface { - return new utils.Interface(_abi) as MockCoreVotingInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockCoreVoting { - return new Contract(address, _abi, signerOrProvider) as MockCoreVoting; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockDoubleSpender__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockDoubleSpender__factory.ts deleted file mode 100644 index cab5f05d..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockDoubleSpender__factory.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockDoubleSpender, - MockDoubleSpenderInterface, -} from "../../../contracts/mocks/MockDoubleSpender"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract Spender", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "doubleSpendLarge", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "contract Spender", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "doubleSpendMedium", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "contract Spender", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "doubleSpendSmall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b506103c9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632b3fadc6146100465780638ae031951461005b57806395e18a691461006e575b600080fd5b610059610054366004610350565b610081565b005b610059610069366004610350565b610192565b61005961007c366004610350565b610271565b6040517fce0891d50000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff83169063ce0891d590604401600060405180830381600087803b1580156100ef57600080fd5b505af1158015610103573d6000803e3d6000fd5b50506040517fce0891d50000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff8516925063ce0891d591506044015b600060405180830381600087803b15801561017657600080fd5b505af115801561018a573d6000803e3d6000fd5b505050505050565b6040517f0d9460a00000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff831690630d9460a090604401600060405180830381600087803b15801561020057600080fd5b505af1158015610214573d6000803e3d6000fd5b50506040517f0d9460a00000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff85169250630d9460a0915060440161015c565b6040517f03e41d200000000000000000000000000000000000000000000000000000000081526004810182905233602482015273ffffffffffffffffffffffffffffffffffffffff8316906303e41d2090604401600060405180830381600087803b1580156102df57600080fd5b505af11580156102f3573d6000803e3d6000fd5b50506040517f03e41d200000000000000000000000000000000000000000000000000000000081526004810184905233602482015273ffffffffffffffffffffffffffffffffffffffff851692506303e41d20915060440161015c565b60008060408385031215610362578182fd5b823573ffffffffffffffffffffffffffffffffffffffff81168114610385578283fd5b94602093909301359350505056fea2646970667358221220f5d4d33faf67c8e1b7360b93e8bf3ed433c0a4bd112cf8938de3eeb625ca683564736f6c63430008030033"; - -type MockDoubleSpenderConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockDoubleSpenderConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockDoubleSpender__factory extends ContractFactory { - constructor(...args: MockDoubleSpenderConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockDoubleSpender { - return super.attach(address) as MockDoubleSpender; - } - override connect(signer: Signer): MockDoubleSpender__factory { - return super.connect(signer) as MockDoubleSpender__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockDoubleSpenderInterface { - return new utils.Interface(_abi) as MockDoubleSpenderInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockDoubleSpender { - return new Contract(address, _abi, signerOrProvider) as MockDoubleSpender; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockERC20__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockERC20__factory.ts deleted file mode 100644 index 0317ea3d..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockERC20__factory.ts +++ /dev/null @@ -1,572 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockERC20, - MockERC20Interface, -} from "../../../contracts/mocks/MockERC20"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string", - }, - { - internalType: "string", - name: "symbol_", - type: "string", - }, - { - internalType: "address", - name: "owner_", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [], - name: "DOMAIN_SEPARATOR", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "PERMIT_TYPEHASH", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burn", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "nonces", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "uint256", - name: "deadline", - type: "uint256", - }, - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - name: "permit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "source", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "setAllowance", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "setBalance", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620017e2380380620017e2833981016040819052620000349162000353565b8282828282816000908051906020019062000051929190620001fa565b50805162000067906001906020840190620001fa565b506002805460ff1916601217905560036020526000197f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff81905530600090815260409020557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000de9190620003dc565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f1981840301815291905280516020909101206006555050600780546001600160a01b031916331790556200017a8162000186565b505050505050620004d2565b6007546001600160a01b03163314620001d85760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b82805462000208906200047f565b90600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b600082601f830112620002b1578081fd5b81516001600160401b0380821115620002ce57620002ce620004bc565b604051601f8301601f19908116603f01168101908282118183101715620002f957620002f9620004bc565b8160405283815260209250868385880101111562000315578485fd5b8491505b8382101562000338578582018301518183018401529082019062000319565b838211156200034957848385830101525b9695505050505050565b60008060006060848603121562000368578283fd5b83516001600160401b03808211156200037f578485fd5b6200038d87838801620002a0565b94506020860151915080821115620003a3578384fd5b50620003b286828701620002a0565b604086015190935090506001600160a01b0381168114620003d1578182fd5b809150509250925092565b600080835482600182811c915080831680620003f957607f831692505b60208084108214156200041a57634e487b7160e01b87526022600452602487fd5b818015620004315760018114620004435762000471565b60ff1986168952848901965062000471565b60008a815260209020885b86811015620004695781548b8201529085019083016200044e565b505084890196505b509498975050505050505050565b600181811c908216806200049457607f821691505b60208210811415620004b657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61130080620004e26000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80637ecebe00116100e3578063b91816111161008c578063dd62ed3e11610066578063dd62ed3e146103ca578063e30443bc146103f5578063fe9fbb801461042c5761018d565b8063b91816111461034d578063d505accf14610370578063da46098c146103835761018d565b80639dc29fac116100bd5780639dc29fac14610314578063a9059cbb14610327578063b6a5d7de1461033a5761018d565b80637ecebe00146102a75780638da5cb5b146102c757806395d89b411461030c5761018d565b806327c97fa5116101455780633644e5151161011f5780633644e5151461026b57806340c10f191461027457806370a08231146102875761018d565b806327c97fa51461021257806330adf81f14610225578063313ce5671461024c5761018d565b806313af40351161017657806313af4035146101d357806318160ddd146101e857806323b872dd146101ff5761018d565b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61043f565b6040516101a7919061116e565b60405180910390f35b6101c36101be366004611145565b6104cd565b60405190151581526020016101a7565b6101e66101e136600461104d565b610546565b005b6101f160095481565b6040519081526020016101a7565b6101c361020d366004611099565b6105f9565b6101e661022036600461104d565b61082d565b6101f17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6002546102599060ff1681565b60405160ff90911681526020016101a7565b6101f160065481565b6101e6610282366004611145565b6108e0565b6101f161029536600461104d565b60036020526000908152604090205481565b6101f16102b536600461104d565b60056020526000908152604090205481565b6007546102e79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b61019a610955565b6101e6610322366004611145565b610962565b6101c3610335366004611145565b6109d3565b6101e661034836600461104d565b6109e7565b6101c361035b36600461104d565b60086020526000908152604090205460ff1681565b6101e661037e3660046110d4565b610aa4565b6101e6610391366004611099565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209490951682529290925291902055565b6101f16103d8366004611067565b600460209081526000928352604080842090915290825290205481565b6101e6610403366004611145565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b6101c361043a36600461104d565b610e43565b6000805461044c9061120e565b80601f01602080910402602001604051908101604052809291908181526020018280546104789061120e565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105359086815260200190565b60405180910390a350600192915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146105b25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548281101561066f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742d62616c616e6365000000000060448201526064016105a9565b73ffffffffffffffffffffffffffffffffffffffff851633146107725773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077057838110156107345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e742d616c6c6f77616e636500000060448201526064016105a9565b61073e84826111f7565b73ffffffffffffffffffffffffffffffffffffffff871660009081526004602090815260408083203384529091529020555b505b61077c83826111f7565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526003602052604080822093909355908616815220546107b99084906111df565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061081a9087815260200190565b60405180910390a3506001949350505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146108945760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b73ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109475760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b6109518282610e72565b5050565b6001805461044c9061120e565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109c95760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b6109518282610f35565b60006109e03384846105f9565b9392505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a4e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105a9565b610aa18173ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b60065473ffffffffffffffffffffffffffffffffffffffff8881166000818152600560209081526040918290205482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981840152808401859052948c166060860152608085018b905260a085015260c08085018a90528251808603909101815260e0850183528051908201207f1901000000000000000000000000000000000000000000000000000000000000610100860152610102850195909552610122808501959095528151808503909501855261014290930190528251929091019190912090610bd45760405162461bcd60e51b815260206004820152601860248201527f45524332303a20696e76616c69642d616464726573732d30000000000000000060448201526064016105a9565b60408051600081526020810180835283905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610cab5760405162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c69642d7065726d6974000000000000000000000060448201526064016105a9565b841580610cb85750844211155b610d045760405162461bcd60e51b815260206004820152601560248201527f45524332303a207065726d69742d65787069726564000000000000000000000060448201526064016105a9565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610d9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016105a9565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600560205260408120805491610dcb83611262565b909155505073ffffffffffffffffffffffffffffffffffffffff8881166000818152600460209081526040808320948c16808452948252918290208a905590518981527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090205460ff165b919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610ea39082906111df565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081209190915560098054839290610ede9084906111df565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205481811015610f8e5773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812055610fbf565b610f9882826111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260409020555b8160096000828254610fd191906111f7565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e6d57600080fd5b60006020828403121561105e578081fd5b6109e082611029565b60008060408385031215611079578081fd5b61108283611029565b915061109060208401611029565b90509250929050565b6000806000606084860312156110ad578081fd5b6110b684611029565b92506110c460208501611029565b9150604084013590509250925092565b600080600080600080600060e0888a0312156110ee578283fd5b6110f788611029565b965061110560208901611029565b95506040880135945060608801359350608088013560ff81168114611128578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611157578182fd5b61116083611029565b946020939093013593505050565b6000602080835283518082850152825b8181101561119a5785810183015185820160400152820161117e565b818111156111ab5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156111f2576111f261129b565b500190565b6000828210156112095761120961129b565b500390565b600181811c9082168061122257607f821691505b6020821081141561125c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112945761129461129b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212204f449ec99911975b6933631be7c79637946797f1b703b0a961b1a81e762aa48264736f6c63430008030033"; - -type MockERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockERC20ConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockERC20__factory extends ContractFactory { - constructor(...args: MockERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - owner_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - name_, - symbol_, - owner_, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - owner_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(name_, symbol_, owner_, overrides || {}); - } - override attach(address: string): MockERC20 { - return super.attach(address) as MockERC20; - } - override connect(signer: Signer): MockERC20__factory { - return super.connect(signer) as MockERC20__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockERC20Interface { - return new utils.Interface(_abi) as MockERC20Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockERC20 { - return new Contract(address, _abi, signerOrProvider) as MockERC20; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockHistoryTracker__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockHistoryTracker__factory.ts deleted file mode 100644 index 2e2b1626..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockHistoryTracker__factory.ts +++ /dev/null @@ -1,205 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockHistoryTracker, - MockHistoryTrackerInterface, -} from "../../../contracts/mocks/MockHistoryTracker"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "newMin", - type: "uint256", - }, - ], - name: "clear", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "which", - type: "uint256", - }, - ], - name: "find", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "which", - type: "uint256", - }, - { - internalType: "uint256", - name: "stale", - type: "uint256", - }, - ], - name: "findAndClear", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "loadBounds", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "loadTop", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "toBePushed", - type: "uint256[]", - }, - ], - name: "multiPush", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "start", - type: "uint256", - }, - { - internalType: "uint256", - name: "end", - type: "uint256", - }, - ], - name: "peekArrayData", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "data", - type: "uint256", - }, - ], - name: "push", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610fe3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063959ac4841161005b578063959ac4841461010457806395d3c7a114610119578063c0fe1af814610121578063c425f7da1461013457610088565b806335878cf71461008d5780633c795d29146100b35780633e530e5b146100d05780636dc925fa146100e3575b600080fd5b6100a061009b366004610e0f565b610147565b6040519081526020015b60405180910390f35b6100bb6101b4565b604080519283526020830191909152016100aa565b6100a06100de366004610df7565b61024d565b6100f66100f1366004610e0f565b6102b6565b6040516100aa929190610eaf565b610117610112366004610df7565b61050d565b005b6100a0610572565b61011761012f366004610df7565b6105d9565b610117610142366004610d87565b61070a565b6000806101886040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506101aa8173829bd824b016326a401d083b33d092293333a8308686610810565b9150505b92915050565b60008060006101f76040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610206826020015190565b73829bd824b016326a401d083b33d092293333a83060009081526020919091526040902054608081901c956fffffffffffffffffffffffffffffffff909116945092505050565b60008061028e6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506102af8173829bd824b016326a401d083b33d092293333a830856108a2565b9392505050565b60608060006102f96040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610308826020015190565b73829bd824b016326a401d083b33d092293333a83060009081526020919091526040812091506103388787610f2e565b67ffffffffffffffff811115610377577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156103a0578160200160208202803683370190505b50905060006103af8888610f2e565b67ffffffffffffffff8111156103ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000885b888110156104fe5760018582010154845160c082901c9177ffffffffffffffffffffffffffffffffffffffffffffffff1690829087908690811061048b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050808585815181106104d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020908102919091010152836104e681610f45565b945050505080806104f690610f45565b91505061041e565b50919890975095505050505050565b600061054d6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b905061056e8173829bd824b016326a401d083b33d092293333a83084610903565b5050565b6000806105b36040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506105d38173829bd824b016326a401d083b33d092293333a830610a6c565b91505090565b60006106196040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b90506000610628826020015190565b73829bd824b016326a401d083b33d092293333a8306000908152602091909152604090208054909150608081901c906fffffffffffffffffffffffffffffffff168185111561069c5761067c828685610ae3565b6fffffffffffffffffffffffffffffffff8116608086901b178355610703565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f436c656172206f7574206f6620626f756e64730000000000000000000000000060448201526064015b60405180910390fd5b5050505050565b600061074a6040518060400160405280600881526020017f62616c616e6365730000000000000000000000000000000000000000000000008152506107d7565b905060005b828110156107d1576107bf73829bd824b016326a401d083b33d092293333a8308585848181106107a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135846109039092919063ffffffff16565b806107c981610f45565b91505061074f565b50505050565b60408051808201909152606081526000602082015260006107f783610b1c565b6040805180820190915293845260208401525090919050565b60008061081e866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610872858a8a8787610b95565b915091508382111561089457610889848387610d6e565b610894858385610d7b565b9a9950505050505050505050565b6000806108b0856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff909116906108948488838686610b95565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f42000000000000000000000000000000000000000000000000000000000060448201526064016106fa565b6000610992846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610a2457610a20866109f6600185610f2e565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b5090505b8143821415610a3b57610a38600184610f2e565b90505b8481600189010155438214610a5f57610a5f8785610a5a866001610edd565b610d7b565b5050505050505050505050565b600080610a7a846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1680610ac7576000925050506101ae565b6000610ad8836109f6600185610f2e565b979650505050505050565b60018101835b8381101561070357600082820155600101610ae9565b6fffffffffffffffffffffffffffffffff1660809190911b179055565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610b57929190610e6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b60008082610bff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a65640000000000000000000000000000000000000060448201526064016106fa565b85851115610c0c57600080fd5b828410610c1857600080fd5b6000610c25600185610f2e565b90508460005b828214610cc95760006002610c408585610edd565b610c4b906001610edd565b610c559190610ef5565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610c9757929650919450610d649350505050565b8b821015610cb3578a821015610cab578293505b829450610cc1565b610cbe600184610f2e565b95505b505050610c2b565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c75726500000000000000000000000000000000000060448201526064016106fa565b9195509093505050505b9550959350505050565b81831115610ae357600080fd5b808210610aff57600080fd5b60008060208385031215610d99578182fd5b823567ffffffffffffffff80821115610db0578384fd5b818501915085601f830112610dc3578384fd5b813581811115610dd1578485fd5b8660208260051b8501011115610de5578485fd5b60209290920196919550909350505050565b600060208284031215610e08578081fd5b5035919050565b60008060408385031215610e21578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b83811015610e5f57815187529582019590820190600101610e43565b509495945050505050565b60008382528251815b81811015610e8f57602081860181015185830182015201610e73565b81811115610ea05782602083860101525b50919091016020019392505050565b600060408252610ec26040830185610e30565b8281036020840152610ed48185610e30565b95945050505050565b60008219821115610ef057610ef0610f7e565b500190565b600082610f29577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b600082821015610f4057610f40610f7e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f7757610f77610f7e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212209bceaf5c0128a6fec3ab5a5045fab2c4579ecd7fe44eeb1d6001115ab637dc9964736f6c63430008030033"; - -type MockHistoryTrackerConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockHistoryTrackerConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockHistoryTracker__factory extends ContractFactory { - constructor(...args: MockHistoryTrackerConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockHistoryTracker { - return super.attach(address) as MockHistoryTracker; - } - override connect(signer: Signer): MockHistoryTracker__factory { - return super.connect(signer) as MockHistoryTracker__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockHistoryTrackerInterface { - return new utils.Interface(_abi) as MockHistoryTrackerInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockHistoryTracker { - return new Contract(address, _abi, signerOrProvider) as MockHistoryTracker; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockLockingVault__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockLockingVault__factory.ts deleted file mode 100644 index dbfbfa2e..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockLockingVault__factory.ts +++ /dev/null @@ -1,124 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockLockingVault, - MockLockingVaultInterface, -} from "../../../contracts/mocks/MockLockingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "delegation", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "fundedAccount", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "firstDelegation", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "deposits", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610270806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063eed50a3214610046578063f45346dc146100a6578063fc7e286d146100bb575b600080fd5b61007c6100543660046101a1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100b96100b43660046101c2565b6100e9565b005b6100db6100c93660046101a1565b60006020819052908152604090205481565b60405190815260200161009d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120805484929061011e9084906101fd565b909155505073ffffffffffffffffffffffffffffffffffffffff928316600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915550565b803573ffffffffffffffffffffffffffffffffffffffff8116811461019c57600080fd5b919050565b6000602082840312156101b2578081fd5b6101bb82610178565b9392505050565b6000806000606084860312156101d6578182fd5b6101df84610178565b9250602084013591506101f460408501610178565b90509250925092565b60008219821115610235577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b50019056fea264697066735822122036f5cad091144400ffc5c61b17106673e10b044d7422ccb70c7b2ee7a6d8a5de64736f6c63430008030033"; - -type MockLockingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockLockingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockLockingVault__factory extends ContractFactory { - constructor(...args: MockLockingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockLockingVault { - return super.attach(address) as MockLockingVault; - } - override connect(signer: Signer): MockLockingVault__factory { - return super.connect(signer) as MockLockingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockLockingVaultInterface { - return new utils.Interface(_abi) as MockLockingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockLockingVault { - return new Contract(address, _abi, signerOrProvider) as MockLockingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockTokenLogic__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockTokenLogic__factory.ts deleted file mode 100644 index cec50267..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockTokenLogic__factory.ts +++ /dev/null @@ -1,199 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockTokenLogic, - MockTokenLogicInterface, -} from "../../../contracts/mocks/MockTokenLogic"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "increaseBalance", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "slot", - type: "uint256", - }, - ], - name: "readStorage", - outputs: [ - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "slot", - type: "uint256", - }, - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - name: "writeStorage", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060405161089338038061089383398101604081905261002f916100f9565b60006100616040518060400160405280600581526020016437bbb732b960d91b81525061008160201b6103a21760201c565b905061007a82826100dc60201b61041b1790919060201c565b505061016c565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b9050600081846040516020016100bc929190610127565b60408051601f198184030181529190528051602090910120949350505050565b81546001600160a01b0319166001600160a01b0391909116179055565b60006020828403121561010a578081fd5b81516001600160a01b0381168114610120578182fd5b9392505050565b60008382528251815b8181101561014c57602081860181015185830182015201610130565b8181111561015d5782602083860101525b50919091016020019392505050565b6107188061017b6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635b86f5991161005b5780635b86f599146100c357806370a08231146100d6578063a9059cbb146100e9578063e10af4ad146100fc5761007d565b806318160ddd146100825780632cab83351461009c57806340c10f19146100ae575b600080fd5b61008a61010e565b60405190815260200160405180910390f35b61008a6100aa366004610606565b5490565b6100c16100bc3660046105dd565b610129565b005b6100c16100d13660046105dd565b610274565b61008a6100e43660046105bc565b6102f5565b6100c16100f73660046105dd565b610330565b6100c161010a36600461061e565b9055565b60008061011961045d565b9050610123815490565b91505090565b60006101336104a2565b9050610153815473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640160405180910390fd5b60006101f561045d565b905060006102016104e2565b9050838160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102519190610684565b9091555050815461026c6102658683610684565b849061010a565b505050505050565b600061027e61045d565b9050600061028a6104e2565b9050828160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102da9190610684565b909155505081546102ee6102658583610684565b5050505050565b6000806103006104e2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260209190915260409020549150505b919050565b600061033a6104e2565b3360009081526020829052604081208054929350849290919061035e90849061069c565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526020829052604081208054849290610398908490610684565b9091555050505050565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b9050600081846040516020016103dd92919061063f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116179055565b600061049d6040518060400160405280600b81526020017f746f74616c537570706c79000000000000000000000000000000000000000000815250610522565b905090565b600061049d6040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506103a2565b600061049d6040518060400160405280600881526020017f62616c616e63657300000000000000000000000000000000000000000000000081525061055d565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a3209050600081846040516020016103dd92919061063f565b6000807f57f81c1497fd9382c9a7940a80bdc573c8799f1d06648c835389d4f759c45c3a9050600081846040516020016103dd92919061063f565b803573ffffffffffffffffffffffffffffffffffffffff8116811461032b57600080fd5b6000602082840312156105cd578081fd5b6105d682610598565b9392505050565b600080604083850312156105ef578081fd5b6105f883610598565b946020939093013593505050565b600060208284031215610617578081fd5b5035919050565b60008060408385031215610630578182fd5b50508035926020909101359150565b60008382528251815b8181101561066457602081860181015185830182015201610648565b818111156106755782602083860101525b50919091016020019392505050565b60008219821115610697576106976106b3565b500190565b6000828210156106ae576106ae6106b3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f84504d862c140947cf7a92d0e7c2dbd0e6e82346955319e0090cd3bbcc93c2a64736f6c63430008030033"; - -type MockTokenLogicConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockTokenLogicConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockTokenLogic__factory extends ContractFactory { - constructor(...args: MockTokenLogicConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _owner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(_owner, overrides || {}) as Promise; - } - override getDeployTransaction( - _owner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_owner, overrides || {}); - } - override attach(address: string): MockTokenLogic { - return super.attach(address) as MockTokenLogic; - } - override connect(signer: Signer): MockTokenLogic__factory { - return super.connect(signer) as MockTokenLogic__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockTokenLogicInterface { - return new utils.Interface(_abi) as MockTokenLogicInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockTokenLogic { - return new Contract(address, _abi, signerOrProvider) as MockTokenLogic; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/MockVotingVault__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/MockVotingVault__factory.ts deleted file mode 100644 index 5d81020b..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/MockVotingVault__factory.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockVotingVault, - MockVotingVaultInterface, -} from "../../../contracts/mocks/MockVotingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_user", - type: "address", - }, - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "setVotingPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "votingPower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063274b91a914610046578063c07473f61461007f578063e91f3235146100b1575b600080fd5b61007d610054366004610134565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260208190526040902055565b005b61009f61008d366004610113565b60006020819052908152604090205481565b60405190815260200160405180910390f35b61009f6100bf36600461015d565b50505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010e57600080fd5b919050565b600060208284031215610124578081fd5b61012d826100ea565b9392505050565b60008060408385031215610146578081fd5b61014f836100ea565b946020939093013593505050565b60008060008060608587031215610172578182fd5b61017b856100ea565b935060208501359250604085013567ffffffffffffffff8082111561019e578384fd5b818701915087601f8301126101b1578384fd5b8135818111156101bf578485fd5b8860208285010111156101d0578485fd5b9598949750506020019450505056fea26469706673582212202516ed069cd571289426ddea907fd4b2a9d3029ec6984cd26b617edec322691664736f6c63430008030033"; - -type MockVotingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockVotingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class MockVotingVault__factory extends ContractFactory { - constructor(...args: MockVotingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockVotingVault { - return super.attach(address) as MockVotingVault; - } - override connect(signer: Signer): MockVotingVault__factory { - return super.connect(signer) as MockVotingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockVotingVaultInterface { - return new utils.Interface(_abi) as MockVotingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): MockVotingVault { - return new Contract(address, _abi, signerOrProvider) as MockVotingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/Reverter__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/Reverter__factory.ts deleted file mode 100644 index a5b6cc70..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/Reverter__factory.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Reverter, - ReverterInterface, -} from "../../../contracts/mocks/Reverter"; - -const _abi = [ - { - inputs: [], - name: "fail", - outputs: [], - stateMutability: "pure", - type: "function", - }, -]; - -const _bytecode = - "0x6080604052348015600f57600080fd5b50606b80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063a9cc471814602d575b600080fd5b60336028565b00fea2646970667358221220e86cd5c1c53d8c524aeed297debfcea6c0bc28b83b76d7703c1f3c78aa6cd71a64736f6c63430008030033"; - -type ReverterConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ReverterConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class Reverter__factory extends ContractFactory { - constructor(...args: ReverterConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Reverter { - return super.attach(address) as Reverter; - } - override connect(signer: Signer): Reverter__factory { - return super.connect(signer) as Reverter__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ReverterInterface { - return new utils.Interface(_abi) as ReverterInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): Reverter { - return new Contract(address, _abi, signerOrProvider) as Reverter; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage__factory.ts deleted file mode 100644 index 620c7268..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage__factory.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ReadAndWriteAnyStorage, - ReadAndWriteAnyStorageInterface, -} from "../../../../contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "slot", - type: "uint256", - }, - ], - name: "readStorage", - outputs: [ - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "slot", - type: "uint256", - }, - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - name: "writeStorage", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060d68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80632cab8335146037578063e10af4ad146058575b600080fd5b604660423660046069565b5490565b60405190815260200160405180910390f35b606760633660046080565b9055565b005b6000602082840312156079578081fd5b5035919050565b600080604083850312156091578081fd5b5050803592602090910135915056fea2646970667358221220871b0b6ba3027b11273872d38a2f32ce3c0336068c4e5a2b654f37587c2f763764736f6c63430008030033"; - -type ReadAndWriteAnyStorageConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ReadAndWriteAnyStorageConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class ReadAndWriteAnyStorage__factory extends ContractFactory { - constructor(...args: ReadAndWriteAnyStorageConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): ReadAndWriteAnyStorage { - return super.attach(address) as ReadAndWriteAnyStorage; - } - override connect(signer: Signer): ReadAndWriteAnyStorage__factory { - return super.connect(signer) as ReadAndWriteAnyStorage__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ReadAndWriteAnyStorageInterface { - return new utils.Interface(_abi) as ReadAndWriteAnyStorageInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): ReadAndWriteAnyStorage { - return new Contract( - address, - _abi, - signerOrProvider, - ) as ReadAndWriteAnyStorage; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/StorageRead.sol/index.ts b/packages/council-typechain/src/factories/contracts/mocks/StorageRead.sol/index.ts deleted file mode 100644 index 5d0577a8..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/StorageRead.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { ReadAndWriteAnyStorage__factory } from "./ReadAndWriteAnyStorage__factory"; diff --git a/packages/council-typechain/src/factories/contracts/mocks/TestCoreVoting__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/TestCoreVoting__factory.ts deleted file mode 100644 index 9af30cc8..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/TestCoreVoting__factory.ts +++ /dev/null @@ -1,805 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - TestCoreVoting, - TestCoreVotingInterface, -} from "../../../contracts/mocks/TestCoreVoting"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_timelock", - type: "address", - }, - { - internalType: "uint256", - name: "_baseQuorum", - type: "uint256", - }, - { - internalType: "uint256", - name: "_minProposalPower", - type: "uint256", - }, - { - internalType: "address", - name: "_gsc", - type: "address", - }, - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "created", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "execution", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "expiration", - type: "uint256", - }, - ], - name: "ProposalCreated", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - ], - name: "ProposalExecuted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "voter", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - components: [ - { - internalType: "uint128", - name: "votingPower", - type: "uint128", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "castBallot", - type: "uint8", - }, - ], - indexed: false, - internalType: "struct CoreVoting.Vote", - name: "vote", - type: "tuple", - }, - ], - name: "Voted", - type: "event", - }, - { - inputs: [], - name: "DAY_IN_BLOCKS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "approvedVaults", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "baseQuorum", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_extraVoteTime", - type: "uint256", - }, - ], - name: "changeExtraVotingTime", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "vault", - type: "address", - }, - { - internalType: "bool", - name: "isValid", - type: "bool", - }, - ], - name: "changeVaultStatus", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "dummyValue", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - internalType: "address[]", - name: "targets", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "calldatas", - type: "bytes[]", - }, - ], - name: "execute", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "extraVoteTime", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_target", - type: "address", - }, - { - internalType: "bytes4", - name: "_selector", - type: "bytes4", - }, - ], - name: "getCustomQuorum", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_proposalID", - type: "uint256", - }, - ], - name: "getProposalData", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - { - internalType: "uint128", - name: "", - type: "uint128", - }, - { - internalType: "uint128", - name: "", - type: "uint128", - }, - { - internalType: "uint128", - name: "", - type: "uint128", - }, - { - internalType: "uint128[3]", - name: "", - type: "uint128[3]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - ], - name: "getProposalVotingPower", - outputs: [ - { - internalType: "uint128[3]", - name: "", - type: "uint128[3]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_vault", - type: "address", - }, - ], - name: "getVaultStatus", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockDuration", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "minProposalPower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "extraVaultData", - type: "bytes[]", - }, - { - internalType: "address[]", - name: "targets", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "calldatas", - type: "bytes[]", - }, - { - internalType: "uint256", - name: "lastCall", - type: "uint256", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "ballot", - type: "uint8", - }, - ], - name: "proposal", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "proposalCount", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "proposals", - outputs: [ - { - internalType: "bytes32", - name: "proposalHash", - type: "bytes32", - }, - { - internalType: "uint128", - name: "created", - type: "uint128", - }, - { - internalType: "uint128", - name: "unlock", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "quorum", - type: "uint128", - }, - { - internalType: "uint128", - name: "lastCall", - type: "uint128", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes4", - name: "functionSelector", - type: "bytes4", - }, - ], - name: "quorums", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes4", - name: "selector", - type: "bytes4", - }, - { - internalType: "uint256", - name: "quorum", - type: "uint256", - }, - ], - name: "setCustomQuorum", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "quorum", - type: "uint256", - }, - ], - name: "setDefaultQuorum", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_lockDuration", - type: "uint256", - }, - ], - name: "setLockDuration", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_minProposalPower", - type: "uint256", - }, - ], - name: "setMinProposalPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_newValue", - type: "uint256", - }, - ], - name: "updateDummy", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "extraVaultData", - type: "bytes[]", - }, - { - internalType: "uint256", - name: "proposalId", - type: "uint256", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "ballot", - type: "uint8", - }, - ], - name: "vote", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "votes", - outputs: [ - { - internalType: "uint128", - name: "votingPower", - type: "uint128", - }, - { - internalType: "enum CoreVoting.Ballot", - name: "castBallot", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x6080604052620000136119606003620002e0565b600455620000256119606005620002e0565b6005553480156200003557600080fd5b5060405162002e3f38038062002e3f8339810160408190526200005891620001d0565b600080546001600160a01b0319163317815560038590556006849055859085908590859085905b8151811015620000f757600160096000848481518110620000b057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000ee8162000302565b9150506200007f565b5062000103856200013f565b6200012f826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b505050505050505050506200034c565b6000546001600160a01b03163314620001915760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001cb57600080fd5b919050565b600080600080600060a08688031215620001e8578081fd5b620001f386620001b3565b94506020808701519450604087015193506200021260608801620001b3565b60808801519093506001600160401b03808211156200022f578384fd5b818901915089601f83011262000243578384fd5b81518181111562000258576200025862000336565b8060051b604051601f19603f8301168101818110858211171562000280576200028062000336565b604052828152858101935084860182860187018e10156200029f578788fd5b8795505b83861015620002cc57620002b781620001b3565b855260019590950194938601938601620002a3565b508096505050505050509295509295909350565b6000816000190483118215151615620002fd57620002fd62000320565b500290565b600060001982141562000319576200031962000320565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612ae3806200035c6000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c80637d5709eb1161010f578063bd9c75a5116100a2578063d4b8756711610071578063d4b8756714610546578063da35c6641461054f578063f131e5eb14610558578063fe9fbb8014610561576101e4565b8063bd9c75a5146104ed578063c52ea3db14610500578063ca5f9d0614610520578063d1b6762714610533576101e4565b8063aa35fb51116100de578063aa35fb5114610481578063af7a060c14610494578063b6a5d7de146104b7578063b9181611146104ca576101e4565b80637d5709eb146103bc5780638da5cb5b146103cf5780639f2524ee14610414578063a4c9507714610478576101e4565b806327c97fa5116101875780634eb665af116101565780634eb665af146103695780636e7685301461037c57806370469c26146103a0578063771a5323146103a9576101e4565b806327c97fa51461031d57806333968c6614610330578063341a7b42146103435780634392b99c14610356576101e4565b806313af4035116101c357806313af4035146102cb57806315126a3d146102de578063180d97c1146102f15780631c39c96c14610314576101e4565b806214d11d146101e9578063013cf08b146101fe57806304554443146102b4575b600080fd5b6101fc6101f736600461249a565b61059a565b005b61026861020c36600461249a565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b6102bd60045481565b6040519081526020016102ab565b6101fc6102d936600461225d565b61060b565b6101fc6102ec3660046124ca565b6106b9565b6103046102ff36600461225d565b610c63565b60405190151581526020016102ab565b6102bd60035481565b6101fc61032b36600461225d565b610c92565b6102bd61033e3660046122b1565b610d27565b6101fc610351366004612277565b610d3c565b6101fc6103643660046122e3565b610ddb565b6101fc61037736600461249a565b610e98565b61038f61038a36600461249a565b610f04565b6040516102ab959493929190612820565b6102bd600c5481565b6102bd6103b73660046122b1565b610fe9565b6101fc6103ca36600461249a565b611059565b6000546103ef9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ab565b61046a61042236600461231e565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b6040516102ab929190612896565b6102bd60055481565b6102bd61048f36600461241f565b6110c5565b6103046104a236600461225d565b60096020526000908152604090205460ff1681565b6101fc6104c536600461225d565b6117d3565b6103046104d836600461225d565b60016020526000908152604090205460ff1681565b6101fc6104fb366004612347565b611875565b61051361050e36600461249a565b611e5f565b6040516102ab9190612812565b6101fc61052e36600461249a565b600c55565b6101fc61054136600461249a565b611eeb565b6102bd60065481565b6102bd60075481565b6102bd61196081565b61030461056f36600461225d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106065760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106725760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561070c5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e63790000000000000000000000000000000000000000000060448201526064016105fd565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107a25760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b6564000000000000000000000000000000000000000060448201526064016105fd565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166108265760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c792065786563757465640000000000000000000000000060448201526064016105fd565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106108985760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d70000000000000000060448201526064016105fd565b6000838152600a60209081526040918290205491516108bb918591859101612763565b604051602081830303815290604052805190602001201461091e5760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d617463680000000000000000000000000000000000000060448201526064016105fd565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411610943575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1695509093506109f2925061297b565b6109fc919061297b565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff16119050818015610a555750805b610aa15760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74206578656375746500000000000000000000000000000000000060448201526064016105fd565b60005b8551811015610bc8576000868281518110610acf57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610b0d57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610b2291906125e7565b6000604051808303816000865af19150503d8060008114610b5f576040519150601f19603f3d011682016040523d82523d6000602084013e610b64565b606091505b5050905080610bb55760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c656400000000000000000000000000000000000000000060448201526064016105fd565b5080610bc081612a48565b915050610aa4565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604090205460ff165b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf95760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b6000610d338383610fe9565b90505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610da35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e425760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eff5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600455565b600080600080610f12611f80565b6000868152600a60205260408082208054600182015460028301548451606081019586905292956fffffffffffffffffffffffffffffffff8084169670010000000000000000000000000000000094859004821696949093041693600393840193909284928390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411610f7b579050505050505090509450945094509450945091939590929450565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000851684529091528120548061104b575050600354610d36565b9050610d36565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c05760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff166111355760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f7420657869737400000000000000000060448201526064016105fd565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff164311156111a85760405162461bcd60e51b815260206004820152600760248201527f457870697265640000000000000000000000000000000000000000000000000060448201526064016105fd565b6000805b865181101561147c5760006111c28260016129af565b90505b87518110156112aa578781815181106111ee57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061122c57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156112985760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c74000000000000000000000000000000000060448201526064016105fd565b806112a281612a48565b9150506111c5565b50600960008883815181106112cf57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661134f5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c740000000000000000000000000000000060448201526064016105fd565b86818151811061136f57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff168985815181106113e657634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b815260040161140c93929190612603565b602060405180830381600087803b15801561142657600080fd5b505af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145e91906124b2565b611468908361297b565b91508061147481612a48565b9150506111ac565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156115af57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561152557634e487b7160e01b600052602160045260246000fd5b6003811061154357634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff1661157891906129c7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff1681526020018460028111156115f257634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156116aa57634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a6020526040902081906003018460028111156116e457634e487b7160e01b600052602160045260246000fd5b6003811061170257634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611737919061297b565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916117b09190612866565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461183a5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b6118728173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146118c45760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d61746368000000000000000000000060448201526064016105fd565b846119115760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c00000000000000000000000000000000000060448201526064016105fd565b60008686868660405160200161192a9493929190612653565b60408051601f19818403018152919052805160209091012090506000805b87811015611a895760006119c188888481811061197557634e487b7160e01b600052603260045260246000fd5b905060200281019061198791906128c3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5792505050565b90506000600860008c8c868181106119e957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119fe919061225d565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff000000000000000000000000000000000000000000000000000000008616825290925290205490508015611a625780611a66565b6003545b905083811115611a74578093505b50508080611a8190612a48565b915050611948565b50600554600454611a9a90436129af565b611aa491906129af565b8411611af25760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e647300000000000060448201526064016105fd565b6040518060e00160405280838152602001600143611b1091906129f8565b6fffffffffffffffffffffffffffffffff16815260200160045443611b3591906129af565b6fffffffffffffffffffffffffffffffff16815260200160055460045443611b5d91906129af565b611b6791906129af565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611c29576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611bd45790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611cb49060038084019190611f9e565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611d458d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d3c92508e91508f9050612a0f565b600754876110c5565b90506000600654831115611d5b57600654611d5d565b825b3360009081526001602052604090205490915060ff16611dc75780821015611dc75760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f7765720000000000000060448201526064016105fd565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611dfa91906129af565b600554600454611e0a90436129af565b611e1491906129af565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611e4a91906129af565b90915550505050505050505050505050505050565b611e67611f80565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611e8c575094979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f525760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016105fd565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b60405180606001604052806003906020820280368337509192915050565b60028301918390821561204e5791602002820160005b8382111561201057835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611fb4565b801561204c5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302612010565b505b5061205a92915061205e565b5090565b5b8082111561205a576000815560010161205f565b600061208661208184612957565b612926565b83815290506020808201908360005b868110156121155781358601601f89818301126120b157600080fd5b813567ffffffffffffffff8111156120cb576120cb612a97565b6120dc86601f198484011601612926565b91508082528a868285010111156120f257600080fd5b808684018784013760009082018601528552509282019290820190600101612095565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c8d57600080fd5b60008083601f840112612155578182fd5b50813567ffffffffffffffff81111561216c578182fd5b6020830191508360208260051b850101111561218757600080fd5b9250929050565b600082601f83011261219e578081fd5b813560206121ae61208183612957565b80838252828201915082860187848660051b89010111156121cd578586fd5b855b858110156121f2576121e082612120565b845292840192908401906001016121cf565b5090979650505050505050565b600082601f83011261220f578081fd5b610d3383833560208501612073565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c8d57600080fd5b803560038110610c8d57600080fd5b60006020828403121561226e578081fd5b610d3382612120565b60008060408385031215612289578081fd5b61229283612120565b9150602083013580151581146122a6578182fd5b809150509250929050565b600080604083850312156122c3578182fd5b6122cc83612120565b91506122da6020840161221e565b90509250929050565b6000806000606084860312156122f7578081fd5b61230084612120565b925061230e6020850161221e565b9150604084013590509250925092565b60008060408385031215612330578182fd5b61233983612120565b946020939093013593505050565b60008060008060008060008060008060c08b8d031215612365578586fd5b8a3567ffffffffffffffff8082111561237c578788fd5b6123888e838f01612144565b909c509a5060208d01359150808211156123a0578788fd5b6123ac8e838f01612144565b909a50985060408d01359150808211156123c4578788fd5b6123d08e838f01612144565b909850965060608d01359150808211156123e8578586fd5b506123f58d828e01612144565b90955093505060808b0135915061240e60a08c0161224e565b90509295989b9194979a5092959850565b60008060008060808587031215612434578384fd5b843567ffffffffffffffff8082111561244b578586fd5b6124578883890161218e565b9550602087013591508082111561246c578485fd5b50612479878288016121ff565b9350506040850135915061248f6060860161224e565b905092959194509250565b6000602082840312156124ab578081fd5b5035919050565b6000602082840312156124c3578081fd5b5051919050565b6000806000606084860312156124de578081fd5b83359250602084013567ffffffffffffffff808211156124fc578283fd5b6125088783880161218e565b9350604086013591508082111561251d578283fd5b5061252a868287016121ff565b9150509250925092565b8060005b60038110156125695781516fffffffffffffffffffffffffffffffff16845260209384019390910190600101612538565b50505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526125b1816020860160208601612a1c565b601f01601f19169290920160200192915050565b600381106125e357634e487b7160e01b600052602160045260246000fd5b9052565b600082516125f9818460208701612a1c565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261264a6060830184612599565b95945050505050565b6040808252810184905260008560608301825b878110156126aa576126998261267b85612120565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b602093909301929150600101612666565b506020915083810382850152808582528282019050828660051b83010187855b8881101561275357601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261270c578788fd5b8a01803567ffffffffffffffff811115612724578889fd5b8036038c1315612732578889fd5b61273f85828a850161256f565b9588019594505050908501906001016126ca565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156127b457815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612780565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561280357601f198684030185526127f1838351612599565b948701949250908601906001016127d5565b50909998505050505050505050565b60608101610d368284612534565b8581526fffffffffffffffffffffffffffffffff858116602083015284811660408301528316606082015260e0810161285c6080830184612534565b9695505050505050565b81546fffffffffffffffffffffffffffffffff81168252604082019061105260208401608083901c60ff166125c5565b6fffffffffffffffffffffffffffffffff83168152604081016128bc60208301846125c5565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128f7578283fd5b83018035915067ffffffffffffffff821115612911578283fd5b60200191503681900382131561218757600080fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561294f5761294f612a97565b604052919050565b600067ffffffffffffffff82111561297157612971612a97565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156129a6576129a6612a81565b01949350505050565b600082198211156129c2576129c2612a81565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156129f0576129f0612a81565b039392505050565b600082821015612a0a57612a0a612a81565b500390565b6000610d33368484612073565b60005b83811015612a37578181015183820152602001612a1f565b838111156125695750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a7a57612a7a612a81565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220bee20769a8dff9c5c02d39aecd954e520db74097c2812048fdbbfe77ddd358d064736f6c63430008030033"; - -type TestCoreVotingConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestCoreVotingConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class TestCoreVoting__factory extends ContractFactory { - constructor(...args: TestCoreVotingConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _timelock: PromiseOrValue, - _baseQuorum: PromiseOrValue, - _minProposalPower: PromiseOrValue, - _gsc: PromiseOrValue, - votingVaults: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _timelock, - _baseQuorum, - _minProposalPower, - _gsc, - votingVaults, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _timelock: PromiseOrValue, - _baseQuorum: PromiseOrValue, - _minProposalPower: PromiseOrValue, - _gsc: PromiseOrValue, - votingVaults: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _timelock, - _baseQuorum, - _minProposalPower, - _gsc, - votingVaults, - overrides || {}, - ); - } - override attach(address: string): TestCoreVoting { - return super.attach(address) as TestCoreVoting; - } - override connect(signer: Signer): TestCoreVoting__factory { - return super.connect(signer) as TestCoreVoting__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestCoreVotingInterface { - return new utils.Interface(_abi) as TestCoreVotingInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): TestCoreVoting { - return new Contract(address, _abi, signerOrProvider) as TestCoreVoting; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/TestTreasury__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/TestTreasury__factory.ts deleted file mode 100644 index a1058525..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/TestTreasury__factory.ts +++ /dev/null @@ -1,260 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - TestTreasury, - TestTreasuryInterface, -} from "../../../contracts/mocks/TestTreasury"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_governance", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "_token", - type: "address", - }, - { - internalType: "address", - name: "_spender", - type: "address", - }, - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "dummy", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_target", - type: "address", - }, - { - internalType: "bytes", - name: "_callData", - type: "bytes", - }, - ], - name: "genericCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - { - internalType: "address", - name: "_recipient", - type: "address", - }, - ], - name: "sendFunds", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_newDummy", - type: "uint256", - }, - ], - name: "updateDummy", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - stateMutability: "payable", - type: "receive", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50604051610bc8380380610bc883398101604081905261002f916100c5565b600080546001600160a01b031916331790558061004b81610052565b50506100f3565b6000546001600160a01b031633146100a35760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156100d6578081fd5b81516001600160a01b03811681146100ec578182fd5b9392505050565b610ac6806101026000396000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063ca5f9d061161004e578063ca5f9d0614610229578063e1f21c6714610249578063fe9fbb8014610269576100c7565b80638da5cb5b14610177578063b6a5d7de146101c9578063b9181611146101e9576100c7565b806332e43a11116100a557806332e43a111461010e5780634650c308146101375780638522d1b214610157576100c7565b806313af4035146100cc57806327c97fa5146100ee576100c7565b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e7366004610933565b610289565b005b3480156100fa57600080fd5b506100ec610109366004610933565b610356565b34801561011a57600080fd5b5061012460025481565b6040519081526020015b60405180910390f35b34801561014357600080fd5b506100ec61015236600461098f565b610423565b34801561016357600080fd5b506100ec610172366004610a0d565b610580565b34801561018357600080fd5b506000546101a49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b3480156101d557600080fd5b506100ec6101e4366004610933565b61072a565b3480156101f557600080fd5b50610219610204366004610933565b60016020526000908152604090205460ff1681565b604051901515815260200161012e565b34801561023557600080fd5b506100ec610244366004610a68565b600255565b34801561025557600080fd5b506100ec610264366004610954565b610804565b34801561027557600080fd5b50610219610284366004610933565b6108e0565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104cd929190610a80565b6000604051808303816000865af19150503d806000811461050a576040519150601f19603f3d011682016040523d82523d6000602084013e61050f565b606091505b505090508061057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610306565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610601576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561067c5760405173ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050158015610676573d6000803e3d6000fd5b50610725565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044015b602060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190610a48565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b6108018173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610306565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016106d3565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461090a57600080fd5b600060208284031215610944578081fd5b61094d8261090f565b9392505050565b600080600060608486031215610968578182fd5b6109718461090f565b925061097f6020850161090f565b9150604084013590509250925092565b6000806000604084860312156109a3578283fd5b6109ac8461090f565b9250602084013567ffffffffffffffff808211156109c8578384fd5b818601915086601f8301126109db578384fd5b8135818111156109e9578485fd5b8760208285010111156109fa578485fd5b6020830194508093505050509250925092565b600080600060608486031215610a21578283fd5b610a2a8461090f565b925060208401359150610a3f6040850161090f565b90509250925092565b600060208284031215610a59578081fd5b8151801515811461094d578182fd5b600060208284031215610a79578081fd5b5035919050565b600082848337910190815291905056fea2646970667358221220f5cd036d7d1571989579121d0d777d4fc772767caf693e3aaada371ac03a16e664736f6c63430008030033"; - -type TestTreasuryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestTreasuryConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class TestTreasury__factory extends ContractFactory { - constructor(...args: TestTreasuryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _governance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy(_governance, overrides || {}) as Promise; - } - override getDeployTransaction( - _governance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_governance, overrides || {}); - } - override attach(address: string): TestTreasury { - return super.attach(address) as TestTreasury; - } - override connect(signer: Signer): TestTreasury__factory { - return super.connect(signer) as TestTreasury__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestTreasuryInterface { - return new utils.Interface(_abi) as TestTreasuryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): TestTreasury { - return new Contract(address, _abi, signerOrProvider) as TestTreasury; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/TestVestingVault__factory.ts b/packages/council-typechain/src/factories/contracts/mocks/TestVestingVault__factory.ts deleted file mode 100644 index e3949d73..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/TestVestingVault__factory.ts +++ /dev/null @@ -1,490 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - TestVestingVault, - TestVestingVaultInterface, -} from "../../../contracts/mocks/TestVestingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_stale", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [], - name: "acceptGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - { - internalType: "uint128", - name: "_amount", - type: "uint128", - }, - { - internalType: "uint128", - name: "_startTime", - type: "uint128", - }, - { - internalType: "uint128", - name: "_expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "_cliff", - type: "uint128", - }, - { - internalType: "address", - name: "_delegatee", - type: "address", - }, - ], - name: "addGrantAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_multiplier", - type: "uint256", - }, - ], - name: "changeUnvestedMultiplier", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_to", - type: "address", - }, - ], - name: "delegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "getGrant", - outputs: [ - { - components: [ - { - internalType: "uint128", - name: "allocation", - type: "uint128", - }, - { - internalType: "uint128", - name: "withdrawn", - type: "uint128", - }, - { - internalType: "uint128", - name: "created", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "cliff", - type: "uint128", - }, - { - internalType: "uint128", - name: "latestVotingPower", - type: "uint128", - }, - { - internalType: "address", - name: "delegatee", - type: "address", - }, - { - internalType: "uint256[2]", - name: "range", - type: "uint256[2]", - }, - ], - internalType: "struct VestingVaultStorage.Grant", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "manager", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "removeGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - ], - name: "setManager", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "setTimelock", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "timelock", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "unassigned", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "unvestedMultiplier", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "updateVotingPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - { - internalType: "address", - name: "_recipient", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162002ea238038062002ea2833981016040819052620000349162000050565b60609190911b6001600160601b03191660805260a0526200008a565b6000806040838503121562000063578182fd5b82516001600160a01b03811681146200007a578283fd5b6020939093015192949293505050565b60805160601c60a051612dbe620000e4600039600081816102a00152611bdc015260008181610308015281816104470152818161074001528181610a5f01528181610b1f01528181610f5601526118ea0152612dbe6000f3fe608060405234801561001057600080fd5b50600436106101765760003560e01c8063747c1255116100d8578063c2c94b881161008c578063e7d2028311610066578063e7d20283146102dd578063e91f3235146102f0578063fc0c546a1461030357610176565b8063c2c94b881461029b578063d0ebdbe7146102c2578063d33219b4146102d557610176565b8063bdacb303116100bd578063bdacb30314610260578063bf31dbf414610273578063c1006f4f1461029357610176565b8063747c12551461023a578063b6b55f251461024d57610176565b8063485cc9551161012f5780635c19a95c116101145780635c19a95c146101fe5780635f389a9d1461021157806373afce6e1461022457610176565b8063485cc955146101e35780634e71d92d146101f657610176565b8063267406cb11610160578063267406cb146101a35780633e0bdaf7146101b6578063481c6a75146101be57610176565b8062f714ce1461017b5780632168034d14610190575b600080fd5b61018e6101893660046129e2565b61032a565b005b61018e61019e3660046129ca565b6104c9565b61018e6101b1366004612840565b6105c3565b61018e610987565b6101c6610c34565b6040516001600160a01b0390911681526020015b60405180910390f35b61018e6101f136600461285a565b610c44565b61018e610e4a565b61018e61020c366004612840565b61109e565b61018e61021f36600461288c565b61139b565b61022c6117eb565b6040519081526020016101da565b61018e610248366004612840565b6117fb565b61018e61025b3660046129ca565b61182a565b61018e61026e366004612840565b61196e565b610286610281366004612840565b611a0f565b6040516101da9190612a6c565b61022c611aee565b61022c7f000000000000000000000000000000000000000000000000000000000000000081565b61018e6102d0366004612840565b611af8565b6101c6611b99565b61022c6102eb3660046128ff565b611ba3565b61022c6102fe366004612928565b611bc5565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b610332611c14565b516001600160a01b0316331461038f5760405162461bcd60e51b815260206004820152600860248201527f216d616e6167657200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610399611c7e565b905082816000015410156103ef5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610386565b828160000160008282546104039190612d13565b90915550506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561048b57600080fd5b505af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c391906129aa565b50505050565b6104d1611cc3565b516001600160a01b031633146105295760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b606481111561057a5760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610386565b6105c06105bb6040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b829055565b50565b6105cb611c14565b516001600160a01b031633146106235760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b600061062d611d89565b6001600160a01b0383811660009081526020928352604080822081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116978301979097526001830154808816838601528190048716606083015260028084015480891660808501529190910490961660a0820152600382015490941660c085015281518083019283905290955091936106fe9392869260e0850192600485019182845b8154815260200190600101908083116106dd57505050505081525050611dc9565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be91906129aa565b5060006107c9611c7e565b83549091506000906107f990849070010000000000000000000000000000000090046001600160801b0316612b1f565b845461080e91906001600160801b0316612d13565b9050808260000160008282546108249190612b1f565b9091555060009050610834611ead565b60038601549091506000906108539083906001600160a01b0316611f00565b6003870154600288015491925061089f916001600160a01b03909116906108979070010000000000000000000000000000000090046001600160801b031684612d13565b849190611f8b565b600386015460028701546001600160a01b038981169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906109029070010000000000000000000000000000000090046001600160801b0316600019612b71565b60405190815260200160405180910390a361091b611d89565b6001600160a01b0397909716600090815260209790975250506040852085815560018101869055600281018690556003810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600481018690556005019490945550505050565b6000610991611d89565b3360009081526020919091526040812080549092506109cf906001600160801b03700100000000000000000000000000000000820481169116612ceb565b6001600160801b0316905060008111610a2a5760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610386565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906129aa565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba391906129aa565b506000610bae61209a565b516040805180820190915281815290915060208101610bcd8484612b1f565b9052610bdf9060048501906002612756565b50610c2f610c216040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611d10565b610c2b8484612b1f565b9055565b505050565b6000610c3e611c14565b51905090565b610c826040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611d10565b5415610cd05760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610386565b610d17610d116040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611d10565b60019055565b610d8b610d586040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b610dff610dcc6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b610e46610e406040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b60649055565b5050565b6000610e54611d89565b3360009081526020918252604080822081516101008101835281546001600160801b03808216835270010000000000000000000000000000000091829004811683880152600184015480821684870152829004811660608401526002808501548083166080860152929092041660a083015260038301546001600160a01b031660c083015283518085019485905260048401805482529397509495610f1e959294889460e0870194939092909190600587019085018083116106dd57505050505081525050611dc9565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda91906129aa565b5081548190839060109061100c90849070010000000000000000000000000000000090046001600160801b0316612af4565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008260040160016002811061106f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01541115611094578060048301600101600082825461108e9190612d13565b90915550505b610e463383612136565b60006110a8611d89565b3360009081526020919091526040902060038101549091506001600160a01b038381169116141561111b5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610386565b6000611125611ead565b60038301549091506000906111449083906001600160a01b0316611f00565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c083015282518084019384905293945060009361120193889260e08501929160048501919082845b8154815260200190600101908083116111e05750505050508152505061232d565b6003850154600286015491925061124d916001600160a01b03909116906112459070010000000000000000000000000000000090046001600160801b031685612d13565b859190611f8b565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906112ae9070010000000000000000000000000000000090046001600160801b0316600019612b71565b60405190815260200160405180910390a360006112cb8487611f00565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e08460405161131291815260200190565b60405180910390a3611330866113288484612b1f565b869190611f8b565b506002840180546001600160801b03928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b6113a3611c14565b516001600160a01b031633146113fb5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b826001600160801b0316826001600160801b03161115801561142f5750826001600160801b0316846001600160801b031611155b61147b5760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610386565b6001600160801b03841661148d574393505b6000611497611c7e565b905060006114a361239e565b9050866001600160801b0316826000015410156115025760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610386565b600061150c611d89565b6001600160a01b038a1660009081526020919091526040902080549091506001600160801b0316156115805760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610386565b6001600160a01b038416156115955783611597565b885b93506000606483600001518a6115ad9190612c29565b6115b79190612b37565b90506040518061010001604052808a6001600160801b0316815260200160006001600160801b03168152602001896001600160801b03168152602001886001600160801b03168152602001876001600160801b03168152602001826001600160801b03168152602001866001600160a01b031681526020016040518060400160405280600081526020016000815250815250611651611d89565b6001600160a01b038c8116600090815260209283526040908190208451938501516001600160801b0394851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e083015161171691600484019190612756565b50905050886001600160801b03168460000160008282546117379190612d13565b9091555060009050611747611ead565b60038401549091506000906117669083906001600160a01b0316611f00565b600385015490915061178e906001600160a01b03166108976001600160801b03861684612b1f565b60038401546040516001600160801b03851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b60006117f5611c7e565b54905090565b6000611805611d89565b6001600160a01b0383166000908152602091909152604090209050610e468282612136565b611832611c14565b516001600160a01b0316331461188a5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610386565b6000611894611c7e565b9050818160000160008282546118aa9190612b1f565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2f91906129aa565b611976611cc3565b516001600160a01b031633146119ce5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b6105c0610dcc6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b611a17612794565b611a1f611d89565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b815481526020019060010190808311611aca5750505050508152505090505b919050565b6000610c3e61239e565b611b00611cc3565b516001600160a01b03163314611b585760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610386565b6105c0610dcc6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b6000610c3e611cc3565b600080611bae611ead565b9050611bbb8185856123eb565b9150505b92915050565b600080611bd0611ead565b9050611c0a8686611c017f000000000000000000000000000000000000000000000000000000000000000043612d13565b84929190612444565b9695505050505050565b604080516020810190915260008152611c616040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120fb565b604080516020810190915290546001600160a01b03168152905090565b6000611cbe6040518060400160405280600a81526020017f756e61737369676e656400000000000000000000000000000000000000000000815250611d10565b905090565b604080516020810190915260008152611c616040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120fb565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320905060008184604051602001611d4b929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6000611cbe6040518060400160405280600681526020017f6772616e747300000000000000000000000000000000000000000000000000008152506124b2565b600081608001516001600160801b0316431080611df2575081604001516001600160801b031643105b15611dff57506000611ae9565b81606001516001600160801b03164310611e345760208201518251611e249190612ceb565b6001600160801b03169050611ae9565b600082604001518360600151611e4a9190612ceb565b6001600160801b031683604001516001600160801b031643611e6c9190612d13565b8451611e8191906001600160801b0316612c58565b611e8b9190612b5d565b905082602001516001600160801b031681611ea69190612d13565b9392505050565b604080518082019091526060815260006020820152611cbe6040518060400160405280600b81526020017f766f74696e67506f7765720000000000000000000000000000000000000000008152506124ed565b600080611f0e846020015190565b6001600160a01b03841660009081526020919091526040902080549091506001600160801b031680611f4557600092505050611bbf565b6000611f8083611f56600185612d13565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115611ff35760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610386565b6000612000846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916001600160801b039091169081156120525761204e86611f56600185612d13565b5090505b814382141561206957612066600184612d13565b90505b848160018901015543821461208d5761208d8785612088866001612b1f565b612526565b5050505050505050505050565b6040805160208101909152600081526120e76040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611d10565b604080516020810190915290548152905090565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b905060008184604051602001611d4b929190612a27565b6000612140611ead565b600383015490915060009061215f9083906001600160a01b0316611f00565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c0830152825180840190935292935060009261222092879160e08401919060048401908282826020028201918154815260200190600101908083116111e05750505050508152505061232d565b60028501549091506000906122529070010000000000000000000000000000000090046001600160801b031683612c77565b9050806122625750505050610e46565b600081131561228c576003850154612287906001600160a01b03166113288386612b1f565b6122b4565b60038501546122b4906001600160a01b03166122aa83600019612b71565b6113289086612d13565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546001600160801b0392831670010000000000000000000000000000000002921691909117905550505050565b60008061233983611dc9565b9050600083602001516001600160801b0316826123569190612b1f565b845161236b91906001600160801b0316612d13565b9050606461237761239e565b516123829083612c58565b61238c9190612b5d565b6123969083612b1f565b949350505050565b6040805160208101909152600081526120e76040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611d10565b6000806123f9856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916001600160801b03909116906124368488838686612546565b9a9950505050505050505050565b600080612452866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916001600160801b039091169080612490858a8a8787612546565b9150915083821115612436576124a78483876126eb565b612436858385612526565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c905060008184604051602001611d4b929190612a27565b604080518082019091526060815260006020820152600061250d8361271b565b6040805180820190915293845260208401525090919050565b80821061253257600080fd5b6001600160801b031660809190911b179055565b600080826125965760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610386565b858511156125a357600080fd5b8284106125af57600080fd5b60006125bc600185612d13565b90508460005b82821461266057600060026125d78585612b1f565b6125e2906001612b1f565b6125ec9190612b5d565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b82141561262e579296509194506126e19350505050565b8b82101561264a578a821015612642578293505b829450612658565b612655600184612d13565b95505b5050506125c2565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156126d75760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610386565b9195509093505050505b9550959350505050565b818311156126f857600080fd5b60018101835b83811015612714576000828201556001016126fe565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001611d4b929190612a27565b8260028101928215612784579160200282015b82811115612784578251825591602001919060010190612769565b506127909291506127df565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e081016127da6127f4565b905290565b5b8082111561279057600081556001016127e0565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114611ae957600080fd5b80356001600160801b0381168114611ae957600080fd5b600060208284031215612851578081fd5b611ea682612812565b6000806040838503121561286c578081fd5b61287583612812565b915061288360208401612812565b90509250929050565b60008060008060008060c087890312156128a4578182fd5b6128ad87612812565b95506128bb60208801612829565b94506128c960408801612829565b93506128d760608801612829565b92506128e560808801612829565b91506128f360a08801612812565b90509295509295509295565b60008060408385031215612911578182fd5b61291a83612812565b946020939093013593505050565b6000806000806060858703121561293d578384fd5b61294685612812565b935060208501359250604085013567ffffffffffffffff80821115612969578384fd5b818701915087601f83011261297c578384fd5b81358181111561298a578485fd5b88602082850101111561299b578485fd5b95989497505060200194505050565b6000602082840312156129bb578081fd5b81518015158114611ea6578182fd5b6000602082840312156129db578081fd5b5035919050565b600080604083850312156129f4578182fd5b8235915061288360208401612812565b8060005b60028110156104c3578151845260209384019390910190600101612a08565b60008382528251815b81811015612a4c57602081860181015185830182015201612a30565b81811115612a5d5782602083860101525b50919091016020019392505050565b6000610120820190506001600160801b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c0830151612ada60c08401826001600160a01b03169052565b5060e0830151612aed60e0840182612a04565b5092915050565b60006001600160801b03808316818516808303821115612b1657612b16612d2a565b01949350505050565b60008219821115612b3257612b32612d2a565b500190565b60006001600160801b0380841680612b5157612b51612d59565b92169190910492915050565b600082612b6c57612b6c612d59565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615612bb057612bb0612d2a565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615612bea57612bea612d2a565b858712925087820587128484161615612c0557612c05612d2a565b87850587128184161615612c1b57612c1b612d2a565b505050929093029392505050565b60006001600160801b0380831681851681830481118215151615612c4f57612c4f612d2a565b02949350505050565b6000816000190483118215151615612c7257612c72612d2a565b500290565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615612cb157612cb1612d2a565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615612ce557612ce5612d2a565b50500390565b60006001600160801b0383811690831681811015612d0b57612d0b612d2a565b039392505050565b600082821015612d2557612d25612d2a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212206b747b39aa25048d587783e2dcd6161312c145a2fcdd8f37684913e3f86b275b64736f6c63430008030033"; - -type TestVestingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestVestingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class TestVestingVault__factory extends ContractFactory { - constructor(...args: TestVestingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _token: PromiseOrValue, - _stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _token, - _stale, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _token: PromiseOrValue, - _stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_token, _stale, overrides || {}); - } - override attach(address: string): TestVestingVault { - return super.attach(address) as TestVestingVault; - } - override connect(signer: Signer): TestVestingVault__factory { - return super.connect(signer) as TestVestingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestVestingVaultInterface { - return new utils.Interface(_abi) as TestVestingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): TestVestingVault { - return new Contract(address, _abi, signerOrProvider) as TestVestingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/mocks/index.ts b/packages/council-typechain/src/factories/contracts/mocks/index.ts deleted file mode 100644 index 9431184e..00000000 --- a/packages/council-typechain/src/factories/contracts/mocks/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as storageReadSol from "./StorageRead.sol"; -export { MockCoreVoting__factory } from "./MockCoreVoting__factory"; -export { MockDoubleSpender__factory } from "./MockDoubleSpender__factory"; -export { MockERC20__factory } from "./MockERC20__factory"; -export { MockHistoryTracker__factory } from "./MockHistoryTracker__factory"; -export { MockLockingVault__factory } from "./MockLockingVault__factory"; -export { MockTokenLogic__factory } from "./MockTokenLogic__factory"; -export { MockVotingVault__factory } from "./MockVotingVault__factory"; -export { Reverter__factory } from "./Reverter__factory"; -export { TestCoreVoting__factory } from "./TestCoreVoting__factory"; -export { TestTreasury__factory } from "./TestTreasury__factory"; -export { TestVestingVault__factory } from "./TestVestingVault__factory"; diff --git a/packages/council-typechain/src/factories/contracts/simpleProxy.sol/SimpleProxy__factory.ts b/packages/council-typechain/src/factories/contracts/simpleProxy.sol/SimpleProxy__factory.ts deleted file mode 100644 index 4ba3c8b3..00000000 --- a/packages/council-typechain/src/factories/contracts/simpleProxy.sol/SimpleProxy__factory.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - SimpleProxy, - SimpleProxyInterface, -} from "../../../contracts/simpleProxy.sol/SimpleProxy"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_governance", - type: "address", - }, - { - internalType: "address", - name: "_firstImplementation", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - stateMutability: "payable", - type: "fallback", - }, - { - inputs: [], - name: "proxyGovernance", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxyImplementation", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_newGovernance", - type: "address", - }, - ], - name: "resetProxyOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_newImplementation", - type: "address", - }, - ], - name: "upgradeProxy", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060405161041938038061041983398101604081905261002f9161007c565b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100ae565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008e578182fd5b61009783610060565b91506100a560208401610060565b90509250929050565b61035c806100bd6000396000f3fe60806040526004361061003f5760003560e01c80630c870f911461009157806374474d28146100e75780638c1e1df014610109578063c01cc4d114610136575b368061004757005b60405181600082378082016040526000805473ffffffffffffffffffffffffffffffffffffffff1690808484845af492505060405190503d806000833e8261008d578082fd5b8082f35b34801561009d57600080fd5b506000546100be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f357600080fd5b506101076101023660046102eb565b610156565b005b34801561011557600080fd5b506001546100be9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561014257600080fd5b506101076101513660046102eb565b610223565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a6564000000000000000000000000000000000000000060448201526064016101d3565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156102fc578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031f578182fd5b939250505056fea2646970667358221220df7fe891b767364480831377ad4dbbe2768d2a0d4327e60287d28a2a1cc010e264736f6c63430008030033"; - -type SimpleProxyConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SimpleProxyConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class SimpleProxy__factory extends ContractFactory { - constructor(...args: SimpleProxyConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _governance: PromiseOrValue, - _firstImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _governance, - _firstImplementation, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _governance: PromiseOrValue, - _firstImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _governance, - _firstImplementation, - overrides || {}, - ); - } - override attach(address: string): SimpleProxy { - return super.attach(address) as SimpleProxy; - } - override connect(signer: Signer): SimpleProxy__factory { - return super.connect(signer) as SimpleProxy__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SimpleProxyInterface { - return new utils.Interface(_abi) as SimpleProxyInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): SimpleProxy { - return new Contract(address, _abi, signerOrProvider) as SimpleProxy; - } -} diff --git a/packages/council-typechain/src/factories/contracts/simpleProxy.sol/index.ts b/packages/council-typechain/src/factories/contracts/simpleProxy.sol/index.ts deleted file mode 100644 index b158cc2b..00000000 --- a/packages/council-typechain/src/factories/contracts/simpleProxy.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { SimpleProxy__factory } from "./SimpleProxy__factory"; diff --git a/packages/council-typechain/src/factories/contracts/vaults/FrozenLockingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/FrozenLockingVault__factory.ts deleted file mode 100644 index 3a54f257..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/FrozenLockingVault__factory.ts +++ /dev/null @@ -1,271 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - FrozenLockingVault, - FrozenLockingVaultInterface, -} from "../../../contracts/vaults/FrozenLockingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_staleBlockLag", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "newDelegate", - type: "address", - }, - ], - name: "changeDelegation", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "fundedAccount", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "firstDelegation", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deposits", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint96", - name: "", - type: "uint96", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "pure", - type: "function", - }, -]; - -const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161127a38038061127a83398101604081905261002f9161004a565b60609190911b6001600160601b03191660805260a052610082565b6000806040838503121561005c578182fd5b82516001600160a01b0381168114610072578283fd5b6020939093015192949293505050565b60805160601c60a0516111c36100b76000396000818160ba015261040301526000818161012d01526104f301526111c36000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063e91f32351161005b578063e91f323514610102578063f45346dc14610115578063fc0c546a14610128578063fc7e286d1461017457610088565b80632e1a7d4d1461008d5780639f973fd5146100a2578063c2c94b88146100b5578063e7d20283146100ef575b600080fd5b6100a061009b366004610fb1565b6101c0565b005b6100a06100b0366004610e8a565b610227565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100dc6100fd366004610eab565b6103ca565b6100dc610110366004610f0f565b6103ec565b6100a0610123366004610ed4565b61043b565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b610187610182366004610e8a565b610770565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100e6565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46726f7a656e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006102316107d7565b33600090815260209190915260408120805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083161783559193506bffffffffffffffffffffffff74010000000000000000000000000000000000000000820416929116906102b661081c565b905060006102c4828461086f565b90506102dc836102d48684611147565b849190610910565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e061033f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61108f565b60405190815260200160405180910390a3600061035c838861086f565b90506103748761036c878461100e565b859190610910565b60405185815273ffffffffffffffffffffffffffffffffffffffff88169033907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a350505050505050565b6000806103d561081c565b90506103e2818585610a4f565b9150505b92915050565b6000806103f761081c565b905061043186866104287f000000000000000000000000000000000000000000000000000000000000000043611147565b84929190610abe565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e000000000000000000000000604482015260640161021e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561054c57600080fd5b505af1158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190610f91565b50600061058f6107d7565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260209290925260409091208054909250168061066f575080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161780825582908490839060149061063c9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611026565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506106d8565b8154849083906014906106a99084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611026565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b60006106e261081c565b905060006106f0828461086f565b90508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e08860405161075191815260200190565b60405180910390a3610767836102d4888461100e565b50505050505050565b600080600061077d6107d7565b73ffffffffffffffffffffffffffffffffffffffff9485166000908152602091909152604090205493841694740100000000000000000000000000000000000000009094046bffffffffffffffffffffffff169392505050565b60006108176040518060400160405280600881526020017f6465706f73697473000000000000000000000000000000000000000000000000815250610b42565b905090565b6040805180820190915260608152600060208201526108176040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250610bbb565b60008061087d846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff16806108ca576000925050506103e6565b6000610905836108db600185611147565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f420000000000000000000000000000000000000000000000000000000000604482015260640161021e565b600061099f846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610a0757610a03866108db600185611147565b5090505b8143821415610a1e57610a1b600184611147565b90505b8481600189010155438214610a4257610a428785610a3d86600161100e565b610bf9565b5050505050505050505050565b600080610a5d856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690610ab08488838686610c22565b9a9950505050505050505050565b600080610acc866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610b20858a8a8787610c22565b9150915083821115610ab057610b37848387610dfb565b610ab0858385610bf9565b6000807f03a912cdb153207069d92d44a2357e3f0ce00f7ee84da3510f1c6851b4cac4ee905060008184604051602001610b7d929190610fc9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6040805180820190915260608152600060208201526000610bdb83610e2b565b6040805180820190915284815260208101919091529150505b919050565b808210610c0557600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a656400000000000000000000000000000000000000604482015260640161021e565b85851115610c9957600080fd5b828410610ca557600080fd5b6000610cb2600185611147565b90508460005b828214610d565760006002610ccd858561100e565b610cd890600161100e565b610ce29190611056565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610d2457929650919450610df19350505050565b8b821015610d40578a821015610d38578293505b829450610d4e565b610d4b600184611147565b95505b505050610cb8565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610de7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c757265000000000000000000000000000000000000604482015260640161021e565b9195509093505050505b9550959350505050565b81831115610e0857600080fd5b60018101835b83811015610e2457600082820155600101610e0e565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610b7d929190610fc9565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bf457600080fd5b600060208284031215610e9b578081fd5b610ea482610e66565b9392505050565b60008060408385031215610ebd578081fd5b610ec683610e66565b946020939093013593505050565b600080600060608486031215610ee8578081fd5b610ef184610e66565b925060208401359150610f0660408501610e66565b90509250925092565b60008060008060608587031215610f24578081fd5b610f2d85610e66565b935060208501359250604085013567ffffffffffffffff80821115610f50578283fd5b818701915087601f830112610f63578283fd5b813581811115610f71578384fd5b886020828501011115610f82578384fd5b95989497505060200194505050565b600060208284031215610fa2578081fd5b81518015158114610ea4578182fd5b600060208284031215610fc2578081fd5b5035919050565b60008382528251815b81811015610fee57602081860181015185830182015201610fd2565b81811115610fff5782602083860101525b50919091016020019392505050565b600082198211156110215761102161115e565b500190565b60006bffffffffffffffffffffffff80831681851680830382111561104d5761104d61115e565b01949350505050565b60008261108a577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818413828413858304851182821616156110ce576110ce61115e565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156111085761110861115e565b8587129250878205871284841616156111235761112361115e565b878505871281841616156111395761113961115e565b505050929093029392505050565b6000828210156111595761115961115e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207dbd6d0f6de25a883e1f5adc0a994881426509a4693a7f820891925d47d3ce4264736f6c63430008030033"; - -type FrozenLockingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: FrozenLockingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class FrozenLockingVault__factory extends ContractFactory { - constructor(...args: FrozenLockingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _token: PromiseOrValue, - _staleBlockLag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _token, - _staleBlockLag, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _token: PromiseOrValue, - _staleBlockLag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_token, _staleBlockLag, overrides || {}); - } - override attach(address: string): FrozenLockingVault { - return super.attach(address) as FrozenLockingVault; - } - override connect(signer: Signer): FrozenLockingVault__factory { - return super.connect(signer) as FrozenLockingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): FrozenLockingVaultInterface { - return new utils.Interface(_abi) as FrozenLockingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): FrozenLockingVault { - return new Contract(address, _abi, signerOrProvider) as FrozenLockingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/FrozenVestingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/FrozenVestingVault__factory.ts deleted file mode 100644 index 9fba26d4..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/FrozenVestingVault__factory.ts +++ /dev/null @@ -1,477 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - FrozenVestingVault, - FrozenVestingVaultInterface, -} from "../../../contracts/vaults/FrozenVestingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_stale", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [], - name: "acceptGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - { - internalType: "uint128", - name: "_amount", - type: "uint128", - }, - { - internalType: "uint128", - name: "_startTime", - type: "uint128", - }, - { - internalType: "uint128", - name: "_expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "_cliff", - type: "uint128", - }, - { - internalType: "address", - name: "_delegatee", - type: "address", - }, - ], - name: "addGrantAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_multiplier", - type: "uint256", - }, - ], - name: "changeUnvestedMultiplier", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "claim", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_to", - type: "address", - }, - ], - name: "delegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "getGrant", - outputs: [ - { - components: [ - { - internalType: "uint128", - name: "allocation", - type: "uint128", - }, - { - internalType: "uint128", - name: "withdrawn", - type: "uint128", - }, - { - internalType: "uint128", - name: "created", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "cliff", - type: "uint128", - }, - { - internalType: "uint128", - name: "latestVotingPower", - type: "uint128", - }, - { - internalType: "address", - name: "delegatee", - type: "address", - }, - { - internalType: "uint256[2]", - name: "range", - type: "uint256[2]", - }, - ], - internalType: "struct VestingVaultStorage.Grant", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "manager", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "removeGrant", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - ], - name: "setManager", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "setTimelock", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "timelock", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "unvestedMultiplier", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "updateVotingPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "pure", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620028db380380620028db833981016040819052620000349162000050565b60609190911b6001600160601b03191660805260a0526200008a565b6000806040838503121562000063578182fd5b82516001600160a01b03811681146200007a578283fd5b6020939093015192949293505050565b60805160601c60a05161280c620000cf6000396000818161028801526115480152600081816102f00152818161054301528181610603015261124d015261280c6000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c8063b6b55f25116100cd578063d0ebdbe711610081578063e7d2028311610066578063e7d20283146102c5578063e91f3235146102d8578063fc0c546a146102eb5761016b565b8063d0ebdbe7146102aa578063d33219b4146102bd5761016b565b8063bf31dbf4116100b2578063bf31dbf41461024d578063c1006f4f1461026d578063c2c94b88146102835761016b565b8063b6b55f2514610227578063bdacb3031461023a5761016b565b8063485cc955116101245780635c19a95c116101095780635c19a95c146101ee5780635f389a9d14610201578063747c1255146102145761016b565b8063485cc955146101d35780634e71d92d146101e65761016b565b8063267406cb11610155578063267406cb146101985780633e0bdaf7146101a6578063481c6a75146101ae5761016b565b8062f714ce146101705780632168034d14610185575b600080fd5b61018361017e366004612413565b610312565b005b6101836101933660046123fb565b61035f565b61018361017e366004612271565b610183610459565b6101b6610718565b6040516001600160a01b0390911681526020015b60405180910390f35b6101836101e136600461228b565b610728565b610183610312565b6101836101fc366004612271565b61092e565b61018361020f3660046122bd565b610c6d565b610183610222366004612271565b61115e565b6101836102353660046123fb565b61118d565b610183610248366004612271565b6112d1565b61026061025b366004612271565b611372565b6040516101ca91906124a3565b61027561145a565b6040519081526020016101ca565b6102757f000000000000000000000000000000000000000000000000000000000000000081565b6101836102b8366004612271565b611464565b6101b6611505565b6102756102d3366004612330565b61150f565b6102756102e6366004612359565b611531565b6101b67f000000000000000000000000000000000000000000000000000000000000000081565b60405162461bcd60e51b815260206004820152600660248201527f46726f7a656e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610367611580565b516001600160a01b031633146103bf5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b60648111156104105760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610356565b6104566104516040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b829055565b50565b6000610463611663565b3360009081526020919091526040812080549092506104aa906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116612730565b6fffffffffffffffffffffffffffffffff1690506000811161050e5760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610356565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561058f57600080fd5b505af11580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906123db565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906123db565b5060006106926116a8565b5160408051808201909152818152909150602081016106b18484612534565b90526106c3906004850190600261217e565b506107136107056040518060400160405280600581526020017f626f756e640000000000000000000000000000000000000000000000000000008152506115ea565b61070f8484612534565b9055565b505050565b6000610722611709565b51905090565b6107666040518060400160405280600b81526020017f696e697469616c697a65640000000000000000000000000000000000000000008152506115ea565b54156107b45760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610356565b6107fb6107f56040518060400160405280600b81526020017f696e697469616c697a65640000000000000000000000000000000000000000008152506115ea565b60019055565b61086f61083c6040518060400160405280600781526020017f6d616e6167657200000000000000000000000000000000000000000000000000815250611752565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b6108e36108b06040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b61092a6109246040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b60649055565b5050565b6000610938611663565b3360009081526020919091526040902060038101549091506001600160a01b03838116911614156109ab5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610356565b60006109b561178d565b60038301549091506000906109d49083906001600160a01b03166117e0565b604080516101008101825285546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c0830152825180840193849052939450600093610a9a93889260e08501929160048501919082845b815481526020019060010190808311610a7957505050505081525050611874565b60038501546002860154919250610aef916001600160a01b0390911690610ae79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1685612761565b8591906118f7565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e090610b779070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61258f565b60405190815260200160405180910390a36000610b9484876117e0565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e084604051610bdb91815260200190565b60405180910390a3610bf986610bf18484612534565b8691906118f7565b506002840180546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b610c75611709565b516001600160a01b03163314610ccd5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610356565b826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1611158015610d255750826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611155b610d715760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610356565b6fffffffffffffffffffffffffffffffff8416610d8c574393505b6000610d96611a0f565b90506000610da2611a4f565b9050866fffffffffffffffffffffffffffffffff1682600001541015610e0a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610356565b6000610e14611663565b6001600160a01b038a1660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1615610e915760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610356565b6001600160a01b03841615610ea65783610ea8565b885b93506000606483600001518a610ebe9190612647565b610ec8919061254c565b90506040518061010001604052808a6fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff168152602001876fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001866001600160a01b031681526020016040518060400160405280600081526020016000815250815250610f98611663565b6001600160a01b038c8116600090815260209283526040908190208451938501516fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e08301516110669160048401919061217e565b50905050886fffffffffffffffffffffffffffffffff168460000160008282546110909190612761565b90915550600090506110a061178d565b60038401549091506000906110bf9083906001600160a01b03166117e0565b60038501549091506110f8906001600160a01b03166110f06fffffffffffffffffffffffffffffffff861684612534565b8491906118f7565b60038401546040516fffffffffffffffffffffffffffffffff851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b6000611168611663565b6001600160a01b038316600090815260209190915260409020905061092a8282611a9c565b611195611709565b516001600160a01b031633146111ed5760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610356565b60006111f7611a0f565b90508181600001600082825461120d9190612534565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561129957600080fd5b505af11580156112ad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071391906123db565b6112d9611580565b516001600160a01b031633146113315760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b6104566108b06040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b61137a6121bc565b611382611663565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b8154815260200190600101908083116114365750505050508152505090505b919050565b6000610722611a4f565b61146c611580565b516001600160a01b031633146114c45760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610356565b6104566108b06040518060400160405280600781526020017f6d616e6167657200000000000000000000000000000000000000000000000000815250611752565b6000610722611580565b60008061151a61178d565b9050611527818585611ccc565b9150505b92915050565b60008061153c61178d565b9050611576868661156d7f000000000000000000000000000000000000000000000000000000000000000043612761565b84929190611d2e565b9695505050505050565b6040805160208101909152600081526115cd6040518060400160405280600881526020017f74696d656c6f636b000000000000000000000000000000000000000000000000815250611752565b604080516020810190915290546001600160a01b03168152905090565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a32090506000818460405160200161162592919061245e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b60006116a36040518060400160405280600681526020017f6772616e74730000000000000000000000000000000000000000000000000000815250611da5565b905090565b6040805160208101909152600081526116f56040518060400160405280600581526020017f626f756e640000000000000000000000000000000000000000000000000000008152506115ea565b604080516020810190915290548152905090565b6040805160208101909152600081526115cd6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152505b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b90506000818460405160200161162592919061245e565b6040805180820190915260608152600060208201526116a36040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250611de0565b6000806117ee846020015190565b6001600160a01b03841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff168061182e5760009250505061152b565b60006118698361183f600185612761565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b60008061188083611e19565b9050600083602001516fffffffffffffffffffffffffffffffff16826118a69190612534565b84516118c491906fffffffffffffffffffffffffffffffff16612761565b905060646118d0611a4f565b516118db908361267f565b6118e5919061257b565b6118ef9083612534565b949350505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff81111561195f5760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610356565b600061196c846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff9091169081156119c7576119c38661183f600185612761565b5090505b81438214156119de576119db600184612761565b90505b8481600189010155438214611a0257611a0287856119fd866001612534565b611f45565b5050505050505050505050565b60006116a36040518060400160405280600a81526020017f756e61737369676e6564000000000000000000000000000000000000000000008152506115ea565b6040805160208101909152600081526116f56040518060400160405280601281526020017f756e7665737465644d756c7469706c69657200000000000000000000000000008152506115ea565b6000611aa661178d565b6003830154909150600090611ac59083906001600160a01b03166117e0565b604080516101008101825285546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c08301528251808401909352929350600092611b8f92879160e0840191906004840190828282602002820191815481526020019060010190808311610a7957505050505081525050611874565b6002850154909150600090611bca9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16836126bc565b905080611bda575050505061092a565b6000811315611c04576003850154611bff906001600160a01b0316610bf18386612534565b611c4a565b6003850154611c4a906001600160a01b0316611c40837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61258f565b610bf19086612761565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905550505050565b600080611cda856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690611d208488838686611f6e565b9a9950505050505050505050565b600080611d3c866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080611d83858a8a8787611f6e565b9150915083821115611d2057611d9a848387612113565b611d20858385611f45565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c90506000818460405160200161162592919061245e565b6040805180820190915260608152600060208201526000611e0083612143565b6040805180820190915293845260208401525090919050565b600081608001516fffffffffffffffffffffffffffffffff16431080611e54575081604001516fffffffffffffffffffffffffffffffff1643105b15611e6157506000611455565b81606001516fffffffffffffffffffffffffffffffff164310611ea85760208201518251611e8f9190612730565b6fffffffffffffffffffffffffffffffff169050611455565b600082604001518360600151611ebe9190612730565b6fffffffffffffffffffffffffffffffff1683604001516fffffffffffffffffffffffffffffffff1643611ef29190612761565b8451611f1091906fffffffffffffffffffffffffffffffff1661267f565b611f1a919061257b565b905082602001516fffffffffffffffffffffffffffffffff1681611f3e9190612761565b9392505050565b808210611f5157600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082611fbe5760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610356565b85851115611fcb57600080fd5b828410611fd757600080fd5b6000611fe4600185612761565b90508460005b8282146120885760006002611fff8585612534565b61200a906001612534565b612014919061257b565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415612056579296509194506121099350505050565b8b821015612072578a82101561206a578293505b829450612080565b61207d600184612761565b95505b505050611fea565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156120ff5760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610356565b9195509093505050505b9550959350505050565b8183111561212057600080fd5b60018101835b8381101561213c57600082820155600101612126565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a90506000818460405160200161162592919061245e565b82600281019282156121ac579160200282015b828111156121ac578251825591602001919060010190612191565b506121b8929150612207565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e0810161220261221c565b905290565b5b808211156121b85760008155600101612208565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461145557600080fd5b80356fffffffffffffffffffffffffffffffff8116811461145557600080fd5b600060208284031215612282578081fd5b611f3e8261223a565b6000806040838503121561229d578081fd5b6122a68361223a565b91506122b46020840161223a565b90509250929050565b60008060008060008060c087890312156122d5578182fd5b6122de8761223a565b95506122ec60208801612251565b94506122fa60408801612251565b935061230860608801612251565b925061231660808801612251565b915061232460a0880161223a565b90509295509295509295565b60008060408385031215612342578182fd5b61234b8361223a565b946020939093013593505050565b6000806000806060858703121561236e578384fd5b6123778561223a565b935060208501359250604085013567ffffffffffffffff8082111561239a578384fd5b818701915087601f8301126123ad578384fd5b8135818111156123bb578485fd5b8860208285010111156123cc578485fd5b95989497505060200194505050565b6000602082840312156123ec578081fd5b81518015158114611f3e578182fd5b60006020828403121561240c578081fd5b5035919050565b60008060408385031215612425578182fd5b823591506122b46020840161223a565b8060005b6002811015612458578151845260209384019390910190600101612439565b50505050565b60008382528251815b8181101561248357602081860181015185830182015201612467565b818111156124945782602083860101525b50919091016020019392505050565b6000610120820190506fffffffffffffffffffffffffffffffff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c083015161251a60c08401826001600160a01b03169052565b5060e083015161252d60e0840182612435565b5092915050565b6000821982111561254757612547612778565b500190565b60006fffffffffffffffffffffffffffffffff8084168061256f5761256f6127a7565b92169190910492915050565b60008261258a5761258a6127a7565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818413828413858304851182821616156125ce576125ce612778565b7f80000000000000000000000000000000000000000000000000000000000000008487128682058812818416161561260857612608612778565b85871292508782058712848416161561262357612623612778565b8785058712818416161561263957612639612778565b505050929093029392505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561267657612676612778565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126b7576126b7612778565b500290565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156126f6576126f6612778565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561272a5761272a612778565b50500390565b60006fffffffffffffffffffffffffffffffff8381169083168181101561275957612759612778565b039392505050565b60008282101561277357612773612778565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220cc02a25cd99d7309e96c8dbadbe4493afdfc773d491a6c332be5cbdad22de16964736f6c63430008030033"; - -type FrozenVestingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: FrozenVestingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class FrozenVestingVault__factory extends ContractFactory { - constructor(...args: FrozenVestingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _token: PromiseOrValue, - _stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _token, - _stale, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _token: PromiseOrValue, - _stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_token, _stale, overrides || {}); - } - override attach(address: string): FrozenVestingVault { - return super.attach(address) as FrozenVestingVault; - } - override connect(signer: Signer): FrozenVestingVault__factory { - return super.connect(signer) as FrozenVestingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): FrozenVestingVaultInterface { - return new utils.Interface(_abi) as FrozenVestingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): FrozenVestingVault { - return new Contract(address, _abi, signerOrProvider) as FrozenVestingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/GSCVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/GSCVault__factory.ts deleted file mode 100644 index 5b206ec8..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/GSCVault__factory.ts +++ /dev/null @@ -1,416 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - GSCVault, - GSCVaultInterface, -} from "../../../contracts/vaults/GSCVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract ICoreVoting", - name: "_coreVoting", - type: "address", - }, - { - internalType: "uint256", - name: "_votingPowerBound", - type: "uint256", - }, - { - internalType: "address", - name: "_owner", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "who", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "when", - type: "uint256", - }, - ], - name: "Kicked", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "who", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "when", - type: "uint256", - }, - ], - name: "MembershipProved", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "coreVoting", - outputs: [ - { - internalType: "contract ICoreVoting", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "getUserVaults", - outputs: [ - { - internalType: "address[]", - name: "", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "idleDuration", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - { - internalType: "bytes[]", - name: "extraData", - type: "bytes[]", - }, - ], - name: "kick", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "members", - outputs: [ - { - internalType: "uint256", - name: "joined", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "votingVaults", - type: "address[]", - }, - { - internalType: "bytes[]", - name: "extraData", - type: "bytes[]", - }, - ], - name: "proveMembership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract ICoreVoting", - name: "_newVoting", - type: "address", - }, - ], - name: "setCoreVoting", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_idleDuration", - type: "uint256", - }, - ], - name: "setIdleDuration", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_newBound", - type: "uint256", - }, - ], - name: "setVotePowerBound", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "votingPowerBound", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x6080604052620546006005553480156200001857600080fd5b5060405162001507380380620015078339810160408190526200003b91620000f1565b60008054336001600160a01b031991821617909155600380549091166001600160a01b038516179055600482905562000074816200007d565b50505062000151565b6000546001600160a01b03163314620000cf5760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006060848603121562000106578283fd5b8351620001138162000138565b6020850151604086015191945092506200012d8162000138565b809150509250925092565b6001600160a01b03811681146200014e57600080fd5b50565b6113a680620001616000396000f3fe608060405234801561001057600080fd5b506004361061011a5760003560e01c80637e280246116100b2578063b6a5d7de11610081578063e7f3c69c11610066578063e7f3c69c14610272578063e91f323514610292578063fe9fbb80146102a55761011a565b8063b6a5d7de1461022c578063b91816111461023f5761011a565b80637e280246146101d25780638da5cb5b146101e5578063ad292ff814610210578063ae4b3628146102195761011a565b806322905a6c116100ee57806322905a6c1461019057806327c97fa5146101a357806338e02bf7146101b65780633eba045b146101bf5761011a565b8062fe809c1461011f57806308ae4b0c1461013457806309960f001461016a57806313af40351461017d575b600080fd5b61013261012d366004611199565b6102d1565b005b610157610142366004611016565b60026020526000908152604090206001015481565b6040519081526020015b60405180910390f35b610132610178366004611110565b610335565b61013261018b366004611016565b6107eb565b61013261019e366004611039565b61087f565b6101326101b1366004611016565b610b81565b61015760045481565b6101326101cd366004611199565b610c1a565b6101326101e0366004611016565b610c79565b6000546101f8906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b61015760055481565b6003546101f8906001600160a01b031681565b61013261023a366004611016565b610d0d565b61026261024d366004611016565b60016020526000908152604090205460ff1681565b6040519015158152602001610161565b610285610280366004611016565b610db3565b604051610161919061122d565b6101576102a036600461108c565b610e29565b6102626102b3366004611016565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146103305760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b8261035057634e487b7160e01b600052600160045260246000fd5b60005b8381101561058a5760006103688260016112dd565b90505b8481101561044f5785858281811061039357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906103a89190611016565b6001600160a01b03168686848181106103d157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906103e69190611016565b6001600160a01b0316141561043d5760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610327565b806104478161130c565b91505061036b565b506003546000906001600160a01b031663af7a060c87878581811061048457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104999190611016565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156104f057600080fd5b505afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105289190611179565b9050806105775760405162461bcd60e51b815260206004820152601960248201527f566f74696e67207661756c74206e6f7420617070726f766564000000000000006044820152606401610327565b50806105828161130c565b915050610353565b506000805b848110156106ad5760008686838181106105b957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105ce9190611016565b6001600160a01b031663e91f3235336105e86001436112f5565b88888781811061060857634e487b7160e01b600052603260045260246000fd5b905060200281019061061a919061127a565b6040518563ffffffff1660e01b815260040161063994939291906111c9565b602060405180830381600087803b15801561065357600080fd5b505af1158015610667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b91906111b1565b905061069781846112dd565b92505080806106a59061130c565b91505061058f565b506004548110156107005760405162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f75676820766f746573000000000000000000000000000000006044820152606401610327565b336000908152600260205260409020600101541561073857336000908152600260205260409020610732908686610eb5565b506107ae565b6040518060400160405280868680806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250504260209384015250338152600282526040902082518051919261079f92849290910190610f30565b50602082015181600101559050505b60405142815233907ff1e092311eefceee7206049c87d17464c34a7b92b85779b0b835ddb292a42e70906020015b60405180910390a25050505050565b6000546001600160a01b031633146108455760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600260209081526040808320805482518185028101850190935280835291929091908301828280156108e957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108cb575b505050505090506000805b8251811015610ac75760035483516001600160a01b039091169063af7a060c9085908490811061093457634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161096791906001600160a01b0391909116815260200190565b60206040518083038186803b15801561097f57600080fd5b505afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190611179565b15610ab55760008382815181106109de57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663e91f323588600143610a0291906112f5565b898987818110610a2257634e487b7160e01b600052603260045260246000fd5b9050602002810190610a34919061127a565b6040518563ffffffff1660e01b8152600401610a5394939291906111c9565b602060405180830381600087803b158015610a6d57600080fd5b505af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa591906111b1565b9050610ab181846112dd565b9250505b80610abf8161130c565b9150506108f4565b506004548110610b195760405162461bcd60e51b815260206004820152600d60248201527f4e6f74206b69636b2d61626c65000000000000000000000000000000000000006044820152606401610327565b6001600160a01b038516600090815260026020526040812090610b3c8282610f9d565b60018201600090555050846001600160a01b03167f8684348ed72cd103be12fcb99e9c5917294a8092ccd4808d1cd7b19daf982991436040516107dc91815260200190565b6000546001600160a01b03163314610bdb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b6001600160a01b0316600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000546001600160a01b03163314610c745760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600455565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d675760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610327565b610db0816001600160a01b0316600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6001600160a01b038116600090815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e1d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dff575b50505050509050919050565b600080546001600160a01b0386811691161415610e4a5750620186a0610ead565b6001600160a01b03851660009081526002602052604090206001015415801590610e9c57506005546001600160a01b0386166000908152600260205260409020600101544291610e99916112dd565b11155b15610ea957506001610ead565b5060005b949350505050565b828054828255906000526020600020908101928215610f20579160200282015b82811115610f205781547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03843516178255602090920191600190910190610ed5565b50610f2c929150610fb7565b5090565b828054828255906000526020600020908101928215610f20579160200282015b82811115610f2057825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190610f50565b5080546000825590600052602060002090810190610db091905b5b80821115610f2c5760008155600101610fb8565b60008083601f840112610fdd578182fd5b50813567ffffffffffffffff811115610ff4578182fd5b6020830191508360208260051b850101111561100f57600080fd5b9250929050565b600060208284031215611027578081fd5b81356110328161135b565b9392505050565b60008060006040848603121561104d578182fd5b83356110588161135b565b9250602084013567ffffffffffffffff811115611073578283fd5b61107f86828701610fcc565b9497909650939450505050565b600080600080606085870312156110a1578081fd5b84356110ac8161135b565b935060208501359250604085013567ffffffffffffffff808211156110cf578283fd5b818701915087601f8301126110e2578283fd5b8135818111156110f0578384fd5b886020828501011115611101578384fd5b95989497505060200194505050565b60008060008060408587031215611125578384fd5b843567ffffffffffffffff8082111561113c578586fd5b61114888838901610fcc565b90965094506020870135915080821115611160578384fd5b5061116d87828801610fcc565b95989497509550505050565b60006020828403121561118a578081fd5b81518015158114611032578182fd5b6000602082840312156111aa578081fd5b5035919050565b6000602082840312156111c2578081fd5b5051919050565b60006001600160a01b03861682528460208301526060604083015282606083015282846080840137818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b6020808252825182820181905260009190848201906040850190845b8181101561126e5783516001600160a01b031683529284019291840191600101611249565b50909695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112ae578283fd5b83018035915067ffffffffffffffff8211156112c8578283fd5b60200191503681900382131561100f57600080fd5b600082198211156112f0576112f0611345565b500190565b60008282101561130757611307611345565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561133e5761133e611345565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610db057600080fdfea26469706673582212206123420b651077d05d296bf60a53173cec396b8d9e74a89449d021e1dab6d0d764736f6c63430008030033"; - -type GSCVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GSCVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class GSCVault__factory extends ContractFactory { - constructor(...args: GSCVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _coreVoting: PromiseOrValue, - _votingPowerBound: PromiseOrValue, - _owner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _coreVoting, - _votingPowerBound, - _owner, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _coreVoting: PromiseOrValue, - _votingPowerBound: PromiseOrValue, - _owner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _coreVoting, - _votingPowerBound, - _owner, - overrides || {}, - ); - } - override attach(address: string): GSCVault { - return super.attach(address) as GSCVault; - } - override connect(signer: Signer): GSCVault__factory { - return super.connect(signer) as GSCVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GSCVaultInterface { - return new utils.Interface(_abi) as GSCVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): GSCVault { - return new Contract(address, _abi, signerOrProvider) as GSCVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/AbstractLockingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/AbstractLockingVault__factory.ts deleted file mode 100644 index d7f08a0a..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/AbstractLockingVault__factory.ts +++ /dev/null @@ -1,207 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - AbstractLockingVault, - AbstractLockingVaultInterface, -} from "../../../../contracts/vaults/LockingVault.sol/AbstractLockingVault"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "newDelegate", - type: "address", - }, - ], - name: "changeDelegation", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "fundedAccount", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "firstDelegation", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deposits", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint96", - name: "", - type: "uint96", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class AbstractLockingVault__factory { - static readonly abi = _abi; - static createInterface(): AbstractLockingVaultInterface { - return new utils.Interface(_abi) as AbstractLockingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): AbstractLockingVault { - return new Contract( - address, - _abi, - signerOrProvider, - ) as AbstractLockingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/LockingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/LockingVault__factory.ts deleted file mode 100644 index e671786d..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/LockingVault__factory.ts +++ /dev/null @@ -1,271 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - LockingVault, - LockingVaultInterface, -} from "../../../../contracts/vaults/LockingVault.sol/LockingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_staleBlockLag", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "newDelegate", - type: "address", - }, - ], - name: "changeDelegation", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "fundedAccount", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "firstDelegation", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deposits", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint96", - name: "", - type: "uint96", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161144d38038061144d83398101604081905261002f9161004a565b60609190911b6001600160601b03191660805260a052610082565b6000806040838503121561005c578182fd5b82516001600160a01b0381168114610072578283fd5b6020939093015192949293505050565b60805160601c60a05161138f6100be6000396000818160ba015261059d01526000818161012d015281816103300152610692015261138f6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063e91f32351161005b578063e91f323514610102578063f45346dc14610115578063fc0c546a14610128578063fc7e286d1461017457610088565b80632e1a7d4d1461008d5780639f973fd5146100a2578063c2c94b88146100b5578063e7d20283146100ef575b600080fd5b6100a061009b366004611150565b6101c0565b005b6100a06100b0366004611029565b6103c9565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100dc6100fd36600461104a565b610564565b6100dc6101103660046110ae565b610586565b6100a0610123366004611073565b6105d5565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b610187610182366004611029565b61090f565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100e6565b60006101ca610976565b336000908152602091909152604090208054909150829082906014906102179084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166112fd565b82546bffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550805473ffffffffffffffffffffffffffffffffffffffff1660006102616109bb565b9050600061026f8284610a0e565b90506102878361027f87846112e6565b849190610aaf565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e06102ea887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61122e565b60405190815260200160405180910390a36040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c19190611130565b505050505050565b60006103d3610976565b33600090815260209190915260408120805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083161783559193506bffffffffffffffffffffffff74010000000000000000000000000000000000000000820416929116906104586109bb565b905060006104668284610a0e565b90506104768361027f86846112e6565b73ffffffffffffffffffffffffffffffffffffffff8316337f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e06104d9877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61122e565b60405190815260200160405180910390a360006104f68388610a0e565b905061050e8761050687846111ad565b859190610aaf565b60405185815273ffffffffffffffffffffffffffffffffffffffff88169033907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a350505050505050565b60008061056f6109bb565b905061057c818585610bee565b9150505b92915050565b6000806105916109bb565b90506105cb86866105c27f0000000000000000000000000000000000000000000000000000000000000000436112e6565b84929190610c5d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190611130565b50600061072e610976565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260209290925260409091208054909250168061080e575080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316178082558290849083906014906107db9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166111c5565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610877565b8154849083906014906108489084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166111c5565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b60006108816109bb565b9050600061088f8284610a0e565b90508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0886040516108f091815260200190565b60405180910390a36109068361027f88846111ad565b50505050505050565b600080600061091c610976565b73ffffffffffffffffffffffffffffffffffffffff9485166000908152602091909152604090205493841694740100000000000000000000000000000000000000009094046bffffffffffffffffffffffff169392505050565b60006109b66040518060400160405280600881526020017f6465706f73697473000000000000000000000000000000000000000000000000815250610ce1565b905090565b6040805180820190915260608152600060208201526109b66040518060400160405280600b81526020017f766f74696e67506f776572000000000000000000000000000000000000000000815250610d5a565b600080610a1c846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902080549091506fffffffffffffffffffffffffffffffff1680610a6957600092505050610580565b6000610aa483610a7a6001856112e6565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115610b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f6f420000000000000000000000000000000000000000000000000000000000604482015260640161064e565b6000610b3e846020015190565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020829052604081208054929350914360c01b9185831791608081901c916fffffffffffffffffffffffffffffffff909116908115610ba657610ba286610a7a6001856112e6565b5090505b8143821415610bbd57610bba6001846112e6565b90505b8481600189010155438214610be157610be18785610bdc8660016111ad565b610d98565b5050505050505050505050565b600080610bfc856020015190565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff90911690610c4f8488838686610dc1565b9a9950505050505050505050565b600080610c6b866020015190565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602082905260408120805492935091608081901c916fffffffffffffffffffffffffffffffff9091169080610cbf858a8a8787610dc1565b9150915083821115610c4f57610cd6848387610f9a565b610c4f858385610d98565b6000807f03a912cdb153207069d92d44a2357e3f0ce00f7ee84da3510f1c6851b4cac4ee905060008184604051602001610d1c929190611168565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6040805180820190915260608152600060208201526000610d7a83610fca565b6040805180820190915284815260208101919091529150505b919050565b808210610da457600080fd5b6fffffffffffffffffffffffffffffffff1660809190911b179055565b60008082610e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e696e697469616c697a656400000000000000000000000000000000000000604482015260640161064e565b85851115610e3857600080fd5b828410610e4457600080fd5b6000610e516001856112e6565b90508460005b828214610ef55760006002610e6c85856111ad565b610e779060016111ad565b610e8191906111f5565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b821415610ec357929650919450610f909350505050565b8b821015610edf578a821015610ed7578293505b829450610eed565b610eea6001846112e6565b95505b505050610e57565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a821115610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f536561726368204661696c757265000000000000000000000000000000000000604482015260640161064e565b9195509093505050505b9550959350505050565b81831115610fa757600080fd5b60018101835b83811015610fc357600082820155600101610fad565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001610d1c929190611168565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d9357600080fd5b60006020828403121561103a578081fd5b61104382611005565b9392505050565b6000806040838503121561105c578081fd5b61106583611005565b946020939093013593505050565b600080600060608486031215611087578081fd5b61109084611005565b9250602084013591506110a560408501611005565b90509250925092565b600080600080606085870312156110c3578081fd5b6110cc85611005565b935060208501359250604085013567ffffffffffffffff808211156110ef578283fd5b818701915087601f830112611102578283fd5b813581811115611110578384fd5b886020828501011115611121578384fd5b95989497505060200194505050565b600060208284031215611141578081fd5b81518015158114611043578182fd5b600060208284031215611161578081fd5b5035919050565b60008382528251815b8181101561118d57602081860181015185830182015201611171565b8181111561119e5782602083860101525b50919091016020019392505050565b600082198211156111c0576111c061132a565b500190565b60006bffffffffffffffffffffffff8083168185168083038211156111ec576111ec61132a565b01949350505050565b600082611229577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184138284138583048511828216161561126d5761126d61132a565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156112a7576112a761132a565b8587129250878205871284841616156112c2576112c261132a565b878505871281841616156112d8576112d861132a565b505050929093029392505050565b6000828210156112f8576112f861132a565b500390565b60006bffffffffffffffffffffffff838116908316818110156113225761132261132a565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122031efbbc9dfc48d14a1cb376d2e16e00eb9e63ab249a99197bf8b7b3c6133c51064736f6c63430008030033"; - -type LockingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: LockingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class LockingVault__factory extends ContractFactory { - constructor(...args: LockingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _token: PromiseOrValue, - _staleBlockLag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _token, - _staleBlockLag, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _token: PromiseOrValue, - _staleBlockLag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_token, _staleBlockLag, overrides || {}); - } - override attach(address: string): LockingVault { - return super.attach(address) as LockingVault; - } - override connect(signer: Signer): LockingVault__factory { - return super.connect(signer) as LockingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): LockingVaultInterface { - return new utils.Interface(_abi) as LockingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): LockingVault { - return new Contract(address, _abi, signerOrProvider) as LockingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/index.ts b/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/index.ts deleted file mode 100644 index 7bf98a80..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/LockingVault.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { AbstractLockingVault__factory } from "./AbstractLockingVault__factory"; -export { LockingVault__factory } from "./LockingVault__factory"; diff --git a/packages/council-typechain/src/factories/contracts/vaults/NonvotingVault.sol/NonVotingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/NonvotingVault.sol/NonVotingVault__factory.ts deleted file mode 100644 index f917f1cd..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/NonvotingVault.sol/NonVotingVault__factory.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - NonVotingVault, - NonVotingVaultInterface, -} from "../../../../contracts/vaults/NonvotingVault.sol/NonVotingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "contract ILockingVault", - name: "_lockingVault", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockingVault", - outputs: [ - { - internalType: "contract ILockingVault", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60a06040523480156200001157600080fd5b50604051620012b2380380620012b2833981016040819052620000349162000580565b600080546001600160a01b0319163317905562000051826200012d565b600280546001600160a01b0319166001600160a01b03831690811790915560408051637e062a3560e11b815290516000929163fc0c546a91600480830192602092919082900301818787803b158015620000aa57600080fd5b505af1158015620000bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e59190620005e7565b606081901b6001600160601b03191660805260025490915062000124906001600160a01b038084169116600019620001a2602090811b6200055317901c565b505050620006be565b6000546001600160a01b03163314620001805760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b60448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b801580620002305750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b158015620001f357600080fd5b505afa15801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e919062000606565b155b620002a45760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000177565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620002fc9185916200030116565b505050565b60006200035d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620003df60201b6200074d179092919060201c565b805190915015620002fc57808060200190518101906200037e9190620005be565b620002fc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000177565b6060620003f08484600085620003f8565b949350505050565b6060824710156200045b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000177565b600080866001600160a01b031685876040516200047991906200061f565b60006040518083038185875af1925050503d8060008114620004b8576040519150601f19603f3d011682016040523d82523d6000602084013e620004bd565b606091505b509092509050620004d187838387620004dc565b979650505050505050565b606083156200054d57825162000545576001600160a01b0385163b620005455760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000177565b5081620003f0565b620003f08383815115620005645781518083602001fd5b8060405162461bcd60e51b81526004016200017791906200063d565b6000806040838503121562000593578182fd5b8251620005a081620006a5565b6020840151909250620005b381620006a5565b809150509250929050565b600060208284031215620005d0578081fd5b81518015158114620005e0578182fd5b9392505050565b600060208284031215620005f9578081fd5b8151620005e081620006a5565b60006020828403121562000618578081fd5b5051919050565b600082516200063381846020870162000672565b9190910192915050565b60006020825282518060208401526200065e81604085016020870162000672565b601f01601f19169190910160400192915050565b60005b838110156200068f57818101518382015260200162000675565b838111156200069f576000848401525b50505050565b6001600160a01b0381168114620006bb57600080fd5b50565b60805160601c610bce620006e46000396000818161019701526102d60152610bce6000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c8063b6a5d7de11610076578063d2a043451161005b578063d2a0434514610172578063fc0c546a14610192578063fe9fbb80146101b9576100a2565b8063b6a5d7de1461012c578063b91816111461013f576100a2565b8062f714ce146100a757806313af4035146100bc57806327c97fa5146100cf5780638da5cb5b146100e2575b600080fd5b6100ba6100b5366004610ad0565b6101cc565b005b6100ba6100ca366004610a77565b610303565b6100ba6100dd366004610a77565b6103b1565b6000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ba61013a366004610a77565b610464565b61016261014d366004610a77565b60016020526000908152604090205460ff1681565b6040519015158152602001610123565b6002546101029073ffffffffffffffffffffffffffffffffffffffff1681565b6101027f000000000000000000000000000000000000000000000000000000000000000081565b6101626101c7366004610a77565b610524565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102385760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90602401600060405180830381600087803b1580156102a457600080fd5b505af11580156102b8573d6000803e3d6000fd5b506102ff92505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690508284610764565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461036a5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104185760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e657200000000000000000000000000000000604482015260640161022f565b6105218173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b80158061060257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156105c857600080fd5b505afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106009190610ab8565b155b6106745760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161022f565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107489084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107ba565b505050565b606061075c84846000856108ac565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107489084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016106c6565b600061081c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661074d9092919063ffffffff16565b805190915015610748578080602001905181019061083a9190610a98565b6107485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161022f565b6060824710156109245760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161022f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161094d9190610afb565b60006040518083038185875af1925050503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b50915091506109a0878383876109ab565b979650505050505050565b60608315610a24578251610a1d5773ffffffffffffffffffffffffffffffffffffffff85163b610a1d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022f565b508161075c565b61075c8383815115610a395781518083602001fd5b8060405162461bcd60e51b815260040161022f9190610b17565b803573ffffffffffffffffffffffffffffffffffffffff8116811461054e57600080fd5b600060208284031215610a88578081fd5b610a9182610a53565b9392505050565b600060208284031215610aa9578081fd5b81518015158114610a91578182fd5b600060208284031215610ac9578081fd5b5051919050565b60008060408385031215610ae2578081fd5b82359150610af260208401610a53565b90509250929050565b60008251610b0d818460208701610b68565b9190910192915050565b6000602082528251806020840152610b36816040850160208701610b68565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b83811015610b83578181015183820152602001610b6b565b83811115610b92576000848401525b5050505056fea2646970667358221220c1e9240256cb1b9715ac2ed4920f2cd4bf66ea59786a4d41835cae3875b1f93a64736f6c63430008030033"; - -type NonVotingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: NonVotingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class NonVotingVault__factory extends ContractFactory { - constructor(...args: NonVotingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _owner: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _owner, - _lockingVault, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _owner: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_owner, _lockingVault, overrides || {}); - } - override attach(address: string): NonVotingVault { - return super.attach(address) as NonVotingVault; - } - override connect(signer: Signer): NonVotingVault__factory { - return super.connect(signer) as NonVotingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): NonVotingVaultInterface { - return new utils.Interface(_abi) as NonVotingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): NonVotingVault { - return new Contract(address, _abi, signerOrProvider) as NonVotingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/NonvotingVault.sol/index.ts b/packages/council-typechain/src/factories/contracts/vaults/NonvotingVault.sol/index.ts deleted file mode 100644 index 24caf509..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/NonvotingVault.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { NonVotingVault__factory } from "./NonVotingVault__factory"; diff --git a/packages/council-typechain/src/factories/contracts/vaults/OptimisticRewards__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/OptimisticRewards__factory.ts deleted file mode 100644 index c6a4f989..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/OptimisticRewards__factory.ts +++ /dev/null @@ -1,470 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BytesLike, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - OptimisticRewards, - OptimisticRewardsInterface, -} from "../../../contracts/vaults/OptimisticRewards"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_governance", - type: "address", - }, - { - internalType: "bytes32", - name: "_startingRoot", - type: "bytes32", - }, - { - internalType: "address", - name: "_proposer", - type: "address", - }, - { - internalType: "address", - name: "_revoker", - type: "address", - }, - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "contract ILockingVault", - name: "_lockingVault", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "authorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "authorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "challengePeriod", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "challengeRewards", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "delegate", - type: "address", - }, - { - internalType: "uint256", - name: "totalGrant", - type: "uint256", - }, - { - internalType: "bytes32[]", - name: "merkleProof", - type: "bytes32[]", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "claimAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "claimed", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "deauthorize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "isAuthorized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "lockingVault", - outputs: [ - { - internalType: "contract ILockingVault", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "pendingRoot", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proposalTime", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "newRoot", - type: "bytes32", - }, - ], - name: "proposeRewards", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "proposer", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "bytes", - name: "extraData", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rewardsRoot", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_challengePeriod", - type: "uint256", - }, - ], - name: "setChallengePeriod", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "who", - type: "address", - }, - ], - name: "setOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_proposer", - type: "address", - }, - ], - name: "setProposer", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405262093a806008553480156200001857600080fd5b5060405162001412380380620014128339810160408190526200003b91620001ea565b6000859055606082901b6001600160601b031916608052600280546001600160a01b0319166001600160a01b0383811691821790925560405163095ea7b360e01b8152600481019190915260001960248201528691849184918491849184919083169063095ea7b390604401602060405180830381600087803b158015620000c257600080fd5b505af1158015620000d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fd919062000271565b505060038054336001600160a01b031991821617909155600780549091166001600160a01b038b16179055506200013b935086925062000152915050565b620001468662000176565b505050505050620002b3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6003546001600160a01b03163314620001c85760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008060008060c0878903121562000203578182fd5b865162000210816200029a565b6020880151604089015191975095506200022a816200029a565b60608801519094506200023d816200029a565b608088015190935062000250816200029a565b60a088015190925062000263816200029a565b809150509295509295509295565b60006020828403121562000283578081fd5b8151801515811462000293578182fd5b9392505050565b6001600160a01b0381168114620002b057600080fd5b50565b60805160601c611139620002d960003960008181610345015261040401526111396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80638f54532a116100d8578063c884ef831161008c578063f3f480d911610066578063f3f480d914610337578063fc0c546a14610340578063fe9fbb801461036757610177565b8063c884ef83146102e4578063d2a0434514610304578063e91f32351461032457610177565b8063b6a5d7de116100bd578063b6a5d7de14610296578063b9181611146102a9578063c635f1ee146102dc57610177565b80638f54532a14610263578063a8e4fb901461027657610177565b8063217863b71161012f5780635d475fdd116101145780635d475fdd14610202578063750588cf146102155780638da5cb5b1461021e57610177565b8063217863b7146101e657806327c97fa5146101ef57610177565b806313af40351161016057806313af4035146101a4578063184a0ae9146101b75780631fb4a228146101d357610177565b806309ed28f11461017c5780630a33e8c214610191575b600080fd5b61018f61018a366004610fd7565b61037a565b005b61018f61019f366004610e78565b610488565b61018f6101b2366004610da4565b6105ca565b6101c060065481565b6040519081526020015b60405180910390f35b61018f6101e1366004610da4565b610678565b6101c060005481565b61018f6101fd366004610da4565b610726565b61018f610210366004610e60565b6107d9565b6101c060055481565b60035461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ca565b61018f610271366004610e60565b610845565b60075461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102a4366004610da4565b6108ed565b6102cc6102b7366004610da4565b60046020526000908152604090205460ff1681565b60405190151581526020016101ca565b61018f6109aa565b6101c06102f2366004610da4565b60016020526000908152604090205481565b60025461023e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101c0610332366004610dbe565b610a0b565b6101c060085481565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b6102cc610375366004610da4565b610b0a565b6103b88585858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b3992505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104809190610e40565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166104f05760405162461bcd60e51b815260206004820152601460248201527f5a65726f20616464722064656c65676174696f6e00000000000000000000000060448201526064015b60405180910390fd5b61052e8685858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b3992505050565b6002546040517ff45346dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820189905287811660448301529091169063f45346dc90606401600060405180830381600087803b1580156105aa57600080fd5b505af11580156105be573d6000803e3d6000fd5b50505050505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146106315760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146106df5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461078d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b73ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146108405760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b600855565b60075473ffffffffffffffffffffffffffffffffffffffff1633146108ac5760405162461bcd60e51b815260206004820152600c60248201527f4e6f742070726f706f736572000000000000000000000000000000000000000060448201526064016104e7565b600554158015906108be575060065415155b80156108d857506008546006546108d5919061103d565b42115b156108e4576005546000555b60055542600655565b60035473ffffffffffffffffffffffffffffffffffffffff1633146109545760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016104e7565b6109a78173ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b50565b6109b333610b0a565b6109ff5760405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420417574686f72697a6564000000000000000000000060448201526064016104e7565b60006005819055600655565b60008080610a1b84860186610eed565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b901b166020820152603481018390529193509150600090605401604051602081830303815290604052805190602001209050610a818260005483610c7a565b610acd5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016104e7565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260016020526040812054610afd9085611055565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff165b919050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260348101839052600090605401604051602081830303815290604052805190602001209050610b998260005483610c7a565b610be55760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016104e7565b336000908152600160205260409020548390610c0290869061103d565b1115610c505760405162461bcd60e51b815260206004820152601060248201527f436c61696d656420746f6f206d7563680000000000000000000000000000000060448201526064016104e7565b3360009081526001602052604081208054869290610c6f90849061103d565b909155505050505050565b600082610c878584610c90565b14949350505050565b600081815b8451811015610cfc57610ce882868381518110610cdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610d04565b915080610cf48161106c565b915050610c95565b509392505050565b6000818310610d20576000828152602084905260409020610d2f565b60008381526020839052604090205b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b3457600080fd5b60008083601f840112610d6b578081fd5b50813567ffffffffffffffff811115610d82578182fd5b6020830191508360208260051b8501011115610d9d57600080fd5b9250929050565b600060208284031215610db5578081fd5b610d2f82610d36565b60008060008060608587031215610dd3578283fd5b610ddc85610d36565b935060208501359250604085013567ffffffffffffffff80821115610dff578384fd5b818701915087601f830112610e12578384fd5b813581811115610e20578485fd5b886020828501011115610e31578485fd5b95989497505060200194505050565b600060208284031215610e51578081fd5b81518015158114610d2f578182fd5b600060208284031215610e71578081fd5b5035919050565b60008060008060008060a08789031215610e90578182fd5b86359550610ea060208801610d36565b945060408701359350606087013567ffffffffffffffff811115610ec2578283fd5b610ece89828a01610d5a565b9094509250610ee1905060808801610d36565b90509295509295509295565b60008060408385031215610eff578182fd5b8235915060208084013567ffffffffffffffff80821115610f1e578384fd5b818601915086601f830112610f31578384fd5b813581811115610f4357610f436110d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f8657610f866110d4565b604052828152858101935084860182860187018b1015610fa4578788fd5b8795505b83861015610fc6578035855260019590950194938601938601610fa8565b508096505050505050509250929050565b600080600080600060808688031215610fee578081fd5b8535945060208601359350604086013567ffffffffffffffff811115611012578182fd5b61101e88828901610d5a565b9094509250611031905060608701610d36565b90509295509295909350565b60008219821115611050576110506110a5565b500190565b600082821015611067576110676110a5565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561109e5761109e6110a5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212205cdc042944d93e03656f48c1cedfd3b7daade7bca2fd4c737c239fc4e460155c64736f6c63430008030033"; - -type OptimisticRewardsConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: OptimisticRewardsConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class OptimisticRewards__factory extends ContractFactory { - constructor(...args: OptimisticRewardsConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _governance: PromiseOrValue, - _startingRoot: PromiseOrValue, - _proposer: PromiseOrValue, - _revoker: PromiseOrValue, - _token: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _governance, - _startingRoot, - _proposer, - _revoker, - _token, - _lockingVault, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _governance: PromiseOrValue, - _startingRoot: PromiseOrValue, - _proposer: PromiseOrValue, - _revoker: PromiseOrValue, - _token: PromiseOrValue, - _lockingVault: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction( - _governance, - _startingRoot, - _proposer, - _revoker, - _token, - _lockingVault, - overrides || {}, - ); - } - override attach(address: string): OptimisticRewards { - return super.attach(address) as OptimisticRewards; - } - override connect(signer: Signer): OptimisticRewards__factory { - return super.connect(signer) as OptimisticRewards__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): OptimisticRewardsInterface { - return new utils.Interface(_abi) as OptimisticRewardsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): OptimisticRewards { - return new Contract(address, _abi, signerOrProvider) as OptimisticRewards; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/AbstractVestingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/AbstractVestingVault__factory.ts deleted file mode 100644 index d34fe1da..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/AbstractVestingVault__factory.ts +++ /dev/null @@ -1,413 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - AbstractVestingVault, - AbstractVestingVaultInterface, -} from "../../../../contracts/vaults/VestingVault.sol/AbstractVestingVault"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [], - name: "acceptGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - { - internalType: "uint128", - name: "_amount", - type: "uint128", - }, - { - internalType: "uint128", - name: "_startTime", - type: "uint128", - }, - { - internalType: "uint128", - name: "_expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "_cliff", - type: "uint128", - }, - { - internalType: "address", - name: "_delegatee", - type: "address", - }, - ], - name: "addGrantAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_multiplier", - type: "uint256", - }, - ], - name: "changeUnvestedMultiplier", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_to", - type: "address", - }, - ], - name: "delegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "getGrant", - outputs: [ - { - components: [ - { - internalType: "uint128", - name: "allocation", - type: "uint128", - }, - { - internalType: "uint128", - name: "withdrawn", - type: "uint128", - }, - { - internalType: "uint128", - name: "created", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "cliff", - type: "uint128", - }, - { - internalType: "uint128", - name: "latestVotingPower", - type: "uint128", - }, - { - internalType: "address", - name: "delegatee", - type: "address", - }, - { - internalType: "uint256[2]", - name: "range", - type: "uint256[2]", - }, - ], - internalType: "struct VestingVaultStorage.Grant", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "manager", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "removeGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - ], - name: "setManager", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "setTimelock", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "timelock", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "unvestedMultiplier", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "updateVotingPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - { - internalType: "address", - name: "_recipient", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class AbstractVestingVault__factory { - static readonly abi = _abi; - static createInterface(): AbstractVestingVaultInterface { - return new utils.Interface(_abi) as AbstractVestingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): AbstractVestingVault { - return new Contract( - address, - _abi, - signerOrProvider, - ) as AbstractVestingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/VestingVault__factory.ts b/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/VestingVault__factory.ts deleted file mode 100644 index d0860953..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/VestingVault__factory.ts +++ /dev/null @@ -1,477 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - VestingVault, - VestingVaultInterface, -} from "../../../../contracts/vaults/VestingVault.sol/VestingVault"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IERC20", - name: "_token", - type: "address", - }, - { - internalType: "uint256", - name: "_stale", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "int256", - name: "amount", - type: "int256", - }, - ], - name: "VoteChange", - type: "event", - }, - { - inputs: [], - name: "acceptGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - { - internalType: "uint128", - name: "_amount", - type: "uint128", - }, - { - internalType: "uint128", - name: "_startTime", - type: "uint128", - }, - { - internalType: "uint128", - name: "_expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "_cliff", - type: "uint128", - }, - { - internalType: "address", - name: "_delegatee", - type: "address", - }, - ], - name: "addGrantAndDelegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_multiplier", - type: "uint256", - }, - ], - name: "changeUnvestedMultiplier", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "claim", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_to", - type: "address", - }, - ], - name: "delegate", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "getGrant", - outputs: [ - { - components: [ - { - internalType: "uint128", - name: "allocation", - type: "uint128", - }, - { - internalType: "uint128", - name: "withdrawn", - type: "uint128", - }, - { - internalType: "uint128", - name: "created", - type: "uint128", - }, - { - internalType: "uint128", - name: "expiration", - type: "uint128", - }, - { - internalType: "uint128", - name: "cliff", - type: "uint128", - }, - { - internalType: "uint128", - name: "latestVotingPower", - type: "uint128", - }, - { - internalType: "address", - name: "delegatee", - type: "address", - }, - { - internalType: "uint256[2]", - name: "range", - type: "uint256[2]", - }, - ], - internalType: "struct VestingVaultStorage.Grant", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "manager", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "queryVotePower", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "user", - type: "address", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "queryVotePowerView", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "removeGrant", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "manager_", - type: "address", - }, - ], - name: "setManager", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "timelock_", - type: "address", - }, - ], - name: "setTimelock", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "staleBlockLag", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "timelock", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "unvestedMultiplier", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_who", - type: "address", - }, - ], - name: "updateVotingPower", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_amount", - type: "uint256", - }, - { - internalType: "address", - name: "_recipient", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162002e7f38038062002e7f833981016040819052620000349162000050565b60609190911b6001600160601b03191660805260a0526200008a565b6000806040838503121562000063578182fd5b82516001600160a01b03811681146200007a578283fd5b6020939093015192949293505050565b60805160601c60a051612d9b620000e46000396000818161028d0152611bb90152600081816102f5015281816104340152818161072d01528181610a4c01528181610b0c01528181610f4301526118c70152612d9b6000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c8063b6b55f25116100cd578063d0ebdbe711610081578063e7d2028311610066578063e7d20283146102ca578063e91f3235146102dd578063fc0c546a146102f05761016b565b8063d0ebdbe7146102af578063d33219b4146102c25761016b565b8063bf31dbf4116100b2578063bf31dbf414610252578063c1006f4f14610272578063c2c94b88146102885761016b565b8063b6b55f251461022c578063bdacb3031461023f5761016b565b8063485cc955116101245780635c19a95c116101095780635c19a95c146101f35780635f389a9d14610206578063747c1255146102195761016b565b8063485cc955146101d85780634e71d92d146101eb5761016b565b8063267406cb11610155578063267406cb146101985780633e0bdaf7146101ab578063481c6a75146101b35761016b565b8062f714ce146101705780632168034d14610185575b600080fd5b61018361017e3660046129bf565b610317565b005b6101836101933660046129a7565b6104b6565b6101836101a636600461281d565b6105b0565b610183610974565b6101bb610c21565b6040516001600160a01b0390911681526020015b60405180910390f35b6101836101e6366004612837565b610c31565b610183610e37565b61018361020136600461281d565b61108b565b610183610214366004612869565b611388565b61018361022736600461281d565b6117d8565b61018361023a3660046129a7565b611807565b61018361024d36600461281d565b61194b565b61026561026036600461281d565b6119ec565b6040516101cf9190612a49565b61027a611acb565b6040519081526020016101cf565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b6101836102bd36600461281d565b611ad5565b6101bb611b76565b61027a6102d83660046128dc565b611b80565b61027a6102eb366004612905565b611ba2565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b61031f611bf1565b516001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152600860248201527f216d616e6167657200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610386611c5b565b905082816000015410156103dc5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610373565b828160000160008282546103f09190612cf0565b90915550506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612987565b50505050565b6104be611ca0565b516001600160a01b031633146105165760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b60648111156105675760405162461bcd60e51b815260206004820152600a60248201527f41626f76652031303025000000000000000000000000000000000000000000006044820152606401610373565b6105ad6105a86040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b829055565b50565b6105b8611bf1565b516001600160a01b031633146106105760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b600061061a611d66565b6001600160a01b0383811660009081526020928352604080822081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116978301979097526001830154808816838601528190048716606083015260028084015480891660808501529190910490961660a0820152600382015490941660c085015281518083019283905290955091936106eb9392869260e0850192600485019182845b8154815260200190600101908083116106ca57505050505081525050611da6565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612987565b5060006107b6611c5b565b83549091506000906107e690849070010000000000000000000000000000000090046001600160801b0316612afc565b84546107fb91906001600160801b0316612cf0565b9050808260000160008282546108119190612afc565b9091555060009050610821611e8a565b60038601549091506000906108409083906001600160a01b0316611edd565b6003870154600288015491925061088c916001600160a01b03909116906108849070010000000000000000000000000000000090046001600160801b031684612cf0565b849190611f68565b600386015460028701546001600160a01b038981169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0906108ef9070010000000000000000000000000000000090046001600160801b0316600019612b4e565b60405190815260200160405180910390a3610908611d66565b6001600160a01b0397909716600090815260209790975250506040852085815560018101869055600281018690556003810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600481018690556005019490945550505050565b600061097e611d66565b3360009081526020919091526040812080549092506109bc906001600160801b03700100000000000000000000000000000000820481169116612cc8565b6001600160801b0316905060008111610a175760405162461bcd60e51b815260206004820152601260248201527f6e6f206772616e7420617661696c61626c6500000000000000000000000000006044820152606401610373565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190612987565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b158015610b5857600080fd5b505af1158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612987565b506000610b9b612077565b516040805180820190915281815290915060208101610bba8484612afc565b9052610bcc9060048501906002612733565b50610c1c610c0e6040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611ced565b610c188484612afc565b9055565b505050565b6000610c2b611bf1565b51905090565b610c6f6040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611ced565b5415610cbd5760405162461bcd60e51b815260206004820152600b60248201527f696e697469616c697a65640000000000000000000000000000000000000000006044820152606401610373565b610d04610cfe6040518060400160405280600b81526020017f696e697469616c697a6564000000000000000000000000000000000000000000815250611ced565b60019055565b610d78610d456040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038516179055565b610dec610db96040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055565b610e33610e2d6040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b60649055565b5050565b6000610e41611d66565b3360009081526020918252604080822081516101008101835281546001600160801b03808216835270010000000000000000000000000000000091829004811683880152600184015480821684870152829004811660608401526002808501548083166080860152929092041660a083015260038301546001600160a01b031660c083015283518085019485905260048401805482529397509495610f0b959294889460e0870194939092909190600587019085018083116106ca57505050505081525050611da6565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc79190612987565b50815481908390601090610ff990849070010000000000000000000000000000000090046001600160801b0316612ad1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008260040160016002811061105c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01541115611081578060048301600101600082825461107b9190612cf0565b90915550505b610e333383612113565b6000611095611d66565b3360009081526020919091526040902060038101549091506001600160a01b03838116911614156111085760405162461bcd60e51b815260206004820152601160248201527f416c72656164792064656c6567617465640000000000000000000000000000006044820152606401610373565b6000611112611e8a565b60038301549091506000906111319083906001600160a01b0316611edd565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c08301528251808401938490529394506000936111ee93889260e08501929160048501919082845b8154815260200190600101908083116111cd5750505050508152505061230a565b6003850154600286015491925061123a916001600160a01b03909116906112329070010000000000000000000000000000000090046001600160801b031685612cf0565b859190611f68565b6003840154600285015433916001600160a01b0316907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09061129b9070010000000000000000000000000000000090046001600160801b0316600019612b4e565b60405190815260200160405180910390a360006112b88487611edd565b9050336001600160a01b0316866001600160a01b03167f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e0846040516112ff91815260200190565b60405180910390a361131d866113158484612afc565b869190611f68565b506002840180546001600160801b03928316700100000000000000000000000000000000029216919091179055505060030180546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b611390611bf1565b516001600160a01b031633146113e85760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b826001600160801b0316826001600160801b03161115801561141c5750826001600160801b0316846001600160801b031611155b6114685760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420636f6e66696775726174696f6e00000000000000000000006044820152606401610373565b6001600160801b03841661147a574393505b6000611484611c5b565b9050600061149061237b565b9050866001600160801b0316826000015410156114ef5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610373565b60006114f9611d66565b6001600160a01b038a1660009081526020919091526040902080549091506001600160801b03161561156d5760405162461bcd60e51b815260206004820152600960248201527f486173204772616e7400000000000000000000000000000000000000000000006044820152606401610373565b6001600160a01b038416156115825783611584565b885b93506000606483600001518a61159a9190612c06565b6115a49190612b14565b90506040518061010001604052808a6001600160801b0316815260200160006001600160801b03168152602001896001600160801b03168152602001886001600160801b03168152602001876001600160801b03168152602001826001600160801b03168152602001866001600160a01b03168152602001604051806040016040528060008152602001600081525081525061163e611d66565b6001600160a01b038c8116600090815260209283526040908190208451938501516001600160801b0394851670010000000000000000000000000000000091861682021782559185015160608601519085169085168302176001820155608085015160a086015190851694169091029290921760028084019190915560c08401516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560e083015161170391600484019190612733565b50905050886001600160801b03168460000160008282546117249190612cf0565b9091555060009050611734611e8a565b60038401549091506000906117539083906001600160a01b0316611edd565b600385015490915061177b906001600160a01b03166108846001600160801b03861684612afc565b60038401546040516001600160801b03851681526001600160a01b038e81169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3505050505050505050505050565b60006117e2611d66565b6001600160a01b0383166000908152602091909152604090209050610e338282612113565b61180f611bf1565b516001600160a01b031633146118675760405162461bcd60e51b815260206004820152600860248201527f216d616e616765720000000000000000000000000000000000000000000000006044820152606401610373565b6000611871611c5b565b9050818160000160008282546118879190612afc565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561191357600080fd5b505af1158015611927573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612987565b611953611ca0565b516001600160a01b031633146119ab5760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b6105ad610db96040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b6119f4612771565b6119fc611d66565b6001600160a01b038381166000908152602092835260409081902081516101008101835281546001600160801b038082168352700100000000000000000000000000000000918290048116968301969096526001830154808716838601528190048616606083015260028084015480881660808501529190910490951660a0820152600382015490931660c08401528151808301928390529293909260e08501929091600485019182845b815481526020019060010190808311611aa75750505050508152505090505b919050565b6000610c2b61237b565b611add611ca0565b516001600160a01b03163314611b355760405162461bcd60e51b815260206004820152600960248201527f2174696d656c6f636b00000000000000000000000000000000000000000000006044820152606401610373565b6105ad610db96040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b6000610c2b611ca0565b600080611b8b611e8a565b9050611b988185856123c8565b9150505b92915050565b600080611bad611e8a565b9050611be78686611bde7f000000000000000000000000000000000000000000000000000000000000000043612cf0565b84929190612421565b9695505050505050565b604080516020810190915260008152611c3e6040518060400160405280600781526020017f6d616e61676572000000000000000000000000000000000000000000000000008152506120d8565b604080516020810190915290546001600160a01b03168152905090565b6000611c9b6040518060400160405280600a81526020017f756e61737369676e656400000000000000000000000000000000000000000000815250611ced565b905090565b604080516020810190915260008152611c3e6040518060400160405280600881526020017f74696d656c6f636b0000000000000000000000000000000000000000000000008152506120d8565b6000807fec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320905060008184604051602001611d28929190612a04565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6000611c9b6040518060400160405280600681526020017f6772616e7473000000000000000000000000000000000000000000000000000081525061248f565b600081608001516001600160801b0316431080611dcf575081604001516001600160801b031643105b15611ddc57506000611ac6565b81606001516001600160801b03164310611e115760208201518251611e019190612cc8565b6001600160801b03169050611ac6565b600082604001518360600151611e279190612cc8565b6001600160801b031683604001516001600160801b031643611e499190612cf0565b8451611e5e91906001600160801b0316612c35565b611e689190612b3a565b905082602001516001600160801b031681611e839190612cf0565b9392505050565b604080518082019091526060815260006020820152611c9b6040518060400160405280600b81526020017f766f74696e67506f7765720000000000000000000000000000000000000000008152506124ca565b600080611eeb846020015190565b6001600160a01b03841660009081526020919091526040902080549091506001600160801b031680611f2257600092505050611b9c565b6000611f5d83611f33600185612cf0565b016001015460c081901c9177ffffffffffffffffffffffffffffffffffffffffffffffff90911690565b979650505050505050565b77ffffffffffffffffffffffffffffffffffffffffffffffff811115611fd05760405162461bcd60e51b815260206004820152600360248201527f4f6f4200000000000000000000000000000000000000000000000000000000006044820152606401610373565b6000611fdd846020015190565b6001600160a01b03841660009081526020829052604081208054929350914360c01b9185831791608081901c916001600160801b0390911690811561202f5761202b86611f33600185612cf0565b5090505b814382141561204657612043600184612cf0565b90505b848160018901015543821461206a5761206a8785612065866001612afc565b612503565b5050505050505050505050565b6040805160208101909152600081526120c46040518060400160405280600581526020017f626f756e64000000000000000000000000000000000000000000000000000000815250611ced565b604080516020810190915290548152905090565b6000807f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b905060008184604051602001611d28929190612a04565b600061211d611e8a565b600383015490915060009061213c9083906001600160a01b0316611edd565b604080516101008101825285546001600160801b0380821683527001000000000000000000000000000000009182900481166020840152600188015480821684860152829004811660608401526002808901548083166080860152929092041660a083015260038701546001600160a01b031660c083015282518084019093529293506000926121fd92879160e08401919060048401908282826020028201918154815260200190600101908083116111cd5750505050508152505061230a565b600285015490915060009061222f9070010000000000000000000000000000000090046001600160801b031683612c54565b90508061223f5750505050610e33565b6000811315612269576003850154612264906001600160a01b03166113158386612afc565b612291565b6003850154612291906001600160a01b031661228783600019612b4e565b6113159086612cf0565b60038501546040518281526001600160a01b038881169216907f33161cf2da28d747be9df136b6f3729390298494947268743193c53d73d3c2e09060200160405180910390a3506002840180546001600160801b0392831670010000000000000000000000000000000002921691909117905550505050565b60008061231683611da6565b9050600083602001516001600160801b0316826123339190612afc565b845161234891906001600160801b0316612cf0565b9050606461235461237b565b5161235f9083612c35565b6123699190612b3a565b6123739083612afc565b949350505050565b6040805160208101909152600081526120c46040518060400160405280601281526020017f756e7665737465644d756c7469706c6965720000000000000000000000000000815250611ced565b6000806123d6856020015190565b6001600160a01b0385166000908152602082905260408120805492935091608081901c916001600160801b03909116906124138488838686612523565b9a9950505050505050505050565b60008061242f866020015190565b6001600160a01b0386166000908152602082905260408120805492935091608081901c916001600160801b03909116908061246d858a8a8787612523565b9150915083821115612413576124848483876126c8565b612413858385612503565b6000807fe09ca27c98c7039e0ebb504afcf592a1c02936970c7b5952890c3a3eea53d63c905060008184604051602001611d28929190612a04565b60408051808201909152606081526000602082015260006124ea836126f8565b6040805180820190915293845260208401525090919050565b80821061250f57600080fd5b6001600160801b031660809190911b179055565b600080826125735760405162461bcd60e51b815260206004820152600d60248201527f756e696e697469616c697a6564000000000000000000000000000000000000006044820152606401610373565b8585111561258057600080fd5b82841061258c57600080fd5b6000612599600185612cf0565b90508460005b82821461263d57600060026125b48585612afc565b6125bf906001612afc565b6125c99190612b3a565b6001818d01015490915060c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168b82141561260b579296509194506126be9350505050565b8b821015612627578a82101561261f578293505b829450612635565b612632600184612cf0565b95505b50505061259f565b60018a8301015460c081901c9077ffffffffffffffffffffffffffffffffffffffffffffffff168a8211156126b45760405162461bcd60e51b815260206004820152600e60248201527f536561726368204661696c7572650000000000000000000000000000000000006044820152606401610373565b9195509093505050505b9550959350505050565b818311156126d557600080fd5b60018101835b838110156126f1576000828201556001016126db565b5050505050565b6000807f7b1a68ec3e3284b167e69db1c622dcfa612281976b71d7e2d239dbe16a75891a905060008184604051602001611d28929190612a04565b8260028101928215612761579160200282015b82811115612761578251825591602001919060010190612746565b5061276d9291506127bc565b5090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260e081016127b76127d1565b905290565b5b8082111561276d57600081556001016127bd565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114611ac657600080fd5b80356001600160801b0381168114611ac657600080fd5b60006020828403121561282e578081fd5b611e83826127ef565b60008060408385031215612849578081fd5b612852836127ef565b9150612860602084016127ef565b90509250929050565b60008060008060008060c08789031215612881578182fd5b61288a876127ef565b955061289860208801612806565b94506128a660408801612806565b93506128b460608801612806565b92506128c260808801612806565b91506128d060a088016127ef565b90509295509295509295565b600080604083850312156128ee578182fd5b6128f7836127ef565b946020939093013593505050565b6000806000806060858703121561291a578384fd5b612923856127ef565b935060208501359250604085013567ffffffffffffffff80821115612946578384fd5b818701915087601f830112612959578384fd5b813581811115612967578485fd5b886020828501011115612978578485fd5b95989497505060200194505050565b600060208284031215612998578081fd5b81518015158114611e83578182fd5b6000602082840312156129b8578081fd5b5035919050565b600080604083850312156129d1578182fd5b82359150612860602084016127ef565b8060005b60028110156104b05781518452602093840193909101906001016129e5565b60008382528251815b81811015612a2957602081860181015185830182015201612a0d565b81811115612a3a5782602083860101525b50919091016020019392505050565b6000610120820190506001600160801b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525060c0830151612ab760c08401826001600160a01b03169052565b5060e0830151612aca60e08401826129e1565b5092915050565b60006001600160801b03808316818516808303821115612af357612af3612d07565b01949350505050565b60008219821115612b0f57612b0f612d07565b500190565b60006001600160801b0380841680612b2e57612b2e612d36565b92169190910492915050565b600082612b4957612b49612d36565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615612b8d57612b8d612d07565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615612bc757612bc7612d07565b858712925087820587128484161615612be257612be2612d07565b87850587128184161615612bf857612bf8612d07565b505050929093029392505050565b60006001600160801b0380831681851681830481118215151615612c2c57612c2c612d07565b02949350505050565b6000816000190483118215151615612c4f57612c4f612d07565b500290565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615612c8e57612c8e612d07565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615612cc257612cc2612d07565b50500390565b60006001600160801b0383811690831681811015612ce857612ce8612d07565b039392505050565b600082821015612d0257612d02612d07565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220ab4b53fc806b57dc5e94055ae34c5ad9fef6e0260032592719959276cf204a4064736f6c63430008030033"; - -type VestingVaultConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: VestingVaultConstructorParams, -): xs is ConstructorParameters => xs.length > 1; - -export class VestingVault__factory extends ContractFactory { - constructor(...args: VestingVaultConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _token: PromiseOrValue, - _stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise { - return super.deploy( - _token, - _stale, - overrides || {}, - ) as Promise; - } - override getDeployTransaction( - _token: PromiseOrValue, - _stale: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): TransactionRequest { - return super.getDeployTransaction(_token, _stale, overrides || {}); - } - override attach(address: string): VestingVault { - return super.attach(address) as VestingVault; - } - override connect(signer: Signer): VestingVault__factory { - return super.connect(signer) as VestingVault__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): VestingVaultInterface { - return new utils.Interface(_abi) as VestingVaultInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider, - ): VestingVault { - return new Contract(address, _abi, signerOrProvider) as VestingVault; - } -} diff --git a/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/index.ts b/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/index.ts deleted file mode 100644 index 41205fcc..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/VestingVault.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { AbstractVestingVault__factory } from "./AbstractVestingVault__factory"; -export { VestingVault__factory } from "./VestingVault__factory"; diff --git a/packages/council-typechain/src/factories/contracts/vaults/index.ts b/packages/council-typechain/src/factories/contracts/vaults/index.ts deleted file mode 100644 index eab29158..00000000 --- a/packages/council-typechain/src/factories/contracts/vaults/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as lockingVaultSol from "./LockingVault.sol"; -export * as nonvotingVaultSol from "./NonvotingVault.sol"; -export * as vestingVaultSol from "./VestingVault.sol"; -export { FrozenLockingVault__factory } from "./FrozenLockingVault__factory"; -export { FrozenVestingVault__factory } from "./FrozenVestingVault__factory"; -export { GSCVault__factory } from "./GSCVault__factory"; -export { OptimisticRewards__factory } from "./OptimisticRewards__factory"; diff --git a/packages/council-typechain/src/factories/index.ts b/packages/council-typechain/src/factories/index.ts deleted file mode 100644 index 6ff9ace7..00000000 --- a/packages/council-typechain/src/factories/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as openzeppelin from "./@openzeppelin"; -export * as contracts from "./contracts"; diff --git a/packages/council-typechain/src/hardhat.d.ts b/packages/council-typechain/src/hardhat.d.ts deleted file mode 100644 index 3047992d..00000000 --- a/packages/council-typechain/src/hardhat.d.ts +++ /dev/null @@ -1,402 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { ethers } from "ethers"; -import { - FactoryOptions, - HardhatEthersHelpers as HardhatEthersHelpersBase, -} from "@nomiclabs/hardhat-ethers/types"; - -import * as Contracts from "."; - -declare module "hardhat/types/runtime" { - interface HardhatEthersHelpers extends HardhatEthersHelpersBase { - getContractFactory( - name: "IERC20Permit", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "IERC20", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "CoreVoting", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Airdrop", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "OptimisticGrants", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Spender", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Timelock", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Treasury", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "ICoreVoting", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "IERC20", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "IERC20Permit", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "ILockingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "IVotingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Authorizable", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "ERC20Permit", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "ERC20PermitWithMint", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "AbstractMerkleRewards", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MerkleRewards", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Storage", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockCoreVoting", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockDoubleSpender", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockERC20", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockHistoryTracker", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockLockingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockTokenLogic", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "MockVotingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "Reverter", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "ReadAndWriteAnyStorage", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "TestCoreVoting", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "TestTreasury", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "TestVestingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "SimpleProxy", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "FrozenLockingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "FrozenVestingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "GSCVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "AbstractLockingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "LockingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "NonVotingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "OptimisticRewards", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "AbstractVestingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - name: "VestingVault", - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - - getContractAt( - name: "IERC20Permit", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "IERC20", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "CoreVoting", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Airdrop", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "OptimisticGrants", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Spender", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Timelock", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Treasury", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "ICoreVoting", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "IERC20", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "IERC20Permit", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "ILockingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "IVotingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Authorizable", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "ERC20Permit", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "ERC20PermitWithMint", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "AbstractMerkleRewards", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MerkleRewards", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Storage", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockCoreVoting", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockDoubleSpender", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockERC20", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockHistoryTracker", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockLockingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockTokenLogic", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "MockVotingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "Reverter", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "ReadAndWriteAnyStorage", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "TestCoreVoting", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "TestTreasury", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "TestVestingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "SimpleProxy", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "FrozenLockingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "FrozenVestingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "GSCVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "AbstractLockingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "LockingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "NonVotingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "OptimisticRewards", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "AbstractVestingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - getContractAt( - name: "VestingVault", - address: string, - signer?: ethers.Signer, - ): Promise; - - // default types - getContractFactory( - name: string, - signerOrOptions?: ethers.Signer | FactoryOptions, - ): Promise; - getContractFactory( - abi: any[], - bytecode: ethers.utils.BytesLike, - signer?: ethers.Signer, - ): Promise; - getContractAt( - nameOrAbi: string | any[], - address: string, - signer?: ethers.Signer, - ): Promise; - } -} diff --git a/packages/council-typechain/src/index.ts b/packages/council-typechain/src/index.ts deleted file mode 100644 index 01a9c57c..00000000 --- a/packages/council-typechain/src/index.ts +++ /dev/null @@ -1,86 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as openzeppelin from "./@openzeppelin"; -export type { openzeppelin }; -import type * as contracts from "./contracts"; -export type { contracts }; -export * as factories from "./factories"; -export type { IERC20Permit } from "./@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit"; -export { IERC20Permit__factory } from "./factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory"; -export type { IERC20 } from "./@openzeppelin/contracts/token/ERC20/IERC20"; -export { IERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/IERC20__factory"; -export type { CoreVoting } from "./contracts/CoreVoting"; -export { CoreVoting__factory } from "./factories/contracts/CoreVoting__factory"; -export type { Airdrop } from "./contracts/features/Airdrop"; -export { Airdrop__factory } from "./factories/contracts/features/Airdrop__factory"; -export type { OptimisticGrants } from "./contracts/features/OptimisticGrants"; -export { OptimisticGrants__factory } from "./factories/contracts/features/OptimisticGrants__factory"; -export type { Spender } from "./contracts/features/Spender"; -export { Spender__factory } from "./factories/contracts/features/Spender__factory"; -export type { Timelock } from "./contracts/features/Timelock"; -export { Timelock__factory } from "./factories/contracts/features/Timelock__factory"; -export type { Treasury } from "./contracts/features/Treasury"; -export { Treasury__factory } from "./factories/contracts/features/Treasury__factory"; -export type { ICoreVoting } from "./contracts/interfaces/ICoreVoting"; -export { ICoreVoting__factory } from "./factories/contracts/interfaces/ICoreVoting__factory"; -export type { ILockingVault } from "./contracts/interfaces/ILockingVault"; -export { ILockingVault__factory } from "./factories/contracts/interfaces/ILockingVault__factory"; -export type { IVotingVault } from "./contracts/interfaces/IVotingVault"; -export { IVotingVault__factory } from "./factories/contracts/interfaces/IVotingVault__factory"; -export type { Authorizable } from "./contracts/libraries/Authorizable"; -export { Authorizable__factory } from "./factories/contracts/libraries/Authorizable__factory"; -export type { ERC20Permit } from "./contracts/libraries/ERC20Permit"; -export { ERC20Permit__factory } from "./factories/contracts/libraries/ERC20Permit__factory"; -export type { ERC20PermitWithMint } from "./contracts/libraries/ERC20PermitWithMint"; -export { ERC20PermitWithMint__factory } from "./factories/contracts/libraries/ERC20PermitWithMint__factory"; -export type { AbstractMerkleRewards } from "./contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards"; -export { AbstractMerkleRewards__factory } from "./factories/contracts/libraries/MerkleRewards.sol/AbstractMerkleRewards__factory"; -export type { MerkleRewards } from "./contracts/libraries/MerkleRewards.sol/MerkleRewards"; -export { MerkleRewards__factory } from "./factories/contracts/libraries/MerkleRewards.sol/MerkleRewards__factory"; -export type { Storage } from "./contracts/libraries/Storage"; -export { Storage__factory } from "./factories/contracts/libraries/Storage__factory"; -export type { MockCoreVoting } from "./contracts/mocks/MockCoreVoting"; -export { MockCoreVoting__factory } from "./factories/contracts/mocks/MockCoreVoting__factory"; -export type { MockDoubleSpender } from "./contracts/mocks/MockDoubleSpender"; -export { MockDoubleSpender__factory } from "./factories/contracts/mocks/MockDoubleSpender__factory"; -export type { MockERC20 } from "./contracts/mocks/MockERC20"; -export { MockERC20__factory } from "./factories/contracts/mocks/MockERC20__factory"; -export type { MockHistoryTracker } from "./contracts/mocks/MockHistoryTracker"; -export { MockHistoryTracker__factory } from "./factories/contracts/mocks/MockHistoryTracker__factory"; -export type { MockLockingVault } from "./contracts/mocks/MockLockingVault"; -export { MockLockingVault__factory } from "./factories/contracts/mocks/MockLockingVault__factory"; -export type { MockTokenLogic } from "./contracts/mocks/MockTokenLogic"; -export { MockTokenLogic__factory } from "./factories/contracts/mocks/MockTokenLogic__factory"; -export type { MockVotingVault } from "./contracts/mocks/MockVotingVault"; -export { MockVotingVault__factory } from "./factories/contracts/mocks/MockVotingVault__factory"; -export type { Reverter } from "./contracts/mocks/Reverter"; -export { Reverter__factory } from "./factories/contracts/mocks/Reverter__factory"; -export type { ReadAndWriteAnyStorage } from "./contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage"; -export { ReadAndWriteAnyStorage__factory } from "./factories/contracts/mocks/StorageRead.sol/ReadAndWriteAnyStorage__factory"; -export type { TestCoreVoting } from "./contracts/mocks/TestCoreVoting"; -export { TestCoreVoting__factory } from "./factories/contracts/mocks/TestCoreVoting__factory"; -export type { TestTreasury } from "./contracts/mocks/TestTreasury"; -export { TestTreasury__factory } from "./factories/contracts/mocks/TestTreasury__factory"; -export type { TestVestingVault } from "./contracts/mocks/TestVestingVault"; -export { TestVestingVault__factory } from "./factories/contracts/mocks/TestVestingVault__factory"; -export type { SimpleProxy } from "./contracts/simpleProxy.sol/SimpleProxy"; -export { SimpleProxy__factory } from "./factories/contracts/simpleProxy.sol/SimpleProxy__factory"; -export type { FrozenLockingVault } from "./contracts/vaults/FrozenLockingVault"; -export { FrozenLockingVault__factory } from "./factories/contracts/vaults/FrozenLockingVault__factory"; -export type { FrozenVestingVault } from "./contracts/vaults/FrozenVestingVault"; -export { FrozenVestingVault__factory } from "./factories/contracts/vaults/FrozenVestingVault__factory"; -export type { GSCVault } from "./contracts/vaults/GSCVault"; -export { GSCVault__factory } from "./factories/contracts/vaults/GSCVault__factory"; -export type { AbstractLockingVault } from "./contracts/vaults/LockingVault.sol/AbstractLockingVault"; -export { AbstractLockingVault__factory } from "./factories/contracts/vaults/LockingVault.sol/AbstractLockingVault__factory"; -export type { LockingVault } from "./contracts/vaults/LockingVault.sol/LockingVault"; -export { LockingVault__factory } from "./factories/contracts/vaults/LockingVault.sol/LockingVault__factory"; -export type { NonVotingVault } from "./contracts/vaults/NonvotingVault.sol/NonVotingVault"; -export { NonVotingVault__factory } from "./factories/contracts/vaults/NonvotingVault.sol/NonVotingVault__factory"; -export type { OptimisticRewards } from "./contracts/vaults/OptimisticRewards"; -export { OptimisticRewards__factory } from "./factories/contracts/vaults/OptimisticRewards__factory"; -export type { AbstractVestingVault } from "./contracts/vaults/VestingVault.sol/AbstractVestingVault"; -export { AbstractVestingVault__factory } from "./factories/contracts/vaults/VestingVault.sol/AbstractVestingVault__factory"; -export type { VestingVault } from "./contracts/vaults/VestingVault.sol/VestingVault"; -export { VestingVault__factory } from "./factories/contracts/vaults/VestingVault.sol/VestingVault__factory"; diff --git a/packages/council-typechain/tsconfig.build.json b/packages/council-typechain/tsconfig.build.json deleted file mode 100644 index 0cefdea6..00000000 --- a/packages/council-typechain/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/*"] -} diff --git a/packages/council-typechain/tsconfig.json b/packages/council-typechain/tsconfig.json deleted file mode 100644 index c1d1ec50..00000000 --- a/packages/council-typechain/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "@council/tsconfig/base.json", - "include": ["./hardhat.config.ts"], - "compilerOptions": { - "outDir": "dist/", - "target": "es5", - "module": "commonjs", - "resolveJsonModule": true - } -} diff --git a/packages/council-typechain/.eslintrc b/packages/council-viem/.eslintrc similarity index 100% rename from packages/council-typechain/.eslintrc rename to packages/council-viem/.eslintrc diff --git a/packages/council-viem/.gitignore b/packages/council-viem/.gitignore new file mode 100644 index 00000000..db4c6d9b --- /dev/null +++ b/packages/council-viem/.gitignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/packages/council-viem/CHANGELOG.md b/packages/council-viem/CHANGELOG.md new file mode 100644 index 00000000..7a2de613 --- /dev/null +++ b/packages/council-viem/CHANGELOG.md @@ -0,0 +1,21 @@ +# @delvtech/council-viem + +## 0.0.3 + +### Patch Changes + +- @delvtech/council-core@0.0.3 + +## 0.0.2 + +### Patch Changes + +- @delvtech/council-core@0.0.2 + +## 0.0.1 + +### Patch Changes + +- abebf3c: Initial release 🚀 +- Updated dependencies [abebf3c] + - @delvtech/council-core@0.0.1 diff --git a/packages/council-viem/README.md b/packages/council-viem/README.md new file mode 100644 index 00000000..2d1963d6 --- /dev/null +++ b/packages/council-viem/README.md @@ -0,0 +1 @@ +# Viem integrations for the @delvtech/evm-client diff --git a/packages/council-viem/example/ElementGoerliAddressList.json b/packages/council-viem/example/ElementGoerliAddressList.json new file mode 100644 index 00000000..ac5f2049 --- /dev/null +++ b/packages/council-viem/example/ElementGoerliAddressList.json @@ -0,0 +1,12 @@ +{ + "addresses": { + "coreVoting": "0x0CB8aa45068EE31e97B717b0B35e26A43884c84c", + "gscVoting": "0x600c4926c9F88beCE3533ceaAA36804d6E23F1c1", + "gscVault": "0x0A575bFA79454112c37B9Af2a6362c9c68f7d2e3", + "lockingVault": "0xb5E8AF575Ee302A24c6C7746a99D895BeF67cb5D", + "timeLock": "0x36687bdD319a78AB4b4347f3A7459Da235AFc4f4", + "treasury": "0xd46dDb33A33FD3D352d08cc7022Ce1f5c6ccFF1a", + "vestingVault": "0xe69D2F8DeD2924e0845118E7E467Fc97F7994ef6" + }, + "chainId": 5 +} diff --git a/apps/council-sdk-starter/src/addresses/ElementMainnetAddressList.json b/packages/council-viem/example/ElementMainnetAddressList.json similarity index 82% rename from apps/council-sdk-starter/src/addresses/ElementMainnetAddressList.json rename to packages/council-viem/example/ElementMainnetAddressList.json index 0db05279..8810730a 100644 --- a/apps/council-sdk-starter/src/addresses/ElementMainnetAddressList.json +++ b/packages/council-viem/example/ElementMainnetAddressList.json @@ -6,6 +6,8 @@ "gscCoreVoting": "0x40309f197e7f94B555904DF0f788a3F48cF326aB", "gscVault": "0xcA870E8aa4FCEa85b5f0c6F4209C8CBA9265B940", "lockingVault": "0x02Bd4A3b1b95b01F2Aa61655415A5d3EAAcaafdD", + "optimisticGrants": "0x0000000000000000000000000000000000000000", + "optimisticRewardsVault": "0x0000000000000000000000000000000000000000", "spender": "0xDa2Baf34B5717b257e52039f78d02B9C58751781", "timeLock": "0x81758f3361A769016eae4844072FA6d7f828a651", "treasury": "0x82eF450FB7f06E3294F2f19ed1713b255Af0f541", diff --git a/packages/council-viem/package.json b/packages/council-viem/package.json new file mode 100644 index 00000000..d0ce38b6 --- /dev/null +++ b/packages/council-viem/package.json @@ -0,0 +1,42 @@ +{ + "name": "@delvtech/council-viem", + "version": "0.0.3", + "license": "MIT", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup", + "watch": "tsup --watch", + "test": "vitest run", + "test:watch": "vitest --reporter=verbose", + "typecheck": "tsc --noEmit" + }, + "peerDependencies": { + "viem": ">=2" + }, + "dependencies": { + "@delvtech/council-core": "0.0.3", + "@delvtech/evm-client-viem": "^0.1.1" + }, + "devDependencies": { + "@council/eslint-config": "*", + "@council/tsconfig": "*", + "tsup": "^8.0.2", + "typescript": "^5.3.3", + "viem": "^2.7.12", + "vitest": "^1.3.1" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ] +} diff --git a/packages/council-viem/src/contract/createReadContractFactory.ts b/packages/council-viem/src/contract/createReadContractFactory.ts new file mode 100644 index 00000000..aafef960 --- /dev/null +++ b/packages/council-viem/src/contract/createReadContractFactory.ts @@ -0,0 +1,42 @@ +import { + ReadContractFactory, + extendReadContract, +} from "@delvtech/council-core"; +import { + SimpleCache, + createNetwork, + createReadContract, +} from "@delvtech/evm-client-viem"; +import { PublicClient } from "viem"; + +export interface CreateReadContractFactoryOptions { + publicClient: PublicClient; + cache?: SimpleCache; + namespace?: string; +} + +export function createReadContractFactory( + factoryOptions: CreateReadContractFactoryOptions, +): ReadContractFactory { + return (instanceOptions) => { + const options = { + ...factoryOptions, + ...instanceOptions, + }; + + const viemReadContract = createReadContract({ + abi: options.abi, + address: options.address, + publicClient: options.publicClient, + }); + + const viemNetwork = createNetwork(options.publicClient); + + // Adds custom event fetching logic to the base contract before caching. + return extendReadContract({ + ...options, + contract: viemReadContract, + network: viemNetwork, + }); + }; +} diff --git a/packages/council-viem/src/contract/createReadWriteContractFactory.ts b/packages/council-viem/src/contract/createReadWriteContractFactory.ts new file mode 100644 index 00000000..39659bc2 --- /dev/null +++ b/packages/council-viem/src/contract/createReadWriteContractFactory.ts @@ -0,0 +1,42 @@ +import { + ReadWriteContractFactory, + extendReadWriteContract, +} from "@delvtech/council-core"; +import { + createNetwork, + createReadWriteContract, +} from "@delvtech/evm-client-viem"; +import { CreateReadContractFactoryOptions } from "src/contract/createReadContractFactory"; +import { WalletClient } from "viem"; + +export interface CreateReadWriteContractFactoryOptions + extends CreateReadContractFactoryOptions { + walletClient: WalletClient; +} + +export function createReadWriteContractFactory( + factoryOptions: CreateReadWriteContractFactoryOptions, +): ReadWriteContractFactory { + return (instanceOptions) => { + const options = { + ...factoryOptions, + ...instanceOptions, + }; + + const viemReadWriteContract = createReadWriteContract({ + abi: options.abi, + address: options.address, + publicClient: options.publicClient, + walletClient: options.walletClient, + }); + + const viemNetwork = createNetwork(options.publicClient); + + // Adds custom event fetching logic to the base contract before caching. + return extendReadWriteContract({ + ...options, + contract: viemReadWriteContract, + network: viemNetwork, + }); + }; +} diff --git a/packages/council-viem/src/index.ts b/packages/council-viem/src/index.ts new file mode 100644 index 00000000..e0b29a17 --- /dev/null +++ b/packages/council-viem/src/index.ts @@ -0,0 +1,39 @@ +// Client +export { + createReadContractFactory, + type CreateReadContractFactoryOptions, +} from "src/contract/createReadContractFactory"; +export { + createReadWriteContractFactory, + type CreateReadWriteContractFactoryOptions, +} from "src/contract/createReadWriteContractFactory"; + +// Client Re-exports +export * from "@delvtech/evm-client-viem"; + +// Council +export { + ReadCouncil, + type ReadCouncilOptions, +} from "src/models/council/ReadCouncil"; +export { + ReadWriteCouncil, + type ReadWriteCouncilOptions, +} from "src/models/council/ReadWriteCouncil"; +export { + ReadWriteMockToken, + type ReadWriteMockTokenOptions, +} from "src/models/token/ReadWriteMockToken"; + +// Council Core Re-exports +export * from "@delvtech/council-core/airdrop"; +export * from "@delvtech/council-core/contract"; +export * from "@delvtech/council-core/errors"; +export * from "@delvtech/council-core/model"; +export * from "@delvtech/council-core/proposal"; +export { ReadToken, type ReadTokenOptions } from "@delvtech/council-core/token"; +export * from "@delvtech/council-core/utils"; +export * from "@delvtech/council-core/vaults"; +export * from "@delvtech/council-core/vote"; +export * from "@delvtech/council-core/voter"; +export * from "@delvtech/council-core/voting"; diff --git a/packages/council-viem/src/models/council/ReadCouncil.ts b/packages/council-viem/src/models/council/ReadCouncil.ts new file mode 100644 index 00000000..a172ec44 --- /dev/null +++ b/packages/council-viem/src/models/council/ReadCouncil.ts @@ -0,0 +1,28 @@ +import { ReadCouncil as BaseReadCouncil } from "@delvtech/council-core"; +import { SimpleCache, createNetwork } from "@delvtech/evm-client-viem"; +import { createReadContractFactory } from "src/contract/createReadContractFactory"; +import { PublicClient } from "viem"; + +export interface ReadCouncilOptions { + publicClient: PublicClient; + cache?: SimpleCache; + /** + * A namespace to distinguish this instance from others in the cache by + * prefixing all cache keys. + */ + namespace?: string; +} + +export class ReadCouncil extends BaseReadCouncil { + constructor({ publicClient, cache, namespace }: ReadCouncilOptions) { + super({ + name: namespace, + network: createNetwork(publicClient), + contractFactory: createReadContractFactory({ + publicClient, + cache, + namespace, + }), + }); + } +} diff --git a/packages/council-viem/src/models/council/ReadWriteCouncil.ts b/packages/council-viem/src/models/council/ReadWriteCouncil.ts new file mode 100644 index 00000000..defff99a --- /dev/null +++ b/packages/council-viem/src/models/council/ReadWriteCouncil.ts @@ -0,0 +1,33 @@ +import { + ReadWriteCouncil as BaseReadWriteCouncil, + ReadCouncil, +} from "@delvtech/council-core"; +import { createNetwork } from "@delvtech/evm-client-viem"; +import { createReadWriteContractFactory } from "src/contract/createReadWriteContractFactory"; +import { ReadCouncilOptions } from "src/models/council/ReadCouncil"; +import { WalletClient } from "viem"; + +export interface ReadWriteCouncilOptions extends ReadCouncilOptions { + walletClient: WalletClient; + readCouncil?: ReadCouncil; +} + +export class ReadWriteCouncil extends BaseReadWriteCouncil { + constructor({ + publicClient, + walletClient, + cache, + namespace, + }: ReadWriteCouncilOptions) { + super({ + name: namespace, + network: createNetwork(publicClient), + contractFactory: createReadWriteContractFactory({ + publicClient, + walletClient, + cache, + namespace, + }), + }); + } +} diff --git a/packages/council-viem/src/models/token/ReadWriteMockToken.ts b/packages/council-viem/src/models/token/ReadWriteMockToken.ts new file mode 100644 index 00000000..9cee9bfe --- /dev/null +++ b/packages/council-viem/src/models/token/ReadWriteMockToken.ts @@ -0,0 +1,38 @@ +import { ReadWriteMockToken as BaseReadWriteMockToken } from "@delvtech/council-core"; +import { SimpleCache, createNetwork } from "@delvtech/evm-client-viem"; +import { createReadWriteContractFactory } from "src/contract/createReadWriteContractFactory"; +import { PublicClient, WalletClient } from "viem"; + +export interface ReadWriteMockTokenOptions { + address: `0x${string}`; + publicClient: PublicClient; + walletClient: WalletClient; + cache?: SimpleCache; + /** + * A namespace to distinguish this instance from others in the cache by + * prefixing all cache keys. + */ + namespace?: string; +} + +export class ReadWriteMockToken extends BaseReadWriteMockToken { + constructor({ + address, + publicClient, + walletClient, + cache, + namespace, + }: ReadWriteMockTokenOptions) { + super({ + address, + name: namespace, + network: createNetwork(publicClient), + contractFactory: createReadWriteContractFactory({ + publicClient, + walletClient, + cache, + namespace, + }), + }); + } +} diff --git a/packages/council-viem/src/test/integration/ReadCoreVoting.test.ts b/packages/council-viem/src/test/integration/ReadCoreVoting.test.ts new file mode 100644 index 00000000..7687fa9a --- /dev/null +++ b/packages/council-viem/src/test/integration/ReadCoreVoting.test.ts @@ -0,0 +1,26 @@ +import { ReadLockingVault } from "@delvtech/council-core"; +import { createNetwork, createReadContractFactory } from "src/index"; +import { createPublicClient, http } from "viem"; +import { expect, test } from "vitest"; + +const rpcUrl = process.env.TEST_RPC_URL || "http://localhost:8545"; + +test.todo("It fetches events", async () => { + const client = createPublicClient({ + transport: http(rpcUrl), + }); + const lockingVault = new ReadLockingVault({ + address: "0x", + contractFactory: createReadContractFactory({ + publicClient: client, + }), + network: createNetwork(client), + }); + + const result = await lockingVault.getDelegatorsTo({ + account: "0x", + }); + console.log("result:", result); + + expect(result).toBeDefined(); +}); diff --git a/packages/council-sdk/tsconfig.json b/packages/council-viem/tsconfig.json similarity index 56% rename from packages/council-sdk/tsconfig.json rename to packages/council-viem/tsconfig.json index 38697782..161d563b 100644 --- a/packages/council-sdk/tsconfig.json +++ b/packages/council-viem/tsconfig.json @@ -5,9 +5,12 @@ "compilerOptions": { "rootDir": ".", "baseUrl": ".", + "target": "esnext", + "module": "ESNext", + "moduleResolution": "Bundler", "paths": { - "src/*": ["src/*"] + "src/*": ["src/*"], }, - "resolveJsonModule": true - } + "resolveJsonModule": true, + }, } diff --git a/packages/council-viem/tsup.config.ts b/packages/council-viem/tsup.config.ts new file mode 100644 index 00000000..7924d73c --- /dev/null +++ b/packages/council-viem/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["esm"], + sourcemap: true, + dts: true, + clean: true, + minify: true, + shims: true, + cjsInterop: true, +}); diff --git a/packages/council-viem/vitest.config.ts b/packages/council-viem/vitest.config.ts new file mode 100644 index 00000000..430cf4b6 --- /dev/null +++ b/packages/council-viem/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + alias: { + "src/": "/src/", + }, + coverage: { + // get coverage for all of source except the example dir + include: ["./src/{!(example),}/**/*.ts"] + } + }, +}); diff --git a/packages/eslint-config/.eslintrc.js b/packages/eslint-config/.eslintrc.js index 6c106e29..1a9ec77d 100644 --- a/packages/eslint-config/.eslintrc.js +++ b/packages/eslint-config/.eslintrc.js @@ -19,10 +19,12 @@ module.exports = { */ "prettier", ], + parser: '@typescript-eslint/parser', rules: { "@typescript-eslint/explicit-module-boundary-types": "error", // exported functions must have return types "@typescript-eslint/no-empty-function": "off", // empty arrow functions are fine for noops when passed to components "@typescript-eslint/no-empty-interface": "off", // empty interfaces for component props should be allowed + "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-unused-vars": [ "warn", { @@ -54,7 +56,7 @@ module.exports = { settings: { "import/resolver": { typescript: { - // Tell eslint-config where to find the tsconfig when it runs, see: + // Tell @council/eslint-config where to find the tsconfig when it runs, see: // https://www.npmjs.com/package/eslint-import-resolver-typescript project: "{apps,packages}/**/*/tsconfig.json", }, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index af58b22a..028c54c8 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,21 +1,16 @@ { "name": "@council/eslint-config", "version": "0.0.0", + "private": true, "main": ".eslintrc.js", "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.36.0", - "eslint-config-prettier": "^8.3.0", - "eslint-config-turbo": "latest", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0" - }, "devDependencies": { - "typescript": "^4.7.4" - }, - "peerDependencies": { - "eslint": "^7.23.0" + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", + "eslint-config-prettier": "^9.1.0", + "eslint-config-turbo": "latest", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1" }, "publishConfig": { "access": "public" diff --git a/packages/prettier-config/.eslintrc b/packages/prettier-config/.eslintrc deleted file mode 100644 index c224a7c2..00000000 --- a/packages/prettier-config/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["@council/eslint-config"] -} diff --git a/packages/prettier-config/.prettierrc.js b/packages/prettier-config/.prettierrc.js deleted file mode 100644 index 1c27044f..00000000 --- a/packages/prettier-config/.prettierrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - ...require("./index.js"), -}; diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json deleted file mode 100644 index 38c72c25..00000000 --- a/packages/prettier-config/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@council/prettier-config", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "dependencies": { - "eslint": "^7.32.0", - "prettier": "2.6.2" - }, - "scripts": { - "lint:w": "eslint --fix '**/*.{gql,graphql,js,jsx,ts,tsx,json,md}'", - "lint": "eslint '**/*.{gql,graphql,js,jsx,ts,tsx,json,md}'", - "format": "prettier --write '**/*.{gql,graphql,js,jsx,ts,tsx,json,md}'", - "format:check": "prettier --check '**/*.{gql,graphql,js,jsx,ts,tsx,json,md}'" - } -} diff --git a/packages/tsconfig/.eslintrc b/packages/tsconfig/.eslintrc deleted file mode 100644 index c224a7c2..00000000 --- a/packages/tsconfig/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["@council/eslint-config"] -} diff --git a/packages/tsconfig/README.md b/packages/tsconfig/README.md index 0da79cf2..74b51a5a 100644 --- a/packages/tsconfig/README.md +++ b/packages/tsconfig/README.md @@ -1,3 +1,3 @@ -# `tsconfig` +# `@council/tsconfig` These are base shared `tsconfig.json`s from which all other `tsconfig.json`'s inherit from. diff --git a/packages/tsconfig/base.json b/packages/tsconfig/base.json index d72a9f3a..8db35c03 100644 --- a/packages/tsconfig/base.json +++ b/packages/tsconfig/base.json @@ -1,20 +1,16 @@ { "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@tsconfig/recommended/tsconfig.json", "display": "Default", "compilerOptions": { "composite": false, "declaration": true, "declarationMap": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, "inlineSources": false, "isolatedModules": true, - "moduleResolution": "node", "noUnusedLocals": false, "noUnusedParameters": false, - "preserveWatchOutput": true, - "skipLibCheck": true, - "strict": true + "preserveWatchOutput": true }, "exclude": ["node_modules"] } diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index 58cd8c88..6cf24878 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -1,13 +1,13 @@ { "name": "@council/tsconfig", - "version": "1.0.0", + "version": "0.0.0", "private": true, "files": [ "base.json", - "nextjs.json", - "react-library.json" + "nextjs.json" ], - "devDependencies": { - "@council/eslint-config": "*" + "dependencies": { + "@tsconfig/node-lts": "^20.1.1", + "@tsconfig/recommended": "^1.0.3" } } diff --git a/packages/tsconfig/react-library.json b/packages/tsconfig/react-library.json deleted file mode 100644 index af8711c5..00000000 --- a/packages/tsconfig/react-library.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "React Library", - "extends": "./base.json", - "compilerOptions": { - "jsx": "react-jsx", - "lib": ["ES2015"], - "module": "ESNext", - "target": "es6" - } -} diff --git a/turbo.json b/turbo.json index d31f6ad5..93103d7f 100644 --- a/turbo.json +++ b/turbo.json @@ -1,5 +1,6 @@ { "$schema": "https://turborepo.org/schema.json", + "globalDependencies": ["**/.env.*local"], "pipeline": { "build": { "dependsOn": ["^build"], @@ -12,10 +13,11 @@ "dependsOn": ["^build"], "outputs": [".next/**"], "env": [ - "NEXT_PUBLIC_MAINNET_ALCHEMY_KEY", - "NEXT_PUBLIC_GOERLI_ALCHEMY_KEY", + "NEXT_PUBLIC_MAINNET_RPC_URL", + "NEXT_PUBLIC_GOERLI_RPC_URL", "NEXT_PUBLIC_LOCAL_RPC_URL", - "NEXT_PUBLIC_COUNCIL_UI_BASE_PATH" + "NEXT_PUBLIC_COUNCIL_UI_BASE_PATH", + "NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID" ] }, "council-sdk-starter#build": { @@ -23,38 +25,11 @@ "outputs": ["dist/**"], "env": ["PROVIDER_URI", "WALLET_PRIVATE_KEY", "NODE_ENV"] }, - "@council/contract-stub": { - "env": ["MOCK_WALLET_PRIVATE_KEY"] - }, "@council/sdk#build": { "dependsOn": ["^build"], "outputs": ["dist/**"], "env": ["PROVIDER_URI", "EXAMPLE_WALLET_PRIVATE_KEY", "NODE_ENV"] }, - "@council/deploy#build": { - "dependsOn": ["^build"], - "outputs": ["dist/**"], - "env": [ - "MAINNET_DEPLOYER_PRIVATE_KEY", - "GOERLI_DEPLOYER_PRIVATE_KEY", - "MAINNET_URI", - "GOERLI_URI", - "ETHERSCAN_API_KEY", - "VOTING_TOKEN_ADDRESS", - "GSC_BASE_QUORUM", - "GSC_LOCK_DURATION", - "GSC_EXTRA_VOTING", - "GSC_VOTING_POWER_BOUND", - "GSC_IDLE_DURATION", - "BASE_QUORUM", - "LOCK_DURATION", - "EXTRA_VOTING", - "MIN_PROPOSAL_POWER", - "WAIT_BLOCKS", - "TREASURY_ADDRESS", - "UNVESTED_VOTING_MULTIPLIER" - ] - }, "@council/cli": { "env": [ "RPC_URL", @@ -83,10 +58,20 @@ "outputs": ["dist/**"], "env": ["NODE_ENV"] }, + "@delvtech/council-viem": { + "env": ["TEST_RPC_URL"] + }, "lint": { "dependsOn": ["^build"], "outputs": [] }, + "test": { + "dependsOn": ["^build"] + }, + "typecheck": { + "dependsOn": ["^build"], + "outputs": [] + }, "dev": { "cache": false }, diff --git a/yarn.lock b/yarn.lock index bcb86828..3b1a6a28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,977 +2,790 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + "@adraffy/ens-normalize@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== -"@alch/alchemy-web3@^1.1.7": - version "1.4.7" - resolved "https://registry.yarnpkg.com/@alch/alchemy-web3/-/alchemy-web3-1.4.7.tgz#e6df2548b42580199783999f668f64bcb4e580ae" - integrity sha512-7gmRdVDRLRT0PQnVHf4rizgGqHnQGeRJ0KuIjr0ewmMeXlRe8hJEIdEUTg9NjY9TC8jTJkOAiej5io7u9pppFQ== - dependencies: - "@types/web3" "^1.2.2" - assert-never "^1.2.0" - eventemitter3 "^3.1.2" - fetch-ponyfill "^6.0.2" - sturdy-websocket "^0.2.1" - tslib "^2.1.0" - urijs "^1.19.7" - web3 "^1.8.0" - web3-core "^1.8.0" - web3-core-helpers "^1.8.0" - web3-core-method "^1.8.0" - web3-core-subscriptions "^1.8.0" - web3-eth "^1.8.0" - web3-eth-abi "^1.8.0" - web3-utils "^1.8.0" - websocket "^1.0.28" - -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@ambire/signature-validator@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@ambire/signature-validator/-/signature-validator-1.3.1.tgz#d899aae3b26f65a3557b4d43b6fe4b50c6f9074b" + integrity sha512-kR6Se3nhAGf1VMeun7V2Lml9KRXB5oz64vO2zGSg+dNaGq4BPDEjsNdr0PIKXZ8651sDlRCN7V9SzL5E2ddBYQ== dependencies: - "@babel/highlight" "^7.10.4" + ethers "^5.6.5" + tap-spec "^5.0.0" + tape "^5.5.3" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" - integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" -"@babel/compat-data@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" - integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" -"@babel/core@^7.0.0": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" - integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.5" - "@babel/parser" "^7.20.5" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.12": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" - integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== +"@babel/core@^7.23.5", "@babel/core@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.0" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.0" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.0" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/generator@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" - integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA== - dependencies: - "@babel/types" "^7.20.5" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@^7.7.2": - version "7.21.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" - integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== dependencies: - "@babel/types" "^7.21.0" + "@babel/types" "^7.23.6" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" - integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-module-transforms@^7.21.0": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" - integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.2" - "@babel/types" "^7.21.2" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helpers@^7.20.5": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" - integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/helpers@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" - integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" - integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== - -"@babel/parser@^7.18.10", "@babel/parser@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" - integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + +"@babel/plugin-transform-react-jsx-self@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-source@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.1", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" +"@changesets/apply-release-plan@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-7.0.0.tgz#ce3c3dfc5720550a5d592b54ad2f411f816ec5ff" + integrity sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/config" "^3.0.0" + "@changesets/get-version-range-type" "^0.4.0" + "@changesets/git" "^3.0.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + detect-indent "^6.0.0" + fs-extra "^7.0.1" + lodash.startcase "^4.4.0" + outdent "^0.5.0" + prettier "^2.7.1" + resolve-from "^5.0.0" + semver "^7.5.3" -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== +"@changesets/assemble-release-plan@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.0.tgz#c69969b4bef7c32a8544b6941d1053260ca47e05" + integrity sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.2.0" + "@changesets/get-dependents-graph" "^2.0.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + semver "^7.5.3" -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" +"@changesets/changelog-git@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@changesets/changelog-git/-/changelog-git-0.2.0.tgz#1f3de11becafff5a38ebe295038a602403c93a86" + integrity sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ== + dependencies: + "@changesets/types" "^6.0.0" + +"@changesets/cli@^2.27.1": + version "2.27.1" + resolved "https://registry.yarnpkg.com/@changesets/cli/-/cli-2.27.1.tgz#abce480fd30b9abbe2cfcf07d5d668c364ce2804" + integrity sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/apply-release-plan" "^7.0.0" + "@changesets/assemble-release-plan" "^6.0.0" + "@changesets/changelog-git" "^0.2.0" + "@changesets/config" "^3.0.0" + "@changesets/errors" "^0.2.0" + "@changesets/get-dependents-graph" "^2.0.0" + "@changesets/get-release-plan" "^4.0.0" + "@changesets/git" "^3.0.0" + "@changesets/logger" "^0.1.0" + "@changesets/pre" "^2.0.0" + "@changesets/read" "^0.6.0" + "@changesets/types" "^6.0.0" + "@changesets/write" "^0.3.0" + "@manypkg/get-packages" "^1.1.3" + "@types/semver" "^7.5.0" + ansi-colors "^4.1.3" + chalk "^2.1.0" + ci-info "^3.7.0" + enquirer "^2.3.0" + external-editor "^3.1.0" + fs-extra "^7.0.1" + human-id "^1.0.2" + meow "^6.0.0" + outdent "^0.5.0" + p-limit "^2.2.0" + preferred-pm "^3.0.0" + resolve-from "^5.0.0" + semver "^7.5.3" + spawndamnit "^2.0.0" + term-size "^2.1.0" + tty-table "^4.1.5" -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" +"@changesets/config@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@changesets/config/-/config-3.0.0.tgz#a1a1cafc77134b117b4a9266459c84fdd360a6be" + integrity sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA== + dependencies: + "@changesets/errors" "^0.2.0" + "@changesets/get-dependents-graph" "^2.0.0" + "@changesets/logger" "^0.1.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + fs-extra "^7.0.1" + micromatch "^4.0.2" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== +"@changesets/errors@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@changesets/errors/-/errors-0.2.0.tgz#3c545e802b0f053389cadcf0ed54e5636ff9026a" + integrity sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + extendable-error "^0.1.5" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== +"@changesets/get-dependents-graph@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@changesets/get-dependents-graph/-/get-dependents-graph-2.0.0.tgz#97f0cc9fbec436e0d6ab95a6a59c08acf21ac714" + integrity sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + chalk "^2.1.0" + fs-extra "^7.0.1" + semver "^7.5.3" -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" +"@changesets/get-release-plan@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@changesets/get-release-plan/-/get-release-plan-4.0.0.tgz#8cb057da90a08796a335dfd18073234d33902069" + integrity sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/assemble-release-plan" "^6.0.0" + "@changesets/config" "^3.0.0" + "@changesets/pre" "^2.0.0" + "@changesets/read" "^0.6.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + +"@changesets/get-version-range-type@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz#429a90410eefef4368502c41c63413e291740bf5" + integrity sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ== -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" +"@changesets/git@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@changesets/git/-/git-3.0.0.tgz#e71d003752a97bc27988db6d410e0038a4a88055" + integrity sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.2.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + is-subdir "^1.1.1" + micromatch "^4.0.2" + spawndamnit "^2.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== +"@changesets/logger@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@changesets/logger/-/logger-0.1.0.tgz#2d2a58536c5beeeaef52ab464931d99fcf24f17b" + integrity sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + chalk "^2.1.0" -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== +"@changesets/parse@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@changesets/parse/-/parse-0.4.0.tgz#5cabbd9844b3b213cb83f5edb5768454c70dd2b4" + integrity sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@changesets/types" "^6.0.0" + js-yaml "^3.13.1" -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== +"@changesets/pre@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@changesets/pre/-/pre-2.0.0.tgz#ad3edf3d6ac287991d7ef5e26cf280d03c9e3764" + integrity sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/runtime" "^7.20.1" + "@changesets/errors" "^0.2.0" + "@changesets/types" "^6.0.0" + "@manypkg/get-packages" "^1.1.3" + fs-extra "^7.0.1" -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" +"@changesets/read@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@changesets/read/-/read-0.6.0.tgz#27e13b58d0b0eb3b0a5cba48a3f4f71f05ef4610" + integrity sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw== + dependencies: + "@babel/runtime" "^7.20.1" + "@changesets/git" "^3.0.0" + "@changesets/logger" "^0.1.0" + "@changesets/parse" "^0.4.0" + "@changesets/types" "^6.0.0" + chalk "^2.1.0" + fs-extra "^7.0.1" + p-filter "^2.1.0" -"@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54" - integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" +"@changesets/types@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== -"@babel/plugin-transform-react-jsx-source@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" +"@changesets/types@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-6.0.0.tgz#e46abda9890610dd1fbe1617730173d2267544bd" + integrity sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ== -"@babel/plugin-transform-runtime@^7.5.5": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== +"@changesets/write@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@changesets/write/-/write-0.3.0.tgz#c6c5bc390cce4031da20eab8a4ca2d71453a1985" + integrity sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw== dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" + "@babel/runtime" "^7.20.1" + "@changesets/types" "^6.0.0" + fs-extra "^7.0.1" + human-id "^1.0.2" + prettier "^2.7.1" -"@babel/runtime-corejs3@^7.10.2": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz#63dae945963539ab0ad578efbf3eff271e7067ae" - integrity sha512-tqeujPiuEfcH067mx+7otTQWROVMKHXEaOQcAeNV5dDdbPWvPcFA8/W9LXw2NfjNmOetqLl03dfnG2WALPlsRQ== +"@coinbase/wallet-sdk@3.9.1": + version "3.9.1" + resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.9.1.tgz#503a14671bb392d653623ef2340934e213ac971f" + integrity sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA== dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.11" + bn.js "^5.2.1" + buffer "^6.0.3" + clsx "^1.2.1" + eth-block-tracker "^7.1.0" + eth-json-rpc-filters "^6.0.0" + eventemitter3 "^5.0.1" + keccak "^3.0.3" + preact "^10.16.0" + sha.js "^2.4.11" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.9", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" - integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: - regenerator-runtime "^0.13.11" + "@jridgewell/trace-mapping" "0.3.9" -"@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== +"@delvtech/evm-client-ethers@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@delvtech/evm-client-ethers/-/evm-client-ethers-0.1.1.tgz#2e7c3dda9be644c2ea8ada58a54192017035f59e" + integrity sha512-g1Z4SRimNJwd3RVXYf2AU7Zb9R+ZDB/6mPq7K5t4GS9HOmk21hZJyu1dLvP8E7rP2z6ipwuHKg6NAcaxc/UTeA== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" + "@delvtech/evm-client" "0.1.1" -"@babel/template@^7.20.7", "@babel/template@^7.3.3": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== +"@delvtech/evm-client-viem@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@delvtech/evm-client-viem/-/evm-client-viem-0.1.1.tgz#e1b75a544bae1c630e127cf826d3c00a3bc0e1cb" + integrity sha512-6Ubs59gFyTT1oZsD0KwC8ryNbcAX50HgogvtpstNGde/TBmAK8GwE+cVXp0q/UANxAx/zh280Egsz/TG4TrkhQ== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" - integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.5" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.5" - "@babel/types" "^7.20.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.7.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" - integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.2" - "@babel/types" "^7.21.2" - debug "^4.1.0" - globals "^11.1.0" + "@delvtech/evm-client" "0.1.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" - integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" +"@delvtech/evm-client@0.1.1", "@delvtech/evm-client@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@delvtech/evm-client/-/evm-client-0.1.1.tgz#ba3ac26b3af24249094d176e3b0ff44bc252b912" + integrity sha512-6EZhLPHSk62xrqCSadoSboQIWAJ4RsRcbpf/F/KYrS0+IWyRPtm2YmmuBjk/Ua61W/I2RnlppgL2nbtnQLV8ZA== + dependencies: + fast-safe-stringify "^2.1.1" + lru-cache "^10.0.1" + +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" - integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== +"@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@chainsafe/as-sha256@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.4.1.tgz#cfc0737e25f8c206767bdb6703e7943e5d44513e" - integrity sha512-IqeeGwQihK6Y2EYLFofqs2eY2ep1I2MvQXHzOAI+5iQN51OZlUkrLgyAugu2x86xZewDk5xas7lNczkzFzF62w== - -"@chainsafe/persistent-merkle-tree@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.6.1.tgz#37bde25cf6cbe1660ad84311aa73157dc86ec7f2" - integrity sha512-gcENLemRR13+1MED2NeZBMA7FRS0xQPM7L2vhMqvKkjqtFT4YfjSVADq5U0iLuQLhFUJEMVuA8fbv5v+TN6O9A== - dependencies: - "@chainsafe/as-sha256" "^0.4.1" - "@noble/hashes" "^1.3.0" +"@emotion/hash@^0.9.0", "@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== -"@chainsafe/ssz@^0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.11.1.tgz#d4aec883af2ec5196ae67b96242c467da20b2476" - integrity sha512-cB8dBkgGN6ZoeOKuk+rIRHKN0L5i9JLGeC0Lui71QX0TuLcQKwgbfkUexpyJxnGFatWf8yeJxlOjozMn/OTP0g== +"@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== dependencies: - "@chainsafe/as-sha256" "^0.4.1" - "@chainsafe/persistent-merkle-tree" "^0.6.1" + "@emotion/memoize" "^0.8.1" -"@coinbase/wallet-sdk@^3.5.3": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.6.0.tgz#52cc01d6721b171b69f8c4a83ef5029e52d997d4" - integrity sha512-p7RHnbhWiwVr9viX9Z5KLxKgzGoJRKcAN/BYRTsodnesgA7y+omangXncsxY+5eyQSflEL7Dqs0dv/yeDsomow== +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.10.6": + version "11.11.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.3.tgz#96b855dc40a2a55f52a72f518a41db4f69c31a25" + integrity sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.3.tgz#84b77bfcfe3b7bb47d326602f640ccfcacd5ffb0" + integrity sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== dependencies: - "@metamask/safe-event-emitter" "2.0.0" - "@solana/web3.js" "1.52.0" - bind-decorator "^1.0.11" - bn.js "^5.1.1" - buffer "^6.0.3" - clsx "^1.1.0" - eth-block-tracker "4.4.3" - eth-json-rpc-filters "4.2.2" - eth-rpc-errors "4.0.2" - json-rpc-engine "6.1.0" - keccak "^3.0.1" - preact "^10.5.9" - qs "^6.10.3" - rxjs "^6.6.3" - sha.js "^2.4.11" - stream-browserify "^3.0.0" - util "^0.12.4" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" -"@coinbase/wallet-sdk@^3.5.4": - version "3.6.4" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.6.4.tgz#00b4325c501ec5cdd07ac1b365ab226cb3df3a22" - integrity sha512-2ecCT0/pmaMNVyMF7J1ZLFTfLnpnrHNQOGyIcbMBIepeqlE3jndjU023OdwwVLrLXyvfyelJ8K1iwAOvyEZxUw== - dependencies: - "@metamask/safe-event-emitter" "2.0.0" - "@solana/web3.js" "^1.70.1" - bind-decorator "^1.0.11" - bn.js "^5.1.1" - buffer "^6.0.3" - clsx "^1.1.0" - eth-block-tracker "4.4.3" - eth-json-rpc-filters "5.1.0" - eth-rpc-errors "4.0.2" - json-rpc-engine "6.1.0" - keccak "^3.0.1" - preact "^10.5.9" - qs "^6.10.3" - rxjs "^6.6.3" - sha.js "^2.4.11" - stream-browserify "^3.0.0" - util "^0.12.4" +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/styled@^11.10.6": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" + integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== -"@emotion/hash@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@ensdomains/address-encoder@^0.1.7": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" - integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== +"@ensdomains/address-encoder@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-1.0.0-rc.3.tgz#78a8081bed834661e7fd21a9c9f67f927100fce5" + integrity sha512-8o6zH69rObIqDY4PusEWuN9jvVOct+9jj9AOPO7ifc3ev8nmsly0e8TE1sHkhk0iKFbd3DlSsUnJ+yuRWmdLCQ== dependencies: - bech32 "^1.1.3" - blakejs "^1.1.0" - bn.js "^4.11.8" - bs58 "^4.0.1" - crypto-addr-codec "^0.1.7" - nano-base32 "^1.0.1" - ripemd160 "^2.0.2" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@scure/base" "^1.1.5" -"@ensdomains/address-encoder@^0.2.18": - version "0.2.18" - resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.2.18.tgz#a9803a48d199aae9854f19238df9eb49b3e00f91" - integrity sha512-Elgi6smEraiEN5cUSGLfp/FVzMMFZDyMygOBL9sNCmpYBfQffJV0gwkQGGaniBwIhKRxttFN7jTpXM7+zKQRWQ== - dependencies: - bech32 "^2.0.0" - blakejs "^1.1.0" - bn.js "^4.11.8" - bs58 "^4.0.1" - crypto-addr-codec "^0.1.7" - js-crc "^0.2.0" - js-sha256 "^0.9.0" - js-sha512 "^0.8.0" - nano-base32 "^1.0.1" - ripemd160 "^2.0.2" - sha3 "^2.1.3" - -"@ensdomains/buffer@^0.0.10": - version "0.0.10" - resolved "https://registry.yarnpkg.com/@ensdomains/buffer/-/buffer-0.0.10.tgz#3b9f8b6a34c6160ae8a8cb8f0f033aa35c1a9970" - integrity sha512-EOFqiWnN36EyyBAgHFTsabFcFICUALt41SiDm/4pAw4V36R4lD4wHcnZcqCYki9m1fMaeWGHrdqxmrMa8iiSTQ== - -"@ensdomains/buffer@^0.0.13": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@ensdomains/buffer/-/buffer-0.0.13.tgz#b9f60defb78fc5f2bee30faca17e63dfbef19253" - integrity sha512-8aA+U/e4S54ebPwcge1HHvvpgXLKxPd6EOSegMlrTvBnKB8RwB3OpNyflaikD6KqzIwDaBaH8bvnTrMcfpV7oQ== - dependencies: - "@nomiclabs/hardhat-truffle5" "^2.0.0" - -"@ensdomains/content-hash@^2.5.7": - version "2.5.7" - resolved "https://registry.yarnpkg.com/@ensdomains/content-hash/-/content-hash-2.5.7.tgz#180e4ceb6e585a05d69ba307619d4a0cf12948f1" - integrity sha512-WNdGKCeubMIAfyPYTMlKeX6cgXKIEo42OcWPOLBiclzJwMibkVqpaGgWKVH9dniJq7bLXLa2tQ0k/F1pt6gUxA== +"@ensdomains/address-encoder@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-1.1.0.tgz#0765ea1fdb1fd91cc3f4d3d2dd579c83a9b4f016" + integrity sha512-kc+VFq4ml6UB/s1TRjwx/QOeGmvbUWkMDps/nLDco40CpU3//Iw8vscQ12wQzmCzn760kkyOt6nNBP2L3nhtAA== dependencies: - cids "^1.1.5" - js-base64 "^3.6.0" - multicodec "^3.2.0" - multihashes "^2.0.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@scure/base" "^1.1.5" -"@ensdomains/dnsprovejs@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@ensdomains/dnsprovejs/-/dnsprovejs-0.4.1.tgz#bf32e9265cf5210e657474fdf93faa296d69f470" - integrity sha512-q1SiQeuV3dzYt4yS5/Ig1AIKEXqzLpI6RV/tvSdirKg0Y8VdsEag9gpKXu+SoTzmaXT8J+mB0ZPwrV5gb/SbaA== - dependencies: - dns-packet "^5.2.1" - ethereumjs-util "^7.0.7" - typescript-logging "^1.0.0" - -"@ensdomains/dnssecoraclejs@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@ensdomains/dnssecoraclejs/-/dnssecoraclejs-0.2.7.tgz#7aae0c53b7aa988f146c8fbed089970eac767dc2" - integrity sha512-k2DDXAwAI/gjEBTu4vsIvjeL+TcfJ6JkVgC0X7KHlccBCNT/vQMiwvExtFWwGtt3aHPXjLTVehzvM4VZcu1Xow== - dependencies: - "@ensdomains/dnsprovejs" "^0.4.1" - "@ensdomains/ens-contracts" "0.0.7" - dns-packet "^5.2.1" - dotenv "^8.2.0" - ethers "^5.0.30" - typescript-logging "^1.0.0" - -"@ensdomains/ens-contracts@0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@ensdomains/ens-contracts/-/ens-contracts-0.0.3.tgz#7023a3ad8e74431fa64c550f63c5730d9cb64303" - integrity sha512-da67JjAFjl8gLDDAqYQs5PSvth9usBcD7clXiXpfvJTMJnZnR+c/cG6xrkVgL4qEP7jmI+iEoj0y29qFtupy2w== +"@ensdomains/content-hash@3.1.0-rc.1": + version "3.1.0-rc.1" + resolved "https://registry.yarnpkg.com/@ensdomains/content-hash/-/content-hash-3.1.0-rc.1.tgz#f22220df19be2f60683070a683f5760a9a7134d8" + integrity sha512-OzdkXgdFmduzcJKU4KRkkJkQHnm5p7m7FkX8k+bHOEoOIzc0ueGT/Jay4nnb60wNk1wSHRmzY+hHBMpFDiGReg== dependencies: - "@ensdomains/buffer" "^0.0.10" - "@openzeppelin/contracts" "^4.1.0" + "@ensdomains/address-encoder" "1.0.0-rc.3" + "@noble/curves" "^1.2.0" + "@scure/base" "^1.1.5" -"@ensdomains/ens-contracts@0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@ensdomains/ens-contracts/-/ens-contracts-0.0.7.tgz#a08dd7de3d927487c05a9c846b4834a124f053ce" - integrity sha512-adlWSrtBh85CNM1hsrsNxWrSx6g37DOCkWP5vBT/HtXnpNtvL49Z1Ueum55lN8YifTWo2Kqb1mgPojjLY99f5w== - dependencies: - "@ensdomains/buffer" "^0.0.13" - "@ensdomains/solsha1" "0.0.3" - "@openzeppelin/contracts" "^4.1.0" - dns-packet "^5.3.0" - name-wrapper "^1.0.0" - -"@ensdomains/ens@0.4.5", "@ensdomains/ens@^0.4.4": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" - integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== - dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" - -"@ensdomains/ensjs@^2.0.1": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.1.0.tgz#0a7296c1f3d735ef019320d863a7846a0760c460" - integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== - dependencies: - "@babel/runtime" "^7.4.4" - "@ensdomains/address-encoder" "^0.1.7" - "@ensdomains/ens" "0.4.5" - "@ensdomains/resolver" "0.2.4" - content-hash "^2.5.2" - eth-ens-namehash "^2.0.8" - ethers "^5.0.13" - js-sha3 "^0.8.0" +"@ensdomains/dnsprovejs@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@ensdomains/dnsprovejs/-/dnsprovejs-0.5.1.tgz#7b09121580d3224736567e680697fe179f0288af" + integrity sha512-nfm4ggpK5YBVwVwLZKF9WPjRGRTL9aUxX2O4pqv/AnQCz3WeGHsW7VhVFLj2s4EoWSzCXwR1E6nuqgUwnH692w== + dependencies: + "@noble/hashes" "^1.3.2" + dns-packet "^5.6.1" + typescript-logging "^1.0.1" -"@ensdomains/ensjs@^3.0.0-alpha.37": - version "3.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-3.0.0-alpha.37.tgz#911ab8e8561efeca7a2e68e368c3f583d552c539" - integrity sha512-qO/1lSDCT3QB4p2+phagpovYoGR8oRDRjKVDmaik0IdqFtC6HabXGVRIUIKUbiyk+/2tmG8VXIxFdLIvi18LAA== +"@ensdomains/ensjs@^3.4.4": + version "3.4.4" + resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-3.4.4.tgz#2b0ea3363a659a25f103fb4b28af367e66f77ec7" + integrity sha512-x81JQA91Pgs4o4rGbGsE4vt0GUOd+5DK4R0LDXXLAt+q5oQQKThnH41wmwl0DB1KSlknHYPWHCrLtzbRAboAFw== dependencies: - "@ensdomains/address-encoder" "^0.2.18" - "@ensdomains/content-hash" "^2.5.7" - "@ensdomains/dnsprovejs" "^0.4.1" - "@ensdomains/dnssecoraclejs" "^0.2.7" + "@adraffy/ens-normalize" "1.9.0" + "@ensdomains/address-encoder" "1.1.0" + "@ensdomains/content-hash" "3.1.0-rc.1" + "@ensdomains/dnsprovejs" "^0.5.1" + abitype "^0.8.0" dns-packet "^5.3.1" - ethers "^5.6.1" graphql "^16.3.0" - graphql-request next - idna-uts46-hx "3.4.0" + graphql-request "6.1.0" + pako "^2.1.0" traverse "^0.6.6" -"@ensdomains/resolver@0.2.4", "@ensdomains/resolver@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== - -"@ensdomains/solsha1@0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@ensdomains/solsha1/-/solsha1-0.0.3.tgz#fd479da9d40aadb59ff4fb4ec50632e7d2275a83" - integrity sha512-uhuG5LzRt/UJC0Ux83cE2rCKwSleRePoYdQVcqPN1wyf3/ekMzT/KZUF9+v7/AG5w9jlMLCQkUM50vfjr0Yu9Q== - dependencies: - hash-test-vectors "^1.3.2" - -"@esbuild/android-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" - integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== - -"@esbuild/android-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" - integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== - -"@esbuild/android-arm@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" - integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== - -"@esbuild/android-arm@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" - integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== - -"@esbuild/android-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" - integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== - -"@esbuild/android-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" - integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== - -"@esbuild/darwin-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" - integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== - -"@esbuild/darwin-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" - integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== - -"@esbuild/darwin-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" - integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== - -"@esbuild/darwin-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" - integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== - -"@esbuild/freebsd-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" - integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== - -"@esbuild/freebsd-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" - integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== - -"@esbuild/freebsd-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" - integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== - -"@esbuild/freebsd-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" - integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== - -"@esbuild/linux-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" - integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== - -"@esbuild/linux-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" - integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== - -"@esbuild/linux-arm@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" - integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== - -"@esbuild/linux-arm@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" - integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== - -"@esbuild/linux-ia32@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" - integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== - -"@esbuild/linux-ia32@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" - integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== - -"@esbuild/linux-loong64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" - integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== - -"@esbuild/linux-loong64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" - integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== - -"@esbuild/linux-mips64el@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" - integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== - -"@esbuild/linux-mips64el@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" - integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== - -"@esbuild/linux-ppc64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" - integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== - -"@esbuild/linux-ppc64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" - integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== - -"@esbuild/linux-riscv64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" - integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== - -"@esbuild/linux-riscv64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" - integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== - -"@esbuild/linux-s390x@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" - integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== - -"@esbuild/linux-s390x@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" - integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== - -"@esbuild/linux-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" - integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== - -"@esbuild/linux-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" - integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== - -"@esbuild/netbsd-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" - integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== - -"@esbuild/netbsd-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" - integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== - -"@esbuild/openbsd-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" - integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== - -"@esbuild/openbsd-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" - integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== - -"@esbuild/sunos-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" - integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== - -"@esbuild/sunos-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" - integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== - -"@esbuild/win32-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" - integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== - -"@esbuild/win32-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" - integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== - -"@esbuild/win32-ia32@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" - integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== - -"@esbuild/win32-ia32@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" - integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== - -"@esbuild/win32-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" - integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== - -"@esbuild/win32-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" - integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" + eslint-visitor-keys "^3.3.0" -"@eslint/eslintrc@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff" - integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -980,127 +793,44 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.35.0": - version "8.35.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" - integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== - -"@ethereum-waffle/chai@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.4.tgz#16c4cc877df31b035d6d92486dfdf983df9138ff" - integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== - dependencies: - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.5.2" - -"@ethereum-waffle/compiler@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz#d568ee0f6029e68b5c645506079fbf67d0dfcf19" - integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@typechain/ethers-v5" "^2.0.0" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" - mkdirp "^0.5.1" - node-fetch "^2.6.1" - solc "^0.6.3" - ts-generator "^0.1.1" - typechain "^3.0.0" - -"@ethereum-waffle/ens@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.4.4.tgz#db97ea2c9decbb70b9205d53de2ccbd6f3182ba1" - integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.5.2" - -"@ethereum-waffle/mock-contract@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz#fc6ffa18813546f4950a69f5892d4dd54b2c685a" - integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== - dependencies: - "@ethersproject/abi" "^5.5.0" - ethers "^5.5.2" +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== -"@ethereum-waffle/provider@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.4.4.tgz#398fc1f7eb91cc2df7d011272eacba8af0c7fffb" - integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== - dependencies: - "@ethereum-waffle/ens" "^3.4.4" - ethers "^5.5.2" - ganache-core "^2.13.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" - -"@ethereumjs/common@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" - integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.1" - -"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": - version "2.6.5" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" - integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== +"@ethereumjs/common@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" + integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== dependencies: + "@ethereumjs/util" "^8.1.0" crc-32 "^1.2.0" - ethereumjs-util "^7.1.5" "@ethereumjs/rlp@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== -"@ethereumjs/tx@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" - integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== - dependencies: - "@ethereumjs/common" "^2.5.0" - ethereumjs-util "^7.1.2" - -"@ethereumjs/tx@^3.3.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== +"@ethereumjs/tx@^4.1.2", "@ethereumjs/tx@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" + integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" + "@ethereumjs/common" "^3.2.0" + "@ethereumjs/rlp" "^4.0.1" + "@ethereumjs/util" "^8.1.0" + ethereum-cryptography "^2.0.0" -"@ethereumjs/util@^8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.0.6.tgz#f9716ed34235ea05eff8353bc5d483e5a6455989" - integrity sha512-zFLG/gXtF3QUC7iKFn4PT6HCr+DEnlCbwUGKGtXoqjA+64T+e0FuqMjlo4bQIY2ngRzk3EtudKdGYC4g31ehhg== +"@ethereumjs/util@^8.0.6", "@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== dependencies: - "@chainsafe/ssz" "^0.11.1" "@ethereumjs/rlp" "^4.0.1" ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -1139,7 +869,7 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/address@5.7.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== @@ -1165,7 +895,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.7.0": +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== @@ -1174,14 +904,14 @@ "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.7.0": +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.7.0": +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== @@ -1204,7 +934,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/transactions" "^5.7.0" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.7.0": +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -1256,7 +986,7 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.7.0": +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== @@ -1264,7 +994,7 @@ "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.7.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.7.0": +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== @@ -1284,14 +1014,14 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/sha2" "^5.7.0" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.7.0": +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.6.5": +"@ethersproject/providers@5.7.2": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -1333,7 +1063,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.7.0": +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== @@ -1366,7 +1096,7 @@ "@ethersproject/sha2" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.7.0": +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -1375,7 +1105,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== @@ -1442,308 +1172,119 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@floating-ui/core@^1.0.5": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.1.0.tgz#0a1dee4bbce87ff71602625d33f711cafd8afc08" - integrity sha512-zbsLwtnHo84w1Kc8rScAo5GMk1GdecSlrflIbfnEBJwvTSj1SL6kkOYV+nHraMCPEy+RNZZUaZyL8JosDGCtGQ== +"@fastify/busboy@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" + integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== -"@floating-ui/dom@^1.0.4": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.1.0.tgz#29fea1344fdef15b6ba270a733d20b7134fee5c2" - integrity sha512-TSogMPVxbRe77QCj1dt8NmRiJasPvuc+eT5jnJ6YpLqgOD2zXc5UA3S1qwybN+GVCDNdKfpKy1oj8RpzLJvh6A== +"@floating-ui/core@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== dependencies: - "@floating-ui/core" "^1.0.5" + "@floating-ui/utils" "^0.2.1" -"@graphql-typed-document-node/core@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" - integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== +"@floating-ui/dom@^1.0.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.1.tgz#d552e8444f77f2d88534372369b3771dc3a2fa5d" + integrity sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/utils@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== -"@heroicons/react@^2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.13.tgz#9b1cc54ff77d6625c9565efdce0054a4bcd9074c" - integrity sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ== +"@graphql-typed-document-node/core@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@heroicons/react@^2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.16.tgz#562883c19ba2690c83380b42a9a5cce39dcbdb4a" - integrity sha512-x89rFxH3SRdYaA+JCXwfe+RkE1SFTo9GcOkZettHer71Y3T7V+ogKmfw5CjTazgS3d0ClJ7p1NA+SP7VQLQcLw== +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@heroicons/react@^2.0.16", "@heroicons/react@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.1.1.tgz#422deb80c4d6caf3371aec6f4bee8361a354dc13" + integrity sha512-JyyN9Lo66kirbCMuMMRPtJxtKJoIsXKS569ebHGGRKbl8s4CtUfLnyKJxteA+vIKySocO4s1SkTkGS4xtG/yEA== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@ioredis/commands@^1.1.1": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" + integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== -"@jest/console@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.4.3.tgz#1f25a99f7f860e4c46423b5b1038262466fadde1" - integrity sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: - "@jest/types" "^29.4.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.4.3" - jest-util "^29.4.3" - slash "^3.0.0" + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jest/core@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.4.3.tgz#829dd65bffdb490de5b0f69e97de8e3b5eadd94b" - integrity sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: - "@jest/console" "^29.4.3" - "@jest/reporters" "^29.4.3" - "@jest/test-result" "^29.4.3" - "@jest/transform" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.4.3" - jest-config "^29.4.3" - jest-haste-map "^29.4.3" - jest-message-util "^29.4.3" - jest-regex-util "^29.4.3" - jest-resolve "^29.4.3" - jest-resolve-dependencies "^29.4.3" - jest-runner "^29.4.3" - jest-runtime "^29.4.3" - jest-snapshot "^29.4.3" - jest-util "^29.4.3" - jest-validate "^29.4.3" - jest-watcher "^29.4.3" - micromatch "^4.0.4" - pretty-format "^29.4.3" - slash "^3.0.0" - strip-ansi "^6.0.0" + "@sinclair/typebox" "^0.27.8" -"@jest/environment@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.3.tgz#9fe2f3169c3b33815dc4bd3960a064a83eba6548" - integrity sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: - "@jest/fake-timers" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - jest-mock "^29.4.3" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -"@jest/expect-utils@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.4.3.tgz#95ce4df62952f071bcd618225ac7c47eaa81431e" - integrity sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ== - dependencies: - jest-get-type "^29.4.3" +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jest/expect@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.4.3.tgz#d31a28492e45a6bcd0f204a81f783fe717045c6e" - integrity sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ== - dependencies: - expect "^29.4.3" - jest-snapshot "^29.4.3" +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jest/fake-timers@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.3.tgz#31e982638c60fa657d310d4b9d24e023064027b0" - integrity sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw== - dependencies: - "@jest/types" "^29.4.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.4.3" - jest-mock "^29.4.3" - jest-util "^29.4.3" - -"@jest/globals@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.4.3.tgz#63a2c4200d11bc6d46f12bbe25b07f771fce9279" - integrity sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA== - dependencies: - "@jest/environment" "^29.4.3" - "@jest/expect" "^29.4.3" - "@jest/types" "^29.4.3" - jest-mock "^29.4.3" - -"@jest/reporters@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.4.3.tgz#0a68a0c0f20554760cc2e5443177a0018969e353" - integrity sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.4.3" - "@jest/test-result" "^29.4.3" - "@jest/transform" "^29.4.3" - "@jest/types" "^29.4.3" - "@jridgewell/trace-mapping" "^0.3.15" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.4.3" - jest-util "^29.4.3" - jest-worker "^29.4.3" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== - dependencies: - "@sinclair/typebox" "^0.25.16" - -"@jest/source-map@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" - integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.15" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.4.3.tgz#e13d973d16c8c7cc0c597082d5f3b9e7f796ccb8" - integrity sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA== - dependencies: - "@jest/console" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.4.3.tgz#0862e876a22993385a0f3e7ea1cc126f208a2898" - integrity sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw== - dependencies: - "@jest/test-result" "^29.4.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.4.3" - slash "^3.0.0" - -"@jest/transform@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.4.3.tgz#f7d17eac9cb5bb2e1222ea199c7c7e0835e0c037" - integrity sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.4.3" - "@jridgewell/trace-mapping" "^0.3.15" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.4.3" - jest-regex-util "^29.4.3" - jest-util "^29.4.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f" - integrity sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA== - dependencies: - "@jest/schemas" "^29.4.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -1753,102 +1294,86 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@json-rpc-tools/provider@^1.5.5": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" - integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== - dependencies: - "@json-rpc-tools/utils" "^1.7.6" - axios "^0.21.0" - safe-json-utils "^1.1.1" - ws "^7.4.0" - -"@json-rpc-tools/types@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" - integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== - dependencies: - keyvaluestorage-interface "^1.0.0" - -"@json-rpc-tools/utils@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" - integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== dependencies: - "@json-rpc-tools/types" "^1.7.6" - "@pedrouid/environment" "^1.0.1" - -"@ledgerhq/connect-kit-loader@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.0.2.tgz#8554e16943f86cc2a5f6348a14dfe6e5bd0c572a" - integrity sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g== + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lezer/common@^0.15.0", "@lezer/common@^0.15.7": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9" - integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig== - -"@lezer/lr@^0.15.4": - version "0.15.8" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" - integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== - dependencies: - "@lezer/common" "^0.15.0" - -"@lit-labs/ssr-dom-shim@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz#427e19a2765681fd83411cd72c55ba80a01e0523" - integrity sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw== +"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" + integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" - integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== + version "1.6.3" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" + integrity sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ== dependencies: "@lit-labs/ssr-dom-shim" "^1.0.0" -"@lmdb/lmdb-darwin-arm64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz#bc66fa43286b5c082e8fee0eacc17995806b6fbe" - integrity sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A== +"@livepeer/core@^1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@livepeer/core/-/core-1.9.2.tgz#47b14b4a06ee5249ac3fcd10b119cbe9723ebd8f" + integrity sha512-b97YpsxEDStZs8JHj4MCoMK1SJ80hRLcPOHlQohpZSp/Guvx56j/SNbCTLclmJFWBu5+ddtSpWzCXsr0moI8/g== + dependencies: + cross-fetch "^4.0.0" + ms "^3.0.0-canary.1" + multiformats "9.9.0" + tus-js-client "^3.1.0" + zustand "^4.3.9" -"@lmdb/lmdb-darwin-x64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz#89d8390041bce6bab24a82a20392be22faf54ffc" - integrity sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA== +"@ljharb/resumer@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@ljharb/resumer/-/resumer-0.0.1.tgz#8a940a9192dd31f6a1df17564bbd26dc6ad3e68d" + integrity sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw== + dependencies: + "@ljharb/through" "^2.3.9" -"@lmdb/lmdb-linux-arm64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz#14fe4c96c2bb1285f93797f45915fa35ee047268" - integrity sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ== +"@ljharb/through@^2.3.11", "@ljharb/through@^2.3.9": + version "2.3.12" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.12.tgz#c418c43060eee193adce48b15c2206096a28e9ea" + integrity sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g== + dependencies: + call-bind "^1.0.5" -"@lmdb/lmdb-linux-arm@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz#05bde4573ab10cf21827339fe687148f2590cfa1" - integrity sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw== +"@manypkg/find-root@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== + dependencies: + "@babel/runtime" "^7.5.5" + "@types/node" "^12.7.1" + find-up "^4.1.0" + fs-extra "^8.1.0" -"@lmdb/lmdb-linux-x64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz#d2f85afd857d2c33d2caa5b057944574edafcfee" - integrity sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q== +"@manypkg/get-packages@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.3.tgz#e184db9bba792fa4693de4658cfb1463ac2c9c47" + integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== + dependencies: + "@babel/runtime" "^7.5.5" + "@changesets/types" "^4.0.1" + "@manypkg/find-root" "^1.1.0" + fs-extra "^8.1.0" + globby "^11.0.0" + read-yaml-file "^1.1.0" -"@lmdb/lmdb-win32-x64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5" - integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA== +"@metamask/eth-json-rpc-provider@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz#3fd5316c767847f4ca107518b611b15396a5a32c" + integrity sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA== + dependencies: + "@metamask/json-rpc-engine" "^7.0.0" + "@metamask/safe-event-emitter" "^3.0.0" + "@metamask/utils" "^5.0.1" "@metamask/eth-sig-util@^4.0.0": version "4.0.1" @@ -1881,135 +1406,238 @@ color "^0.11.3" mersenne-twister "^1.1.0" -"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0": +"@metamask/json-rpc-engine@^7.0.0": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz#e8f0695811619eef7b7c894ba5cf782db9f1c2cb" + integrity sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg== + dependencies: + "@metamask/rpc-errors" "^6.1.0" + "@metamask/safe-event-emitter" "^3.0.0" + "@metamask/utils" "^8.3.0" + +"@metamask/object-multiplex@^1.1.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-1.3.0.tgz#459de4862aa5a5a025dabceadda0ffd553ca4b25" + integrity sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ== + dependencies: + end-of-stream "^1.4.4" + once "^1.4.0" + readable-stream "^2.3.3" + +"@metamask/onboarding@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@metamask/onboarding/-/onboarding-1.0.1.tgz#14a36e1e175e2f69f09598e2008ab6dc1b3297e6" + integrity sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ== + dependencies: + bowser "^2.9.0" + +"@metamask/post-message-stream@^6.1.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-6.2.0.tgz#3db0a50adc2b2206d1bb95739e7fff49e36e0324" + integrity sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw== + dependencies: + "@metamask/utils" "^5.0.0" + readable-stream "2.3.3" + +"@metamask/providers@^10.2.1": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-10.2.1.tgz#61304940adeccc7421dcda30ffd1d834273cc77b" + integrity sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA== + dependencies: + "@metamask/object-multiplex" "^1.1.0" + "@metamask/safe-event-emitter" "^2.0.0" + "@types/chrome" "^0.0.136" + detect-browser "^5.2.0" + eth-rpc-errors "^4.0.2" + extension-port-stream "^2.0.1" + fast-deep-equal "^2.0.1" + is-stream "^2.0.0" + json-rpc-engine "^6.1.0" + json-rpc-middleware-stream "^4.2.1" + pump "^3.0.0" + webextension-polyfill-ts "^0.25.0" + +"@metamask/rpc-errors@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.1.0.tgz#dfdef7cba4b9ad01ca3f99e990b5980575b89b4f" + integrity sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg== + dependencies: + "@metamask/utils" "^8.1.0" + fast-safe-stringify "^2.0.6" + +"@metamask/safe-event-emitter@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== -"@mischnic/json-sourcemap@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507" - integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA== +"@metamask/safe-event-emitter@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.0.0.tgz#8c2b9073fe0722d48693143b0dc8448840daa3bd" + integrity sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ== + +"@metamask/sdk-communication-layer@0.14.3": + version "0.14.3" + resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.14.3.tgz#0e7ec8e472641273da5802f3b357687ce12369c3" + integrity sha512-yjSbj8y7fFbQXv2HBzUX6D9C8BimkCYP6BDV7hdw53W8b/GlYCtXVxUFajQ9tuO1xPTRjR/xt/dkdr2aCi6WGw== dependencies: - "@lezer/common" "^0.15.7" - "@lezer/lr" "^0.15.4" - json5 "^2.2.1" + bufferutil "^4.0.8" + cross-fetch "^3.1.5" + date-fns "^2.29.3" + eciesjs "^0.3.16" + eventemitter2 "^6.4.5" + socket.io-client "^4.5.1" + utf-8-validate "^6.0.3" + uuid "^8.3.2" + +"@metamask/sdk-install-modal-web@0.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.14.1.tgz#c8e64b4f7d2dac262c2ec28025c541b258478c31" + integrity sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q== + dependencies: + "@emotion/react" "^11.10.6" + "@emotion/styled" "^11.10.6" + i18next "22.5.1" + qr-code-styling "^1.6.0-rc.1" + react "^18.2.0" + react-dom "^18.2.0" + react-i18next "^13.2.2" + +"@metamask/sdk@0.14.3": + version "0.14.3" + resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.14.3.tgz#ec1ecf00edef981fd17e2c5cf4ec40ce0a43a55c" + integrity sha512-BYLs//nY2wioVSih78gOQI6sLIYY3vWkwVqXGYUgkBV+bi49bv+9S0m+hZ2cwiRaxfMYtKs0KvhAQ8weiYwDrg== + dependencies: + "@metamask/onboarding" "^1.0.1" + "@metamask/post-message-stream" "^6.1.0" + "@metamask/providers" "^10.2.1" + "@metamask/sdk-communication-layer" "0.14.3" + "@metamask/sdk-install-modal-web" "0.14.1" + "@react-native-async-storage/async-storage" "^1.17.11" + "@types/dom-screen-wake-lock" "^1.0.0" + bowser "^2.9.0" + cross-fetch "^4.0.0" + eciesjs "^0.3.15" + eth-rpc-errors "^4.0.3" + eventemitter2 "^6.4.7" + extension-port-stream "^2.0.1" + i18next "22.5.1" + i18next-browser-languagedetector "^7.1.0" + obj-multiplex "^1.0.0" + pump "^3.0.0" + qrcode-terminal-nooctal "^0.12.1" + react-i18next "^13.2.2" + react-native-webview "^11.26.0" + readable-stream "^2.3.7" + rollup-plugin-visualizer "^5.9.2" + socket.io-client "^4.5.1" + util "^0.12.4" + uuid "^8.3.2" -"@motionone/animation@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" - integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== +"@metamask/utils@^5.0.0", "@metamask/utils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" + integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== dependencies: - "@motionone/easing" "^10.15.1" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" + "@ethereumjs/tx" "^4.1.2" + "@types/debug" "^4.1.7" + debug "^4.3.4" + semver "^7.3.8" + superstruct "^1.0.3" + +"@metamask/utils@^8.1.0", "@metamask/utils@^8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.3.0.tgz#a20de447aeb9ffb75924d822a186a597033984b6" + integrity sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + debug "^4.3.4" + pony-cause "^2.1.10" + semver "^7.5.4" + superstruct "^1.0.3" + +"@motionone/animation@^10.15.1", "@motionone/animation@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.17.0.tgz#7633c6f684b5fee2b61c405881b8c24662c68fca" + integrity sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg== + dependencies: + "@motionone/easing" "^10.17.0" + "@motionone/types" "^10.17.0" + "@motionone/utils" "^10.17.0" tslib "^2.3.1" -"@motionone/dom@^10.15.5": - version "10.15.5" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.15.5.tgz#4af18f8136d85c2fc997cac98121c969f6731802" - integrity sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA== +"@motionone/dom@^10.16.2", "@motionone/dom@^10.16.4": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.17.0.tgz#519dd78aab0750a94614c69a82da5290cd617383" + integrity sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q== dependencies: - "@motionone/animation" "^10.15.1" - "@motionone/generators" "^10.15.1" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" + "@motionone/animation" "^10.17.0" + "@motionone/generators" "^10.17.0" + "@motionone/types" "^10.17.0" + "@motionone/utils" "^10.17.0" hey-listen "^1.0.8" tslib "^2.3.1" -"@motionone/easing@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" - integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== +"@motionone/easing@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.17.0.tgz#d66cecf7e3ee30104ad00389fb3f0b2282d81aa9" + integrity sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg== dependencies: - "@motionone/utils" "^10.15.1" + "@motionone/utils" "^10.17.0" tslib "^2.3.1" -"@motionone/generators@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" - integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== +"@motionone/generators@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.17.0.tgz#878d292539c41434c13310d5f863a87a94e6e689" + integrity sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ== dependencies: - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" + "@motionone/types" "^10.17.0" + "@motionone/utils" "^10.17.0" tslib "^2.3.1" -"@motionone/svelte@^10.15.5": - version "10.15.5" - resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.15.5.tgz#f36b40101ec1db122820598089f42e831f6cf5f5" - integrity sha512-Xyxtgp7BlVnSBwcoFmXGHUVnpNktzeXsEifu2NJJWc7VGuxutDsBZxNdz80qvpLIC5MeBa1wh7GGegZzTm1msg== +"@motionone/svelte@^10.16.2": + version "10.16.4" + resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.4.tgz#5daf117cf5b2576fc6dd487c5e0500938a742470" + integrity sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA== dependencies: - "@motionone/dom" "^10.15.5" + "@motionone/dom" "^10.16.4" tslib "^2.3.1" -"@motionone/types@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" - integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== +"@motionone/types@^10.15.1", "@motionone/types@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.17.0.tgz#179571ce98851bac78e19a1c3974767227f08ba3" + integrity sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA== -"@motionone/utils@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" - integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== +"@motionone/utils@^10.15.1", "@motionone/utils@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.17.0.tgz#cc0ba8acdc6848ff48d8c1f2d0d3e7602f4f942e" + integrity sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg== dependencies: - "@motionone/types" "^10.15.1" + "@motionone/types" "^10.17.0" hey-listen "^1.0.8" tslib "^2.3.1" -"@motionone/vue@^10.15.5": - version "10.15.5" - resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.15.5.tgz#3101c62b2fce06b3f3072b9ff0f551213eb02476" - integrity sha512-cUENrLYAolUacHvCgU+8wF9OgSlVutfWbHMLERI/bElCJ+e2YVQvG/CpGhIM5fYOOJzuvg2T2wHmLLmvJoavEw== +"@motionone/vue@^10.16.2": + version "10.16.4" + resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.4.tgz#07d09e3aa5115ca0bcc0076cb9e5322775277c09" + integrity sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg== dependencies: - "@motionone/dom" "^10.15.5" + "@motionone/dom" "^10.16.4" tslib "^2.3.1" -"@msgpackr-extract/msgpackr-extract-darwin-arm64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.2.0.tgz#901c5937e1441572ea23e631fe6deca68482fe76" - integrity sha512-Z9LFPzfoJi4mflGWV+rv7o7ZbMU5oAU9VmzCgL240KnqDW65Y2HFCT3MW06/ITJSnbVLacmcEJA8phywK7JinQ== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.2.0.tgz#fb877fe6bae3c4d3cea29786737840e2ae689066" - integrity sha512-vq0tT8sjZsy4JdSqmadWVw6f66UXqUCabLmUVHZwUFzMgtgoIIQjT4VVRHKvlof3P/dMCkbMJ5hB1oJ9OWHaaw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.2.0.tgz#986179c38b10ac41fbdaf7d036c825cbc72855d9" - integrity sha512-hlxxLdRmPyq16QCutUtP8Tm6RDWcyaLsRssaHROatgnkOxdleMTgetf9JsdncL8vLh7FVy/RN9i3XR5dnb9cRA== - -"@msgpackr-extract/msgpackr-extract-linux-arm@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.2.0.tgz#15f2c6fe9e0adc06c21af7e95f484ff4880d79ce" - integrity sha512-SaJ3Qq4lX9Syd2xEo9u3qPxi/OB+5JO/ngJKK97XDpa1C587H9EWYO6KD8995DAjSinWvdHKRrCOXVUC5fvGOg== - -"@msgpackr-extract/msgpackr-extract-linux-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.2.0.tgz#30cae5c9a202f3e1fa1deb3191b18ffcb2f239a2" - integrity sha512-94y5PJrSOqUNcFKmOl7z319FelCLAE0rz/jPCWS+UtdMZvpa4jrQd+cJPQCLp2Fes1yAW/YUQj/Di6YVT3c3Iw== - -"@msgpackr-extract/msgpackr-extract-win32-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.2.0.tgz#016d855b6bc459fd908095811f6826e45dd4ba64" - integrity sha512-XrC0JzsqQSvOyM3t04FMLO6z5gCuhPE6k4FXuLK5xf52ZbdvcFe1yBmo7meCew9B8G2f0T9iu9t3kfTYRYROgA== - -"@multiformats/base-x@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" - integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== - "@next/env@13.0.0": version "13.0.0" resolved "https://registry.yarnpkg.com/@next/env/-/env-13.0.0.tgz#38527956680693c90b4522ab4ab9a2fbe3a17f67" integrity sha512-65v9BVuah2Mplohm4+efsKEnoEuhmlGm8B2w6vD1geeEP2wXtlSJCvR/cCRJ3fD8wzCQBV41VcMBQeYET6MRkg== -"@next/eslint-plugin-next@13.0.5": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.5.tgz#75af8572ee3163908f08cf357d65ccd24edf5e6b" - integrity sha512-H9U9B1dFnCDmylDZ6/dYt95Ie1Iu+SLBMcO6rkIGIDcj5UK+DNyMiWm83xWBZ1gREM8cfp5Srv1g6wqf8pM4lw== +"@next/eslint-plugin-next@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz#29b041233fac7417e22eefa4146432d5cd910820" + integrity sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q== dependencies: - glob "7.1.7" + glob "10.3.10" "@next/swc-android-arm-eabi@13.0.0": version "13.0.0" @@ -2076,49 +1704,36 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.0.tgz#c54a5a739dee04b20338d305226a2acdf701f67f" integrity sha512-FFOGGWwTCRMu9W7MF496Urefxtuo2lttxF1vwS+1rIRsKvuLrWhVaVTj3T8sf2EBL6gtJbmh4TYlizS+obnGKA== -"@noble/curves@1.0.0", "@noble/curves@~1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932" - integrity sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw== +"@noble/curves@1.2.0", "@noble/curves@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== dependencies: - "@noble/hashes" "1.3.0" - -"@noble/ed25519@^1.7.0": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" - integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== - -"@noble/hashes@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" - integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + "@noble/hashes" "1.3.2" -"@noble/hashes@1.3.0", "@noble/hashes@~1.3.0": +"@noble/curves@1.3.0", "@noble/curves@^1.2.0", "@noble/curves@~1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" - integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" -"@noble/hashes@^1.1.2": +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== -"@noble/hashes@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" - integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== - -"@noble/hashes@~1.1.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111" - integrity sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A== +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" - integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== +"@noble/hashes@1.3.3", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/secp256k1@^1.6.3": +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -2144,1004 +1759,494 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/ethereumjs-block@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz#fdd5c045e7baa5169abeed0e1202bf94e4481c49" - integrity sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA== - dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" +"@nomicfoundation/ethereumjs-block@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.4.tgz#ff2acb98a86b9290e35e315a6abfb9aebb9cf39e" + integrity sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-trie" "6.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-blockchain@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz#1a8c243a46d4d3691631f139bfb3a4a157187b0c" - integrity sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw== - dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-ethash" "^2.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - abstract-level "^1.0.3" +"@nomicfoundation/ethereumjs-blockchain@7.0.4": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.4.tgz#b77511b389290b186c8d999e70f4b15c27ef44ea" + integrity sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.4" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-ethash" "3.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-trie" "6.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" debug "^4.3.3" ethereum-cryptography "0.1.3" - level "^8.0.0" - lru-cache "^5.1.1" - memory-level "^1.0.0" + lru-cache "^10.0.0" -"@nomicfoundation/ethereumjs-common@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz#f6bcc7753994555e49ab3aa517fc8bcf89c280b9" - integrity sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA== +"@nomicfoundation/ethereumjs-common@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb" + integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== dependencies: - "@nomicfoundation/ethereumjs-util" "^8.0.0" - crc-32 "^1.2.0" + "@nomicfoundation/ethereumjs-util" "9.0.4" -"@nomicfoundation/ethereumjs-ethash@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz#11539c32fe0990e1122ff987d1b84cfa34774e81" - integrity sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew== - dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - abstract-level "^1.0.3" - bigint-crypto-utils "^3.0.23" +"@nomicfoundation/ethereumjs-ethash@3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.4.tgz#06cb2502b3012fb6c11cffd44af08aecf71310da" + integrity sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + bigint-crypto-utils "^3.2.2" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-evm@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz#99cd173c03b59107c156a69c5e215409098a370b" - integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== - dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" +"@nomicfoundation/ethereumjs-evm@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.4.tgz#c9c761767283ac53946185474362230b169f8f63" + integrity sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-statemanager" "2.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@types/debug" "^4.1.9" debug "^4.3.3" ethereum-cryptography "0.1.3" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" + rustbn-wasm "^0.2.0" -"@nomicfoundation/ethereumjs-rlp@^4.0.0", "@nomicfoundation/ethereumjs-rlp@^4.0.0-beta.2": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz#d9a9c5f0f10310c8849b6525101de455a53e771d" - integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== +"@nomicfoundation/ethereumjs-rlp@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30" + integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== -"@nomicfoundation/ethereumjs-statemanager@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz#14a9d4e1c828230368f7ab520c144c34d8721e4b" - integrity sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ== +"@nomicfoundation/ethereumjs-statemanager@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.4.tgz#bf14415e1f31b5ea8b98a0c027c547d0555059b6" + integrity sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q== dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-trie" "6.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" debug "^4.3.3" ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" + js-sdsl "^4.1.4" + lru-cache "^10.0.0" -"@nomicfoundation/ethereumjs-trie@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz#dcfbe3be53a94bc061c9767a396c16702bc2f5b7" - integrity sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A== +"@nomicfoundation/ethereumjs-trie@6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.4.tgz#688a3f76646c209365ee6d959c3d7330ede5e609" + integrity sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA== dependencies: - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@types/readable-stream" "^2.3.13" ethereum-cryptography "0.1.3" + lru-cache "^10.0.0" readable-stream "^3.6.0" -"@nomicfoundation/ethereumjs-tx@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz#59dc7452b0862b30342966f7052ab9a1f7802f52" - integrity sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w== +"@nomicfoundation/ethereumjs-tx@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da" + integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-util@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz#deb2b15d2c308a731e82977aefc4e61ca0ece6c5" - integrity sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A== +"@nomicfoundation/ethereumjs-util@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38" + integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== dependencies: - "@nomicfoundation/ethereumjs-rlp" "^4.0.0-beta.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-vm@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz#2bb50d332bf41790b01a3767ffec3987585d1de6" - integrity sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w== - dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-evm" "^1.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" +"@nomicfoundation/ethereumjs-verkle@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-verkle/-/ethereumjs-verkle-0.0.2.tgz#7686689edec775b2efea5a71548f417c18f7dea4" + integrity sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + lru-cache "^10.0.0" + rust-verkle-wasm "^0.0.1" + +"@nomicfoundation/ethereumjs-vm@7.0.4": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.4.tgz#e5a6eec4877dc62dda93003c6d7afd1fe4b9625b" + integrity sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.4" + "@nomicfoundation/ethereumjs-blockchain" "7.0.4" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-evm" "2.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-statemanager" "2.0.4" + "@nomicfoundation/ethereumjs-trie" "6.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" debug "^4.3.3" ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" -"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz#83a7367342bd053a76d04bbcf4f373fef07cf760" - integrity sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw== +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== -"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz#1225f7da647ae1ad25a87125664704ecc0af6ccc" - integrity sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA== +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== -"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz#dbc052dcdfd50ae50fd5ae1788b69b4e0fa40040" - integrity sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg== +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz#e6b2eea633995b557e74e881d2a43eab4760903d" - integrity sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ== +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz#af81107f5afa794f19988a368647727806e18dc4" - integrity sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w== +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz#6877e1da1a06a9f08446070ab6e0a5347109f868" - integrity sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw== +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== -"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz#bb6cd83a0c259eccef4183796b6329a66cf7ebd9" - integrity sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg== +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== -"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz#9d4bca1cc9a1333fde985675083b0b7d165f6076" - integrity sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw== +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== -"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz#0db5bfc6aa952bea4098d8d2c8947b4e5c4337ee" - integrity sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw== +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz#2e0f39a2924dcd77db6b419828595e984fabcb33" - integrity sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA== +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== "@nomicfoundation/solidity-analyzer@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz#e5ddc43ad5c0aab96e5054520d8e16212e125f50" - integrity sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg== + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== optionalDependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.0" - "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.0" - "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.0" - -"@nomiclabs/hardhat-ethers@^2.0.0", "@nomiclabs/hardhat-ethers@^2.0.2", "@nomiclabs/hardhat-ethers@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.1.tgz#8057b43566a0e41abeb8142064a3c0d3f23dca86" - integrity sha512-RHWYwnxryWR8hzRmU4Jm/q4gzvXpetUOJ4OPlwH2YARcDB+j79+yAYCwO0lN1SUOb4++oOTJEe6AWLEc42LIvg== - -"@nomiclabs/hardhat-etherscan@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.3.tgz#c9dbaa4174edfa075a464a0e9142bc8710a2c4e2" - integrity sha512-UeNO97j0lwOHqX7mrH6SfQQBdXq1Ng6eFr7uJKuQOrq2UVTWGD70lE5QO4fAFVPz9ao+xlNpMyIqSR7+OaDR+Q== - dependencies: - "@ethersproject/abi" "^5.1.2" - "@ethersproject/address" "^5.0.2" - cbor "^8.1.0" - chalk "^2.4.2" - debug "^4.1.1" - fs-extra "^7.0.1" - lodash "^4.17.11" - semver "^6.3.0" - table "^6.8.0" - undici "^5.4.0" + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + +"@parcel/watcher-android-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" + integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== -"@nomiclabs/hardhat-truffle5@^2.0.0": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-truffle5/-/hardhat-truffle5-2.0.7.tgz#7519eadd2c6c460c2addc3d4d6efda7a8883361e" - integrity sha512-Pw8451IUZp1bTp0QqCHCYfCHs66sCnyxPcaorapu9mfOV9xnZsVaFdtutnhNEiXdiZwbed7LFKpRsde4BjFwig== - dependencies: - "@nomiclabs/truffle-contract" "^4.2.23" - "@types/chai" "^4.2.0" - chai "^4.2.0" - ethereumjs-util "^7.1.4" - fs-extra "^7.0.1" +"@parcel/watcher-darwin-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" + integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== -"@nomiclabs/hardhat-waffle@^2.0.0", "@nomiclabs/hardhat-waffle@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1" - integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== - dependencies: - "@types/sinon-chai" "^3.2.3" - "@types/web3" "1.0.19" - -"@nomiclabs/truffle-contract@^4.2.23": - version "4.5.10" - resolved "https://registry.yarnpkg.com/@nomiclabs/truffle-contract/-/truffle-contract-4.5.10.tgz#52adcca1068647e1c2b44bf0e6a89fc4ad7f9213" - integrity sha512-nF/6InFV+0hUvutyFgsdOMCoYlr//2fJbRER4itxYtQtc4/O1biTwZIKRu+5l2J5Sq6LU2WX7vZHtDgQdhWxIQ== - dependencies: - "@ensdomains/ensjs" "^2.0.1" - "@truffle/blockchain-utils" "^0.1.3" - "@truffle/contract-schema" "^3.4.7" - "@truffle/debug-utils" "^6.0.22" - "@truffle/error" "^0.1.0" - "@truffle/interface-adapter" "^0.5.16" - bignumber.js "^7.2.1" - ethereum-ens "^0.8.0" - ethers "^4.0.0-beta.1" - source-map-support "^0.5.19" - -"@openzeppelin/contracts@^4.0.0", "@openzeppelin/contracts@^4.1.0", "@openzeppelin/contracts@^4.2.0": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.0.tgz#6854c37df205dd2c056bdfa1b853f5d732109109" - integrity sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw== +"@parcel/watcher-darwin-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" + integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== -"@parcel/bundler-default@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.8.0.tgz#ddb10283bf2ea7cb01161c68bbaf9bd79992480f" - integrity sha512-OvDDhxX4LwfGe7lYVMbJMzqNcDk8ydOqNw0Hra9WPgl0m5gju/eVIbDvot3JXp5F96FmV36uCxdODJhKTNoAzQ== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/graph" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" +"@parcel/watcher-freebsd-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" + integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== -"@parcel/cache@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.8.0.tgz#8e4763aaba8914b04db273bcd889a6ba3daf0ee5" - integrity sha512-k945hrafMDR2wyCKyZYgwypeLLuZWce6FzhgunI4taBUeVnNCcpFAWzbfOVQ39SqZTGDqG3MNT+VuehssHXxyg== - dependencies: - "@parcel/fs" "2.8.0" - "@parcel/logger" "2.8.0" - "@parcel/utils" "2.8.0" - lmdb "2.5.2" +"@parcel/watcher-linux-arm-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" + integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== -"@parcel/codeframe@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.8.0.tgz#b7c9297d14e9ee6bd96b8725126be59cf77fd6e5" - integrity sha512-821d+KVcpEvJNMj9WMC39xXZK6zvRS/HUjQag2f3DkcRcZwk1uXJZdW6p1EB7C3e4e/0KSK3NTSVGEvbOSR+9w== - dependencies: - chalk "^4.1.0" +"@parcel/watcher-linux-arm64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" + integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== -"@parcel/compressor-raw@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.8.0.tgz#fbd267465c5425b65ce1fe437ae1ec69c5ace34c" - integrity sha512-tM49t0gDQnwJbrDCeoCn9LRc8inZ/TSPQTttJTfcmFHHFqEllI0ZDVG0AiQw5NOMQbBLYiKun1adXn8pkcPLEA== - dependencies: - "@parcel/plugin" "2.8.0" +"@parcel/watcher-linux-arm64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" + integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== -"@parcel/config-default@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.8.0.tgz#15482a8ef411d353a59af16fdfe0894761b12a56" - integrity sha512-j9g50QNSLjuNpY0TP01EgGJPxWNes9d+e8+N07Z5Wv0u+UUnJ2uIOpo7PVn7ullOGhm1f9lP4KsJenu5gWb+cg== - dependencies: - "@parcel/bundler-default" "2.8.0" - "@parcel/compressor-raw" "2.8.0" - "@parcel/namer-default" "2.8.0" - "@parcel/optimizer-css" "2.8.0" - "@parcel/optimizer-htmlnano" "2.8.0" - "@parcel/optimizer-image" "2.8.0" - "@parcel/optimizer-svgo" "2.8.0" - "@parcel/optimizer-terser" "2.8.0" - "@parcel/packager-css" "2.8.0" - "@parcel/packager-html" "2.8.0" - "@parcel/packager-js" "2.8.0" - "@parcel/packager-raw" "2.8.0" - "@parcel/packager-svg" "2.8.0" - "@parcel/reporter-dev-server" "2.8.0" - "@parcel/resolver-default" "2.8.0" - "@parcel/runtime-browser-hmr" "2.8.0" - "@parcel/runtime-js" "2.8.0" - "@parcel/runtime-react-refresh" "2.8.0" - "@parcel/runtime-service-worker" "2.8.0" - "@parcel/transformer-babel" "2.8.0" - "@parcel/transformer-css" "2.8.0" - "@parcel/transformer-html" "2.8.0" - "@parcel/transformer-image" "2.8.0" - "@parcel/transformer-js" "2.8.0" - "@parcel/transformer-json" "2.8.0" - "@parcel/transformer-postcss" "2.8.0" - "@parcel/transformer-posthtml" "2.8.0" - "@parcel/transformer-raw" "2.8.0" - "@parcel/transformer-react-refresh-wrap" "2.8.0" - "@parcel/transformer-svg" "2.8.0" - -"@parcel/core@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.8.0.tgz#fe97ea2d0eb4504f149ecc7fbb0dcfe2d66a20b9" - integrity sha512-udzbe3jjbpfKlRE9pdlROAa+lvAjS1L/AzN6r2j1y/Fsn7ze/NfvnCFw6o2YNIrXg002aQ7M1St/x1fdGfmVKA== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/cache" "2.8.0" - "@parcel/diagnostic" "2.8.0" - "@parcel/events" "2.8.0" - "@parcel/fs" "2.8.0" - "@parcel/graph" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/logger" "2.8.0" - "@parcel/package-manager" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - "@parcel/workers" "2.8.0" - abortcontroller-polyfill "^1.1.9" - base-x "^3.0.8" - browserslist "^4.6.6" - clone "^2.1.1" - dotenv "^7.0.0" - dotenv-expand "^5.1.0" - json5 "^2.2.0" - msgpackr "^1.5.4" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/diagnostic@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.8.0.tgz#716b4230ca16e0cfa9e46235b95fbf5623d824be" - integrity sha512-ERnk0zDvm0jQUSj1M+2PLiwVC6nWrtuFEuye6VGuxRDcp9NHbz6gwApeEYxFkPsb3TQPhNjnXXm5nmAw1bpWWw== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - nullthrows "^1.1.1" +"@parcel/watcher-linux-x64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" + integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== -"@parcel/events@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.8.0.tgz#c3130456432786bd4b71a98c5908a44f1935f6eb" - integrity sha512-xqSZYY3oONM4IZm9+vhyFqX+KFIl145veIczUikwGJlcJZQfAAw736syPx6ecpB+m1EVg3AlvJWy7Lmel4Ak+Q== +"@parcel/watcher-linux-x64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" + integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== -"@parcel/fs-search@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.8.0.tgz#e9669681b618511df928215b60bf9c39ba206bc3" - integrity sha512-yo7/Y8DCFlhOlIBb5SsRDTkM+7g0DY9sK57iw3hn2z1tGoIiIRptrieImFYSizs7HfDwDY/PMLfORmUdoReDzQ== +"@parcel/watcher-wasm@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.4.0.tgz#84a3959c8ef1cd67b36b9fec487edbc8f27719f6" + integrity sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA== dependencies: - detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + napi-wasm "^1.1.0" -"@parcel/fs@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.8.0.tgz#70915a9b81174b9ee7c793e1f0850b97ff060e4a" - integrity sha512-v3DbJlpl8v2/VRlZPw7cy+0myi0YfLblGZcwDvqIsWS35qyxD2rmtYV8u1BusonbgmJeaKiopSECmJkumt0jCw== - dependencies: - "@parcel/fs-search" "2.8.0" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - "@parcel/watcher" "^2.0.7" - "@parcel/workers" "2.8.0" +"@parcel/watcher-win32-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" + integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== -"@parcel/graph@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.8.0.tgz#39856a62e131285205f5e82a0d102106157b274e" - integrity sha512-JvAyvBpGmhZ30bi+hStQr52eu+InfJBoiN9Z/32byIWhXEl02EAOwfsPqAe+FGCsdgXnnCGg5F9ZCqwzZ9dwbw== - dependencies: - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" +"@parcel/watcher-win32-ia32@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" + integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== -"@parcel/hash@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.8.0.tgz#cc8408f9b2b80bac414c0ef27bdf549f3de1c64d" - integrity sha512-KV1+96t7Nukth5K7ldUXjVr8ZTH9Dohl49K0Tc+5Qkysif0OxwcDtpVDmcnrUnWmqdBX0AdoLY0Q2Nnly89n/w== - dependencies: - detect-libc "^1.0.3" - xxhash-wasm "^0.4.2" +"@parcel/watcher-win32-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" + integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== -"@parcel/logger@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.8.0.tgz#f7fab99e61f12530561e0cf3d900fea1ebf0b386" - integrity sha512-W+7rKsLxLUX6xRmP8PhGWcG48PqrzTPeMWpgSds5nXxAHEFh4cYbkwPKGoTU65a9xUDVyqNreHNIKyizgwAZHQ== +"@parcel/watcher@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" + integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/events" "2.8.0" - -"@parcel/markdown-ansi@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.8.0.tgz#3116f2bd1b28faee7f178a455060f4ab617492df" - integrity sha512-xItzXmc3btFhJXsIbE946iaqE6STd2xe5H0zSIaZVXEeucCtMzcd4hxRELquxPstlrAOrrp/lrRpbAlMhso9iA== - dependencies: - chalk "^4.1.0" - -"@parcel/namer-default@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.8.0.tgz#61221423058db71b6677e9c87282bd0dc94d0ca2" - integrity sha512-cVCx2kJA/Bv7O9pVad1UOibaybR/B+QdWV8Ols8HH4lC2gyjLBXEIR0uuPSEbkGwMEcofG6zA3MwsoPa6r5lBg== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - nullthrows "^1.1.1" - -"@parcel/node-resolver-core@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.8.0.tgz#71ffb9db7f7af08d895d538304ca2c96041440b5" - integrity sha512-cECSh08NSRt1csmmMeKxlnO6ZhXRTuRijkHKFa4iG5hPL+3Cu04YGhuK/QWlP5vNCPVrH3ISlhzlPU5fAi/nEg== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/optimizer-css@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.8.0.tgz#9efa56909d6e65a7550f14d7feebadd7735bc3ab" - integrity sha512-T5r3gZVm1xFw6l//iLkzLDUvFzNTUvL5kAtyU5gS5yH/dg7eCS09Km/c2anViQnmXwFUt7zIlBovj1doxAVNSw== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - browserslist "^4.6.6" - lightningcss "^1.16.1" - nullthrows "^1.1.1" - -"@parcel/optimizer-htmlnano@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.0.tgz#a10950bb3153568db47db3f5f94f671c7e1ff4e6" - integrity sha512-NxEKTRvue/WAU+XbQGfNIU6c7chDekdkwwv9YnCxHEOhnBu4Ok+2tdmCtPuA+4UUNszGxXlaHMnqSrjmqX2S6Q== - dependencies: - "@parcel/plugin" "2.8.0" - htmlnano "^2.0.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - svgo "^2.4.0" - -"@parcel/optimizer-image@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.8.0.tgz#bffd0c967372cbeb75987a845b1f687c1ccc5dbf" - integrity sha512-66eSoCCGZVRiY6U4OqqYrhQcBcHI9cOkIEbxadZYOF4cJhsskjUDJR0jLb4j2PE6QxUNYlyj5OglQqRLwhz7vA== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - "@parcel/workers" "2.8.0" - detect-libc "^1.0.3" - -"@parcel/optimizer-svgo@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.0.tgz#cd5289c956bd23bfe58ef63e1a680f751a8afcff" - integrity sha512-qQzM32CzJJuniFaTZDspVn/Vtz/PJ/f89+FckLpWZJVWNihgwTHC1/F0YTDH8g6czNw5ZijwQ3xBVuJQYyIXsQ== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - svgo "^2.4.0" - -"@parcel/optimizer-terser@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.8.0.tgz#b6a025e37874ecd0b38fb3e64452151642361cea" - integrity sha512-slS6GWQ3u418WtJmlqlA5Njljcq4OaEdDDR2ifEwltG8POv+hsvD5AAoM2XB0GJwY97TQtdMbBu2DuDF3yM/1Q== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - terser "^5.2.0" - -"@parcel/package-manager@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.8.0.tgz#9486cb66e263e156bdbc064fea65756019203be3" - integrity sha512-n4FgerAX1lTKKTgxmiocnos47Y+b0L60iwU6Q4cC2n4KQNRuNyfhxFXwWcqHstR9wa72JgPaDgo4k0l3Bk8FZw== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/fs" "2.8.0" - "@parcel/logger" "2.8.0" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - "@parcel/workers" "2.8.0" - semver "^5.7.1" - -"@parcel/packager-css@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.8.0.tgz#28f1e17506765d094bad4a7129677941553eb8d9" - integrity sha512-tv/Bto0P6fXjqQ9uCZ8/6b/+38Zr/N2MC7/Nbflzww/lp0k2+kkE9MVJJDr5kST/SzTBRrhbDo+yTbtdZikJYg== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - -"@parcel/packager-html@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.8.0.tgz#838037f1f6e1f6d242ed03510bf54ef9ab16f158" - integrity sha512-4x09v/bt767rxwGTuEw82CjheoOtIKNu4sx1gqwQOz9QowKPniXOIaD+0XmLiARdzRErucf0sL19QHfNcPAhUw== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - -"@parcel/packager-js@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.8.0.tgz#e2e1da84a0b233a4341b79a6002bee3621f3c50a" - integrity sha512-Tn2EtWM1TEdj4t5pt0QjBDzqrXrfRTL3WsdMipZwDSuX04KS0jedJINHjh46HOMwyfJxLbUg3xkGX7F5mYQj5g== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - globals "^13.2.0" - nullthrows "^1.1.1" - -"@parcel/packager-raw@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.8.0.tgz#12d025565d7578cc3a405bc52ddd18eaa315ff7e" - integrity sha512-s3VniER3X2oNTlfytBGIQF+UZFVNLFWuVu1IkZ8Wg6uYQffrExDlbNDcmFCDcfvcejL3Ch5igP+L6N00f6+wAQ== - dependencies: - "@parcel/plugin" "2.8.0" - -"@parcel/packager-svg@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.8.0.tgz#811098830098b74cddb7b3d22d414d7ef8b9e42a" - integrity sha512-+BSpdPiNjlAne28nOjG2AyiOejAehe/+X9MxL2FIpPP7UBLNc2ekaM0mDTR5iY45YtZa57oyErBT/U6wZ1TCjw== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - posthtml "^0.16.4" - -"@parcel/packager-ts@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-ts/-/packager-ts-2.8.0.tgz#fc41a239036a7e72e39041e781ec630a4b5fa6ec" - integrity sha512-NIDE/NwRfnIN+71s1HE/pM8/ZI3eg4aGGHKXscULRQWkD1aaUY9RdXzO0jH0ADb1wPIaKRILTZXBx3haEpe3Eg== - dependencies: - "@parcel/plugin" "2.8.0" - -"@parcel/plugin@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.8.0.tgz#eb6acbb17110ecba4d3c283fc073ffa9531ac0b6" - integrity sha512-Tsf+7nDg7KauvTVY6rGc7CmgJruKSwJ54KJ9s5nYFFP9nfwmyqbayCi9xOxicWU9zIHfuF5Etwf17lcA0oAvzw== - dependencies: - "@parcel/types" "2.8.0" - -"@parcel/reporter-cli@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.8.0.tgz#d725b790108322e822f2b1bce189fe1da7873057" - integrity sha512-ea4/Lp+2jDbzb/tfTgUKzYU51FK8wcewDoYNr06uL+wvx/vzYIDG0jHfzaOTasREnm7ECDr1Zu2Iknrgk1STqQ== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - chalk "^4.1.0" - term-size "^2.2.1" - -"@parcel/reporter-dev-server@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.0.tgz#bb4795f8e021a9784e96e872d6a7ca311a8b76b9" - integrity sha512-wg6hUrQ8vUmvlP2fg8YEzYndmq7hWZ21ZgBv4So1Z65I+Qav85Uox7bjGLCSJwEAjdjFKfhV9RGULGzqh8vcAQ== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - -"@parcel/resolver-default@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.8.0.tgz#51c5449976e6f08a0d444a382c304eec1f5d7018" - integrity sha512-kO5W+O3Ql6NXNFS6lvfSSt1R+PxO1atNLYxZdVSM6+QQxRMiztfqzZs//RM+oUp+af6muDSUPlNs+RORX0fing== - dependencies: - "@parcel/node-resolver-core" "2.8.0" - "@parcel/plugin" "2.8.0" - -"@parcel/runtime-browser-hmr@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.0.tgz#cc97b975caffc4c0d40e3dbeecb0ea412e8f0d64" - integrity sha512-zV5wGGvm1cDwWAzkwPUaKh6inWYKxq67YWY4G396PXLMxddM9SQC1c7iFM60OPnD4A+BMOLOy7N6//20h15Dlg== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - -"@parcel/runtime-js@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.8.0.tgz#082d576b8319e1222b6010d6c5ff6da9d5483118" - integrity sha512-IwT1rX8ZamoYZv0clfswZemfXcIfk+YXwNsqXwzzh6TaMGagj/ZZl1llkn7ERQFq4EoLEoDGGkxqsrJjBp9NDQ== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - -"@parcel/runtime-react-refresh@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.0.tgz#3d91f739f04f6dc0a2adafe48c523d7ef6cf26c4" - integrity sha512-a6uuZWkl+mJur2WLZKmpEqq1P06tvRwqGefYbE26DWpwXwU9dLpfnv/nT0hqCmVDHd2TkMyCffolSmq1vY05ew== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - react-error-overlay "6.0.9" - react-refresh "^0.9.0" - -"@parcel/runtime-service-worker@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.0.tgz#6e65b8ff76d51a729edd8b98a3de25f7d55162b8" - integrity sha512-Q3Q2O/axQbFi/5Z+BidLB3qhmYdZLTMDagZtsmyH7CktDkZVNV/0UoOGYlqoK06T4cww3XjLSEomXbBu9TlQKQ== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - -"@parcel/source-map@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" - integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== - dependencies: - detect-libc "^1.0.3" - -"@parcel/transformer-babel@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.8.0.tgz#f173a4284d9a15f63001f6c9efb1294ce6bca7a2" - integrity sha512-ie+wFe9pucdnRyX2PTN9amOHrhr/IOwUEAfTz/3dPydOYCuX7ErEngCpI9fBzdYE2AV6/noEwC2Mjeoyz9mT2A== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - browserslist "^4.6.6" - json5 "^2.2.0" - nullthrows "^1.1.1" - semver "^5.7.0" - -"@parcel/transformer-css@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.8.0.tgz#68fe6434e86bdaaad1174878881cdc3cab0a8d0a" - integrity sha512-jCMQSfsxCoepblBAHCYMuNWNPQlqasoD6PfNftMdTlv12aUcnjNIYO9600TVLTL799CrEohljbXcfFn6hDGVWw== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - browserslist "^4.6.6" - lightningcss "^1.16.1" - nullthrows "^1.1.1" - -"@parcel/transformer-html@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.8.0.tgz#ae5a1e2695b3c7954923ed76aa47ca2315f2705b" - integrity sha512-KLcZCWSIItZ1s12Sav3uvfTrwhX92craN9u7V3qUs8ld7ompTKsCdnf+gYmeCyISb5yiFDyYBvTGc1bOXvaDRQ== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/plugin" "2.8.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-image@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.8.0.tgz#b71862bcb18b53aeb81fa0ecc733ae260a49907a" - integrity sha512-hJGsZxGlGEkiUvN8kCxA4DhB6/WrHzcIlZZYEgEien9pLctyc6np6idjdcyudPAhH3LwBPkiyeUfCvLAOA1zkA== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - "@parcel/workers" "2.8.0" - nullthrows "^1.1.1" - -"@parcel/transformer-js@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.8.0.tgz#d8e4afe227c0f1751f4a58a9cb6f495c0327f192" - integrity sha512-C5WTkDRiJGBB9tZa1mBsZwsqZjYEKkOa4mdVym3dMokwhFLUga8WtK7kGw4fmXIq41U8ip4orywj+Rd4mvGVWg== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.8.0" - "@parcel/workers" "2.8.0" - "@swc/helpers" "^0.4.12" - browserslist "^4.6.6" detect-libc "^1.0.3" - nullthrows "^1.1.1" - regenerator-runtime "^0.13.7" - semver "^5.7.1" - -"@parcel/transformer-json@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.8.0.tgz#c83f0845bf6d2018a2b20780c0250212b36532ca" - integrity sha512-Pp5gROSMpzFDEI6KA2APuSpft6eXZxFgTPV6Xx9pElqseod3iL5+RnpMNV/nv76Ai2bcMEiafus5Pb09vjHgbQ== - dependencies: - "@parcel/plugin" "2.8.0" - json5 "^2.2.0" - -"@parcel/transformer-postcss@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.8.0.tgz#65ed22973c26da9f9a481ec95211014dbd668a13" - integrity sha512-45Ij+cgwXprd1sCLmaMIlCbPz3eEwolGHizgZmXl5l4yjlE2wGyzodhxLpBk1PWu7OxxWRbLnJIlvMYf7Vfw0g== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - clone "^2.1.1" - nullthrows "^1.1.1" - postcss-value-parser "^4.2.0" - semver "^5.7.1" - -"@parcel/transformer-posthtml@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.0.tgz#d2690d19b8ad14dba91012fca95684ae017d7590" - integrity sha512-KrkKBFDW5PNZpr2Ha711eIABQOiJQKvfwfVs3CVpJK5wSADkappDk7CQ0mISPjhamFJ6xx/sNsi7e871I8R9lg== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-raw@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.8.0.tgz#2b973e280ef9f681a278d6fe19434887678ee92b" - integrity sha512-uEbj+kE70vg2Gmdji/AIXPK13s5aQRw7X+xWs3vNpY2oymyMRHbfx1izJFWBh+kxu6Yo6q6qsekkh2rNHEHIUA== - dependencies: - "@parcel/plugin" "2.8.0" - -"@parcel/transformer-react-refresh-wrap@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.0.tgz#d89ed23e08ba7780f06f0794a7ee2dd4322b2b77" - integrity sha512-d7G6wBdlwVXLkhC7EO/3UkUOfEOJvsIsQUCEujsrdFF+nfBElXw/TZ+KP8UkmrwMdD0spU/8cKoTyi5k19vt6w== - dependencies: - "@parcel/plugin" "2.8.0" - "@parcel/utils" "2.8.0" - react-refresh "^0.9.0" - -"@parcel/transformer-svg@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.8.0.tgz#d34ef03445e88e5740ae35b209ce6bde9d79f1aa" - integrity sha512-8S6yZoUTCbHOnuWY3M50fscTpI8414945I44fmed+C1e36TnWem8FifuVtGkRZeR8pokF453lmmwWG1eH/4U3w== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/plugin" "2.8.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-typescript-types@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.8.0.tgz#2f583e651d7ae19ccf15ee88fdc9bb0a71410115" - integrity sha512-np7HTfEylyJO7Uc6vMTQDhKmIbKyzGi81otpm74t86CUqlSoecXL/IuifTAAaHdhZv7WSNR3AOtmSa8geMVUCA== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/plugin" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/ts-utils" "2.8.0" - "@parcel/utils" "2.8.0" - nullthrows "^1.1.1" - -"@parcel/ts-utils@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/ts-utils/-/ts-utils-2.8.0.tgz#5110150aa255b5bf5e0dd4f8d6d276329009d491" - integrity sha512-DoSpJfckv8JmVAffS95EurbaLtp+bryyJTcXQfEI2fQVQBnXW8K92cxvIj8MtC+xQW22J/3/PZ+d0HRxmbxT1w== - dependencies: - nullthrows "^1.1.1" - -"@parcel/types@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.8.0.tgz#2e654d3381aad23ae5ec5f262287fd69f1744100" - integrity sha512-DeN3vCnVl9onjtyWxpbP7LwRslVEko4kBaM7yILsuQjEnXmaIOsqIf6FQJOUOPBtQTFFNeQQ2qyf5XoO/rkJ8g== - dependencies: - "@parcel/cache" "2.8.0" - "@parcel/diagnostic" "2.8.0" - "@parcel/fs" "2.8.0" - "@parcel/package-manager" "2.8.0" - "@parcel/source-map" "^2.1.1" - "@parcel/workers" "2.8.0" - utility-types "^3.10.0" - -"@parcel/utils@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.8.0.tgz#0524609dd19ac70c9f28fb4e273c266d9ecb5541" - integrity sha512-r4ACsGtW7zkMUIgwQyOVtPAFiy8L81gbz4tMIRSqyQKnkW7oEHcQ3uN1/LPxj2yfkyQLmhJxmtptLUy9j53rcw== - dependencies: - "@parcel/codeframe" "2.8.0" - "@parcel/diagnostic" "2.8.0" - "@parcel/hash" "2.8.0" - "@parcel/logger" "2.8.0" - "@parcel/markdown-ansi" "2.8.0" - "@parcel/source-map" "^2.1.1" - chalk "^4.1.0" - -"@parcel/watcher@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.7.tgz#c95fe1370e8c6237cb9729c9c075264acc7e21a5" - integrity sha512-gc3hoS6e+2XdIQ4HHljDB1l0Yx2EWh/sBBtCEFNKGSMlwASWeAQsOY/fPbxOBcZ/pg0jBh4Ga+4xHlZc4faAEQ== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - -"@parcel/workers@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.8.0.tgz#75f72a6717e3d479ff9293c6c41c78b2147f7352" - integrity sha512-vAzoC/wPHLQnyy9P/TrSPftY8F3MhZqPTFi681mxVtLWA3t7wiNlw1zDVKRDP8m5XS1yQOr8Q56CAHyRexhc8g== - dependencies: - "@parcel/diagnostic" "2.8.0" - "@parcel/logger" "2.8.0" - "@parcel/types" "2.8.0" - "@parcel/utils" "2.8.0" - chrome-trace-event "^1.0.2" - nullthrows "^1.1.1" - -"@pedrouid/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" - integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== - -"@pkgr/utils@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" - integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== - dependencies: - cross-spawn "^7.0.3" is-glob "^4.0.3" - open "^8.4.0" - picocolors "^1.0.0" - tiny-glob "^0.2.9" - tslib "^2.4.0" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.0" + "@parcel/watcher-darwin-arm64" "2.4.0" + "@parcel/watcher-darwin-x64" "2.4.0" + "@parcel/watcher-freebsd-x64" "2.4.0" + "@parcel/watcher-linux-arm-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-musl" "2.4.0" + "@parcel/watcher-linux-x64-glibc" "2.4.0" + "@parcel/watcher-linux-x64-musl" "2.4.0" + "@parcel/watcher-win32-arm64" "2.4.0" + "@parcel/watcher-win32-ia32" "2.4.0" + "@parcel/watcher-win32-x64" "2.4.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pushprotocol/restapi@^1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@pushprotocol/restapi/-/restapi-1.2.10.tgz#c9f0c6f9c9547e6ba21e7db3f4c6a7fc0a1e43d5" - integrity sha512-s3O7mD9VFtC2ApfnBC0iQc3XcT42aJrz1KC5d9IIu+xpSyXmry4VhhiNEEOSmxQs7/ZgHuz8mns5wTWhlSI3FQ== +"@pushprotocol/restapi@^1.6.7": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@pushprotocol/restapi/-/restapi-1.6.8.tgz#707cf8abcceaeb98c45551e87ac14bbdb741ba32" + integrity sha512-ZImz4qvXkqqcQowJBBFCKO8FsI/mjFDyC4dEhw5q1jlxWYuMKOD3NwaF+yvfIwgrFYWpCyYHvOCeLR+830Zn6g== dependencies: + "@ambire/signature-validator" "^1.3.1" "@metamask/eth-sig-util" "^5.0.2" axios "^0.27.2" buffer "^6.0.3" crypto-js "^4.1.1" + immer "^10.0.2" + joi "^17.9.2" + livepeer "^2.5.8" + lru-cache "^10.1.0" openpgp "^5.5.0" + simple-peer "^9.11.1" + socket.io-client "^4.7.2" tslib "^2.3.0" + unique-names-generator "^4.7.1" uuid "^9.0.0" + video-stream-merger "^4.0.1" + viem "^1.20.3" -"@rainbow-me/rainbowkit@^0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-0.7.4.tgz#5cf25d9108ae125c3b1b2b6ddb01d785940011bd" - integrity sha512-o3kwaHZw9O40gfK2DamJZzoqPbK7EHC+8++QtFy5AQ0Sw5P+U0tzb/87KHatSIXyIwrZTEGD0uciPjCGikJMjg== - dependencies: - "@vanilla-extract/css" "1.9.1" - "@vanilla-extract/dynamic" "2.0.2" - "@vanilla-extract/sprinkles" "1.5.0" - clsx "1.1.1" - qrcode "1.5.0" - react-remove-scroll "2.5.4" - -"@resolver-engine/core@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" - integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== - dependencies: - debug "^3.1.0" - is-url "^1.2.4" - request "^2.85.0" - -"@resolver-engine/fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.3.3.tgz#fbf83fa0c4f60154a82c817d2fe3f3b0c049a973" - integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== - dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - -"@resolver-engine/imports-fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz#4085db4b8d3c03feb7a425fbfcf5325c0d1e6c1b" - integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== - dependencies: - "@resolver-engine/fs" "^0.3.3" - "@resolver-engine/imports" "^0.3.3" - debug "^3.1.0" +"@rainbow-me/rainbowkit@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-2.0.2.tgz#6122e349b7b87e4bb57ece374747c21915816ae7" + integrity sha512-xm/3iWxwL/ATVVWjtYVGviTJ4ldXwcvaic+bQnGg/pqzf8zKONkuzd5gNWLw0ft1iNG2IPHL1ABP9UoR2Trlaw== + dependencies: + "@vanilla-extract/css" "1.14.0" + "@vanilla-extract/dynamic" "2.1.0" + "@vanilla-extract/sprinkles" "1.6.1" + clsx "2.1.0" + qrcode "1.5.3" + react-remove-scroll "2.5.7" + ua-parser-js "^1.0.37" + +"@react-native-async-storage/async-storage@^1.17.11": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.21.0.tgz#d7e370028e228ab84637016ceeb495878b7a44c8" + integrity sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag== + dependencies: + merge-options "^3.0.4" + +"@rollup/rollup-android-arm-eabi@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" + integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== + +"@rollup/rollup-android-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" + integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== + +"@rollup/rollup-darwin-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" + integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== + +"@rollup/rollup-darwin-x64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" + integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" + integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== + +"@rollup/rollup-linux-arm64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" + integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== + +"@rollup/rollup-linux-arm64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" + integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== + +"@rollup/rollup-linux-riscv64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" + integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== + +"@rollup/rollup-linux-x64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" + integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== + +"@rollup/rollup-linux-x64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" + integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== + +"@rollup/rollup-win32-arm64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" + integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== + +"@rollup/rollup-win32-ia32-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" + integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== + +"@rollup/rollup-win32-x64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" + integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== + +"@rushstack/eslint-patch@^1.3.3": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9" + integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== + +"@safe-global/safe-apps-provider@0.18.1": + version "0.18.1" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.1.tgz#287b5a1e2ef3be630dacde54279409df3ced8202" + integrity sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg== + dependencies: + "@safe-global/safe-apps-sdk" "^8.1.0" + events "^3.3.0" -"@resolver-engine/imports@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.3.3.tgz#badfb513bb3ff3c1ee9fd56073e3144245588bcc" - integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== +"@safe-global/safe-apps-sdk@8.1.0", "@safe-global/safe-apps-sdk@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-8.1.0.tgz#d1d0c69cd2bf4eef8a79c5d677d16971926aa64a" + integrity sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w== dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - hosted-git-info "^2.6.0" - path-browserify "^1.0.0" - url "^0.11.0" + "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" + viem "^1.0.0" -"@rushstack/eslint-patch@^1.1.3": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" - integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== +"@safe-global/safe-gateway-typescript-sdk@^3.5.3": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.14.0.tgz#9581c524c1ea4956555f40761eb6b4007392aa82" + integrity sha512-/dqU66RvHw50n+7x3nwnJedq8V6iLQyoWitNdjx5cFTBmae+rpP+LvHq+LqZfXJVkB1qNytMdjFjdyES0t79gQ== -"@safe-global/safe-apps-provider@^0.15.2": - version "0.15.2" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.15.2.tgz#fa5c30140134e72bb969da76b80a16c545323e3a" - integrity sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ== - dependencies: - "@safe-global/safe-apps-sdk" "7.9.0" - events "^3.3.0" +"@scure/base@^1.1.1", "@scure/base@^1.1.3", "@scure/base@^1.1.5", "@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.4": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" + integrity sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ== -"@safe-global/safe-apps-sdk@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.9.0.tgz#0c79a7760470bfdaf4cce9aa5bceef56898c7037" - integrity sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w== +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== dependencies: - "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" - ethers "^5.7.2" + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" -"@safe-global/safe-apps-sdk@^7.9.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.10.0.tgz#e75fc581126f27c52ec2601da51bca5eb99b61f4" - integrity sha512-is0QAHVoGkP06YfOPcp4X3/YUEA3wRdgFUyKZ4rT47uOEnzxA9Sm8BFJrIZqZOjjqC+aJXRMF0cE2qucS953rg== +"@scure/bip32@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" + integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA== dependencies: - "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" - ethers "^5.7.2" + "@noble/curves" "~1.2.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.2" -"@safe-global/safe-gateway-typescript-sdk@^3.5.3": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.7.0.tgz#2af52f1bc73759b1b6a549fed598781c8c5fce72" - integrity sha512-3BvlUgp0oZ1Zkn7nG3wY1jvCEE4t530BjKcaa3r0qsf0whf/ez/0gmQwk7DTOGmVmvOfjj6HHikxnrUCCX+/3Q== +"@scure/bip32@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== dependencies: - cross-fetch "^3.1.5" + "@noble/curves" "~1.3.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" -"@scure/base@~1.1.0": +"@scure/bip39@1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" - integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== - -"@scure/bip32@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" - integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== dependencies: - "@noble/hashes" "~1.1.1" - "@noble/secp256k1" "~1.6.0" + "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" -"@scure/bip32@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.0.tgz#6c8d980ef3f290987736acd0ee2e0f0d50068d87" - integrity sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q== +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== dependencies: - "@noble/curves" "~1.0.0" "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" -"@scure/bip39@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" - integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== - dependencies: - "@noble/hashes" "~1.1.1" - "@scure/base" "~1.1.0" - -"@scure/bip39@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.0.tgz#a207e2ef96de354de7d0002292ba1503538fc77b" - integrity sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg== +"@scure/bip39@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== dependencies: - "@noble/hashes" "~1.3.0" - "@scure/base" "~1.1.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" "@sentry/core@5.30.0": version "5.30.0" @@ -3211,20 +2316,27 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== -"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sinonjs/commons@^2.0.0": version "2.0.0" @@ -3233,78 +2345,38 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@10.0.2", "@sinonjs/fake-timers@^10.0.2": - version "10.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" - integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: - "@sinonjs/commons" "^2.0.0" + type-detect "4.0.8" -"@sinonjs/samsam@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-7.0.1.tgz#5b5fa31c554636f78308439d220986b9523fc51f" - integrity sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw== +"@sinonjs/fake-timers@^11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/samsam@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" + integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== dependencies: "@sinonjs/commons" "^2.0.0" lodash.get "^4.4.2" type-detect "^4.0.8" -"@sinonjs/text-encoding@^0.7.1": +"@sinonjs/text-encoding@^0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@solana/buffer-layout@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz#75b1b11adc487234821c81dfae3119b73a5fd734" - integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ== - dependencies: - buffer "~6.0.3" - -"@solana/web3.js@1.52.0": - version "1.52.0" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.52.0.tgz#71bd5c322a31e3e2fa8cda2261c594846810b8ea" - integrity sha512-oG1+BX4nVYZ0OBzmk6DRrY8oBYMsbXVQEf9N9JOfKm+wXSmjxVEEo8v3IPV8mKwR0JvUWuE8lOn3IUDiMlRLgg== - dependencies: - "@babel/runtime" "^7.12.5" - "@ethersproject/sha2" "^5.5.0" - "@solana/buffer-layout" "^4.0.0" - bigint-buffer "^1.1.5" - bn.js "^5.0.0" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.1" - fast-stable-stringify "^1.0.0" - jayson "^3.4.4" - js-sha3 "^0.8.0" - node-fetch "2" - react-native-url-polyfill "^1.3.0" - rpc-websockets "^7.5.0" - secp256k1 "^4.0.2" - superstruct "^0.14.2" - tweetnacl "^1.0.3" - -"@solana/web3.js@^1.70.1": - version "1.73.2" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.73.2.tgz#4b30cd402b35733dae3a7d0b638be26a7742b395" - integrity sha512-9WACF8W4Nstj7xiDw3Oom22QmrhBh0VyZyZ7JvvG3gOxLWLlX3hvm5nPVJOGcCE/9fFavBbCUb5A6CIuvMGdoA== - dependencies: - "@babel/runtime" "^7.12.5" - "@noble/ed25519" "^1.7.0" - "@noble/hashes" "^1.1.2" - "@noble/secp256k1" "^1.6.3" - "@solana/buffer-layout" "^4.0.0" - agentkeepalive "^4.2.1" - bigint-buffer "^1.1.5" - bn.js "^5.0.0" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.1" - fast-stable-stringify "^1.0.0" - jayson "^3.4.4" - node-fetch "2" - rpc-websockets "^7.5.0" - superstruct "^0.14.2" +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== "@stablelib/aead@^1.0.1": version "1.0.1" @@ -3440,6 +2512,11 @@ "@stablelib/random" "^1.0.2" "@stablelib/wipe" "^1.0.1" +"@stitches/core@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@stitches/core/-/core-1.2.8.tgz#dce3b8fdc764fbc6dbea30c83b73bfb52cf96173" + integrity sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg== + "@swc/helpers@0.4.11": version "0.4.11" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" @@ -3447,193 +2524,44 @@ dependencies: tslib "^2.4.0" -"@swc/helpers@^0.4.12": - version "0.4.14" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" - integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== - dependencies: - tslib "^2.4.0" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== - dependencies: - defer-to-connect "^2.0.0" - -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" - -"@tailwindcss/line-clamp@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@tailwindcss/line-clamp/-/line-clamp-0.4.2.tgz#f353c5a8ab2c939c6267ac5b907f012e5ee130f9" - integrity sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw== +"@tailwindcss/line-clamp@^0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz#767cf8e5d528a5d90c9740ca66eb079f5e87d423" + integrity sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g== -"@tailwindcss/typography@^0.5.8": - version "0.5.8" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.8.tgz#8fb31db5ab0590be6dfa062b1535ac86ad9d12bf" - integrity sha512-xGQEp8KXN8Sd8m6R4xYmwxghmswrd0cPnNI2Lc6fmrC3OojysTBJJGSIVwPV56q4t6THFUK3HJ0EaWwpglSxWw== +"@tailwindcss/typography@^0.5.10": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.10.tgz#2abde4c6d5c797ab49cf47610830a301de4c1e0a" + integrity sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw== dependencies: lodash.castarray "^4.4.0" lodash.isplainobject "^4.0.6" lodash.merge "^4.6.2" postcss-selector-parser "6.0.10" -"@tanstack/eslint-plugin-query@^4.15.1": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-4.15.1.tgz#0be92fe6ffe10e7b0e47d192fa94af1d7fbb7b65" - integrity sha512-SMj7OsOkutuJQ9LQLIoXxW5u0kx84V7RICmJEcjpKNkHsBd31QttJvtG1hLx9GXb3ZuFLZ0Y1dOD/D9b/GIzTg== - -"@tanstack/query-core@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.18.0.tgz#3e166ce319fd869c668536384ae94d174ea46a59" - integrity sha512-PP4mG8MD08sq64RZCqMfXMYfaj7+Oulwg7xZ/fJoEOdTZNcPIgaOkHajZvUBsNLbi/0ViMvJB4cFkL2Jg2WPbw== - -"@tanstack/query-persist-client-core@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-persist-client-core/-/query-persist-client-core-4.18.0.tgz#63147c2b1f8f26bd6bb84c1945279951c541d0bf" - integrity sha512-GZlZTQdW0MH0pTQv1T4JyOG4PO6xZA+OKUDRnYHjbG5hp6njouoxisaNV/zhGN9m6zpqb+mV+4tbz7WM42i0Vw== - -"@tanstack/query-sync-storage-persister@^4.14.5": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.18.0.tgz#ea50c94647103e0e61382feebc75379e897175dd" - integrity sha512-um2+3LuzHZDNKMWkfhVaiRw6GWTX7Lvk8ir9f2NoeAaRAMmLy7OgBWDlMkPqmGob7DjWK+DcNb8GcpqPt8H7fw== - dependencies: - "@tanstack/query-persist-client-core" "4.18.0" - -"@tanstack/react-query-persist-client@^4.14.5": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query-persist-client/-/react-query-persist-client-4.18.0.tgz#15786cacb1944367a00bc68f068e3349a2b363ee" - integrity sha512-CMXPrrK4oEMhD5FS0LJSbp18j+Q/ob22T0hUINwhMJADsiijEabpVzxQ4NE8bmmOJ6YBJpKm1cIslJj7AxiF3A== - dependencies: - "@tanstack/query-persist-client-core" "4.18.0" - -"@tanstack/react-query@^4.14.5", "@tanstack/react-query@^4.16.1": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.18.0.tgz#d9c661364b383fca79f5384cb97b445354068faa" - integrity sha512-s1kdbGMdVcfUIllzsHUqVUdktBT5uuIRgnvrqFNLjl9TSOXEoBSDrhjsGjao0INQZv8cMpQlgOh3YH9YtN6cKw== - dependencies: - "@tanstack/query-core" "4.18.0" - use-sync-external-store "^1.2.0" - -"@truffle/abi-utils@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.5.tgz#0b5afb2cbfd492bee156d253d264923f52ac119e" - integrity sha512-nGIMNDjl1NhTxI5lSecOWoLFH8A+aDRPrMejke6Cb2ok8FWyTPCaHmlC8S0Kdi/Egp9m3CNI1TYsy9w9Y3E3jA== - dependencies: - change-case "3.0.2" - fast-check "3.1.1" - web3-utils "1.7.4" - -"@truffle/blockchain-utils@^0.1.3": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.5.tgz#da6af046d9ecf73b4d0a460896274dbfb6e1d3bd" - integrity sha512-WwvKafKYbU0H3ewk3Y3ZZrWxPEYDEtqNkn1BZFPP8GkbDLNLbgZSW6cA0fGhe8veqvkK3q+CmGufr1/tBDW+OQ== - -"@truffle/codec@^0.14.10": - version "0.14.10" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.10.tgz#6d793f32e1816086e9ce0ea00f6291cca7815597" - integrity sha512-+uPnImtjNUzRhWOp5GG9AeSEuG1o9iVRpCsodQ04podKqYagtjNOKSe7jqNLJCbZ1Vpbvztmb9KzbwOJTLZS9A== - dependencies: - "@truffle/abi-utils" "^0.3.5" - "@truffle/compile-common" "^0.9.1" - big.js "^6.0.3" - bn.js "^5.1.3" - cbor "^5.2.0" - debug "^4.3.1" - lodash "^4.17.21" - semver "7.3.7" - utf8 "^3.0.0" - web3-utils "1.7.4" - -"@truffle/compile-common@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.1.tgz#4b36ac57d3e7dfbde0697621c8e6dc613820ef1a" - integrity sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw== - dependencies: - "@truffle/error" "^0.1.1" - colors "1.4.0" - -"@truffle/contract-schema@^3.4.7": - version "3.4.11" - resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.11.tgz#ac5fc8be656b786c2bd5d3a2ca6faeb2949e7ff3" - integrity sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ== +"@tanstack/eslint-plugin-query@^5.20.1": + version "5.20.1" + resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.20.1.tgz#861afedd7cde6b98c88cf86a5923bb659122e7af" + integrity sha512-oIp7Wh90KHOm1FKCvcv87fiD2H96xo/crFrlhbvqBzR2f0tMEGOK/ANKMGNFQprd6BT6lyZhQPlOEkFdezsjIg== dependencies: - ajv "^6.10.0" - debug "^4.3.1" - -"@truffle/debug-utils@^6.0.22": - version "6.0.41" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.41.tgz#c6d0a59d044d4c0862fc4b4c931a1db6d88fe40c" - integrity sha512-8sk0fmcN3s11cvAJyODoDPWK9W730c6UAreyeHNj03PWg04D+YUqHpRlV2evdqAx2om1p+Xp03eQag15mg//jQ== - dependencies: - "@truffle/codec" "^0.14.10" - "@trufflesuite/chromafi" "^3.0.0" - bn.js "^5.1.3" - chalk "^2.4.2" - debug "^4.3.1" - highlightjs-solidity "^2.0.5" - -"@truffle/error@^0.1.0", "@truffle/error@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" - integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== - -"@truffle/interface-adapter@^0.5.16": - version "0.5.25" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.25.tgz#8a62740a48de1a5fa6ecf354b5b7fc73179cce30" - integrity sha512-7EpA9Tyq9It2z7GaLPHljEdmCtVFAkYko6vxXbN+H5PdL6zjEOw66bzMbKisKkh3px5dUd1OlRwPljjs34dpAQ== - dependencies: - bn.js "^5.1.3" - ethers "^4.0.32" - web3 "1.7.4" - -"@trufflesuite/bigint-buffer@1.1.10": - version "1.1.10" - resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" - integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== - dependencies: - node-gyp-build "4.4.0" + "@typescript-eslint/utils" "^6.20.0" -"@trufflesuite/chromafi@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz#f6956408c1af6a38a6ed1657783ce59504a1eb8b" - integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== - dependencies: - camelcase "^4.1.0" - chalk "^2.3.2" - cheerio "^1.0.0-rc.2" - detect-indent "^5.0.0" - highlight.js "^10.4.1" - lodash.merge "^4.6.2" - strip-ansi "^4.0.0" - strip-indent "^2.0.0" +"@tanstack/query-core@5.22.2": + version "5.22.2" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.22.2.tgz#af67d41b0b4a3e846c2325f32540f39ca0d4788d" + integrity sha512-z3PwKFUFACMUqe1eyesCIKg3Jv1mysSrYfrEW5ww5DCDUD4zlpTKBvUDaEjsfZzL3ULrFLDM9yVUxI/fega1Qg== -"@trufflesuite/uws-js-unofficial@20.10.0-unofficial.2": - version "20.10.0-unofficial.2" - resolved "https://registry.yarnpkg.com/@trufflesuite/uws-js-unofficial/-/uws-js-unofficial-20.10.0-unofficial.2.tgz#7ed613ce3260cd5d1773a4d5787a2a106acd1a91" - integrity sha512-oQQlnS3oNeGsgS4K3KCSSavJgSb0W9D5ktZs4FacX9VbM7b+NlhjH96d6/G4fMrz+bc5MXRyco419on0X0dvRA== +"@tanstack/react-query@^5.22.2": + version "5.22.2" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.22.2.tgz#e5fce278fbdd026fc1d561a4505142b9f93549d7" + integrity sha512-TaxJDRzJ8/NWRT4lY2jguKCrNI6MRN+67dELzPjNUlvqzTxGANlMp68l7aC7hG8Bd1uHNxHl7ihv7MT50i/43A== dependencies: - ws "8.2.3" - optionalDependencies: - bufferutil "4.0.5" - utf-8-validate "5.0.7" + "@tanstack/query-core" "5.22.2" -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@tsconfig/node-lts@^20.1.1": + version "20.1.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node-lts/-/node-lts-20.1.1.tgz#c43c9cbfc9c4f6e0a5146cd3b16cd79720033252" + integrity sha512-V7wHydi1dv8I8xiOX3pJ0lhC+MlOakznvLks94J6y/TqQK6DBcbdD1G4jEq8yU+s6lBASPn4e1Ci636fDqeyvQ== "@tsconfig/node10@^1.0.7": version "1.0.9" @@ -3651,539 +2579,469 @@ integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@tsconfig/recommended@^1.0.3": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.3.tgz#742540ba9170897a44097e838bca411abf56ccd2" + integrity sha512-+jby/Guq9H8O7NWgCv6X8VAiQE8Dr/nccsCtL74xyHKhu2Knu5EAKmOZj3nLCnLm1KooUzKY+5DsnGVqhM8/wQ== -"@typechain/ethers-v5@^10.1.1": - version "10.1.1" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.1.1.tgz#fdb527d8854129cea5f139d76c6c6e1c9bb040ec" - integrity sha512-o6nffJBxwmeX1ZiZpdnP/tqGd/7M7iYvQC88ZXaFFoyAGh7eYncynzVjOJV0XmaKzAc6puqyqZrnva+gJbk4sw== +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" -"@typechain/ethers-v5@^10.2.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz#68f5963efb5214cb2d881477228e4b5b315473e1" - integrity sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w== +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" + "@babel/types" "^7.0.0" -"@typechain/ethers-v5@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" - integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: - ethers "^5.0.2" + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" -"@typechain/hardhat@^6.1.4": - version "6.1.4" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-6.1.4.tgz#da930bf17bdae5e0996b86d37992c6c58b8a49c8" - integrity sha512-S8k5d1Rjc+plwKpkorlifmh72M7Ki0XNUOVVLtdbcA/vLaEkuqZSJFdddpBgS5QxiJP+6CbRa/yO6EVTE2+fMQ== - dependencies: - fs-extra "^9.1.0" - -"@types/async-eventemitter@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz#f8e6280e87e8c60b2b938624b0a3530fb3e24712" - integrity sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg== - -"@types/babel__core@^7.1.14": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== +"@types/babel__traverse@*": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== dependencies: - "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" - integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== - dependencies: - "@babel/types" "^7.3.0" -"@types/bn.js@*", "@types/bn.js@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" - integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== - dependencies: - "@types/node" "*" +"@types/big.js@^6.2.2": + version "6.2.2" + resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" + integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": +"@types/bn.js@^4.11.3": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: "@types/node" "*" -"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" "@types/node" "*" - "@types/responselike" "^1.0.0" - -"@types/chai@*", "@types/chai@^4.2.0": - version "4.3.4" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" - integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== - -"@types/cli-table@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@types/cli-table/-/cli-table-0.3.1.tgz#a0ae06290284f7abebb90a2ddc0187de6d22e963" - integrity sha512-m3+6WWfSSl6zqoXy8uQQifbgqV7Gt6fsyWnHLgUWVtJQk75+OfUB+edSZ52YDj7leSiZtX7w1/E4w2x/Hb0orA== -"@types/connect@^3.4.33": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== +"@types/chrome@^0.0.136": + version "0.0.136" + resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.136.tgz#7c011b9f997b0156f25a140188a0c5689d3f368f" + integrity sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA== dependencies: - "@types/node" "*" + "@types/filesystem" "*" + "@types/har-format" "*" -"@types/d3-format@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.1.tgz#194f1317a499edd7e58766f96735bdc0216bb89d" - integrity sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg== +"@types/cli-table@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@types/cli-table/-/cli-table-0.3.4.tgz#ecc3efce1b4d13503de59d2ddb49b8f9fd7203e7" + integrity sha512-GsALrTL69mlwbAw/MHF1IPTadSLZQnsxe7a80G8l4inN/iEXCOcVeT/S7aRc6hbhqzL9qZ314kHPDQnQ3ev+HA== -"@types/ethereumjs-abi@^0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@types/ethereumjs-abi/-/ethereumjs-abi-0.6.3.tgz#eb5ed09fd86b9e2b1c0eb75d1e9bc29c50715c86" - integrity sha512-DnHvqPkrJS5w4yZexTa5bdPNb8IyKPYciou0+zZCIg5fpzvGtyptTvshy0uZKzti2/k/markwjlxWRBWt7Mjuw== - dependencies: - "@types/node" "*" +"@types/d3-format@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== -"@types/graceful-fs@^4.1.3": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== +"@types/debug@^4.1.7", "@types/debug@^4.1.9": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: - "@types/node" "*" + "@types/ms" "*" -"@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/dom-screen-wake-lock@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" + integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== +"@types/estree@1.0.5", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== +"@types/filesystem@*": + version "0.0.35" + resolved "https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.35.tgz#6d6766626083e2b397c09bdc57092827120db11d" + integrity sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ== dependencies: - "@types/istanbul-lib-coverage" "*" + "@types/filewriter" "*" -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" +"@types/filewriter@*": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.33.tgz#d9d611db9d9cd99ae4e458de420eeb64ad604ea8" + integrity sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g== + +"@types/har-format@*": + version "1.2.15" + resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.15.tgz#f352493638c2f89d706438a19a9eb300b493b506" + integrity sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA== -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== - dependencies: - "@types/node" "*" - -"@types/lodash.chunk@^4.2.7": - version "4.2.7" - resolved "https://registry.yarnpkg.com/@types/lodash.chunk/-/lodash.chunk-4.2.7.tgz#df52478072f0673d9fe8d3dd43af8f490d07a56a" - integrity sha512-//tmaWHiANgToom/YYYKKqiCtlNz11fwYtMUUbaemNSbWTI+2zHtYW5nt1PHNCRWHPAJHHhn4UVFD9LKUFvatA== - dependencies: - "@types/lodash" "*" - -"@types/lodash.uniqby@^4.7.7": - version "4.7.7" - resolved "https://registry.yarnpkg.com/@types/lodash.uniqby/-/lodash.uniqby-4.7.7.tgz#48dbb652c41cc8fb30aa61a44174368081835ab5" - integrity sha512-sv2g6vkCIvEUsK5/Vq17haoZaisfj2EWW8mP7QWlnKi6dByoNmeuHDDXHR7sabuDqwO4gvU7ModIL22MmnOocg== +"@types/lodash.chunk@^4.2.9": + version "4.2.9" + resolved "https://registry.yarnpkg.com/@types/lodash.chunk/-/lodash.chunk-4.2.9.tgz#60da44c404dfa8b01b426034c1183e5eb9b09727" + integrity sha512-Z9VtFUSnmT0No/QymqfG9AGbfOA4O5qB/uyP89xeZBqDAsKsB4gQFTqt7d0pHjbsTwtQ4yZObQVHuKlSOhIJ5Q== dependencies: "@types/lodash" "*" "@types/lodash@*": - version "4.14.190" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.190.tgz#d8e99647af141c63902d0ca53cf2b34d2df33545" - integrity sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw== + version "4.14.202" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== -"@types/lru-cache@5.1.1", "@types/lru-cache@^5.1.0": +"@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== -"@types/node-fetch@^2.5.5": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" - integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== - dependencies: - "@types/node" "*" - form-data "^3.0.0" +"@types/ms@*": + version "0.7.34" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== "@types/node@*": - version "18.11.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" - integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== + version "20.11.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.16.tgz#4411f79411514eb8e2926f036c86c9f0e4ec6708" + integrity sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ== + dependencies: + undici-types "~5.26.4" + +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== -"@types/node@^12.12.54", "@types/node@^12.12.6": +"@types/node@^12.7.1": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^14.17.20": - version "14.18.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.33.tgz#8c29a0036771569662e4635790ffa9e057db379b" - integrity sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg== - -"@types/node@^17.0.12": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^20.11.19": + version "20.11.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" + integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== + dependencies: + undici-types "~5.26.4" -"@types/node@^18.16.1": - version "18.16.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.3.tgz#6bda7819aae6ea0b386ebc5b24bdf602f1b42b01" - integrity sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q== +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" - integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== - -"@types/prettier@^2.1.5": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== - -"@types/prompt@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@types/prompt/-/prompt-1.1.4.tgz#d077cf77d074d8dc2710a4ead4fdaac8233003cb" - integrity sha512-FLMcf+ol+eUJALeIYWLjQl0hYw86G0PIg7D5+4jJHwr/wKI8p3R0u+oKLbyRkzCxb7e0pHixyCj7UgSv7I/TJQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== dependencies: "@types/node" "*" - "@types/revalidator" "*" -"@types/prompts@^2.4.4": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.4.4.tgz#dd5a1d41cb1bcd0fc4464bf44a0c8354f36ea735" - integrity sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A== +"@types/prompts@^2.4.9": + version "2.4.9" + resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.4.9.tgz#8775a31e40ad227af511aa0d7f19a044ccbd371e" + integrity sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA== dependencies: "@types/node" "*" kleur "^3.0.3" "@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== -"@types/react-dom@^18.0.10": - version "18.0.11" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" - integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== +"@types/react-dom@^18.2.19": + version "18.2.19" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.19.tgz#b84b7c30c635a6c26c6a6dfbb599b2da9788be58" + integrity sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.0.27": - version "18.0.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" - integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@18.0.17": - version "18.0.17" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.17.tgz#4583d9c322d67efe4b39a935d223edcc7050ccf4" - integrity sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ== +"@types/react@*", "@types/react@18.2.57", "@types/react@^18.2.57": + version "18.2.57" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.57.tgz#147b516d8bdb2900219acbfc6f939bdeecca7691" + integrity sha512-ZvQsktJgSYrQiMirAN60y4O/LRevIV8hUzSOSNB6gfR3/o3wCBFQx3sPwIYtuDMeiVgsSS3UzCV26tEzgnfvQw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== dependencies: "@types/node" "*" - -"@types/revalidator@*": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@types/revalidator/-/revalidator-0.3.8.tgz#86e0b03b49736000ad42ce6b002725e74c6805ff" - integrity sha512-q6KSi3PklLGQ0CesZ/XuLwly4DXXlnJuucYOG9lrBqrP8rKiuPZThav2h2+pFjaheNpnT0qKK3i304QWIePeJw== + safe-buffer "~5.1.1" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== +"@types/secp256k1@^4.0.1", "@types/secp256k1@^4.0.4": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" + integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== dependencies: "@types/node" "*" -"@types/seedrandom@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" - integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== - -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +"@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== -"@types/signale@^1.4.4": - version "1.4.4" - resolved "https://registry.yarnpkg.com/@types/signale/-/signale-1.4.4.tgz#dbfd32b39f1084551ecda9ba0888e4fef49e9fea" - integrity sha512-VYy4VL64gA4uyUIYVj4tiGFF0VpdnRbJeqNENKGX42toNiTvt83rRzxdr0XK4DR3V01zPM0JQNIsL+IwWWfhsQ== +"@types/signale@^1.4.7": + version "1.4.7" + resolved "https://registry.yarnpkg.com/@types/signale/-/signale-1.4.7.tgz#317846ca23e4eaff78601e2786ba3e2065cc859d" + integrity sha512-nc0j37QupTT7OcYeH3gRE1ZfzUalEUsDKJsJ3IsJr0pjjFZTjtrX1Bsn6Kv56YXI/H9rNSwAkIPRxNlZI8GyQw== dependencies: "@types/node" "*" -"@types/sinon-chai@^3.2.3": - version "3.2.9" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.9.tgz#71feb938574bbadcb176c68e5ff1a6014c5e69d4" - integrity sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" - -"@types/sinon@*", "@types/sinon@^10.0.13": - version "10.0.13" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" - integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - "@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== - -"@types/underscore@*": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@types/web3@1.0.19": - version "1.0.19" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.19.tgz#46b85d91d398ded9ab7c85a5dd57cb33ac558924" - integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== - dependencies: - "@types/bn.js" "*" - "@types/underscore" "*" +"@typescript-eslint/eslint-plugin@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.2.tgz#c13a34057be425167cc4a765158c46fdf2fd981d" + integrity sha512-/XtVZJtbaphtdrWjr+CJclaCVGPtOdBpFEnvtNf/jRV0IiEemRrL0qABex/nEt8isYcnFacm3nPHYQwL+Wb7qg== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "7.0.2" + "@typescript-eslint/type-utils" "7.0.2" + "@typescript-eslint/utils" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^5.4.2 || ^6.0.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.20.0.tgz#17e314177304bdf498527e3c4b112e41287b7416" + integrity sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w== + dependencies: + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/typescript-estree" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" + debug "^4.3.4" -"@types/web3@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.2.2.tgz#d95a101547ce625c5ebd0470baa5dbd4b9f3c015" - integrity sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A== +"@typescript-eslint/parser@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.0.2.tgz#95c31233d343db1ca1df8df7811b5b87ca7b1a68" + integrity sha512-GdwfDglCxSmU+QTS9vhz2Sop46ebNCXpPPvsByK7hu0rFGRHL+AusKQJ7SoN+LbLh6APFpQwHKmDSwN35Z700Q== dependencies: - web3 "*" + "@typescript-eslint/scope-manager" "7.0.2" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/typescript-estree" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" + debug "^4.3.4" -"@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== +"@typescript-eslint/scope-manager@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz#8a926e60f6c47feb5bab878246dc2ae465730151" + integrity sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA== dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" -"@types/yargs@^17.0.24": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@types/yargs-parser" "*" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" -"@types/yargs@^17.0.8": - version "17.0.22" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" - integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== +"@typescript-eslint/scope-manager@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.0.2.tgz#6ec4cc03752758ddd1fdaae6fbd0ed9a2ca4fe63" + integrity sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g== dependencies: - "@types/yargs-parser" "*" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" -"@typescript-eslint/eslint-plugin@^5.31.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz#ffa505cf961d4844d38cfa19dcec4973a6039e41" - integrity sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA== +"@typescript-eslint/type-utils@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.0.2.tgz#a7fc0adff0c202562721357e7478207d380a757b" + integrity sha512-IKKDcFsKAYlk8Rs4wiFfEwJTQlHcdn8CLwLaxwd6zb8HNiMcQIFX9sWax2k4Cjj7l7mGS5N1zl7RCHOVwHq2VQ== dependencies: - "@typescript-eslint/scope-manager" "5.45.0" - "@typescript-eslint/type-utils" "5.45.0" - "@typescript-eslint/utils" "5.45.0" - debug "^4.3.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.36.0", "@typescript-eslint/parser@^5.42.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.45.0.tgz#b18a5f6b3cf1c2b3e399e9d2df4be40d6b0ddd0e" - integrity sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ== - dependencies: - "@typescript-eslint/scope-manager" "5.45.0" - "@typescript-eslint/types" "5.45.0" - "@typescript-eslint/typescript-estree" "5.45.0" + "@typescript-eslint/typescript-estree" "7.0.2" + "@typescript-eslint/utils" "7.0.2" debug "^4.3.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/scope-manager@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz#7a4ac1bfa9544bff3f620ab85947945938319a96" - integrity sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw== - dependencies: - "@typescript-eslint/types" "5.45.0" - "@typescript-eslint/visitor-keys" "5.45.0" +"@typescript-eslint/types@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.20.0.tgz#5ccd74c29011ae7714ae6973e4ec0c634708b448" + integrity sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ== + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/type-utils@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz#aefbc954c40878fcebeabfb77d20d84a3da3a8b2" - integrity sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q== +"@typescript-eslint/types@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.0.2.tgz#b6edd108648028194eb213887d8d43ab5750351c" + integrity sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA== + +"@typescript-eslint/typescript-estree@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz#5b2d0975949e6bdd8d45ee1471461ef5fadc5542" + integrity sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g== dependencies: - "@typescript-eslint/typescript-estree" "5.45.0" - "@typescript-eslint/utils" "5.45.0" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" debug "^4.3.4" - tsutils "^3.21.0" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.45.0.tgz#794760b9037ee4154c09549ef5a96599621109c5" - integrity sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA== +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/typescript-estree@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz#f70a0d646d7f38c0dfd6936a5e171a77f1e5291d" - integrity sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ== +"@typescript-eslint/typescript-estree@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.2.tgz#3c6dc8a3b9799f4ef7eca0d224ded01974e4cb39" + integrity sha512-3AMc8khTcELFWcKcPc0xiLviEvvfzATpdPj/DXuOGIdQIIFybf4DMT1vKRbuAEOFMwhWt7NFLXRkbjsvKZQyvw== dependencies: - "@typescript-eslint/types" "5.45.0" - "@typescript-eslint/visitor-keys" "5.45.0" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.45.0.tgz#9cca2996eee1b8615485a6918a5c763629c7acf5" - integrity sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.45.0" - "@typescript-eslint/types" "5.45.0" - "@typescript-eslint/typescript-estree" "5.45.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.45.0": - version "5.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz#e0d160e9e7fdb7f8da697a5b78e7a14a22a70528" - integrity sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg== - dependencies: - "@typescript-eslint/types" "5.45.0" - eslint-visitor-keys "^3.3.0" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.0.2.tgz#8756123054cd934c8ba7db6a6cffbc654b10b5c4" + integrity sha512-PZPIONBIB/X684bhT1XlrkjNZJIEevwkKDsdwfiu1WeqBxYEEdIgVDgm8/bbKHVu+6YOpeRqcfImTdImx/4Bsw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "7.0.2" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/typescript-estree" "7.0.2" + semver "^7.5.4" + +"@typescript-eslint/utils@^6.20.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + 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" + +"@typescript-eslint/visitor-keys@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz#f7ada27f2803de89df0edd9fd7be22c05ce6a498" + integrity sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw== + dependencies: + "@typescript-eslint/types" "6.20.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.2.tgz#2899b716053ad7094962beb895d11396fc12afc7" + integrity sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ== + dependencies: + "@typescript-eslint/types" "7.0.2" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vanilla-extract/css@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.9.1.tgz#337b79faa5f8f98915a90c3fe3c30b54be746c09" - integrity sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ== +"@vanilla-extract/css@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.14.0.tgz#45fab9c04d893e3e363cf2cde7559d21233b7f63" + integrity sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA== dependencies: - "@emotion/hash" "^0.8.0" + "@emotion/hash" "^0.9.0" "@vanilla-extract/private" "^1.0.3" - ahocorasick "1.0.2" chalk "^4.1.1" - css-what "^5.0.1" + css-what "^6.1.0" cssesc "^3.0.0" csstype "^3.0.7" - deep-object-diff "^1.1.0" + deep-object-diff "^1.1.9" deepmerge "^4.2.2" media-query-parser "^2.0.2" + modern-ahocorasick "^1.0.0" outdent "^0.8.0" -"@vanilla-extract/dynamic@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.0.2.tgz#13a3e461964c8029a52e6b6b631009ca6a8b27f5" - integrity sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg== +"@vanilla-extract/dynamic@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.1.0.tgz#316d3bd4adfd5f5c9fb080445c41d55abe3b463c" + integrity sha512-8zl0IgBYRtgD1h+56Zu13wHTiMTJSVEa4F7RWX9vTB/5Xe2KtjoiqApy/szHPVFA56c+ex6A4GpCQjT1bKXbYw== dependencies: "@vanilla-extract/private" "^1.0.3" @@ -4192,159 +3050,109 @@ resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.3.tgz#7ec72bc2ff6fe51f9d650f962e8d1989b073690f" integrity sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ== -"@vanilla-extract/sprinkles@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.5.0.tgz#c921183ae518bb484299c2dc81f2acefd91c3dbe" - integrity sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw== +"@vanilla-extract/sprinkles@1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.6.1.tgz#2c8a832757a0d8104dc6bd5d961db2c70d1dbdcb" + integrity sha512-N/RGKwGAAidBupZ436RpuweRQHEFGU+mvAqBo8PRMAjJEmHoPDttV8RObaMLrJHWLqvX+XUMinHUnD0hFRQISw== -"@vitejs/plugin-react@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" - integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g== +"@vitejs/plugin-react@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" + integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== dependencies: - "@babel/core" "^7.20.12" - "@babel/plugin-transform-react-jsx-self" "^7.18.6" - "@babel/plugin-transform-react-jsx-source" "^7.19.6" - magic-string "^0.27.0" + "@babel/core" "^7.23.5" + "@babel/plugin-transform-react-jsx-self" "^7.23.3" + "@babel/plugin-transform-react-jsx-source" "^7.23.3" + "@types/babel__core" "^7.20.5" react-refresh "^0.14.0" -"@wagmi/chains@0.2.16": - version "0.2.16" - resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.2.16.tgz#a726716e4619ec1c192b312e23f9c38407617aa0" - integrity sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ== +"@vitest/expect@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.3.1.tgz#d4c14b89c43a25fd400a6b941f51ba27fe0cb918" + integrity sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw== + dependencies: + "@vitest/spy" "1.3.1" + "@vitest/utils" "1.3.1" + chai "^4.3.10" + +"@vitest/runner@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.3.1.tgz#e7f96cdf74842934782bfd310eef4b8695bbfa30" + integrity sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg== + dependencies: + "@vitest/utils" "1.3.1" + p-limit "^5.0.0" + pathe "^1.1.1" -"@wagmi/connectors@^0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-0.2.6.tgz#b96025ebf8f0ec33fea12fa643afe7269f833de4" - integrity sha512-I7tsKgbwF6o5aUu6gQk4YMo7fe3iLAgmbFT06/FHlSLKIxI16qkKwjTt04k9WhdDRDYaJH+DqUEyam1jP+jvIg== - dependencies: - "@coinbase/wallet-sdk" "^3.5.4" - "@ledgerhq/connect-kit-loader" "^1.0.1" - "@safe-global/safe-apps-provider" "^0.15.2" - "@safe-global/safe-apps-sdk" "^7.9.0" - "@walletconnect/ethereum-provider" "^1.8.0" - "@walletconnect/universal-provider" "2.3.3" - "@web3modal/standalone" "^2.1.1" - abitype "^0.3.0" - eventemitter3 "^4.0.7" - -"@wagmi/connectors@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-0.3.0.tgz#992cc0ec809f672ecd01caebe6ebd5ac50e28ec6" - integrity sha512-7ue+4qOfbGAIe0Lo+rqcj7w+c+XOXE+op7kpZvehcQECROS2UQdqY4t/qfjjDKyr4ILHIm6hR6VX/TjmM27gOA== - dependencies: - "@coinbase/wallet-sdk" "^3.5.4" - "@ledgerhq/connect-kit-loader" "^1.0.1" - "@safe-global/safe-apps-provider" "^0.15.2" - "@safe-global/safe-apps-sdk" "^7.9.0" - "@walletconnect/ethereum-provider" "^2.4.6" - "@walletconnect/legacy-provider" "^2.0.0" - abitype "^0.3.0" - eventemitter3 "^4.0.7" - -"@wagmi/core@^0.6.12": - version "0.6.12" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-0.6.12.tgz#19d35424840a8c9f5396869e24464e2137ea8fc2" - integrity sha512-RYwjfzFlZ8cljrlZ6+monaWKmtVQYALutlrESP/CYklGg+3DAjwv7n95EU5gS7Y9mvZbiLKZxg4XjFB3mVohfA== - dependencies: - abitype "^0.1.7" - eventemitter3 "^4.0.7" - zustand "^4.1.1" - -"@walletconnect/browser-utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz#33c10e777aa6be86c713095b5206d63d32df0951" - integrity sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A== - dependencies: - "@walletconnect/safe-json" "1.0.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/window-getters" "1.0.0" - "@walletconnect/window-metadata" "1.0.0" - detect-browser "5.2.0" - -"@walletconnect/client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" - integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== - dependencies: - "@walletconnect/core" "^1.8.0" - "@walletconnect/iso-crypto" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/core@2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.3.3.tgz#28ab50cd7d2457f638fd66e2e4d741eecfefa626" - integrity sha512-pkPG3f0Mb9WcWMeLtRS8+RSV9gpnAGrU0y291LNXjggDupg5H7I1hFtcj5HI0kmpk4suAS4RKqYAxPzy4MgFRQ== - dependencies: - "@walletconnect/heartbeat" "1.2.0" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/jsonrpc-ws-connection" "^1.0.6" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.7" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.3.3" - "@walletconnect/utils" "2.3.3" - events "^3.3.0" - lodash.isequal "4.5.0" - pino "7.11.0" - uint8arrays "3.1.0" - -"@walletconnect/core@2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.4.6.tgz#77072bf3a523b8fa26c93d085af55a5ea88cb48a" - integrity sha512-IPjS3dZvLQ2ZjuVKpel6NHIoW1bkCayh5W8XFC7nhLj5GHou5Gy2FsGgGbRknvCEVWH85AlFKFAvLZCe+TJ2VA== - dependencies: - "@walletconnect/heartbeat" "1.2.0" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/jsonrpc-ws-connection" "^1.0.7" - "@walletconnect/keyvaluestorage" "^1.0.2" +"@vitest/snapshot@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.3.1.tgz#193a5d7febf6ec5d22b3f8c5a093f9e4322e7a88" + integrity sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ== + dependencies: + magic-string "^0.30.5" + pathe "^1.1.1" + pretty-format "^29.7.0" + +"@vitest/spy@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.3.1.tgz#814245d46d011b99edd1c7528f5725c64e85a88b" + integrity sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.3.1.tgz#7b05838654557544f694a372de767fcc9594d61a" + integrity sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + +"@wagmi/connectors@4.1.14": + version "4.1.14" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-4.1.14.tgz#66b945408b145c117c696f3543021232106bfcb2" + integrity sha512-e8I89FsNBtzhIilU3nqmgMR9xvSgCfmkWLz9iCKBTqyitbK5EJU7WTEtjjYFm1v2J//JeAwaA2XEKtG9BLR9jQ== + dependencies: + "@coinbase/wallet-sdk" "3.9.1" + "@metamask/sdk" "0.14.3" + "@safe-global/safe-apps-provider" "0.18.1" + "@safe-global/safe-apps-sdk" "8.1.0" + "@walletconnect/ethereum-provider" "2.11.1" + "@walletconnect/modal" "2.6.2" + +"@wagmi/core@2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.6.5.tgz#7d1b7d94083d0b01c9ac4bb69e37d0d82b1640b5" + integrity sha512-DLyrc0o+dx05oIhBJuxnS7ekS5e6rB5mytlqPme+Km7aLdeBdcfYB4yJyYCyWoi93OLa7M5sbflTttz3o56bKw== + dependencies: + eventemitter3 "5.0.1" + mipd "0.0.5" + zustand "4.4.1" + +"@walletconnect/core@2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.11.1.tgz#da2be26b8b6514c74f06dc9a5ffb450bdec3456d" + integrity sha512-T57Vd7YdbHPsy3tthBuwrhaZNafN0+PqjISFRNeJy/bsKdXxpJg2hGSARuOTpCO7V6VcaatqlaSMuG3DrnG5rA== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.14" + "@walletconnect/keyvaluestorage" "^1.1.1" "@walletconnect/logger" "^2.0.1" "@walletconnect/relay-api" "^1.0.9" "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/safe-json" "^1.0.2" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.4.6" - "@walletconnect/utils" "2.4.6" + "@walletconnect/types" "2.11.1" + "@walletconnect/utils" "2.11.1" events "^3.3.0" + isomorphic-unfetch "3.1.0" lodash.isequal "4.5.0" - pino "7.11.0" - uint8arrays "3.1.0" - -"@walletconnect/core@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.8.0.tgz#6b2748b90c999d9d6a70e52e26a8d5e8bfeaa81e" - integrity sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw== - dependencies: - "@walletconnect/socket-transport" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/crypto@^1.0.2", "@walletconnect/crypto@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" - integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== - dependencies: - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/environment" "^1.0.1" - "@walletconnect/randombytes" "^1.0.3" - aes-js "^3.1.2" - hash.js "^1.1.7" - tslib "1.14.1" - -"@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" - integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== - dependencies: - is-typedarray "1.0.0" - tslib "1.14.1" - typedarray-to-buffer "3.1.5" + uint8arrays "^3.1.0" "@walletconnect/environment@^1.0.1": version "1.0.1" @@ -4353,34 +3161,20 @@ dependencies: tslib "1.14.1" -"@walletconnect/ethereum-provider@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-1.8.0.tgz#ed1dbf9cecc3b818758a060d2f9017c50bde1d32" - integrity sha512-Nq9m+oo5P0F+njsROHw9KMWdoc/8iGHYzQdkjJN/1C7DtsqFRg5k5a3hd9rzCLpbPsOC1q8Z5lRs6JQgDvPm6Q== - dependencies: - "@walletconnect/client" "^1.8.0" - "@walletconnect/jsonrpc-http-connection" "^1.0.2" - "@walletconnect/jsonrpc-provider" "^1.0.5" - "@walletconnect/signer-connection" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - eip1193-provider "1.0.1" - eventemitter3 "4.0.7" - -"@walletconnect/ethereum-provider@^2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.4.6.tgz#f05c76092ec3dda3667a6b7522518375eafc6e38" - integrity sha512-o7UJ7EBzFSTqNAwGcVpqNv5qqaFW6Vi3nOoXPHtcrwYew8TKAcW/OQFHPcm0LeKfE15OvVI+GMHnPBRZ2Ih2RA== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.4" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/sign-client" "2.4.6" - "@walletconnect/types" "2.4.6" - "@walletconnect/universal-provider" "2.4.6" - "@walletconnect/utils" "2.4.6" - "@web3modal/standalone" "2.1.1" +"@walletconnect/ethereum-provider@2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.1.tgz#6e0174ec9026940eaadeedc53417e222eb45f5aa" + integrity sha512-UfQH0ho24aa2M1xYmanbJv2ggQPebKmQytp2j20QEvURJ2R0v7YKWZ+0PfwOs6o6cuGw6gGxy/0WQXQRZSAsfg== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "^1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/modal" "^2.6.2" + "@walletconnect/sign-client" "2.11.1" + "@walletconnect/types" "2.11.1" + "@walletconnect/universal-provider" "2.11.1" + "@walletconnect/utils" "2.11.1" events "^3.3.0" "@walletconnect/events@^1.0.1": @@ -4391,245 +3185,115 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/heartbeat@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.0.tgz#1e87dd234cb72b0587b84f95c4f942f2b4bd0c79" - integrity sha512-0vbzTa/ARrpmMmOD+bQMxPvFYKtOLQZObgZakrYr0aODiMOO71CmPVNV2eAqXnw9rMmcP+z91OybLeIFlwTjjA== +"@walletconnect/heartbeat@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" + integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== dependencies: "@walletconnect/events" "^1.0.1" "@walletconnect/time" "^1.0.2" - chai "^4.3.7" - mocha "^10.2.0" - ts-node "^10.9.1" - tslib "1.14.1" - -"@walletconnect/iso-crypto@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz#44ddf337c4f02837c062dbe33fa7ab36789df451" - integrity sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ== - dependencies: - "@walletconnect/crypto" "^1.0.2" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/jsonrpc-http-connection@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.4.tgz#aeb0f7eae6565dd031f01d650ee73d358d760ee2" - integrity sha512-ji79pspdBhmIbTwve383tMaDu5Le9plW+oj5GE2aqzxIl3ib8JvRBZRn5lGEBGqVCvqB3MBJL7gBlEwpyRtoxQ== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" - cross-fetch "^3.1.4" tslib "1.14.1" -"@walletconnect/jsonrpc-http-connection@^1.0.4": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.5.tgz#103eec0e66ca3a0e881e612dfd052958e9feb543" - integrity sha512-4IjbKW+ee7QukDaPyEkfMl4Cu0W0TfzKKiiIzy2lxKkJMmS9EVQOVDV4a9HFuxBqYbfUKiycB7jGkuDTqOedMg== +"@walletconnect/jsonrpc-http-connection@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz#a6973569b8854c22da707a759d241e4f5c2d5a98" + integrity sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.5" + "@walletconnect/jsonrpc-utils" "^1.0.6" "@walletconnect/safe-json" "^1.0.1" cross-fetch "^3.1.4" tslib "1.14.1" -"@walletconnect/jsonrpc-provider@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.6.tgz#e91321ef523f1904e6634e7866a0f3c6f056d2cd" - integrity sha512-f5vQxr53vUVQ51/9mRLb1OiNciT/546XZ68Byn9OYnDBGeGJXK2kQWDHp8sPWZbN5x0p7B6asdCWMVFJ6danlw== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" - tslib "1.14.1" - -"@walletconnect/jsonrpc-provider@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.7.tgz#8213969b8774a0fec17ca9bea78ce92deba5c0f8" - integrity sha512-MMyHQhgumAIKDuPNhaZqVttknrUTZXZycvaUm3pIo9tQqeYPvFcjZ7NSCRbK5Dcw3I6A9NJ1Jc9TDjEOtqcuAA== +"@walletconnect/jsonrpc-provider@1.0.13", "@walletconnect/jsonrpc-provider@^1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" + integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.5" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" tslib "1.14.1" -"@walletconnect/jsonrpc-types@^1.0.1", "@walletconnect/jsonrpc-types@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz#b79519f679cd6a5fa4a1bea888f27c1916689a20" - integrity sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg== +"@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" + integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== dependencies: keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/jsonrpc-utils@^1.0.3", "@walletconnect/jsonrpc-utils@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.4.tgz#2009ba3907b02516f2caacd2fb871ff0d472b2cb" - integrity sha512-y0+tDxcTZ9BHBBKBJbjZxLUXb+zQZCylf7y/jTvDPNx76J0hYYc+F9zHzyqBLeorSKepLTk6yI8hw3NXbAQB3g== - dependencies: - "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/jsonrpc-utils@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.5.tgz#b21f0349d366c5226f4bcdea27ba4d213097fc67" - integrity sha512-4xdaegX9K6rEdguqCLvudYq2h0KCeTYWnWwNNMhooWnkilT7PrR1kmatpr/HP4l191zyvS33K5VClWhkCTeAxQ== - dependencies: - "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/jsonrpc-utils@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.6.tgz#7fa58e6671247e64e189828103282e6258f5330f" - integrity sha512-snp0tfkjPiDLQp/jrBewI+9SM33GPV4+Gjgldod6XQ7rFyQ5FZjnBxUkY4xWH0+arNxzQSi6v5iDXjCjSaorpg== +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== dependencies: "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@^1.0.6": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.8.tgz#8913ee3ecf31675b3051cdacb5d9d4da16c7ac14" - integrity sha512-zD09CBCfwG7KdCxKVsxkSPuTI71xDwS42VIn8YLpQVxufLCZACyAPWI5xUHGPLXYR+AEhmMnh132fbR8ClMbDA== +"@walletconnect/jsonrpc-ws-connection@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" + integrity sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.5" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" events "^3.3.0" - tslib "1.14.1" ws "^7.5.1" -"@walletconnect/jsonrpc-ws-connection@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.9.tgz#38e089818e490cf52cfad9f98300949a74de9fdd" - integrity sha512-x1COaW6hhMLEo+ND5zF/siBGg5SEwC/gHjeRbJtK1CRiq9atkg/XR7JwtSNfMvYX/O3PRCVmuc5SP0RQio9JUw== +"@walletconnect/keyvaluestorage@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" + integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" "@walletconnect/safe-json" "^1.0.1" - events "^3.3.0" - tslib "1.14.1" - ws "^7.5.1" + idb-keyval "^6.2.1" + unstorage "^1.9.0" -"@walletconnect/keyvaluestorage@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" - integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== +"@walletconnect/logger@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" + integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== dependencies: - safe-json-utils "^1.1.1" + pino "7.11.0" tslib "1.14.1" -"@walletconnect/legacy-client@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/legacy-client/-/legacy-client-2.0.0.tgz#9f2c09694789fd4b6c5d68d6423b44bac55aed30" - integrity sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA== - dependencies: - "@walletconnect/crypto" "^1.0.3" - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/legacy-types" "^2.0.0" - "@walletconnect/legacy-utils" "^2.0.0" - "@walletconnect/safe-json" "^1.0.1" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "^5.3.0" - query-string "^6.13.5" +"@walletconnect/modal-core@2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" + integrity sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA== + dependencies: + valtio "1.11.2" -"@walletconnect/legacy-modal@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz#d0fab01a1337a8f5d88cdb1430cbef2d46072bbf" - integrity sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q== +"@walletconnect/modal-ui@2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" + integrity sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA== dependencies: - "@walletconnect/legacy-types" "^2.0.0" - "@walletconnect/legacy-utils" "^2.0.0" - copy-to-clipboard "^3.3.3" - preact "^10.12.0" - qrcode "^1.5.1" + "@walletconnect/modal-core" "2.6.2" + lit "2.8.0" + motion "10.16.2" + qrcode "1.5.3" -"@walletconnect/legacy-provider@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/legacy-provider/-/legacy-provider-2.0.0.tgz#08e2db1e4c234743b2f30422bc8100bc42e8fc44" - integrity sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ== +"@walletconnect/modal@2.6.2", "@walletconnect/modal@^2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" + integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.4" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/legacy-client" "^2.0.0" - "@walletconnect/legacy-modal" "^2.0.0" - "@walletconnect/legacy-types" "^2.0.0" - "@walletconnect/legacy-utils" "^2.0.0" + "@walletconnect/modal-core" "2.6.2" + "@walletconnect/modal-ui" "2.6.2" -"@walletconnect/legacy-types@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz#224278ae2874c6a2ca805c2d1d062a511dcf7227" - integrity sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw== +"@walletconnect/relay-api@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" + integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" + tslib "1.14.1" -"@walletconnect/legacy-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/legacy-utils/-/legacy-utils-2.0.0.tgz#e3a637c00783f9cd2ae139b640f82223ab78ed9d" - integrity sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ== - dependencies: - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/legacy-types" "^2.0.0" - "@walletconnect/safe-json" "^1.0.1" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "^5.3.0" - query-string "^6.13.5" - -"@walletconnect/logger@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" - integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== - dependencies: - pino "7.11.0" - tslib "1.14.1" - -"@walletconnect/mobile-registry@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" - integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== - -"@walletconnect/qrcode-modal@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz#ddd6f5c9b7ee52c16adf9aacec2a3eac4994caea" - integrity sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg== - dependencies: - "@walletconnect/browser-utils" "^1.8.0" - "@walletconnect/mobile-registry" "^1.4.0" - "@walletconnect/types" "^1.8.0" - copy-to-clipboard "^3.3.1" - preact "10.4.1" - qrcode "1.4.4" - -"@walletconnect/randombytes@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b" - integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== - dependencies: - "@walletconnect/encoding" "^1.0.2" - "@walletconnect/environment" "^1.0.1" - randombytes "^2.1.0" - tslib "1.14.1" - -"@walletconnect/relay-api@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.7.tgz#e7aed03cbaff99ecdf2c8d32280c0b5d673bb419" - integrity sha512-Mf/Ql7Z0waZzAuondHS9bbUi12Kyvl95ihxVDM7mPO8o7Ke7S1ffpujCUhXbSacSKcw9aV2+7bKADlsBjQLR5Q== - dependencies: - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/relay-api@^1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" - integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== - dependencies: - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/relay-auth@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" - integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== +"@walletconnect/relay-auth@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" + integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== dependencies: "@stablelib/ed25519" "^1.0.2" "@stablelib/random" "^1.0.1" @@ -4638,72 +3302,27 @@ tslib "1.14.1" uint8arrays "^3.0.0" -"@walletconnect/safe-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" - integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== - -"@walletconnect/safe-json@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.1.tgz#9813fa0a7a544b16468730c2d7bed046ed160957" - integrity sha512-Fm7e31oSYY15NQr8SsLJheKAy5L744udZf2lJKcz6wFmPJEzf7hOF0866o/rrldRzJnjZ4H2GJ45pFudsnLW5A== +"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.3.3.tgz#62bf395f8817e289d42dc77549f885d834c4b78b" - integrity sha512-Q+KiqYYecf9prJoQWLIV7zJcEPa69XBzwrad4sQPcDD1BZMWa1f8OZUH3HmlmuCzopqEr4mgXU6v6yFHOasADw== - dependencies: - "@walletconnect/core" "2.3.3" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.0" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.3.3" - "@walletconnect/utils" "2.3.3" - events "^3.3.0" - pino "7.11.0" - -"@walletconnect/sign-client@2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.4.6.tgz#6dff6a4683a44d5ac88c3f570c743016d814d878" - integrity sha512-Dt5p4g105/1EFXFCTvdJiqtRGRgyWPzIJ8MSsTlYSoeJiTYwUC+mlBh4Y+Io/cxtc5hUuguaj0MyovIMiL4KkA== +"@walletconnect/sign-client@2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.11.1.tgz#c073b8d2d594e792bb783d36c8b021bd37a9d4f6" + integrity sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA== dependencies: - "@walletconnect/core" "2.4.6" + "@walletconnect/core" "2.11.1" "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.0" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "^2.0.1" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.4.6" - "@walletconnect/utils" "2.4.6" + "@walletconnect/types" "2.11.1" + "@walletconnect/utils" "2.11.1" events "^3.3.0" - pino "7.11.0" - -"@walletconnect/signer-connection@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/signer-connection/-/signer-connection-1.8.0.tgz#6cdf490df770e504cc1a550bdb5bac7696b130bc" - integrity sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA== - dependencies: - "@walletconnect/client" "^1.8.0" - "@walletconnect/jsonrpc-types" "^1.0.1" - "@walletconnect/jsonrpc-utils" "^1.0.3" - "@walletconnect/qrcode-modal" "^1.8.0" - "@walletconnect/types" "^1.8.0" - eventemitter3 "4.0.7" - -"@walletconnect/socket-transport@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz#9a1128a249628a0be11a0979b522fe82b44afa1b" - integrity sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ== - dependencies: - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - ws "7.5.3" "@walletconnect/time@^1.0.2": version "1.0.2" @@ -4712,143 +3331,60 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.3.3.tgz#0d22b325dd854533790226cee8f1b93966fecc47" - integrity sha512-g2x27MloGElcRTwYM9Md/1E2RQ5ifYBCFZ/sfnpQrZPVxK3NzSMHJlcV6qrQm9ST82i+UrLEce9RkDgvjKk7+w== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.0" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - -"@walletconnect/types@2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.4.6.tgz#45707ba774686f39a542c8cc1e9ca37c4a36691f" - integrity sha512-0ck2VvTRT4pTMQbop2Dku8YuOdNhebyJlXjtHN4naFgu73rXiw7Yml4N4hKjV4cwJoOBepWD2f9Dvl9cDFQ/Wg== +"@walletconnect/types@2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.11.1.tgz#4f705b43ddc286b69eb9bf91bb6e9496d20de0e3" + integrity sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw== dependencies: "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.0" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - -"@walletconnect/types@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" - integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== - -"@walletconnect/universal-provider@2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.3.3.tgz#b3f162e1c25e795c1812123d5280248e8ca32315" - integrity sha512-pibtlTUn7dg5Y5vs8tzSGaaDlq8eSXgHh7o9iMMpE4Fr06HyM36J0niGTOsKvMa+u5keCTwVhbB4MNnN08zVvg== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.4" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/keyvaluestorage" "^1.1.1" "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.3.3" - "@walletconnect/types" "2.3.3" - "@walletconnect/utils" "2.3.3" - eip1193-provider "1.0.1" events "^3.3.0" - pino "7.11.0" -"@walletconnect/universal-provider@2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.4.6.tgz#336ad48e2159f9a32fb2f8e5bb5ed29712ebbcbc" - integrity sha512-FvuCCoQ00kYK3M6wYpaK9goCTa8kK5DQPTrsXYeitfXcJccQHxJahpEzIadLc6sj5+uK06WuLGGSObfpjSG3IA== +"@walletconnect/universal-provider@2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.1.tgz#988f2a78325eb52ef7481a220851a56efb209d64" + integrity sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw== dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.4" - "@walletconnect/jsonrpc-provider" "^1.0.6" + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "1.0.13" "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/jsonrpc-utils" "^1.0.7" "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.4.6" - "@walletconnect/types" "2.4.6" - "@walletconnect/utils" "2.4.6" - eip1193-provider "1.0.1" + "@walletconnect/sign-client" "2.11.1" + "@walletconnect/types" "2.11.1" + "@walletconnect/utils" "2.11.1" events "^3.3.0" - pino "7.11.0" - -"@walletconnect/utils@2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.3.3.tgz#7775ae536cc1ac37e14211eb4fc6b07cbb75f9d9" - integrity sha512-wS9ptLlT30c7m7zme3/y3cNjKXztZeKIulqBD1K/VxSxWEA4mK9mmXEACdmahjiX4EHZWtdHvEIu2rLDhkrrvQ== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/relay-api" "^1.0.7" - "@walletconnect/safe-json" "^1.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.3.3" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.1" - uint8arrays "3.1.0" -"@walletconnect/utils@2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.4.6.tgz#2bd192bfcc019d19929be2881f8e4f54fc9b56a0" - integrity sha512-SowRdiR3TTGeb3ikMP7ucOafgmu58Nh1pCjCff2666gQjVzT9qO1Y9aJ7eS3g3URJtLGzYCEIYohnUYOidvpgA== +"@walletconnect/utils@2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.11.1.tgz#56116d9c410c6f2ae8d562017cf6876cccb366f1" + integrity sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA== dependencies: "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" "@stablelib/random" "^1.0.2" "@stablelib/sha256" "1.0.1" "@stablelib/x25519" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.4" "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/safe-json" "^1.0.2" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.4.6" + "@walletconnect/types" "2.11.1" "@walletconnect/window-getters" "^1.0.1" "@walletconnect/window-metadata" "^1.0.1" detect-browser "5.3.0" - query-string "7.1.1" - uint8arrays "3.1.0" - -"@walletconnect/utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.8.0.tgz#2591a197c1fa7429941fe428876088fda6632060" - integrity sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA== - dependencies: - "@walletconnect/browser-utils" "^1.8.0" - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/jsonrpc-utils" "^1.0.3" - "@walletconnect/types" "^1.8.0" - bn.js "4.11.8" - js-sha3 "0.8.0" - query-string "6.13.5" - -"@walletconnect/window-getters@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" - integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + query-string "7.1.3" + uint8arrays "^3.1.0" -"@walletconnect/window-getters@^1.0.0", "@walletconnect/window-getters@^1.0.1": +"@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== dependencies: tslib "1.14.1" -"@walletconnect/window-metadata@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" - integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== - dependencies: - "@walletconnect/window-getters" "^1.0.0" - "@walletconnect/window-metadata@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" @@ -4857,181 +3393,35 @@ "@walletconnect/window-getters" "^1.0.1" tslib "1.14.1" -"@web3modal/core@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.1.1.tgz#e1ebe8faaae6e4b74df911fd5ac6023f280b12c1" - integrity sha512-GAZAvfkPHoX2/fghQmf+y36uDspk9wBJxG7qLPUNTHzvIfRoNHWbTt3iEvRdPmUZwbTGDn1jvz9z0uU67gvZdw== - dependencies: - buffer "6.0.3" - valtio "1.9.0" - -"@web3modal/standalone@2.1.1", "@web3modal/standalone@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@web3modal/standalone/-/standalone-2.1.1.tgz#e496e54af5ecf6e282ff7f287eebce7f1ac90bd2" - integrity sha512-K06VkZqltLIBKpnLeM2oszRDSdLnwXJWCcItWEOkH4LDFQIiq8lSeLhcamuadRxRKF4ZyTSLHHJ5MFcMfZEHQQ== - dependencies: - "@web3modal/core" "2.1.1" - "@web3modal/ui" "2.1.1" - -"@web3modal/ui@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.1.1.tgz#300dceeee8a54be70aad74fb4a781ac22439eded" - integrity sha512-0jRDxgPc/peaE5KgqnzzriXhdVu5xNyCMP5Enqdpd77VkknJIs7h16MYKidxgFexieyHpCOssWySsryWcP2sXA== - dependencies: - "@web3modal/core" "2.1.1" - lit "2.6.1" - motion "10.15.5" - qrcode "1.5.1" - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -"@zxing/text-encoding@0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" - integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== - -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abitype@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.2.tgz#cacd330d07488a4020d84f54fc361361234b9c83" - integrity sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA== - -abitype@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.1.8.tgz#f47d397b95d81a445a0d0ef2fdd7827131b3fd74" - integrity sha512-2pde0KepTzdfu19ZrzYTYVIWo69+6UbBCY4B1RDiwWgo2XZtFSJhF6C+XThuRXbbZ823J0Rw1Y5cP0NXYVcCdQ== - -abitype@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.3.0.tgz#75150e337d88cc0b2423ed0d3fc36935f139d04c" - integrity sha512-0YokyAV4hKMcy97Pl+6QgZBlBdZJN2llslOs7kiFY+cu7kMlVXDBpxMExfv0krzBCQt2t7hNovpQ3y/zvEm18A== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abortcontroller-polyfill@^1.1.9, abortcontroller-polyfill@^1.7.3: - version "1.7.5" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== - -abstract-level@1.0.3, abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" - integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== - dependencies: - buffer "^6.0.3" - catering "^2.1.0" - is-buffer "^2.0.5" - level-supports "^4.0.0" - level-transcoder "^1.0.1" - module-error "^1.0.1" - queue-microtask "^1.2.3" - -abstract-leveldown@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" - integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" - integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== - dependencies: - buffer "^6.0.3" - catering "^2.0.0" - is-buffer "^2.0.5" - level-concat-iterator "^3.0.0" - level-supports "^2.0.1" - queue-microtask "^1.2.3" - -abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" - integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== - dependencies: - xtend "~4.0.0" +abitype@1.0.0, abitype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" + integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" +abitype@^0.8.0: + version "0.8.11" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.11.tgz#66e1cf2cbf46f48d0e57132d7c1c392447536cc1" + integrity sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A== -acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-node@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^7.0.0, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.4.1, acorn@^8.5.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn-walk@^8.1.1, acorn-walk@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.11.3, acorn@^8.4.1, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== adm-zip@^0.4.16: version "0.4.16" @@ -5043,10 +3433,10 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -aes-js@^3.1.1, aes-js@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== agent-base@6: version "6.0.2" @@ -5055,15 +3445,6 @@ agent-base@6: dependencies: debug "4" -agentkeepalive@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -5072,22 +3453,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ahocorasick@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500" - integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA== - -ajv@^5.2.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw== - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5097,16 +3463,6 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.11.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" - integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ajv@^8.12.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" @@ -5117,38 +3473,49 @@ ajv@^8.12.0: require-from-string "^2.0.2" uri-js "^4.2.2" +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-colors@^4.1.1: +ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" + +ansi-escapes@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" + integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== + dependencies: + type-fest "^3.0.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -5159,12 +3526,17 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +ansi-sequence-parser@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" + integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -5183,7 +3555,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.0.0: +ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -5193,15 +3565,7 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -5231,74 +3595,30 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== - dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: - typical "^2.6.0" + dequal "^2.0.3" -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== +array-buffer-byte-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: - typical "^2.6.1" + call-bind "^1.0.5" + is-array-buffer "^3.0.4" -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-union@^2.1.0: @@ -5306,59 +3626,77 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== +array.prototype.every@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/array.prototype.every/-/array.prototype.every-1.1.5.tgz#f8ca86a1a82a91eb5173187ef68935dc47215922" + integrity sha512-FfMQJ+/joFGXpRCltbzV3znaP5QxIhLFySo0fEPn3GuoYlud9LhknMCIxdYKC2qsM/6VHoSp6YGwe3EZXrEcwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + is-string "^1.0.7" -array.prototype.flat@^1.2.5: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== +array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" - integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== -asn1.js@^5.0.0, asn1.js@^5.2.0: +asn1.js@^5.0.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== @@ -5368,59 +3706,20 @@ asn1.js@^5.0.0, asn1.js@^5.2.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-never@^1.2.0, assert-never@^1.2.1: +assert-never@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-eventemitter@0.2.4, async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== async-mutex@^0.2.6: version "0.2.6" @@ -5429,88 +3728,44 @@ async-mutex@^0.2.6: dependencies: tslib "^2.0.0" -async@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - -async@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== - -async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1, async@^2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== dependencies: - lodash "^4.17.14" + has-symbols "^1.0.3" asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - atomic-sleep@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -autoprefixer@^10.4.13: - version "10.4.13" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" - integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== +autoprefixer@^10.4.17: + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== dependencies: - browserslist "^4.21.4" - caniuse-lite "^1.0.30001426" - fraction.js "^4.2.0" + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.4.3: - version "4.5.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.2.tgz#823fdf491ff717ac3c58a52631d4206930c1d9f7" - integrity sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA== +available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" + integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== -axios@^0.21.0: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== axios@^0.27.2: version "0.27.2" @@ -5520,627 +3775,28 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.4.3.tgz#478b84d430972b277ad67dd631be94abea676792" - integrity sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw== - dependencies: - "@jest/transform" "^29.4.3" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.4.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz#ad1dfb5d31940957e00410ef7d9b2aa94b216101" - integrity sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-jest@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz#bb926b66ae253b69c6e3ef87511b8bb5c53c5b52" - integrity sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw== - dependencies: - babel-plugin-jest-hoist "^29.4.3" - babel-preset-current-node-syntax "^1.0.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babelify@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" - integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: - babel-core "^6.0.14" - object-assign "^4.0.0" + dequal "^2.0.3" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: - precond "0.2" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2, base-x@^3.0.8: +base-x@^3.0.2: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== @@ -6152,169 +3808,76 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4, bech32@^1.1.3: +bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -bech32@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" - integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== - -big-integer@1.6.36: - version "1.6.36" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" - integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== +better-path-resolve@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" + integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== + dependencies: + is-windows "^1.0.0" -big.js@^6.0.3: +big.js@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== -bigint-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" - integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== - dependencies: - bindings "^1.3.0" - -bigint-crypto-utils@^3.0.23: - version "3.1.7" - resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.1.7.tgz#c4c1b537c7c1ab7aadfaecf3edfd45416bf2c651" - integrity sha512-zpCQpIE2Oy5WIQpjC9iYZf8Uh9QqoS51ZCooAcNvzv1AQ3VWdT52D0ksr1+/faeK8HVIej1bxXcP75YcqH3KPA== - dependencies: - bigint-mod-arith "^3.1.0" - -bigint-mod-arith@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz#658e416bc593a463d97b59766226d0a3021a76b1" - integrity sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ== - -bignumber.js@^7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62" - integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A== +bigint-crypto-utils@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" + integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bind-decorator@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" - integrity sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg== - -bindings@^1.3.0, bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.12.0, bn.js@^4.8.0: +bn.js@^4.0.0, bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.12.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.1, body-parser@^1.16.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +bowser@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== -borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" brace-expansion@^1.1.7: version "1.1.11" @@ -6331,31 +3894,6 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -6363,32 +3901,24 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: +breakword@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.6.tgz#242506e7b871b7fad1bce8dc05cb0f2a129c12bd" + integrity sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw== + dependencies: + wcwidth "^1.0.1" + +brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-level@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" - integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== - dependencies: - abstract-level "^1.0.2" - catering "^2.1.1" - module-error "^1.0.2" - run-parallel-limit "^1.1.0" - -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - integrity sha512-7Rfk377tpSM9TWBEeHs0FlDZGoAIei2V/4MdZJoFMBFAK6BqLpxAIUepGRHGdPFgGsLb02PXovC4qddyHvQqTg== - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: +browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -6400,74 +3930,17 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== +browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" -browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.6.6: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bs58@^4.0.0, bs58@^4.0.1: +bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== @@ -6483,37 +3956,7 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0, buffer-from@^1.1.1: +buffer-from@^1.0.0, buffer-from@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== @@ -6523,32 +3966,17 @@ buffer-reverse@^1.0.1: resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + integrity sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer-xor@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" - integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== - dependencies: - safe-buffer "^5.1.1" - -buffer@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2" - integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: +buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -6556,161 +3984,57 @@ buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bufferutil@4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" - integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== - dependencies: - node-gyp-build "^4.3.0" - -bufferutil@^4.0.1: - version "4.0.7" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" - integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== +bufferutil@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== dependencies: node-gyp-build "^4.3.0" bundle-require@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.1.tgz#2cc1ad76428043d15e0e7f30990ee3d5404aa2e3" - integrity sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.2.tgz#65fc74ff14eabbba36d26c9a6161bd78fff6b29e" + integrity sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag== dependencies: load-tsconfig "^0.2.3" -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== - dependencies: - typewise-core "^1.2" - -bytewise@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -cac@^6.7.12: +cac@^6.7.12, cac@^6.7.14: version "6.7.14" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-lookup@^6.0.4: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" - integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -cachedown@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" - integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== - dependencies: - abstract-leveldown "^2.4.1" - lru-cache "^3.2.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" @@ -6722,58 +4046,38 @@ camelcase@^6.0.0, camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001426: - version "1.0.30001434" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz#ec1ec1cfb0a93a34a0600d37903853030520a4e5" - integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" - integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== - -cbor@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== - dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" - -cbor@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" - integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== - dependencies: - nofilter "^3.1.0" +caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001580: + version "1.0.30001583" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz#abb2970cc370801dc7e27bf290509dc132cfa390" + integrity sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q== -cfonts@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/cfonts/-/cfonts-3.1.1.tgz#81bf9cfce2fcee581046d8912a55bab4366f9cfc" - integrity sha512-PFknL/y+QVzoVmnm4X/PLd+t5Bt4aSvFBebpvyjcVUb81jHIVHFKvAopADbTk9tnfLLC2RHFZgdVa9YAwQp1mw== +cfonts@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cfonts/-/cfonts-3.2.0.tgz#3c72b79679e48d19c620614d1134326a1f22cdec" + integrity sha512-CFGxRY6aBuOgK85bceCpmMMhuyO6IwcAyyeapB//DtRzm7NbAEsDuuZzBoQxVonz+C2BmZ3swqB/YgcmW+rh3A== dependencies: supports-color "^8" window-size "^1.1.1" -chai@^4.2.0, chai@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== +chai@^4.3.10: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== dependencies: assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.5" + type-detect "^4.0.8" + +chalk@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -chalk@^1.1.3: +chalk@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== @@ -6784,7 +4088,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -6801,73 +4105,19 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -change-case@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" - integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== - dependencies: - camel-case "^3.0.0" - constant-case "^2.0.0" - dot-case "^2.1.0" - header-case "^1.0.0" - is-lower-case "^1.1.0" - is-upper-case "^1.1.0" - lower-case "^1.1.1" - lower-case-first "^1.0.0" - no-case "^2.3.2" - param-case "^2.1.0" - pascal-case "^2.0.0" - path-case "^2.1.0" - sentence-case "^2.1.0" - snake-case "^2.1.0" - swap-case "^1.1.0" - title-case "^2.1.0" - upper-case "^1.1.1" - upper-case-first "^1.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: - functional-red-black-tree "^1.0.1" + get-func-name "^2.0.2" -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.2: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3: +chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -6882,62 +4132,30 @@ chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5 optionalDependencies: fsevents "~2.3.2" -chokidar@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg== +chokidar@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "^1.0.0" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + fsevents "~2.3.2" ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cids@^1.1.5: - version "1.1.9" - resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" - integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== - dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^3.0.0" +ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -6947,53 +4165,34 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classic-level@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.2.0.tgz#2d52bdec8e7a27f534e67fdeb890abef3e643c27" - integrity sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg== +citty@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.5.tgz#fe37ceae5dc764af75eb2fece99d2bf527ea4e50" + integrity sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ== dependencies: - abstract-level "^1.0.2" - catering "^2.1.0" - module-error "^1.0.1" - napi-macros "~2.0.0" - node-gyp-build "^4.3.0" + consola "^3.2.3" -classnames@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +classnames@^2.3.0, classnames@^2.3.2, classnames@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== dependencies: - restore-cursor "^3.1.0" + restore-cursor "^4.0.0" cli-table@^0.3.11: version "0.3.11" @@ -7002,14 +4201,6 @@ cli-table@^0.3.11: dependencies: colors "1.0.3" -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - cli-truncate@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" @@ -7018,37 +4209,44 @@ cli-truncate@^3.1.0: slice-ansi "^5.0.0" string-width "^5.0.0" -client-only@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" - integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== +clide-js@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/clide-js/-/clide-js-0.1.3.tgz#6f500578d453714c8e51f32acd59ddc743e5e3c0" + integrity sha512-D8qIBdg4ZwD+zsoliDc079h1Dm0hIf1219jppPZeINmG/qIoi5CZCJVA7ToHIf74h4oVON5IEObszFd0pG5XPg== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" + cliui "^8.0.1" + prompts "^2.4.2" + yargs-parser "^21.1.1" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +clide-plugin-command-menu@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/clide-plugin-command-menu/-/clide-plugin-command-menu-0.0.7.tgz#eeaf4a2b9039d0fc592c3c745627a9740f69ce37" + integrity sha512-50DR2RmNHwdzpeM+6rkrFUJLsoKY7uHMB2OJDhibhKI7LFGuUFn5/MLDJjRpROPbuVcIB5bM01tYj6NS3VkHXA== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + cfonts "^3.2.0" + colors "^1.4.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +clipboardy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-4.0.0.tgz#e73ced93a76d19dd379ebf1f297565426dffdca1" + integrity sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + execa "^8.0.1" + is-wsl "^3.1.0" + is64bit "^2.0.0" cliui@^6.0.0: version "6.0.0" @@ -7077,55 +4275,25 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clsx@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== +clsx@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" + integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== -clsx@^1.1.0: +clsx@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" +cluster-key-slot@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== color-convert@^1.3.0, color-convert@^1.9.0: version "1.9.3" @@ -7146,7 +4314,7 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -7158,14 +4326,6 @@ color-string@^0.3.0: dependencies: color-name "^1.0.0" -color-string@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - color@^0.11.3: version "0.11.4" resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" @@ -7175,30 +4335,30 @@ color@^0.11.3: color-convert "^1.3.0" color-string "^0.3.0" -color@^4.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - -colorette@^2.0.16, colorette@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -colors@1.0.3, colors@1.0.x: +colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== -colors@1.4.0, colors@^1.1.2, colors@^1.4.0: +colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combine-errors@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/combine-errors/-/combine-errors-3.0.3.tgz#f4df6740083e5703a3181110c2b10551f003da86" + integrity sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q== + dependencies: + custom-error-instance "2.1.1" + lodash.uniqby "4.5.0" + +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -7210,115 +4370,32 @@ command-exists@^1.2.8: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== +commander@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== commander@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.20.0, commander@^2.20.3, commander@^2.9.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^9.3.0, commander@^9.4.1: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -constant-case@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" - integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== - dependencies: - snake-case "^2.1.0" - upper-case "^1.1.1" - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +consola@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" + integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== -convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -7328,74 +4405,27 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie-es@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.0.0.tgz#4759684af168dfc54365b2c2dda0a8d7ee1e4865" + integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ== cookie@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cookiejar@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -copy-to-clipboard@^3.3.1, copy-to-clipboard@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.25.1: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df" - integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== - dependencies: - browserslist "^4.21.4" - -core-js-pure@^3.0.1, core-js-pure@^3.25.1: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33" - integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== +core-js@^3.31.1: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" + integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^7.0.1: +cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== @@ -7411,14 +4441,6 @@ crc-32@^1.2.0: resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -7430,7 +4452,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -7447,29 +4469,21 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" - integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== +cross-fetch@^3.1.4, cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== dependencies: - node-fetch "^2.6.7" - whatwg-fetch "^2.0.4" + node-fetch "^2.6.12" -cross-fetch@^3.1.4, cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== dependencies: - node-fetch "2.6.7" + node-fetch "^2.6.12" -cross-spawn@^5.0.1: +cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== @@ -7478,18 +4492,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -7498,69 +4501,17 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-addr-codec@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz#e16cea892730178fe25a38f6d15b680cab3124ae" - integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== - dependencies: - base-x "^3.0.8" - big-integer "1.6.36" - blakejs "^1.1.0" - bs58 "^4.0.1" - ripemd160-min "0.0.6" - safe-buffer "^5.2.0" - sha3 "^2.1.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-js@^3.1.9-1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" - integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== - -crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" +crossws@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.1.1.tgz#3a85a8140568e4828d9747a884171ea7e6a8bbe2" + integrity sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ== -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" +crypto-js@^4.1.1, crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== -css-selector-tokenizer@^0.8.0: +css-selector-tokenizer@^0.8: version "0.8.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz#88267ef6238e64f2215ea2764b3e2cf498b845dd" integrity sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg== @@ -7568,20 +4519,7 @@ css-selector-tokenizer@^0.8.0: cssesc "^3.0.0" fastparse "^1.1.2" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== - -css-what@^6.0.1, css-what@^6.1.0: +css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -7591,99 +4529,101 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - csstype@^3.0.2, csstype@^3.0.7: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +csv-generate@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" + integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== + +csv-parse@^4.16.3: + version "4.16.3" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== + +csv-stringify@^5.6.5: + version "5.6.5" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== + +csv@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" + integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== + dependencies: + csv-generate "^3.4.3" + csv-parse "^4.16.3" + csv-stringify "^5.6.5" + stream-transform "^2.1.3" + +culori@^3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/culori/-/culori-3.3.0.tgz#e33530adbd124d53bd6550394397e695eaaed739" + integrity sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ== -cycle@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" - integrity sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA== +custom-error-instance@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/custom-error-instance/-/custom-error-instance-2.1.1.tgz#3cf6391487a6629a6247eb0ca0ce00081b7e361a" + integrity sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg== d3-format@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -daisyui@^2.33.0: - version "2.42.1" - resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-2.42.1.tgz#68a5778249117bf013be93808ef091256ee54c54" - integrity sha512-IVeEvP8gvOzHR47fMrOp2YocQJMRmYskhdt7OsuhKJNn+YzLRGOpVpY7AGXt/56pYeYy7h03THHXRTW5cVU9rQ== +daisyui@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-4.7.2.tgz#d2359d9eb1cac2082302ca55b6b35eca437a011f" + integrity sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g== dependencies: - color "^4.2" - css-selector-tokenizer "^0.8.0" - postcss-js "^4.0.0" - tailwindcss "^3" + css-selector-tokenizer "^0.8" + culori "^3" + picocolors "^1" + postcss-js "^4" damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - date-fns@^2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: - ms "2.0.0" + "@babel/runtime" "^7.21.0" -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" +date-fns@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.3.1.tgz#7581daca0892d139736697717a168afbb908cfed" + integrity sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw== -debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -7693,114 +4633,87 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -deep-eql@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.2.tgz#270ceb902f87724077e6f6449aed81463f42fc1c" - integrity sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w== +deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== dependencies: type-detect "^4.0.0" -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" +deep-equal@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deep-object-diff@^1.1.0: +deep-object-diff@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: - abstract-leveldown "~2.6.0" + clone "^1.0.2" -deferred-leveldown@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" - integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: - abstract-leveldown "~5.0.0" - inherits "^2.0.3" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" @@ -7808,146 +4721,90 @@ define-property@^1.0.0: dependencies: is-descriptor "^1.0.0" -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@^1.0.0, defined@~1.0.0: +defined@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +defu@^6.1.3, defu@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" + integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -detect-browser@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" - integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== +destr@^2.0.1, destr@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.2.tgz#8d3c0ee4ec0a76df54bc8b819bca215592a8c218" + integrity sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg== -detect-browser@5.3.0, detect-browser@^5.3.0: +detect-browser@5.3.0, detect-browser@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== - dependencies: - repeating "^2.0.0" - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== -detective@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" - integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== - dependencies: - acorn-node "^1.8.2" - defined "^1.0.0" - minimist "^1.2.6" - didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== -diff-sequences@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" - integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== - -diff@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" - integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" +diff@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dijkstrajs@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" - integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== dir-glob@^3.0.1: version "3.0.1" @@ -7961,10 +4818,10 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dns-packet@^5.2.1, dns-packet@^5.3.0, dns-packet@^5.3.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" - integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== +dns-packet@^5.3.1, dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" @@ -7982,104 +4839,27 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" +dotenv@16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -dom-walk@^0.1.0: +dotignore@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== dependencies: - domelementtype "^2.2.0" + minimatch "^3.0.4" -domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" - integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.1" - -dot-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" - integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== - dependencies: - no-case "^2.2.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^16.0.0, dotenv@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - -dotenv@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== - -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -dotignore@~0.1.2: +duplexer@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^4.1.2: version "4.1.2" @@ -8096,32 +4876,21 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -eip1193-provider@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" - integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== +eciesjs@^0.3.15, eciesjs@^0.3.16: + version "0.3.18" + resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.3.18.tgz#67b5d73a8466e40a45bbc2f2a3177e71e9c0643d" + integrity sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw== dependencies: - "@json-rpc-tools/provider" "^1.5.5" + "@types/secp256k1" "^4.0.4" + futoin-hkdf "^1.5.3" + secp256k1 "^5.0.0" -electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== +electron-to-chromium@^1.4.648: + version "1.4.656" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz#b374fb7cab9b782a5bc967c0ce0e19826186b9c9" + integrity sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q== -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: +elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -8134,20 +4903,10 @@ elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5 minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" - integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== emoji-regex@^8.0.0: version "8.0.0" @@ -8164,84 +4923,56 @@ encode-utf8@^1.0.3: resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding-down@5.0.4, encoding-down@~5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" - integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== - dependencies: - abstract-leveldown "^5.0.0" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - xtend "^4.0.1" - -encoding@^0.1.11: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^5.10.0, enhanced-resolve@^5.7.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" - integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== +engine.io-client@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" + integrity sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.11.0" + xmlhttprequest-ssl "~2.0.0" + +engine.io-parser@~5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.1.tgz#9f213c77512ff1a6cc0c7a86108a7ffceb16fcfb" + integrity sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ== + +enhanced-resolve@^5.10.0, enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.0, enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" - integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + strip-ansi "^6.0.1" env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -eol@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" - integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== - -errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -8255,47 +4986,106 @@ error-stack-parser@^1.3.6: dependencies: stackframe "^0.3.1" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.20.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" - integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: - call-bind "^1.0.2" + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" - has "^1.0.3" + globalthis "^1.0.3" + gopd "^1.0.1" has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" -es-array-method-boxes-properly@^1.0.0: +es-errors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.0.0.tgz#1936450fb8cff7bffb969335d0e55dfca7279aab" + integrity sha512-yHV74THqMJUyFKkHyN7hyENcEZM3Dj2a2IrdClY+IT4BFQHkIVwlh8s6uZfjsFydMdNHv0F5mWgAA3ajFbsvVQ== + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -8306,253 +5096,171 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-promise@^4.0.3, es6-promise@^4.2.8: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -esbuild@^0.16.14: - version "0.16.17" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" - integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== +esbuild@^0.19.2, esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== optionalDependencies: - "@esbuild/android-arm" "0.16.17" - "@esbuild/android-arm64" "0.16.17" - "@esbuild/android-x64" "0.16.17" - "@esbuild/darwin-arm64" "0.16.17" - "@esbuild/darwin-x64" "0.16.17" - "@esbuild/freebsd-arm64" "0.16.17" - "@esbuild/freebsd-x64" "0.16.17" - "@esbuild/linux-arm" "0.16.17" - "@esbuild/linux-arm64" "0.16.17" - "@esbuild/linux-ia32" "0.16.17" - "@esbuild/linux-loong64" "0.16.17" - "@esbuild/linux-mips64el" "0.16.17" - "@esbuild/linux-ppc64" "0.16.17" - "@esbuild/linux-riscv64" "0.16.17" - "@esbuild/linux-s390x" "0.16.17" - "@esbuild/linux-x64" "0.16.17" - "@esbuild/netbsd-x64" "0.16.17" - "@esbuild/openbsd-x64" "0.16.17" - "@esbuild/sunos-x64" "0.16.17" - "@esbuild/win32-arm64" "0.16.17" - "@esbuild/win32-ia32" "0.16.17" - "@esbuild/win32-x64" "0.16.17" - -esbuild@^0.17.6: - version "0.17.18" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" - integrity sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w== - optionalDependencies: - "@esbuild/android-arm" "0.17.18" - "@esbuild/android-arm64" "0.17.18" - "@esbuild/android-x64" "0.17.18" - "@esbuild/darwin-arm64" "0.17.18" - "@esbuild/darwin-x64" "0.17.18" - "@esbuild/freebsd-arm64" "0.17.18" - "@esbuild/freebsd-x64" "0.17.18" - "@esbuild/linux-arm" "0.17.18" - "@esbuild/linux-arm64" "0.17.18" - "@esbuild/linux-ia32" "0.17.18" - "@esbuild/linux-loong64" "0.17.18" - "@esbuild/linux-mips64el" "0.17.18" - "@esbuild/linux-ppc64" "0.17.18" - "@esbuild/linux-riscv64" "0.17.18" - "@esbuild/linux-s390x" "0.17.18" - "@esbuild/linux-x64" "0.17.18" - "@esbuild/netbsd-x64" "0.17.18" - "@esbuild/openbsd-x64" "0.17.18" - "@esbuild/sunos-x64" "0.17.18" - "@esbuild/win32-arm64" "0.17.18" - "@esbuild/win32-ia32" "0.17.18" - "@esbuild/win32-x64" "0.17.18" + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-config-next@^13.0.1: - version "13.0.5" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.0.5.tgz#7a72d8b422358f1141046a7e952f06249369a765" - integrity sha512-lge94W7ME6kNCO96eCykq5GbKbllzmcDNDhh1/llMCRgNPl0+GIQ8dOoM0I7uRQVW56VmTXFybJFXgow11a5pg== +eslint-config-next@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.0.tgz#7e309d426b8afacaba3b32fdbb02ba220b6d0a97" + integrity sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg== dependencies: - "@next/eslint-plugin-next" "13.0.5" - "@rushstack/eslint-patch" "^1.1.3" - "@typescript-eslint/parser" "^5.42.0" + "@next/eslint-plugin-next" "14.1.0" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.31.7" - eslint-plugin-react-hooks "^4.5.0" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" -eslint-config-prettier@^8.3.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== eslint-config-turbo@latest: - version "0.0.4" - resolved "https://registry.yarnpkg.com/eslint-config-turbo/-/eslint-config-turbo-0.0.4.tgz#4850255f8c858131843aa38854d4aed0ff09bb6e" - integrity sha512-HErPS/wfWkSdV9Yd2dDkhZt3W2B78Ih/aWPFfaHmCMjzPalh+5KxRRGTf8MOBQLCebcWJX0lP1Zvc1rZIHlXGg== + version "1.12.2" + resolved "https://registry.yarnpkg.com/eslint-config-turbo/-/eslint-config-turbo-1.12.2.tgz#0f5a2f8aba495f481e7d0f514afaf71edce1f6b3" + integrity sha512-JHTGtDQuISBEWIorHenu5AeX1nv16NiDgDVRi1i0VyeYw0SiVh+lSQbv4BawXSnG1nOFpjbopAQdZvdB3PwXbQ== dependencies: - eslint-plugin-turbo "0.0.4" + eslint-plugin-turbo "1.12.2" -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - resolve "^1.20.0" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-import-resolver-typescript@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz#9431acded7d898fd94591a08ea9eec3514c7de91" - integrity sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ== +eslint-import-resolver-typescript@^3.5.2, eslint-import-resolver-typescript@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== dependencies: debug "^4.3.4" - enhanced-resolve "^5.10.0" - get-tsconfig "^4.2.0" - globby "^13.1.2" - is-core-module "^2.10.0" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" is-glob "^4.0.3" - synckit "^0.8.4" -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== +eslint-plugin-import@^2.28.1, eslint-plugin-import@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + 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.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsx-a11y@^6.5.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" - integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== - dependencies: - "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jsx-a11y@^6.7.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" minimatch "^3.1.2" - semver "^6.3.0" + object.entries "^1.1.7" + object.fromentries "^2.0.7" -eslint-plugin-react-hooks@^4.5.0, eslint-plugin-react-hooks@^4.6.0: +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705", eslint-plugin-react-hooks@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.31.10, eslint-plugin-react@^7.31.7: - version "7.31.11" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" - integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.8" - -eslint-plugin-react@^7.32.2: - version "7.32.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" @@ -8562,142 +5270,59 @@ eslint-plugin-react@^7.32.2: object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.4" - semver "^6.3.0" + semver "^6.3.1" string.prototype.matchall "^4.0.8" -eslint-plugin-tailwindcss@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.10.1.tgz#727193f78cc22b9b358ef5f99de2177d173a5209" - integrity sha512-NLPZ6b6nd/8CgGNMQ6NDiPUfBLQpSGu/u9RyX3MCZOwzNs2dFt1OamNAiRuo3Ixh7Gv4t5UcAcdNt8z74UDJkA== - dependencies: - fast-glob "^3.2.5" - postcss "^8.4.4" - -eslint-plugin-tailwindcss@^3.6.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.7.0.tgz#09f39b18d73141a18e7cb2431bcab89f68010b31" - integrity sha512-e/Pe2jr0vbvNnDXylHoubDGwSh4Z5a4ZhZrkUKHU4MYdSUpjFSofGoMwBSU3d1TybTbo89ENCEWnl1BVAM1iuQ== +eslint-plugin-tailwindcss@^3.14.3: + version "3.14.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.14.3.tgz#7d845869da1485e7f74226ccbc2c05e278f2a48e" + integrity sha512-1MKT8CrVuqVJleHxb7ICHsF2QwO0G+VJ28athTtlcOkccp0qmwK7nCUa1C9paCZ+VVgQU4fonsjLz/wUxoMHJQ== dependencies: fast-glob "^3.2.5" postcss "^8.4.4" - tailwindcss "^3.2.2" - -eslint-plugin-turbo@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-turbo/-/eslint-plugin-turbo-0.0.4.tgz#966f3dd6202143d0c28dc9cdbb48b0f779d06172" - integrity sha512-dfmYE/iPvoJInQq+5E/0mj140y/rYwKtzZkn3uVK8+nvwC5zmWKQ6ehMWrL4bYBkGzSgpOndZM+jOXhPQ2m8Cg== -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-plugin-turbo@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-turbo/-/eslint-plugin-turbo-1.12.2.tgz#610327a35933a9f29cc6ce546e21ff3f3867b36a" + integrity sha512-/l0aGvZRzK1LMRTibRd6ZbEEuD5TtGotDTkZpxSIWA1FI764pWVvQduQMKBaRuz7aTuAo0WxatD8v1scK+qRWw== dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" + dotenv "16.0.3" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@7.32.0, eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.35.0: - version "8.35.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323" - integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw== - dependencies: - "@eslint/eslintrc" "^2.0.0" - "@eslint/js" "8.35.0" - "@humanwhocodes/config-array" "^0.11.8" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@8.56.0, eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -8705,55 +5330,35 @@ eslint@^8.35.0: find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== - dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" @@ -8768,150 +5373,46 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eth-block-tracker@4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== +eth-block-tracker@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz#dfc16085c6817cc30caabba381deb8d204c1c766" + integrity sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg== dependencies: - "@babel/plugin-transform-runtime" "^7.5.5" - "@babel/runtime" "^7.5.5" - eth-query "^2.1.0" + "@metamask/eth-json-rpc-provider" "^1.0.0" + "@metamask/safe-event-emitter" "^3.0.0" + "@metamask/utils" "^5.0.1" json-rpc-random-id "^1.0.1" pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-block-tracker@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" - integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== - dependencies: - eth-query "^2.1.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.3" - ethjs-util "^0.1.3" - json-rpc-engine "^3.6.0" - pify "^2.3.0" - tape "^4.6.3" - -eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.0, eth-ens-namehash@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-json-rpc-filters@4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" - integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - async-mutex "^0.2.6" - eth-json-rpc-middleware "^6.0.0" - eth-query "^2.1.2" - json-rpc-engine "^6.1.0" - pify "^5.0.0" -eth-json-rpc-filters@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz#f0c2aeaec2a45e2dc6ca1b9843d8e85447821427" - integrity sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ== +eth-json-rpc-filters@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz#0b3e370f017f5c6f58d3e7bd0756d8099ed85c56" + integrity sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig== dependencies: - "@metamask/safe-event-emitter" "^2.0.0" + "@metamask/safe-event-emitter" "^3.0.0" async-mutex "^0.2.6" eth-query "^2.1.2" json-rpc-engine "^6.1.0" pify "^5.0.0" -eth-json-rpc-infura@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" - integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== - dependencies: - cross-fetch "^2.1.1" - eth-json-rpc-middleware "^1.5.0" - json-rpc-engine "^3.4.0" - json-rpc-error "^2.0.0" - -eth-json-rpc-middleware@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" - integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== - dependencies: - async "^2.5.0" - eth-query "^2.1.2" - eth-tx-summary "^3.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-json-rpc-middleware@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" - integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-util "^5.1.2" - json-rpc-engine "^5.3.0" - json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: +eth-query@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== @@ -8919,73 +5420,13 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" -eth-rpc-errors@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" - integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^4.0.2: +eth-rpc-errors@^4.0.2, eth-rpc-errors@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== dependencies: fast-safe-stringify "^2.0.6" -eth-sig-util@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" - integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-tx-summary@^3.1.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" - integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== - dependencies: - async "^2.1.2" - clone "^2.0.0" - concat-stream "^1.5.1" - end-of-stream "^1.1.0" - eth-query "^2.0.2" - ethereumjs-block "^1.4.1" - ethereumjs-tx "^1.1.1" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.6.0" - through2 "^2.0.3" - -ethashjs@~0.0.7: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" - integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== - dependencies: - async "^2.1.2" - buffer-xor "^2.0.1" - ethereumjs-util "^7.0.2" - miller-rabin "^4.0.0" - ethereum-bloom-filters@^1.0.6: version "1.0.10" resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" @@ -8993,16 +5434,6 @@ ethereum-bloom-filters@^1.0.6: dependencies: js-sha3 "^0.8.0" -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== - ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -9025,57 +5456,26 @@ ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: setimmediate "^1.0.5" ethereum-cryptography@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" - integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== - dependencies: - "@noble/hashes" "1.1.2" - "@noble/secp256k1" "1.6.3" - "@scure/bip32" "1.1.0" - "@scure/bip39" "1.1.0" - -ethereum-cryptography@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.0.0.tgz#e052b49fa81affae29402e977b8d3a31f88612b6" - integrity sha512-g25m4EtfQGjstWgVE1aIz7XYYjf3kH5kG17ULWVB5dH6uLahsoltOhACzSxyDV+fhn4gbR4xRrOXGe6r2uh4Bg== - dependencies: - "@noble/curves" "1.0.0" - "@noble/hashes" "1.3.0" - "@scure/bip32" "1.3.0" - "@scure/bip39" "1.2.0" - -ethereum-ens@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/ethereum-ens/-/ethereum-ens-0.8.0.tgz#6d0f79acaa61fdbc87d2821779c4e550243d4c57" - integrity sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg== - dependencies: - bluebird "^3.4.7" - eth-ens-namehash "^2.0.0" - js-sha3 "^0.5.7" - pako "^1.0.4" - underscore "^1.8.3" - web3 "^1.0.0-beta.34" - -ethereum-waffle@^3.1.1: - version "3.4.4" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" - integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== dependencies: - "@ethereum-waffle/chai" "^3.4.4" - "@ethereum-waffle/compiler" "^3.4.4" - "@ethereum-waffle/mock-contract" "^3.4.4" - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.0.1" + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" + "@noble/curves" "1.3.0" + "@noble/hashes" "1.3.3" + "@scure/bip32" "1.3.3" + "@scure/bip39" "1.2.2" -ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: +ethereumjs-abi@^0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== @@ -9083,96 +5483,7 @@ ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" - integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== - dependencies: - ethereumjs-util "^6.0.0" - rlp "^2.2.1" - safe-buffer "^5.1.1" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-blockchain@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" - integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.2" - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.1.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - rlp "^2.2.2" - semaphore "^1.1.0" - -ethereumjs-common@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -9185,110 +5496,7 @@ ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumj ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^4.3.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.7, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" - 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" - -ethereumjs-vm@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" - integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - util.promisify "^1.0.0" - -ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethereumjs-wallet@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" - integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^6.0.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scryptsy "^1.2.1" - utf8 "^3.0.0" - uuid "^3.3.2" - -ethers@^4.0.0-beta.1, ethers@^4.0.32: - version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - dependencies: - aes-js "3.0.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.0.1, ethers@^5.0.13, ethers@^5.0.17, ethers@^5.0.2, ethers@^5.0.30, ethers@^5.5.2, ethers@^5.6.1, ethers@^5.6.6, ethers@^5.7.2: +ethers@^5.6.5: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -9324,6 +5532,19 @@ ethers@^5.0.1, ethers@^5.0.13, ethers@^5.0.17, ethers@^5.0.2, ethers@^5.0.30, et "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.11.1: + version "6.11.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.1.tgz#96aae00b627c2e35f9b0a4d65c7ab658259ee6af" + integrity sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.5.0" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -9332,7 +5553,7 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: +ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -9340,32 +5561,22 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -eventemitter3@4.0.7, eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter2@^6.4.5, eventemitter2@^6.4.7: + version "6.4.9" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" + integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== -eventemitter3@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@5.0.1, eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -events@^3.0.0, events@^3.3.0: +events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: +evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== @@ -9373,20 +5584,22 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^5.0.0, execa@^5.1.1: +execa@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -9401,197 +5614,56 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" - integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== dependencies: cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^3.0.1" + get-stream "^8.0.1" + human-signals "^5.0.0" is-stream "^3.0.0" merge-stream "^2.0.0" npm-run-path "^5.1.0" onetime "^6.0.0" - signal-exit "^3.0.7" + signal-exit "^4.1.0" strip-final-newline "^3.0.0" -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== +extendable-error@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" + integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== +extension-port-stream@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-2.1.1.tgz#ec11f2a5ed95655d8c40805d7cb0c39939ee9ef4" + integrity sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow== dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== - dependencies: - fill-range "^2.1.0" - -expect@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.3.tgz#5e47757316df744fe3b8926c3ae8a3ebdafff7fe" - integrity sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg== - dependencies: - "@jest/expect-utils" "^29.4.3" - jest-get-type "^29.4.3" - jest-matcher-utils "^29.4.3" - jest-message-util "^29.4.3" - jest-util "^29.4.3" - -express@^4.14.0: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + webextension-polyfill ">=0.10.0 <1.0" -ext@^1.1.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== +external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: - type "^2.7.2" + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" -extend-shallow@^2.0.1: +fast-deep-equal@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-files@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" - integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -eyes@0.1.x, eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== - -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== - dependencies: - checkpoint-store "^1.1.0" - -fast-check@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.1.1.tgz#72c5ae7022a4e86504762e773adfb8a5b0b01252" - integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== - dependencies: - pure-rand "^5.0.1" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw== + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -9599,7 +5671,7 @@ fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -9610,52 +5682,34 @@ fast-levenshtein@^2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-redact@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" - integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" + integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== -fast-safe-stringify@^2.0.6: +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -fast-stable-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" - integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== - fastparse@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.17.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" + integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== - dependencies: - node-fetch "~1.7.1" - -fetch-ponyfill@^6.0.2: - version "6.1.1" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-6.1.1.tgz#dd8cdff0741a98bc89aeb85820302beb9bcc0bf4" - integrity sha512-rWLgTr5A44/XhvCQPYj0X9Tc+cjUaHofSM4lcwjc9MavD5lkjIhJ+h8JQlavPlTIgDpwhuRozaIykBvX9ItaSA== +figures@^1.4.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== dependencies: - node-fetch "~2.6.0" + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" figures@^2.0.0: version "2.0.0" @@ -9671,37 +5725,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -9714,33 +5737,10 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@5.0.0, find-up@^5.0.0: version "5.0.0" @@ -9750,14 +5750,6 @@ find-up@5.0.0, find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -9765,13 +5757,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -9780,27 +5765,21 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== +find-yarn-workspace-root2@1.2.16: + version "1.2.16" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" + integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== dependencies: micromatch "^4.0.2" + pkg-dir "^4.2.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" flat@^5.0.2: @@ -9808,58 +5787,30 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -flow-stoplight@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== -follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.9: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +follow-redirects@^1.12.1, follow-redirects@^1.14.9: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== -for-each@^0.3.3, for-each@~0.3.3: +for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data-encoder@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" - integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" + cross-spawn "^7.0.0" + signal-exit "^4.0.1" form-data@^4.0.0: version "4.0.0" @@ -9870,20 +5821,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - fp-ts@1.19.3: version "1.19.3" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" @@ -9894,22 +5831,10 @@ fp-ts@^1.0.0: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== fs-extra@^0.30.0: version "0.30.0" @@ -9922,16 +5847,7 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^4.0.2, fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0, fs-extra@^7.0.1: +fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -9940,157 +5856,90 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - at-least-node "^1.0.0" graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" + jsonfile "^4.0.0" + universalify "^0.1.0" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^1.0.0: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.2: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -fuse.js@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.6.2.tgz#fe463fed4b98c0226ac3da2856a415576dc9a111" - integrity sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA== - -ganache-core@^2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" - integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "3.0.0" - ethereumjs-abi "0.6.8" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.1" - ethereumjs-vm "4.2.0" - heap "0.2.6" - keccak "3.0.1" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.20" - lru-cache "5.1.1" - merkle-patricia-tree "3.0.0" - patch-package "6.2.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.32" - optionalDependencies: - ethereumjs-wallet "0.6.5" - web3 "1.2.11" +fuse.js@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.0.0.tgz#6573c9fcd4c8268e403b4fc7d7131ffcf99a9eb2" + integrity sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q== -ganache@^7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.8.0.tgz#02154384f246b66e98974cbcbb18e8372df3c2e0" - integrity sha512-IrUYvsaE/m2/NaVIZ7D/gCnsmyU/buechnH6MhUipzG1qJcZIwIp/DoP/LZUcHyhy0Bv0NKZD2pGOjpRhn7l7A== - dependencies: - "@trufflesuite/bigint-buffer" "1.1.10" - "@trufflesuite/uws-js-unofficial" "20.10.0-unofficial.2" - "@types/bn.js" "^5.1.0" - "@types/lru-cache" "5.1.1" - "@types/seedrandom" "3.0.1" - abstract-level "1.0.3" - abstract-leveldown "7.2.0" - async-eventemitter "0.2.4" - emittery "0.10.0" - keccak "3.0.2" - leveldown "6.1.0" - secp256k1 "4.0.3" - optionalDependencies: - bufferutil "4.0.5" - utf-8-validate "5.0.7" +futoin-hkdf@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/futoin-hkdf/-/futoin-hkdf-1.5.3.tgz#6c8024f2e1429da086d4e18289ef2239ad33ee35" + integrity sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-browser-rtc@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz#d1494e299b00f33fc8e9d6d3343ba4ba99711a2c" + integrity sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ== get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.3.tgz#9d2d284a238e62672f556361e7d4e1a4686ae50e" + integrity sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + es-errors "^1.0.0" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-nonce@^1.0.0: version "1.0.1" @@ -10102,35 +5951,21 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" +get-port-please@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" + integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -10139,37 +5974,12 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-tsconfig@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.2.0.tgz#ff368dd7104dab47bf923404eb93838245c66543" - integrity sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg== - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== +get-tsconfig@^4.5.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== dependencies: - is-glob "^2.0.0" + resolve-pkg-maps "^1.0.0" glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -10185,34 +5995,21 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - 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" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@10.3.10, glob@^10.3.10, glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== 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" + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -10221,19 +6018,18 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.3: +glob@^7.1.3, glob@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -10245,44 +6041,26 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.3: once "^1.3.0" path-is-absolute "^1.0.0" -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" -globals@^13.2.0, globals@^13.6.0, globals@^13.9.0: - version "13.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc" - integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: - type-fest "^0.20.2" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + define-properties "^1.1.3" -globby@^11.0.3, globby@^11.1.0: +globby@^11.0.0, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -10294,26 +6072,15 @@ globby@^11.0.3, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" - integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" - globrex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== goober@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.11.tgz#bbd71f90d2df725397340f808dbe7acc3118e610" - integrity sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A== + version "2.1.14" + resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.14.tgz#4a5c94fc34dc086a8e6035360ae1800005135acd" + integrity sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg== gopd@^1.0.1: version "1.0.1" @@ -10322,139 +6089,92 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" - integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== - dependencies: - "@sindresorhus/is" "^4.6.0" - "@szmarczak/http-timer" "^5.0.1" - "@types/cacheable-request" "^6.0.2" - "@types/responselike" "^1.0.0" - cacheable-lookup "^6.0.4" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - form-data-encoder "1.7.1" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^2.0.0" - -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^11.8.5: - version "11.8.5" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" - integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -graphql-request@next: - version "5.1.0-next.6" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-5.1.0-next.6.tgz#300641f37e0d3dafc79e7c33261412b319f7db10" - integrity sha512-s+B7wfdbPf/0zWIdfL1dUzAke37JNMuJ5cZIr0AgG97vIzxht9l/igx6cQc3f6uvnkCtAgd6FQPSEb0P8iWqAA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-request@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-6.1.0.tgz#f4eb2107967af3c7a5907eb3131c671eac89be4f" + integrity sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw== dependencies: - "@graphql-typed-document-node/core" "^3.1.1" + "@graphql-typed-document-node/core" "^3.2.0" cross-fetch "^3.1.5" - extract-files "^9.0.0" - form-data "^3.0.0" graphql@^16.3.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" - integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== - -growl@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" - integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== + version "16.8.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" + integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + +h3@^1.10.1, h3@^1.8.2: + version "1.10.1" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.10.1.tgz#221634ca9bdb216a6b359bd2915be466a179b8a1" + integrity sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg== + dependencies: + cookie-es "^1.0.0" + defu "^6.1.4" + destr "^2.0.2" + iron-webcrypto "^1.0.0" + ohash "^1.1.3" + radix3 "^1.1.0" + ufo "^1.3.2" + uncrypto "^0.1.3" + unenv "^1.9.0" handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -hardhat@^2.0.4, hardhat@^2.12.2, hardhat@^2.6.6: - version "2.12.2" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.2.tgz#6ae985007b20c1f381c6573799d66c1438c4c802" - integrity sha512-f3ZhzXy1uyQv0UXnAQ8GCBOWjzv++WJNb7bnm10SsyC3dB7vlPpsMWBNhq7aoRxKrNhX9tCev81KFV3i5BTeMQ== +hardhat@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.20.1.tgz#3ad8f2b003a96c9ce80a55fec3575580ff2ddcd4" + integrity sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-evm" "^1.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@nomicfoundation/ethereumjs-vm" "^6.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.4" + "@nomicfoundation/ethereumjs-blockchain" "7.0.4" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-evm" "2.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-statemanager" "2.0.4" + "@nomicfoundation/ethereumjs-trie" "6.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@nomicfoundation/ethereumjs-verkle" "0.0.2" + "@nomicfoundation/ethereumjs-vm" "7.0.4" "@nomicfoundation/solidity-analyzer" "^0.1.0" "@sentry/node" "^5.18.1" "@types/bn.js" "^5.1.0" "@types/lru-cache" "^5.1.0" - abort-controller "^3.0.0" adm-zip "^0.4.16" aggregate-error "^3.0.0" ansi-escapes "^4.3.0" + boxen "^5.1.2" chalk "^2.4.2" chokidar "^3.4.0" ci-info "^2.0.0" @@ -10474,7 +6194,6 @@ hardhat@^2.0.4, hardhat@^2.12.2, hardhat@^2.6.6: mnemonist "^0.38.0" mocha "^10.0.0" p-map "^4.0.0" - qs "^6.7.0" raw-body "^2.4.1" resolve "1.17.0" semver "^6.3.0" @@ -10482,7 +6201,7 @@ hardhat@^2.0.4, hardhat@^2.12.2, hardhat@^2.6.6: source-map-support "^0.5.13" stacktrace-parser "^0.1.10" tsort "0.0.1" - undici "^5.4.0" + undici "^5.14.0" uuid "^8.3.2" ws "^7.4.6" @@ -10498,10 +6217,13 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== +has-dynamic-import@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-dynamic-import/-/has-dynamic-import-2.1.0.tgz#06359ad7672b9e764aea93a54bb9d6e17542d34c" + integrity sha512-su0anMkNEnJKZ/rB99jn3y6lV/J8Ro96hBJ28YAeVzj5rWxH+YL/AdCyiYYA1HDLV9YhmvqpWSJJj2KLo1MX6g== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" has-flag@^3.0.0: version "3.0.0" @@ -10513,62 +6235,29 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - function-bind "^1.1.1" + has-symbols "^1.0.3" hash-base@^3.0.0: version "3.1.0" @@ -10579,19 +6268,6 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash-test-vectors@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/hash-test-vectors/-/hash-test-vectors-1.3.2.tgz#f050fde1aff46ec28dcf4f70e4e3238cd5000f4c" - integrity sha512-PKd/fitmsrlWGh3OpKbgNLE04ZQZsvs1ZkuLoQpeIKuwx+6CYVNdW6LaPIS1QAdZvV40+skk0w4YomKnViUnvQ== - -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -10600,43 +6276,27 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -header-case@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" - integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== - dependencies: - no-case "^2.2.0" - upper-case "^1.1.3" - -heap@0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== - hey-listen@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== -highlight.js@^10.4.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -highlightjs-solidity@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz#48b945f41886fa49af9f06023e6e87fffc243745" - integrity sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg== +hls.js@^1.4.12: + version "1.5.3" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-1.5.3.tgz#548a4de3b9bdb9f12985cc2f07d206c0f2e74d12" + integrity sha512-gonnYpZ5bxuVdwpcbzfylUlNZ8917LjACUjpWXiaeo8zPAIDfPcMZjEQPy6CeeRSJbcg1P+aVqwxrXr2J+SeUg== hmac-drbg@^1.0.1: version "1.0.1" @@ -10647,57 +6307,24 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" + react-is "^16.7.0" -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: +hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -htmlnano@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.3.tgz#50ee639ed63357d4a6c01309f52a35892e4edc2e" - integrity sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A== - dependencies: - cosmiconfig "^7.0.1" - posthtml "^0.16.5" - timsort "^0.3.0" - -htmlparser2@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - -htmlparser2@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" - integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - domutils "^3.0.1" - entities "^4.3.0" - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + void-elements "3.1.0" http-errors@2.0.0: version "2.0.0" @@ -10710,35 +6337,10 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -http2-wrapper@^2.1.10: - version "2.2.0" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" - integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" +http-shutdown@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" + integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== https-proxy-agent@^5.0.0: version "5.0.1" @@ -10748,57 +6350,58 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +human-id@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3" + integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -human-signals@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" - integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== husky@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.2.tgz#5816a60db02650f1f22c8b69b928fd6bcd77a236" - integrity sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg== + version "8.0.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +i18next-browser-languagedetector@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.0.tgz#de0321cba6881be37d82e20e4d6f05aa75f6e37f" + integrity sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA== dependencies: - safer-buffer ">= 2.1.2 < 3" + "@babel/runtime" "^7.23.2" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== +i18next@22.5.1: + version "22.5.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" + integrity sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA== dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" + "@babel/runtime" "^7.20.6" -idna-uts46-hx@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-3.4.0.tgz#aa380e7c04d6bce4f5e26da742c613ea2996f470" - integrity sha512-b1I4qYTcJcX1TANn8OhOGrQUIWOfZUWrLKWDeKbV6posVLjp7OTqFKX3N20efrIMzQM1KhiphOEazBEEUFR9bg== +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - punycode "^2.1.1" + safer-buffer ">= 2.1.2 < 3" -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" +idb-keyval@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" + integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -10808,32 +6411,22 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" - integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== +immer@^10.0.2: + version "10.0.3" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.3.tgz#a8de42065e964aa3edf6afc282dfc7f7f34ae3c9" + integrity sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A== immutable@^4.0.0-rc.12: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -10841,14 +6434,6 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -10867,32 +6452,27 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" -invariant@^2.2.2, invariant@^2.2.4: +invariant@2.2.4, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== - io-ts@1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" @@ -10900,26 +6480,34 @@ io-ts@1.10.4: dependencies: fp-ts "^1.0.0" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== +ioredis@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.2.tgz#9139f596f62fc9c72d873353ac5395bcf05709f7" + integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: + "@ioredis/commands" "^1.1.1" + cluster-key-slot "^1.1.0" + debug "^4.3.4" + denque "^2.1.0" + lodash.defaults "^4.2.0" + lodash.isarguments "^3.1.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +iron-webcrypto@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz#e3b689c0c61b434a0a4cb82d0aeabbc8b672a867" + integrity sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg== + +is-accessor-descriptor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4" + integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== dependencies: - kind-of "^6.0.0" + hasown "^2.0.0" -is-arguments@^1.0.4: +is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -10927,15 +6515,25 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" is-bigint@^1.0.1: version "1.0.4" @@ -10944,13 +6542,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -10971,130 +6562,67 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - kind-of "^3.0.2" + hasown "^2.0.0" -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +is-data-descriptor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb" + integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== dependencies: - kind-of "^6.0.0" + hasown "^2.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +is-descriptor@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306" + integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" + is-accessor-descriptor "^1.0.1" + is-data-descriptor "^1.0.1" is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finite@^1.0.0: +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-finite@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -11105,30 +6633,20 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" -is-generator-function@^1.0.7: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== - dependencies: - is-extglob "^1.0.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -11141,17 +6659,17 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== -is-json@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" - integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== - -is-lower-case@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" - integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== dependencies: - lower-case "^1.1.0" + is-docker "^3.0.0" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-negative-zero@^2.0.2: version "2.0.2" @@ -11165,13 +6683,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -11179,11 +6690,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -11194,29 +6700,17 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== - -is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -11224,6 +6718,11 @@ is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -11231,11 +6730,6 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -11253,6 +6747,13 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-subdir@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== + dependencies: + better-path-resolve "1.0.0" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -11260,43 +6761,22 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.3: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + which-typed-array "^1.1.14" is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-upper-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" - integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== - dependencies: - upper-case "^1.1.0" - -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== is-weakref@^1.0.2: version "1.0.2" @@ -11305,541 +6785,133 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-windows@^1.0.2: +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-windows@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +is64bit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is64bit/-/is64bit-2.0.0.tgz#198c627cbcb198bbec402251f88e5e1a51236c07" + integrity sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw== + dependencies: + system-architecture "^0.1.0" -isarray@^2.0.1: +isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isomorphic-ws@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" - integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -isstream@0.1.x, isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jayson@^3.4.4: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" - integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== - dependencies: - "@types/connect" "^3.4.33" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - JSONStream "^1.3.5" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - lodash "^4.17.20" - uuid "^8.3.2" - ws "^7.4.5" - -jest-changed-files@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.4.3.tgz#7961fe32536b9b6d5c28dfa0abcfab31abcf50a7" - integrity sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ== - dependencies: - execa "^5.0.0" - p-limit "^3.1.0" - -jest-circus@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.4.3.tgz#fff7be1cf5f06224dd36a857d52a9efeb005ba04" - integrity sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw== - dependencies: - "@jest/environment" "^29.4.3" - "@jest/expect" "^29.4.3" - "@jest/test-result" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - is-generator-fn "^2.0.0" - jest-each "^29.4.3" - jest-matcher-utils "^29.4.3" - jest-message-util "^29.4.3" - jest-runtime "^29.4.3" - jest-snapshot "^29.4.3" - jest-util "^29.4.3" - p-limit "^3.1.0" - pretty-format "^29.4.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.4.3.tgz#fe31fdd0c90c765f392b8b7c97e4845071cd2163" - integrity sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg== - dependencies: - "@jest/core" "^29.4.3" - "@jest/test-result" "^29.4.3" - "@jest/types" "^29.4.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^29.4.3" - jest-util "^29.4.3" - jest-validate "^29.4.3" - prompts "^2.0.1" - yargs "^17.3.1" - -jest-config@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.4.3.tgz#fca9cdfe6298ae6d04beef1624064d455347c978" - integrity sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.4.3" - "@jest/types" "^29.4.3" - babel-jest "^29.4.3" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.4.3" - jest-environment-node "^29.4.3" - jest-get-type "^29.4.3" - jest-regex-util "^29.4.3" - jest-resolve "^29.4.3" - jest-runner "^29.4.3" - jest-util "^29.4.3" - jest-validate "^29.4.3" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.4.3" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.4.3.tgz#42f4eb34d0bf8c0fb08b0501069b87e8e84df347" - integrity sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA== +isomorphic-unfetch@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== dependencies: - chalk "^4.0.0" - diff-sequences "^29.4.3" - jest-get-type "^29.4.3" - pretty-format "^29.4.3" + node-fetch "^2.6.1" + unfetch "^4.2.0" -jest-docblock@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" - integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== - dependencies: - detect-newline "^3.0.0" +isows@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" + integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== -jest-each@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.4.3.tgz#a434c199a2f6151c5e3dc80b2d54586bdaa72819" - integrity sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: - "@jest/types" "^29.4.3" - chalk "^4.0.0" - jest-get-type "^29.4.3" - jest-util "^29.4.3" - pretty-format "^29.4.3" - -jest-environment-node@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.4.3.tgz#579c4132af478befc1889ddc43c2413a9cdbe014" - integrity sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg== - dependencies: - "@jest/environment" "^29.4.3" - "@jest/fake-timers" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - jest-mock "^29.4.3" - jest-util "^29.4.3" - -jest-get-type@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" - integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" -jest-haste-map@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.4.3.tgz#085a44283269e7ace0645c63a57af0d2af6942e2" - integrity sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: - "@jest/types" "^29.4.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.4.3" - jest-util "^29.4.3" - jest-worker "^29.4.3" - micromatch "^4.0.4" - walker "^1.0.8" + "@isaacs/cliui" "^8.0.2" optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.4.3.tgz#2b35191d6b35aa0256e63a9b79b0f949249cf23a" - integrity sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA== - dependencies: - jest-get-type "^29.4.3" - pretty-format "^29.4.3" - -jest-matcher-utils@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz#ea68ebc0568aebea4c4213b99f169ff786df96a0" - integrity sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg== - dependencies: - chalk "^4.0.0" - jest-diff "^29.4.3" - jest-get-type "^29.4.3" - pretty-format "^29.4.3" - -jest-message-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.3.tgz#65b5280c0fdc9419503b49d4f48d4999d481cb5b" - integrity sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.4.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.4.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.3.tgz#23d84a20a74cdfff0510fdbeefb841ed57b0fe7e" - integrity sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg== - dependencies: - "@jest/types" "^29.4.3" - "@types/node" "*" - jest-util "^29.4.3" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" - integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== - -jest-resolve-dependencies@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.3.tgz#9ad7f23839a6d88cef91416bda9393a6e9fd1da5" - integrity sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw== - dependencies: - jest-regex-util "^29.4.3" - jest-snapshot "^29.4.3" - -jest-resolve@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.4.3.tgz#3c5b5c984fa8a763edf9b3639700e1c7900538e2" - integrity sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.4.3" - jest-pnp-resolver "^1.2.2" - jest-util "^29.4.3" - jest-validate "^29.4.3" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.4.3.tgz#68dc82c68645eda12bea42b5beece6527d7c1e5e" - integrity sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA== - dependencies: - "@jest/console" "^29.4.3" - "@jest/environment" "^29.4.3" - "@jest/test-result" "^29.4.3" - "@jest/transform" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.4.3" - jest-environment-node "^29.4.3" - jest-haste-map "^29.4.3" - jest-leak-detector "^29.4.3" - jest-message-util "^29.4.3" - jest-resolve "^29.4.3" - jest-runtime "^29.4.3" - jest-util "^29.4.3" - jest-watcher "^29.4.3" - jest-worker "^29.4.3" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.4.3.tgz#f25db9874dcf35a3ab27fdaabca426666cc745bf" - integrity sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q== - dependencies: - "@jest/environment" "^29.4.3" - "@jest/fake-timers" "^29.4.3" - "@jest/globals" "^29.4.3" - "@jest/source-map" "^29.4.3" - "@jest/test-result" "^29.4.3" - "@jest/transform" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.4.3" - jest-message-util "^29.4.3" - jest-mock "^29.4.3" - jest-regex-util "^29.4.3" - jest-resolve "^29.4.3" - jest-snapshot "^29.4.3" - jest-util "^29.4.3" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.4.3.tgz#183d309371450d9c4a3de7567ed2151eb0e91145" - integrity sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.4.3" - "@jest/transform" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.4.3" - graceful-fs "^4.2.9" - jest-diff "^29.4.3" - jest-get-type "^29.4.3" - jest-haste-map "^29.4.3" - jest-matcher-utils "^29.4.3" - jest-message-util "^29.4.3" - jest-util "^29.4.3" - natural-compare "^1.4.0" - pretty-format "^29.4.3" - semver "^7.3.5" - -jest-util@^29.0.0, jest-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496" - integrity sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q== - dependencies: - "@jest/types" "^29.4.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + "@pkgjs/parseargs" "^0.11.0" -jest-validate@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.4.3.tgz#a13849dec4f9e95446a7080ad5758f58fa88642f" - integrity sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw== - dependencies: - "@jest/types" "^29.4.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.4.3" - leven "^3.1.0" - pretty-format "^29.4.3" +jiti@^1.19.1, jiti@^1.21.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -jest-watcher@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.4.3.tgz#e503baa774f0c2f8f3c8db98a22ebf885f19c384" - integrity sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA== +joi@^17.9.2: + version "17.12.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.1.tgz#3347ecf4cd3301962d42191c021b165eef1f395b" + integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== dependencies: - "@jest/test-result" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.4.3" - string-length "^4.0.1" - -jest-worker@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.4.3.tgz#9a4023e1ea1d306034237c7133d7da4240e8934e" - integrity sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA== - dependencies: - "@types/node" "*" - jest-util "^29.4.3" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.4.3.tgz#1b8be541666c6feb99990fd98adac4737e6e6386" - integrity sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA== - dependencies: - "@jest/core" "^29.4.3" - "@jest/types" "^29.4.3" - import-local "^3.0.2" - jest-cli "^29.4.3" + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -js-base64@^3.6.0: - version "3.7.3" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.3.tgz#2e784bb0851636bf1e99ef12e4f3a8a8c9b7639f" - integrity sha512-PAr6Xg2jvd7MCR6Ld9Jg3BmTcjYsHEBx1VlwEwULb/qowPf5VD9kEMagj23Gm7JRnSvE/Da/57nChZjnvL8v6A== - -js-crc@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/js-crc/-/js-crc-0.2.0.tgz#f72c5c7618176bff75cc812a1cedbde3d8eb6839" - integrity sha512-8DdCSAOACpF8WDAjyDFBC2rj8OS4HUP9mNZBDfl8jCiPCnJG+2bkuycalxwZh6heFy6PrMvoWTp47lp6gzT65A== +js-base64@^3.7.2: + version "3.7.6" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.6.tgz#6ccb5d761b48381fd819f9ce04998866dbcbbc99" + integrity sha512-NPrWuHFxFUknr1KqJRDgUQPexQF0uIJWjeT+2KjEePhitQxQEx5EJBG1lVn5/hc8aLycTpXrDOgPQ6Zq+EDiTA== js-sdsl@^4.1.4: - version "4.3.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" - integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== - -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-sha512@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha512/-/js-sha512-0.8.0.tgz#dd22db8d02756faccf19f218e3ed61ec8249f7d4" - integrity sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ== - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== +js-tokens@^8.0.2: + version "8.0.3" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-8.0.3.tgz#1c407ec905643603b38b6be6977300406ec48775" + integrity sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" @@ -11848,7 +6920,7 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -11856,31 +6928,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -11896,7 +6948,7 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: +json-rpc-engine@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== @@ -11904,43 +6956,20 @@ json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: "@metamask/safe-event-emitter" "^2.0.0" eth-rpc-errors "^4.0.2" -json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" - integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== - dependencies: - async "^2.0.1" - babel-preset-env "^1.7.0" - babelify "^7.3.0" - json-rpc-error "^2.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-engine@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" - integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== +json-rpc-middleware-stream@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/json-rpc-middleware-stream/-/json-rpc-middleware-stream-4.2.3.tgz#08340846ffaa2a60287930773546eb4b7f7dbba2" + integrity sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w== dependencies: - inherits "^2.0.1" + "@metamask/safe-event-emitter" "^3.0.0" + json-rpc-engine "^6.1.0" + readable-stream "^2.3.3" json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -11956,54 +6985,27 @@ json-schema-typed@^8.0.1: resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz#826ee39e3b6cef536f85412ff048d3ff6f19dfa0" integrity sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg== -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stable-stringify@^1.0.1: +json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" - integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== - dependencies: - jsonify "^0.0.1" - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.2.0, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonc-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== jsonfile@^2.1.0: version "2.4.0" @@ -12019,76 +7021,34 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== -keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.1, keccak@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== +keccak@^3.0.0, keccak@^3.0.2, keccak@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== dependencies: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -12097,37 +7057,18 @@ keyvaluestorage-interface@^1.0.0: resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -12135,216 +7076,27 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -language-subtag-registry@~0.3.2: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - dependencies: - language-subtag-registry "~0.3.2" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== - dependencies: - invert-kv "^1.0.0" - -level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" - -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-concat-iterator@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" - integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== - dependencies: - catering "^2.1.0" - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== - dependencies: - errno "~0.1.1" - -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" - integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - xtend "^4.0.0" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-iterator-stream@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" - integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.3.6" - xtend "^4.0.0" - -level-mem@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" - integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== - dependencies: - level-packager "~4.0.0" - memdown "~3.0.0" - -level-packager@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" - integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== - dependencies: - encoding-down "~5.0.0" - levelup "^3.0.0" - -level-post@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" - integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== - dependencies: - ltgt "^2.1.2" - -level-sublevel@6.6.4: - version "6.6.4" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" - integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== - dependencies: - bytewise "~1.1.0" - level-codec "^9.0.0" - level-errors "^2.0.0" - level-iterator-stream "^2.0.3" - ltgt "~2.1.1" - pull-defer "^0.2.2" - pull-level "^2.0.3" - pull-stream "^3.6.8" - typewiselite "~1.0.0" - xtend "~4.0.0" - -level-supports@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" - integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== - -level-supports@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" - integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== - -level-transcoder@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" - integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== - dependencies: - buffer "^6.0.3" - module-error "^1.0.1" - -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -level-ws@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" - integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.8" - xtend "^4.0.1" +kleur@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -level@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" - integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== - dependencies: - browser-level "^1.0.1" - classic-level "^1.2.0" +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -leveldown@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" - integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== dependencies: - abstract-leveldown "^7.2.0" - napi-macros "~2.0.0" - node-gyp-build "^4.3.0" - -levelup@3.1.1, levelup@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" - integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== - dependencies: - deferred-leveldown "~4.0.0" - level-errors "~2.0.0" - level-iterator-stream "~3.0.0" - xtend "~4.0.0" - -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" - xtend "~4.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + language-subtag-registry "^0.3.20" levn@^0.4.1: version "0.4.1" @@ -12354,196 +7106,123 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lightningcss-darwin-arm64@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.16.1.tgz#f67287c500b96bc5d21e6d04de0e2607ff2784ff" - integrity sha512-/J898YSAiGVqdybHdIF3Ao0Hbh2vyVVj5YNm3NznVzTSvkOi3qQCAtO97sfmNz+bSRHXga7ZPLm+89PpOM5gAg== - -lightningcss-darwin-x64@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.16.1.tgz#2dc89dd4e1eb3c39ca4abbeca769a276c206b038" - integrity sha512-vyKCNPRNRqke+5i078V+N0GLfMVLEaNcqIcv28hA/vUNRGk/90EDkDB9EndGay0MoPIrC2y0qE3Y74b/OyedqQ== - -lightningcss-linux-arm-gnueabihf@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.16.1.tgz#9edacb0d9bd18fa1830a9d9f9ba00bdc9f8dabc9" - integrity sha512-0AJC52l40VbrzkMJz6qRvlqVVGykkR2MgRS4bLjVC2ab0H0I/n4p6uPZXGvNIt5gw1PedeND/hq+BghNdgfuPQ== - -lightningcss-linux-arm64-gnu@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.16.1.tgz#b6986324d21de3813b84432b51c3e7b019dd2224" - integrity sha512-NqxYXsRvI3/Fb9AQLXKrYsU0Q61LqKz5It+Es9gidsfcw1lamny4lmlUgO3quisivkaLCxEkogaizcU6QeZeWQ== - -lightningcss-linux-arm64-musl@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.16.1.tgz#d13a01ed19a72c99b4ef9c5b9d8ee0dcdc4bf3ed" - integrity sha512-VUPQ4dmB9yDQxpJF8/imtwNcbIPzlL6ArLHSUInOGxipDk1lOAklhUjbKUvlL3HVlDwD3WHCxggAY01WpFcjiA== - -lightningcss-linux-x64-gnu@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.16.1.tgz#6c888ef4faac53333d6d2241da463c405b19ec79" - integrity sha512-A40Jjnbellnvh4YF+kt047GLnUU59iLN2LFRCyWQG+QqQZeXOCzXfTQ6EJB4yvHB1mQvWOVdAzVrtEmRw3Vh8g== - -lightningcss-linux-x64-musl@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.16.1.tgz#20b51081679dd6b7271ce11df825dc536a0c617c" - integrity sha512-VZf76GxW+8mk238tpw0u9R66gBi/m0YB0TvD54oeGiOqvTZ/mabkBkbsuXTSWcKYj8DSrLW+A42qu+6PLRsIgA== - -lightningcss-win32-x64-msvc@1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.16.1.tgz#7546b4dca78314b1d2701ed220cb6e50b8c6b5ca" - integrity sha512-Djy+UzlTtJMayVJU3eFuUW5Gdo+zVTNPJhlYw25tNC9HAoMCkIdSDDrGsWEdEyibEV7xwB8ySTmLuxilfhBtgg== - -lightningcss@^1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.16.1.tgz#b5a16632b6824d023af2fb7d35b1c6fc42608bc6" - integrity sha512-zU8OTaps3VAodmI2MopfqqOQQ4A9L/2Eo7xoTH/4fNkecy6ftfiGwbbRMTQqtIqJjRg3f927e+lnyBBPhucY1Q== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.16.1" - lightningcss-darwin-x64 "1.16.1" - lightningcss-linux-arm-gnueabihf "1.16.1" - lightningcss-linux-arm64-gnu "1.16.1" - lightningcss-linux-arm64-musl "1.16.1" - lightningcss-linux-x64-gnu "1.16.1" - lightningcss-linux-x64-musl "1.16.1" - lightningcss-win32-x64-msvc "1.16.1" - -lilconfig@2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== +lilconfig@2.1.0, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -lilconfig@2.0.6, lilconfig@^2.0.5, lilconfig@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== +lilconfig@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^12.3.7: - version "12.5.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.5.0.tgz#d6925747480ae0e380d13988522f9dd8ef9126e3" - integrity sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g== - dependencies: - cli-truncate "^3.1.0" - colorette "^2.0.16" - commander "^9.3.0" - debug "^4.3.4" - execa "^5.1.1" - lilconfig "2.0.5" - listr2 "^4.0.5" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-inspect "^1.12.2" - pidtree "^0.5.0" - string-argv "^0.3.1" - supports-color "^9.2.2" - yaml "^1.10.2" - lint-staged@^13.0.3: - version "13.0.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.4.tgz#c4b4391280c35165b805ad43304ba01f733067a0" - integrity sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw== + version "13.3.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.3.0.tgz#7965d72a8d6a6c932f85e9c13ccf3596782d28a5" + integrity sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ== dependencies: - cli-truncate "^3.1.0" - colorette "^2.0.19" - commander "^9.4.1" - debug "^4.3.4" - execa "^6.1.0" - lilconfig "2.0.6" - listr2 "^5.0.5" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-inspect "^1.12.2" - pidtree "^0.6.0" - string-argv "^0.3.1" - yaml "^2.1.3" - -listr2@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" - integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== + chalk "5.3.0" + commander "11.0.0" + debug "4.3.4" + execa "7.2.0" + lilconfig "2.1.0" + listr2 "6.6.1" + micromatch "4.0.5" + pidtree "0.6.0" + string-argv "0.3.2" + yaml "2.3.1" + +listhen@^1.5.5: + version "1.6.0" + resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.6.0.tgz#df26c527c59b87557be4d0408d4a09626bd946c8" + integrity sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w== + dependencies: + "@parcel/watcher" "^2.4.0" + "@parcel/watcher-wasm" "2.4.0" + citty "^0.1.5" + clipboardy "^4.0.0" + consola "^3.2.3" + crossws "^0.1.0" + defu "^6.1.4" + get-port-please "^3.1.2" + h3 "^1.10.1" + http-shutdown "^1.2.2" + jiti "^1.21.0" + mlly "^1.5.0" + node-forge "^1.3.1" + pathe "^1.1.2" + std-env "^3.7.0" + ufo "^1.3.2" + untun "^0.1.3" + uqr "^0.1.2" + +listr2@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-6.6.1.tgz#08b2329e7e8ba6298481464937099f4a2cd7f95d" + integrity sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg== dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" + cli-truncate "^3.1.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^5.0.1" rfdc "^1.3.0" - rxjs "^7.5.5" - through "^2.3.8" - wrap-ansi "^7.0.0" + wrap-ansi "^8.1.0" -listr2@^5.0.5, listr2@^5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.6.tgz#3c61153383869ffaad08a8908d63edfde481dff8" - integrity sha512-u60KxKBy1BR2uLJNTWNptzWQ1ob/gjMzIJPZffAENzpZqbMZ/5PrXXOomDcevIS/+IB7s1mmCEtSlT2qHWMqag== +listr2@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.0.2.tgz#07649d1f93ee28c9922c0fca64eaf348b7e4a6b7" + integrity sha512-v5jEMOeEJUpRjSXSB4U3w5A3YPmURYMUO/86f1PA4GGYcdbUQYpkbvKYT7Xaq1iu4Zjn51Rv1UeD1zsBXRijiQ== dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.19" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.7" - through "^2.3.8" - wrap-ansi "^7.0.0" + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.0.0" + rfdc "^1.3.1" + wrap-ansi "^9.0.0" -lit-element@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.2.2.tgz#d148ab6bf4c53a33f707a5168e087725499e5f2b" - integrity sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ== +lit-element@^3.3.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.3.tgz#10bc19702b96ef5416cf7a70177255bfb17b3209" + integrity sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA== dependencies: + "@lit-labs/ssr-dom-shim" "^1.1.0" "@lit/reactive-element" "^1.3.0" - lit-html "^2.2.0" + lit-html "^2.8.0" -lit-html@^2.2.0, lit-html@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.6.1.tgz#eb29f0b0c2ab54ea77379db11fc011b0c71f1cda" - integrity sha512-Z3iw+E+3KKFn9t2YKNjsXNEu/LRLI98mtH/C6lnFg7kvaqPIzPn124Yd4eT/43lyqrejpc5Wb6BHq3fdv4S8Rw== +lit-html@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" + integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== dependencies: "@types/trusted-types" "^2.0.2" -lit@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.6.1.tgz#5951a2098b9bde5b328c73b55c15fdc0eefd96d7" - integrity sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw== +lit@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" + integrity sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA== dependencies: "@lit/reactive-element" "^1.6.0" - lit-element "^3.2.0" - lit-html "^2.6.0" - -lmdb@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1" - integrity sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA== - dependencies: - msgpackr "^1.5.4" - node-addon-api "^4.3.0" - node-gyp-build-optional-packages "5.0.3" - ordered-binary "^1.2.4" - weak-lru-cache "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.5.2" - "@lmdb/lmdb-darwin-x64" "2.5.2" - "@lmdb/lmdb-linux-arm" "2.5.2" - "@lmdb/lmdb-linux-arm64" "2.5.2" - "@lmdb/lmdb-linux-x64" "2.5.2" - "@lmdb/lmdb-win32-x64" "2.5.2" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" + lit-element "^3.3.0" + lit-html "^2.8.0" + +livepeer@^2.5.8: + version "2.9.2" + resolved "https://registry.yarnpkg.com/livepeer/-/livepeer-2.9.2.tgz#12a6080a875401ea630cc3367a44c8f392fe1a23" + integrity sha512-bkFLjw/+wFFNI5TT9z2Fa1yNEByGxBtkA1IoEWHytvkJtA2ifoiT676sZYpy+D+nZp1XdLEBdvudkDwM/SlPhg== + dependencies: + "@livepeer/core" "^1.9.2" + "@stitches/core" "^1.2.8" + core-js "^3.31.1" + cross-fetch "^4.0.0" + hls.js "^1.4.12" + ms "^3.0.0-canary.1" + tus-js-client "^3.1.0" + zustand "^4.3.9" load-json-file@^4.0.0: version "4.0.0" @@ -12560,6 +7239,24 @@ load-tsconfig@^0.2.3: resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== +load-yaml-file@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" + integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== + dependencies: + graceful-fs "^4.1.5" + js-yaml "^3.13.0" + pify "^4.0.1" + strip-bom "^3.0.0" + +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -12568,14 +7265,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -12590,15 +7279,42 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== +lodash._baseiteratee@~4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz#34a9b5543572727c3db2e78edae3c0e9e66bd102" + integrity sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ== + dependencies: + lodash._stringtopath "~4.8.0" -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash._basetostring@~4.12.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz#9327c9dc5158866b7fa4b9d42f4638e5766dd9df" + integrity sha512-SwcRIbyxnN6CFEEK4K1y+zuApvWdpQdBHM/swxP962s8HIxPO3alBH5t3m/dl+f4CMUug6sJb7Pww8d13/9WSw== + +lodash._baseuniq@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + integrity sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A== + dependencies: + lodash._createset "~4.0.0" + lodash._root "~3.0.0" + +lodash._createset@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" + integrity sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA== + +lodash._root@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ== + +lodash._stringtopath@~4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz#941bcf0e64266e5fc1d66fed0a6959544c576824" + integrity sha512-SXL66C731p0xPDC5LZg4wI5H+dJo/EO4KTqOMwLYCH3+FmmfAKJEZCm6ohGpI+T1xwsDsJCfL4OnhorllvlTPQ== + dependencies: + lodash._basetostring "~4.12.0" lodash.castarray@^4.4.0: version "4.4.0" @@ -12610,16 +7326,21 @@ lodash.chunk@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + lodash.isequal@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -12630,11 +7351,6 @@ lodash.isplainobject@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -12645,22 +7361,25 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== -lodash@4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash.uniqby@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz#a3a17bbf62eeb6240f491846e97c1c4e2a5e1e21" + integrity sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ== + dependencies: + lodash._baseiteratee "~4.7.0" + lodash._baseuniq "~4.6.0" -lodash@^4.14.2, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.10, lodash@^4.17.11: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12673,25 +7392,27 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== +log-update@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-5.0.1.tgz#9e928bf70cb183c1f0c9e91d9e6b7115d597ce09" + integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== + ansi-escapes "^5.0.0" + cli-cursor "^4.0.0" + slice-ansi "^5.0.0" + strip-ansi "^7.0.1" + wrap-ansi "^8.0.1" -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== +log-update@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.0.0.tgz#0ddeb7ac6ad658c944c1de902993fce7c33f5e59" + integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== + dependencies: + ansi-escapes "^6.2.0" + cli-cursor "^4.0.0" + slice-ansi "^7.0.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -12700,53 +7421,17 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^2.3.1: - version "2.3.6" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" - integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== - dependencies: - get-func-name "^2.0.0" - -lower-case-first@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" - integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== - dependencies: - lower-case "^1.1.2" - -lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lru-cache@5.1.1, lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: - yallist "^3.0.2" + get-func-name "^2.0.1" -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== - dependencies: - pseudomap "^1.0.1" +lru-cache@^10.0.0, lru-cache@^10.0.1, lru-cache@^10.0.2, lru-cache@^10.1.0, lru-cache@^10.2.0, "lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== lru-cache@^4.0.1: version "4.1.5" @@ -12756,6 +7441,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -12763,83 +7455,42 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.14.1: - version "7.14.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" - integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -ltgt@^2.1.2, ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== - -ltgt@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" - integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== - lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +magic-string@^0.30.5: + version "0.30.6" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.6.tgz#996e21b42f944e45591a68f0905d6a740a12506c" + integrity sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA== dependencies: - semver "^6.0.0" + "@jridgewell/sourcemap-codec" "^1.4.15" -make-error@1.x, make-error@^1.1.1: +make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -marked@^4.2.5: - version "4.2.5" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.5.tgz#979813dfc1252cc123a79b71b095759a32f42a5d" - integrity sha512-jPueVhumq7idETHkb203WDD4fMA3yV9emQ5vLwop58lu8bTclMghBWcYAavlDqIEMaisADinV1TooIFCfqOsYQ== +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -mcl-wasm@^0.7.1: - version "0.7.9" - resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" - integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== +marked@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== md5.js@^1.3.4: version "1.3.5" @@ -12850,11 +7501,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - media-query-parser@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29" @@ -12862,60 +7508,34 @@ media-query-parser@^2.0.2: dependencies: "@babel/runtime" "^7.12.5" -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ== - dependencies: - mimic-fn "^1.0.0" - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memdown@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" - integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== - dependencies: - abstract-leveldown "~5.0.0" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memory-level@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" - integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== - dependencies: - abstract-level "^1.0.0" - functional-red-black-tree "^1.0.1" - module-error "^1.0.1" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +meow@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" + integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" merge-stream@^2.0.0: version "2.0.0" @@ -12927,41 +7547,14 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkle-patricia-tree@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkletreejs@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.3.9.tgz#cdb364a3b974a44f4eff3446522d7066e0cf95de" - integrity sha512-NjlATjJr4NEn9s8v/VEHhgwRWaE1eA/Une07d9SEqKzULJi1Wsh0Y3svwJdP2bYLMmgSBHzOrNydMWM1NN9VeQ== +merkletreejs@^0.3.11: + version "0.3.11" + resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.3.11.tgz#e0de05c3ca1fd368de05a12cb8efb954ef6fc04f" + integrity sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ== dependencies: bignumber.js "^9.0.1" buffer-reverse "^1.0.1" - crypto-js "^3.1.9-1" + crypto-js "^4.2.0" treeify "^1.1.0" web3-utils "^1.3.4" @@ -12970,55 +7563,12 @@ mersenne-twister@^1.1.0: resolved "https://registry.yarnpkg.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz#f916618ee43d7179efcf641bec4531eb9670978a" integrity sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA== -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - micro-ftch@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -13026,35 +7576,22 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== mimic-fn@^2.1.0: version "2.1.0" @@ -13066,22 +7603,10 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -mimic-response@^1.0.0, mimic-response@^1.0.1: +min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -13100,6 +7625,13 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@9.0.3, minimatch@^9.0.1, minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -13107,110 +7639,65 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff" - integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== +minimist-options@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: - mkdirp "*" + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" -mkdirp@*, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA== - dependencies: - minimist "0.0.8" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== +mipd@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mipd/-/mipd-0.0.5.tgz#367ee796531c23f0631f129038700b1406663aec" + integrity sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA== dependencies: - minimist "^1.2.6" + viem "^1.1.4" -mnemonist@^0.38.0: - version "0.38.5" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" - integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== - dependencies: - obliterator "^2.0.0" +mixme@^0.5.1: + version "0.5.10" + resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.10.tgz#d653b2984b75d9018828f1ea333e51717ead5f51" + integrity sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q== -mocha@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.1.0.tgz#dbf1114b7c3f9d0ca5de3133906aea3dfc89ef7a" - integrity sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" +mlly@^1.2.0, mlly@^1.4.2, mlly@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" + integrity sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.0.3" + ufo "^1.3.2" -mocha@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" + integrity sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" @@ -13219,13 +7706,12 @@ mocha@^10.2.0: diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.2.0" + glob "8.1.0" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" @@ -13234,173 +7720,60 @@ mocha@^10.2.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -mocha@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" - integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA== - dependencies: - browser-stdout "1.3.0" - commander "2.11.0" - debug "3.1.0" - diff "3.3.1" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.3" - he "1.1.1" - mkdirp "0.5.1" - supports-color "4.4.0" - -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== - -module-error@^1.0.1, module-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" - integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== +mock-property@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.0.3.tgz#3e37c50a56609d548cabd56559fde3dd8767b10c" + integrity sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ== + dependencies: + define-data-property "^1.1.1" + functions-have-names "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + hasown "^2.0.0" + isarray "^2.0.5" + +modern-ahocorasick@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz#dec373444f51b5458ac05216a8ec376e126dd283" + integrity sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA== -motion@10.15.5: - version "10.15.5" - resolved "https://registry.yarnpkg.com/motion/-/motion-10.15.5.tgz#d336ddbdd37bc28bb99fbb243fe309df6c685ad6" - integrity sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw== +motion@10.16.2: + version "10.16.2" + resolved "https://registry.yarnpkg.com/motion/-/motion-10.16.2.tgz#7dc173c6ad62210a7e9916caeeaf22c51e598d21" + integrity sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ== dependencies: "@motionone/animation" "^10.15.1" - "@motionone/dom" "^10.15.5" - "@motionone/svelte" "^10.15.5" + "@motionone/dom" "^10.16.2" + "@motionone/svelte" "^10.16.2" "@motionone/types" "^10.15.1" "@motionone/utils" "^10.15.1" - "@motionone/vue" "^10.15.5" + "@motionone/vue" "^10.16.2" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +mri@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msgpackr-extract@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-2.2.0.tgz#4bb749b58d9764cfdc0d91c7977a007b08e8f262" - integrity sha512-0YcvWSv7ZOGl9Od6Y5iJ3XnPww8O7WLcpYMDwX+PAA/uXLDtyw94PJv9GLQV/nnp3cWlDhMoyKZIQLrx33sWog== - dependencies: - node-gyp-build-optional-packages "5.0.3" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-arm" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-x64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-win32-x64" "2.2.0" - -msgpackr@^1.5.4: - version "1.8.1" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.8.1.tgz#2298aed8a14f83e99df77d344cbda3e436f29b5b" - integrity sha512-05fT4J8ZqjYlR4QcRDIhLCYKUOHXk7C/xa62GzMKj74l3up9k2QZ3LgFc6qWdsPHl91QA2WLWqWc8b8t7GLNNw== - optionalDependencies: - msgpackr-extract "^2.2.0" - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-2.0.0.tgz#e20a2a14813fa435dc69c702909209ac0741919e" - integrity sha512-xIrqUVsinSlFjqj+OtEgCJ6MRl5hXjHMBPWsUt1ZGSRMx8rzm+7hCLE4wDeSA3COomlUC9zHCoUlvWjvAMtfDg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - web-encoding "^1.0.2" - -multibase@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" - integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== - dependencies: - "@multiformats/base-x" "^4.0.1" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" +ms@^3.0.0-canary.1: + version "3.0.0-canary.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-3.0.0-canary.1.tgz#c7b34fbce381492fd0b345d1cf56e14d67b77b80" + integrity sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g== -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multicodec@^3.0.1, multicodec@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" - integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== - dependencies: - uint8arrays "^3.0.0" - varint "^6.0.0" - -multiformats@^9.4.2: +multiformats@9.9.0, multiformats@^9.4.2: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -multihashes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-2.0.0.tgz#4fa599d2d726ec6de33bf1e6f6d9f04b2351ace9" - integrity sha512-Mp94Y+7h3oWQx8JickVghlWR6VhRPDnlv/KZEUyNP0ISSkNEe3kQkWoyIGt1B45D6cTLoulg+MP6bugVewx32Q== - dependencies: - buffer "^5.6.0" - multibase "^2.0.0" - varint "^5.0.0" - web-encoding "^1.0.2" - -multihashes@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" - integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== - dependencies: - multibase "^4.0.1" - uint8arrays "^3.0.0" - varint "^5.0.2" - -mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -13410,103 +7783,32 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -name-wrapper@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/name-wrapper/-/name-wrapper-1.0.0.tgz#6e064a29b9c7806e18032fdbf620a01de48cdfbb" - integrity sha512-7wTdz1ees+Q3GXFu/Mp76owXzWqYp+k2bB/W0yRnfFtnzU5Y8ga6VKbgl+UWYuCfndy0ylRSQpHPom/mEsDVqg== - dependencies: - "@ensdomains/ens-contracts" "0.0.3" - "@nomiclabs/hardhat-ethers" "^2.0.0" - "@nomiclabs/hardhat-waffle" "^2.0.0" - "@openzeppelin/contracts" "^4.0.0" - chalk "^4.1.0" - ethereum-waffle "^3.1.1" - ethers "^5.0.17" - hardhat "^2.0.4" - node-watch "^0.7.0" - qrcode-terminal "^0.12.0" - ramda "^0.27.1" - solium "^1.2.5" - -nan@^2.12.1: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - -nano-base32@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" - integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== - -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== +nanoid@^3.3.4, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== +napi-wasm@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" + integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.0: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -next-transpile-modules@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-9.0.0.tgz#133b1742af082e61cc76b02a0f12ffd40ce2bf90" - integrity sha512-VCNFOazIAnXn1hvgYYSTYMnoWgKgwlYh4lm1pKbSfiB3kj5ZYLcKVhfh3jkPOg1cnd9DP+pte9yCUocdPEUBTQ== +next-transpile-modules@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-10.0.1.tgz#1ca2b735b14781f4792f6214f808b600574e0348" + integrity sha512-4VX/LCMofxIYAVV58UmD+kr8jQflpLWvas/BQ4Co0qWLWzVh06FoZkECkrX5eEZT6oJFqie6+kfbTA3EZCVtdQ== dependencies: - enhanced-resolve "^5.7.0" - escalade "^3.1.1" + enhanced-resolve "^5.10.0" next@13.0.0: version "13.0.0" @@ -13534,120 +7836,80 @@ next@13.0.0: "@next/swc-win32-ia32-msvc" "13.0.0" "@next/swc-win32-x64-msvc" "13.0.0" -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nise@^5.1.2: - version "5.1.4" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" - integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^10.0.2" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - -no-case@^2.2.0, no-case@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +nise@^5.1.5: + version "5.1.9" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.9.tgz#0cb73b5e4499d738231a473cd89bd8afbb618139" + integrity sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww== dependencies: - lower-case "^1.1.1" + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/text-encoding" "^0.7.2" + just-extend "^6.2.0" + path-to-regexp "^6.2.1" node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== -node-addon-api@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== -node-fetch-native@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.1.1.tgz#b8977dd7fe6c5599e417301ed3987bca787d3d6f" - integrity sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw== +node-fetch-native@^1.4.0, node-fetch-native@^1.4.1, node-fetch-native@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.1.tgz#f95c74917d3cebc794cdae0cd2a9c7594aad0cb4" + integrity sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw== -node-fetch@2, node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@~2.6.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" +node-fetch-native@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.2.tgz#f439000d972eb0c8a741b65dcda412322955e1c6" + integrity sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w== -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== +node-fetch@^2.6.1, node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-gyp-build-optional-packages@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" - integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== + whatwg-url "^5.0.0" -node-gyp-build@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + version "4.8.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== -node-watch@^0.7.0: - version "0.7.3" - resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.3.tgz#6d4db88e39c8d09d3ea61d6568d80e5975abc7ab" - integrity sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -nodemon@^2.0.20: - version "2.0.20" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701" - integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw== +nodemon@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.3.tgz#244a62d1c690eece3f6165c6cdb0db03ebd80b76" + integrity sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ== dependencies: chokidar "^3.5.2" - debug "^3.2.7" + debug "^4" ignore-by-default "^1.0.1" minimatch "^3.1.2" pstree.remy "^1.1.8" - semver "^5.7.1" - simple-update-notifier "^1.0.7" + semver "^7.5.3" + simple-update-notifier "^2.0.0" supports-color "^5.5.0" touch "^3.1.0" undefsafe "^2.0.5" -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== - -nofilter@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" - integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== - nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -13655,7 +7917,7 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-package-data@^2.3.2: +normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -13665,13 +7927,6 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -13682,23 +7937,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -13707,29 +7945,12 @@ npm-run-path@^4.0.1: path-key "^3.0.0" npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + version "5.2.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" + integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== dependencies: path-key "^4.0.0" -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" @@ -13738,36 +7959,31 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +obj-multiplex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/obj-multiplex/-/obj-multiplex-1.0.0.tgz#2f2ae6bfd4ae11befe742ea9ea5b36636eabffc1" + integrity sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA== + dependencies: + end-of-stream "^1.4.0" + once "^1.4.0" + readable-stream "^2.3.3" -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.2, object-inspect@^1.9.0, object-inspect@~1.12.2: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== -object-is@^1.0.1: +object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -13780,119 +7996,85 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" + call-bind "^1.0.5" + define-properties "^1.2.1" has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== +object.entries@^1.1.6, object.entries@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== +object.fromentries@^2.0.6, object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.getownpropertydescriptors@^2.1.1: - version "2.1.5" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" - integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: - array.prototype.reduce "^1.0.5" call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: - isobject "^3.0.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.values@^1.1.5, object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== +object.values@^1.1.6, object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" obliterator@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== +ofetch@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.3.tgz#588cb806a28e5c66c2c47dd8994f9059a036d8c0" + integrity sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg== dependencies: - http-https "^1.0.0" + destr "^2.0.1" + node-fetch-native "^1.4.0" + ufo "^1.3.0" -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" - integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== - dependencies: - http-https "^1.0.0" +ohash@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" + integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== on-exit-leak-free@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -13914,102 +8096,60 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" is-wsl "^2.2.0" openpgp@^5.5.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-5.8.0.tgz#5e3033e8df59d1626ce65aa01b3cf5abee7ff26b" - integrity sha512-hq4+4s/vpjuwGgZSjplGp4j5FzSz+KwiFRiqMx+ZXr7VCK3CvTkktYilMTZMrf2vHsFH8aQ0596Lmn07HeKRmQ== + version "5.11.0" + resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-5.11.0.tgz#cec5b285d188148f7b5201b9aceb53850cc286a2" + integrity sha512-hytHsxIPtRhuh6uAmoBUThHSwHSX3imLu7x4453T+xkVqIw49rl22MRD4KQIAQdCDoVdouejzYgcuLmMA/2OAA== dependencies: asn1.js "^5.0.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" - -ordered-binary@^1.2.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" - integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +outdent@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" + integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== + outdent@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== + dependencies: + p-map "^2.0.0" p-limit@^1.1.0: version "1.3.0" @@ -14018,20 +8158,27 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" +p-limit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" + integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== + dependencies: + yocto-queue "^1.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -14039,13 +8186,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -14060,6 +8200,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -14077,37 +8222,10 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@^1.0.4: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -param-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== - dependencies: - no-case "^2.2.0" - -parcel@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.8.0.tgz#93461bb6c42c9b8979a933dec17626e6bc3b5eb9" - integrity sha512-p7Fo75CeMw5HC1luovYpBjzPbAJv/Gn7lxcs4f0LxcwBCWbkQ73zHgJXJQqnM38qQABEYEiQq6000+j+k5U/Mw== - dependencies: - "@parcel/config-default" "2.8.0" - "@parcel/core" "2.8.0" - "@parcel/diagnostic" "2.8.0" - "@parcel/events" "2.8.0" - "@parcel/fs" "2.8.0" - "@parcel/logger" "2.8.0" - "@parcel/package-manager" "2.8.0" - "@parcel/reporter-cli" "2.8.0" - "@parcel/reporter-dev-server" "2.8.0" - "@parcel/utils" "2.8.0" - chalk "^4.1.0" - commander "^7.0.0" - get-port "^4.2.0" - v8-compile-cache "^2.0.0" +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== parent-module@^1.0.0: version "1.0.1" @@ -14116,39 +8234,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -14157,7 +8242,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -14167,95 +8252,10 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" - integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== - dependencies: - camel-case "^3.0.0" - upper-case-first "^1.1.0" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -patch-package@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -patch-package@^6.2.2: - version "6.5.0" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.0.tgz#feb058db56f0005da59cfa316488321de585e88a" - integrity sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.6" - open "^7.4.2" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - yaml "^1.10.2" - -path-browserify@^1.0.0: +parse-ms@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" - integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== - dependencies: - no-case "^2.2.0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== - dependencies: - pinkie-promise "^2.0.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" + integrity sha512-LpH1Cf5EYuVjkBvCDBYvkUPh+iv2bk3FHflxHkpCYT0/FZ1d3N3uJaLiHr4yGuMcFUhv6eAivitTvWZI4B/chg== path-exists@^3.0.0: version "3.0.0" @@ -14267,16 +8267,11 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -14290,40 +8285,37 @@ path-key@^4.0.0: path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: - isarray "0.0.1" + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" +path-to-regexp@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" + integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + pathval@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: +pbkdf2@^3.0.17: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== @@ -14334,37 +8326,22 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -pegjs@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" - integrity sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^1.0.0: +picocolors@^1, picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pidtree@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" - integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== - -pidtree@^0.6.0: +pidtree@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== @@ -14374,23 +8351,16 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - pino-abstract-transport@v0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" @@ -14421,10 +8391,10 @@ pino@7.11.0: sonic-boom "^2.2.1" thread-stream "^0.15.1" -pirates@^4.0.1, pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-conf@^2.1.0: version "2.1.0" @@ -14441,51 +8411,60 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + +plur@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" + integrity sha512-qSnKBSZeDY8ApxwhfVIwKwF36KVJqb1/9nzYYq3j3vdwocULCXT8f8fQGkiw1Nk9BGfxiDagEe/pwakA+bOBqw== pngjs@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +pony-cause@^2.1.10: + version "2.1.10" + resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.10.tgz#828457ad6f13be401a075dbf14107a9057945174" + integrity sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw== -postcss-import@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: postcss-value-parser "^4.0.0" read-cache "^1.0.0" resolve "^1.1.7" -postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== +postcss-js@^4, postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" -postcss-load-config@^3.0.1, postcss-load-config@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" + lilconfig "^3.0.0" + yaml "^2.3.4" -postcss-nested@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" - integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - postcss-selector-parser "^6.0.10" + postcss-selector-parser "^6.0.11" postcss-selector-parser@6.0.10: version "6.0.10" @@ -14495,10 +8474,10 @@ postcss-selector-parser@6.0.10: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== +postcss-selector-parser@^6.0.11: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -14517,141 +8496,81 @@ postcss@8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.0.9, postcss@^8.4.21: - version "8.4.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" - integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== +postcss@^8.4.23, postcss@^8.4.32, postcss@^8.4.4: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.18, postcss@^8.4.4: - version "8.4.19" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" - integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== +postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" -posthtml-parser@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" - integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-parser@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" - integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-render@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" - integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== - dependencies: - is-json "^2.0.1" +preact@^10.16.0: + version "10.19.3" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.3.tgz#7a7107ed2598a60676c943709ea3efb8aaafa899" + integrity sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ== -posthtml@^0.16.4, posthtml@^0.16.5: - version "0.16.6" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" - integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== +preferred-pm@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.1.3.tgz#4125ea5154603136c3b6444e5f5c94ecf90e4916" + integrity sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w== dependencies: - posthtml-parser "^0.11.0" - posthtml-render "^3.0.0" - -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - -preact@10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" - integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== - -preact@^10.12.0: - version "10.13.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.13.0.tgz#f8bd3cf257a4dbe41da71a52131b79916d4ca89d" - integrity sha512-ERdIdUpR6doqdaSIh80hvzebHB7O6JxycOhyzAeLEchqOq/4yueslQbfnPwXaNhAYacFTyCclhwkEbOumT0tHw== - -preact@^10.5.9: - version "10.11.3" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.11.3.tgz#8a7e4ba19d3992c488b0785afcc0f8aa13c78d19" - integrity sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg== - -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== + find-up "^5.0.0" + find-yarn-workspace-root2 "1.2.16" + path-exists "^4.0.0" + which-pm "2.0.0" prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== - -prettier-plugin-organize-imports@^3.1.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.1.tgz#7e0e0a18457e0166e740daaff1aed1c08069fcb9" - integrity sha512-bty7C2Ecard5EOXirtzeCAqj4FU4epeuWrQt/Z+sh8UVEpBlBZ3m3KNPz2kFu7KgRTQx/C9o4/TdquPD1jOqjQ== - -prettier-plugin-organize-imports@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz#91993365e017daa5d0d28d8183179834224d8dd1" - integrity sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA== - -prettier-plugin-tailwindcss@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz#ca1071361dc7e2ed5d95a2ee36825ce45f814942" - integrity sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw== - -prettier-plugin-tailwindcss@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.4.tgz#ed0ca759bc948eb2bc48b419c6e57eb2adabdb0a" - integrity sha512-wMyugRI2yD8gqmMpZSS8kTA0gGeKozX/R+w8iWE+yiCZL09zY0SvfiHfHabNhjGhzxlQ2S2VuTxPE3T72vppCQ== - -prettier@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== +prettier-plugin-organize-imports@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz#77967f69d335e9c8e6e5d224074609309c62845e" + integrity sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog== -prettier@^2.1.2, prettier@^2.3.1, prettier@latest: - version "2.8.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.0.tgz#c7df58393c9ba77d6fba3921ae01faf994fb9dc9" - integrity sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA== +prettier-plugin-tailwindcss@^0.5.11: + version "0.5.11" + resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.11.tgz#1aa9308c3285b3cb7942aaeaec8d0e0775ac54d0" + integrity sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w== -prettier@^2.8.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" - integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== +prettier@^2.7.1, prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== -pretty-format@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" - integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - "@jest/schemas" "^29.4.3" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" react-is "^18.0.0" -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== +pretty-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" + integrity sha512-H2enpsxzDhuzRl3zeSQpQMirn8dB0Z/gxW96j06tMfTviUWvX14gjKb7qd1gtkUyYhDPuoNe00K5PqNvy2oQNg== + dependencies: + is-finite "^1.0.1" + parse-ms "^1.0.0" + plur "^1.0.0" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== process-nextick-args@~2.0.0: version "2.0.1" @@ -14663,36 +8582,7 @@ process-warning@^1.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== - dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" - -prompt@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.3.0.tgz#b1f6d47cb1b6beed4f0660b470f5d3ec157ad7ce" - integrity sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg== - dependencies: - "@colors/colors" "1.5.0" - async "3.2.3" - read "1.0.x" - revalidator "0.1.x" - winston "2.x" - -prompts@^2.0.1, prompts@^2.4.2: +prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -14709,99 +8599,30 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== +proper-lockfile@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-compare@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.4.0.tgz#90f6abffe734ef86d8e37428c5026268606a9c1b" - integrity sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg== + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== +proxy-compare@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" + integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== -pseudomap@^1.0.1, pseudomap@^1.0.2: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pull-cat@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== - -pull-defer@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-level@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" - integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== - dependencies: - level-post "^1.0.7" - pull-cat "^1.1.9" - pull-live "^1.0.1" - pull-pushable "^2.0.0" - pull-stream "^3.4.0" - pull-window "^2.1.4" - stream-to-pull-stream "^1.7.1" - -pull-live@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" - integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== - dependencies: - pull-cat "^1.1.9" - pull-stream "^3.4.0" - -pull-pushable@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" - integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== - -pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== - -pull-window@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== - dependencies: - looper "^2.0.0" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -14810,118 +8631,52 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pure-rand@^5.0.1: - version "5.0.5" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" - integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== +qr-code-styling@^1.6.0-rc.1: + version "1.6.0-rc.1" + resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.6.0-rc.1.tgz#6c89e185fa50cc9135101085c12ae95b06f1b290" + integrity sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q== + dependencies: + qrcode-generator "^1.4.3" -qrcode@1.4.4: +qrcode-generator@^1.4.3: version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" - integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== - dependencies: - buffer "^5.4.3" - buffer-alloc "^1.2.0" - buffer-from "^1.1.1" - dijkstrajs "^1.0.1" - isarray "^2.0.1" - pngjs "^3.3.0" - yargs "^13.2.4" + resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" + integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== -qrcode@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b" - integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" +qrcode-terminal-nooctal@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/qrcode-terminal-nooctal/-/qrcode-terminal-nooctal-0.12.1.tgz#45016aca0d82b2818de7af0a06d072ad671fbe2e" + integrity sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg== -qrcode@1.5.1, qrcode@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.1.tgz#0103f97317409f7bc91772ef30793a54cd59f0cb" - integrity sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg== +qrcode@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== dependencies: dijkstrajs "^1.0.1" encode-utf8 "^1.0.3" pngjs "^5.0.0" yargs "^15.3.1" -qs@6.11.0, qs@^6.10.3, qs@^6.7.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -query-string@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" - integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -query-string@^6.13.5: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== +query-string@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== dependencies: - decode-uri-component "^0.2.0" + decode-uri-component "^0.2.2" filter-obj "^1.1.0" split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" @@ -14933,55 +8688,38 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -ramda@^0.27.1: - version "0.27.2" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" - integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" +radix3@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.0.tgz#9745df67a49c522e94a33d0a93cf743f104b6e0d" + integrity sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1, raw-body@^2.4.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== +raw-body@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" +re-emitter@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/re-emitter/-/re-emitter-1.1.3.tgz#fa9e319ffdeeeb35b27296ef0f3d374dac2f52a7" + integrity sha512-bHJul9CWcocrS+w5e5QrKYXV9NkbSA9hxSEyhYuctwm6keY9NXR2Xt/4A0vbMP0QvuwyfEyb4bkowYXv1ziEbg== + react-dom@18.2.0, react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -14990,19 +8728,22 @@ react-dom@18.2.0, react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-error-overlay@6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-hot-toast@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.4.0.tgz#b91e7a4c1b6e3068fc599d3d83b4fb48668ae51d" - integrity sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA== +react-hot-toast@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.4.1.tgz#df04295eda8a7b12c4f968e54a61c8d36f4c0994" + integrity sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ== dependencies: goober "^2.1.10" -react-is@^16.13.1: +react-i18next@^13.2.2: + version "13.5.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.5.0.tgz#44198f747628267a115c565f0c736a50a76b1ab0" + integrity sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA== + dependencies: + "@babel/runtime" "^7.22.5" + html-parse-stringify "^3.0.1" + +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -15012,29 +8753,25 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-loading-skeleton@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/react-loading-skeleton/-/react-loading-skeleton-3.1.0.tgz#ce22942f1af77bfd60854417075792367f54f41e" - integrity sha512-j1U1CWWs68nBPOg7tkQqnlFcAMFF6oEK6MgqAo15f8A5p7mjH6xyKn2gHbkcimpwfO0VQXqxAswnSYVr8lWzjw== +react-loading-skeleton@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz#c71a3a17259d08e4064974aa0b07f150a09dfd57" + integrity sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA== -react-native-url-polyfill@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz#c1763de0f2a8c22cc3e959b654c8790622b6ef6a" - integrity sha512-w9JfSkvpqqlix9UjDvJjm1EjSt652zVQ6iwCIj1cVVkwXf4jQhQgTNXY6EVTwuAmUjg6BC6k9RHCBynoLFo3IQ== +react-native-webview@^11.26.0: + version "11.26.1" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" + integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw== dependencies: - whatwg-url-without-unicode "8.0.0-3" + escape-string-regexp "2.0.0" + invariant "2.2.4" react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-refresh@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" - integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== - -react-remove-scroll-bar@^2.3.3: +react-remove-scroll-bar@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== @@ -15042,12 +8779,12 @@ react-remove-scroll-bar@^2.3.3: react-style-singleton "^2.2.1" tslib "^2.0.0" -react-remove-scroll@2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz#afe6491acabde26f628f844b67647645488d2ea0" - integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA== +react-remove-scroll@2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" + integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== dependencies: - react-remove-scroll-bar "^2.3.3" + react-remove-scroll-bar "^2.3.4" react-style-singleton "^2.2.1" tslib "^2.1.0" use-callback-ref "^1.3.0" @@ -15062,13 +8799,13 @@ react-style-singleton@^2.2.1: invariant "^2.2.4" tslib "^2.0.0" -react-tooltip@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.7.0.tgz#d3b288191608c01fda62be6c8f26231a20ddda8d" - integrity sha512-bkCwwwL1T1amT6cTiA5wPPBYZ3duVVC+5FY4ZHgQzRyuXb6SxRxPZNKMWh4eSyHjMiFTSg0hfBd8Pad9iuCnWg== +react-tooltip@^5.26.0: + version "5.26.0" + resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.26.0.tgz#340d054cf952c43c2442f3af24bfc5c2b81fa80a" + integrity sha512-UBbwy3fo1KYDwRCOWwM6AEfQsk9shgVfNkXFqgwS33QHplzg7xao/7mX/6wd+lE6KSZzhUNTkB5TNk9SMaBV/A== dependencies: - "@floating-ui/dom" "^1.0.4" - classnames "^2.3.2" + "@floating-ui/dom" "^1.0.0" + classnames "^2.3.0" react@18.2.0, react@^18.2.0: version "18.2.0" @@ -15084,44 +8821,65 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" -read@1.0.x: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== +read-yaml-file@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" + integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== dependencies: - mute-stream "~0.0.4" + graceful-fs "^4.1.5" + js-yaml "^3.6.1" + pify "^4.0.1" + strip-bom "^3.0.0" -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== +readable-stream@2.2.9: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + integrity sha512-iuxqX7b7FYt08AriYECxUsK9KTXE3A/FenxIa3IPmvANHxaTP/wGIwwf+IidvvIDk/MsCp/oEV6A8CXo4SDcCg== dependencies: + buffer-shims "~1.0.0" core-util-is "~1.0.0" inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +readable-stream@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@^2.3.3, readable-stream@^2.3.7, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -15131,34 +8889,15 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~1.0.15: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -15171,169 +8910,76 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -regenerate@^1.2.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: - is-equal-shallow "^0.1.3" + indent-string "^4.0.0" + strip-indent "^3.0.0" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.1.0, regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + redis-errors "^1.0.0" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: - jsesc "~0.5.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== - dependencies: - is-finite "^1.0.0" - -request@^2.79.0, request@^2.85.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== - require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-from@^4.0.0: version "4.0.0" @@ -15345,15 +8991,10 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve.exports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" - integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== resolve@1.17.0: version "1.17.0" @@ -15362,74 +9003,48 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.8.1, resolve@~1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== +resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== - dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -revalidator@0.1.x: - version "0.1.8" - resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" - integrity sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rfdc@^1.3.0, rfdc@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== -rimraf@^2.2.8, rimraf@^2.6.3: +rimraf@^2.2.8: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -15443,12 +9058,14 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160-min@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" - integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== +rimraf@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== + dependencies: + glob "^10.3.7" -ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: +ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== @@ -15456,46 +9073,44 @@ ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: +rlp@^2.2.3: version "2.2.7" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== dependencies: bn.js "^5.2.0" -rollup@^3.10.0: - version "3.18.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.18.0.tgz#2354ba63ba66d6a09c652c3ea0dbcd9dad72bbde" - integrity sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg== - optionalDependencies: - fsevents "~2.3.2" - -rollup@^3.2.5: - version "3.21.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.21.2.tgz#c3a06bc8d235a0c0a8f1f7d9da73426f53706bdc" - integrity sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ== - optionalDependencies: - fsevents "~2.3.2" - -rpc-websockets@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.0.tgz#bbeb87572e66703ff151e50af1658f98098e2748" - integrity sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ== +rollup-plugin-visualizer@^5.9.2: + version "5.12.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" + integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== dependencies: - "@babel/runtime" "^7.17.2" - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" -run-parallel-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" - integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== +rollup@^4.0.2, rollup@^4.2.0: + version "4.9.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" + integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== dependencies: - queue-microtask "^1.2.2" + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.6" + "@rollup/rollup-android-arm64" "4.9.6" + "@rollup/rollup-darwin-arm64" "4.9.6" + "@rollup/rollup-darwin-x64" "4.9.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" + "@rollup/rollup-linux-arm64-gnu" "4.9.6" + "@rollup/rollup-linux-arm64-musl" "4.9.6" + "@rollup/rollup-linux-riscv64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-musl" "4.9.6" + "@rollup/rollup-win32-arm64-msvc" "4.9.6" + "@rollup/rollup-win32-ia32-msvc" "4.9.6" + "@rollup/rollup-win32-x64-msvc" "4.9.6" + fsevents "~2.3.2" run-parallel@^1.1.9: version "1.2.0" @@ -15504,26 +9119,29 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== +rust-verkle-wasm@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz#fd8396a7060d8ee8ea10da50ab6e862948095a74" + integrity sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA== -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +rustbn-wasm@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz#0407521fb55ae69eeb4968d01885d63efd1c4ff9" + integrity sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg== dependencies: - tslib "^1.9.0" + "@scure/base" "^1.1.1" -rxjs@^7.5.5, rxjs@^7.5.7: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== +safe-array-concat@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== dependencies: - tslib "^2.1.0" + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -15533,40 +9151,21 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== - dependencies: - events "^3.0.0" - -safe-json-utils@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" - integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== - safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" + integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" + call-bind "^1.0.5" + get-intrinsic "^1.2.2" is-regex "^1.1.4" -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - safe-stable-stringify@^2.1.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz#ec7b037768098bf65310d1d64370de0dc02353aa" - integrity sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA== + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -15578,24 +9177,12 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: +scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -scryptsy@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== - dependencies: - pbkdf2 "^3.0.3" - -secp256k1@4.0.3, secp256k1@^4.0.1, secp256k1@^4.0.2: +secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== @@ -15604,76 +9191,31 @@ secp256k1@4.0.3, secp256k1@^4.0.1, secp256k1@^4.0.2: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -seedrandom@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" - integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== - -semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@7.x, semver@^7.2.1, semver@^7.3.5, semver@^7.3.7: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +secp256k1@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" + integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + elliptic "^6.5.4" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +"semver@2 || 3 || 4 || 5", semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -sentence-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" - integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ== +semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: - no-case "^2.2.0" - upper-case-first "^1.1.2" + lru-cache "^6.0.0" serialize-javascript@6.0.0: version "6.0.0" @@ -15682,51 +9224,30 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== +set-function-length@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" + integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== + dependencies: + define-data-property "^1.1.1" + function-bind "^1.1.2" + get-intrinsic "^1.2.2" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" -set-value@^2.0.0, set-value@^2.0.1: +set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" setimmediate@^1.0.5: version "1.0.5" @@ -15746,13 +9267,6 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha3@^2.1.1, sha3@^2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -15777,11 +9291,12 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shiki@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.12.1.tgz#26fce51da12d055f479a091a5307470786f300cd" - integrity sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ== +shiki@^0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.7.tgz#c3c9e1853e9737845f1d2ef81b31bcfb07056d4e" + integrity sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg== dependencies: + ansi-sequence-parser "^1.1.0" jsonc-parser "^3.2.0" vscode-oniguruma "^1.7.0" vscode-textmate "^8.0.0" @@ -15795,11 +9310,21 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + signale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" @@ -15809,44 +9334,36 @@ signale@^1.4.0: figures "^2.0.0" pkg-conf "^2.1.0" -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" - integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== +simple-peer@^9.11.1: + version "9.11.1" + resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.11.1.tgz#9814d5723f821b778b7fb011bdefcbd1e788e6cc" + integrity sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw== dependencies: - is-arrayish "^0.3.1" + buffer "^6.0.3" + debug "^4.3.2" + err-code "^3.0.1" + get-browser-rtc "^1.1.0" + queue-microtask "^1.2.3" + randombytes "^2.1.0" + readable-stream "^3.6.0" -simple-update-notifier@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== +simple-update-notifier@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== dependencies: - semver "~7.0.0" + semver "^7.5.3" -sinon@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-15.0.1.tgz#ce062611a0b131892e2c18f03055b8eb6e8dc234" - integrity sha512-PZXKc08f/wcA/BMRGBze2Wmw50CWPiAH3E21EOi4B49vJ616vW4DQh4fQrqsYox2aNR/N3kCqLuB0PwwOucQrg== +sinon@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-17.0.1.tgz#26b8ef719261bf8df43f925924cccc96748e407a" + integrity sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g== dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "10.0.2" - "@sinonjs/samsam" "^7.0.1" - diff "^5.0.0" - nise "^5.1.2" + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.1.0" + nise "^5.1.5" supports-color "^7.2.0" sisteransi@^1.0.5: @@ -15854,44 +9371,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" @@ -15900,52 +9384,43 @@ slice-ansi@^5.0.0: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" -snake-case@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" - integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q== +slice-ansi@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== dependencies: - no-case "^2.2.0" + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== +smartwrap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-2.0.2.tgz#7e25d3dd58b51c6ca4aba3a9e391650ea62698a4" + integrity sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA== dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + array.prototype.flat "^1.2.3" + breakword "^1.0.5" + grapheme-splitter "^1.0.4" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + yargs "^15.1.0" -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== +socket.io-client@^4.5.1, socket.io-client@^4.7.2: + version "4.7.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.4.tgz#5f0e060ff34ac0a4b4c5abaaa88e0d1d928c64c8" + integrity sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg== dependencies: - kind-of "^3.2.0" + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.5.2" + socket.io-parser "~4.2.4" -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sol-digger@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/sol-digger/-/sol-digger-0.0.2.tgz#406c4a9d31e269e7f88eb1c2ea101318e5e09025" - integrity sha512-oqrw1E/X2WWYUYCzKDM5INDDH2nWOWos4p2Cw2OF52qoZcTDzlKMJQ5pJFXKOCADCg6KggBO5WYE/vNb+kJ0Hg== - -sol-explore@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.1.tgz#b59f073c69fe332560d5a10c32ba8ca7f2986cfb" - integrity sha512-cmwg7l+QLj2LE3Qvwrdo4aPYcNYY425+bN5VPkgCjkO0CiSz33G5vM5BmMZNrfd/6yNGwcm0KtwDJmh5lUElEQ== +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" solc@0.7.3: version "0.7.3" @@ -15962,64 +9437,6 @@ solc@0.7.3: semver "^5.5.0" tmp "0.0.33" -solc@^0.4.20: - version "0.4.26" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" - integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - -solc@^0.6.3: - version "0.6.12" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" - integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - -solium-plugin-security@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/solium-plugin-security/-/solium-plugin-security-0.1.1.tgz#2a87bcf8f8c3abf7d198e292e4ac080284e3f3f6" - integrity sha512-kpLirBwIq4mhxk0Y/nn5cQ6qdJTI+U1LO3gpoNIcqNaW+sI058moXBe2UiHs+9wvF9IzYD49jcKhFTxcR9u9SQ== - -solium@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/solium/-/solium-1.2.5.tgz#d036c30e2901e22137bbf342f106b17529ff22a8" - integrity sha512-NuNrm7fp8JcDN/P+SAdM5TVa4wYDtwVtLY/rG4eBOZrC5qItsUhmQKR/YhjszaEW4c8tNUYhkhQcwOsS25znpw== - dependencies: - ajv "^5.2.2" - chokidar "^1.6.0" - colors "^1.1.2" - commander "^2.9.0" - diff "^3.5.0" - eol "^0.9.1" - js-string-escape "^1.0.1" - lodash "^4.14.2" - sol-digger "0.0.2" - sol-explore "1.6.1" - solium-plugin-security "0.1.1" - solparse "2.2.8" - text-table "^0.2.0" - -solparse@2.2.8: - version "2.2.8" - resolved "https://registry.yarnpkg.com/solparse/-/solparse-2.2.8.tgz#d13e42dbed95ce32f43894f5ec53f00d14cf9f11" - integrity sha512-Tm6hdfG72DOxD40SD+T5ddbekWglNWjzDRSNq7ZDIOHVsyaJSeeunUuWNj4DE7uDrJK3tGQuX0ZTDZWNYsGPMA== - dependencies: - mocha "^4.0.1" - pegjs "^0.10.0" - yargs "^10.0.3" - sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -16032,41 +9449,7 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.13, source-map-support@^0.5.19, source-map-support@~0.5.20: +source-map-support@^0.5.13: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -16074,11 +9457,6 @@ source-map-support@^0.5.13, source-map-support@^0.5.19, source-map-support@~0.5. buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -16091,7 +9469,7 @@ source-map@0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== @@ -16101,18 +9479,31 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spawndamnit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" + integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA== + dependencies: + cross-spawn "^5.1.0" + signal-exit "^3.0.2" + spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -16123,52 +9514,32 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.17" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - split2@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" - integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +split@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae" + integrity sha512-3SVfJe2A0WZg3D+ZEtXqYkvpSGAVaZ1MgufNCeHioBESCqQFsuT1VcQufiopBfJZqh92ZwQ6ddL378iUSbqVNQ== + dependencies: + through "2" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - stack-generator@^1.0.7: version "1.1.0" resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-1.1.0.tgz#36f6a920751a6c10f499a13c32cbb5f51a0b8b25" @@ -16176,17 +9547,10 @@ stack-generator@^1.0.7: dependencies: stackframe "^1.0.2" -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== stackframe@^0.3.1, stackframe@~0.3: version "0.3.1" @@ -16222,100 +9586,51 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== +std-env@^3.5.0, std-env@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" + internal-slot "^1.0.4" stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== -stream-to-pull-stream@^1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== +stream-transform@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" + integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + mixme "^0.5.1" strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -string-argv@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" +string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -16324,7 +9639,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.0: +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== @@ -16333,46 +9648,56 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string-width@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" -string.prototype.trim@~1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -16381,75 +9706,46 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string_decoder@~1.0.0, string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - ansi-regex "^4.1.0" + safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: - ansi-regex "^6.0.1" + ansi-regex "^2.0.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - is-utf8 "^0.2.0" + ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -16467,20 +9763,24 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -sturdy-websocket@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz#20a58fd53372ef96eaa08f3c61c91a10b07c7c05" - integrity sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg== +strip-literal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-2.0.0.tgz#5d063580933e4e03ebb669b12db64d2200687527" + integrity sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA== + dependencies: + js-tokens "^8.0.2" styled-jsx@5.1.0: version "5.1.0" @@ -16489,32 +9789,30 @@ styled-jsx@5.1.0: dependencies: client-only "0.0.1" -sucrase@^3.20.3: - version "3.32.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" - integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +sucrase@^3.20.3, sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== dependencies: "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" - glob "7.1.6" + glob "^10.3.10" lines-and-columns "^1.1.6" mz "^2.7.0" pirates "^4.0.1" ts-interface-checker "^0.1.9" -superstruct@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" - integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== - -supports-color@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== - dependencies: - has-flag "^2.0.0" +superstruct@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.3.tgz#de626a5b49c6641ff4d37da3c7598e7a87697046" + integrity sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg== -supports-color@8.1.1, supports-color@^8, supports-color@^8.0.0: +supports-color@8.1.1, supports-color@^8: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -16540,221 +9838,110 @@ supports-color@^7.1.0, supports-color@^7.2.0: dependencies: has-flag "^4.0.0" -supports-color@^9.2.2: - version "9.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.3.tgz#a6e2c97fc20c80abecd69e50aebe4783ff77d45a" - integrity sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA== - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svgo@^2.4.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -swap-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" - integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ== - dependencies: - lower-case "^1.1.1" - upper-case "^1.1.1" - -swarm-js@^0.1.40: - version "0.1.42" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" - integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^11.8.5" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" - -synckit@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" - integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== - dependencies: - "@pkgr/utils" "^2.3.1" - tslib "^2.4.0" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -table@^6.0.9, table@^6.8.0: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" +system-architecture@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" + integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== -tailwindcss@^3, tailwindcss@^3.2.1, tailwindcss@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250" - integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== +tailwindcss@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== dependencies: + "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" chokidar "^3.5.3" - color-name "^1.1.4" - detective "^5.2.1" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.2.12" + fast-glob "^3.3.0" glob-parent "^6.0.2" is-glob "^4.0.3" - lilconfig "^2.0.6" + jiti "^1.19.1" + lilconfig "^2.1.0" micromatch "^4.0.5" normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.18" - postcss-import "^14.1.0" - postcss-js "^4.0.0" - postcss-load-config "^3.1.4" - postcss-nested "6.0.0" - postcss-selector-parser "^6.0.10" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.1" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" -tailwindcss@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07" - integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ== +tap-out@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tap-out/-/tap-out-2.1.0.tgz#c093079a915036de8b835bfa3297f14458b15358" + integrity sha512-LJE+TBoVbOWhwdz4+FQk40nmbIuxJLqaGvj3WauQw3NYYU5TdjoV3C0x/yq37YAvVyi+oeBXmWnxWSjJ7IEyUw== dependencies: - arg "^5.0.2" - chokidar "^3.5.3" - color-name "^1.1.4" - detective "^5.2.1" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.12" - glob-parent "^6.0.2" - is-glob "^4.0.3" - lilconfig "^2.0.6" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.0.9" - postcss-import "^14.1.0" - postcss-js "^4.0.0" - postcss-load-config "^3.1.4" - postcss-nested "6.0.0" - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.1" + re-emitter "1.1.3" + readable-stream "2.2.9" + split "1.0.0" + trim "0.0.1" + +tap-spec@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tap-spec/-/tap-spec-5.0.0.tgz#7329e4e66e8aa68da2a164215abbb903a7c5d352" + integrity sha512-zMDVJiE5I6Y4XGjlueGXJIX2YIkbDN44broZlnypT38Hj/czfOXrszHNNJBF/DXR8n+x6gbfSx68x04kIEHdrw== + dependencies: + chalk "^1.0.0" + duplexer "^0.1.1" + figures "^1.4.0" + lodash "^4.17.10" + pretty-ms "^2.1.0" + repeat-string "^1.5.2" + tap-out "^2.1.0" + through2 "^2.0.0" tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tape@^4.6.3: - version "4.16.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.16.1.tgz#8d511b3a0be1a30441885972047c1dac822fd9be" - integrity sha512-U4DWOikL5gBYUrlzx+J0oaRedm2vKLFbtA/+BRAXboGWpXO7bMP8ddxlq3Cse2bvXFQ0jZMOj6kk3546mvCdFg== - dependencies: - call-bind "~1.0.2" - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - glob "~7.2.3" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.1.4" - minimist "~1.2.6" - object-inspect "~1.12.2" - resolve "~1.22.1" - resumer "~0.0.0" - string.prototype.trim "~1.2.6" - through "~2.3.8" - -tar@^4.0.2: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -term-size@^2.2.1: +tape@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.7.4.tgz#5c515282a513599e9d1434665640900faf066a3b" + integrity sha512-uaigP+5H9+E8aaMLKMbGkDd33G5TKu4UFpapqT7um+8xSHQQUS2lJNd+hTj9fFVQLg8bmcIofwc8b9f6+ISSfQ== + dependencies: + "@ljharb/resumer" "^0.0.1" + "@ljharb/through" "^2.3.11" + array.prototype.every "^1.1.5" + call-bind "^1.0.5" + deep-equal "^2.2.3" + defined "^1.0.1" + dotignore "^0.1.2" + for-each "^0.3.3" + get-package-type "^0.1.0" + glob "^7.2.3" + has-dynamic-import "^2.1.0" + hasown "^2.0.0" + inherits "^2.0.4" + is-regex "^1.1.4" + minimist "^1.2.8" + mock-property "^1.0.3" + object-inspect "^1.13.1" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.5" + resolve "^2.0.0-next.5" + string.prototype.trim "^1.2.8" + +term-size@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -terser@^5.2.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.0.tgz#29362c6f5506e71545c73b069ccd199bb28f7f54" - integrity sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== - dependencies: - array-back "^1.0.3" - typical "^2.6.0" - -testrpc@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" - integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== +tesm-node@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tesm-node/-/tesm-node-1.3.1.tgz#306da50594ef3f1eef64f2bb55110047c583bb62" + integrity sha512-zyNa8mIJoTN8S61XSr9oYJaZft7/hAE7tPYu2Nu4FALJAexjgE4apD0NUp1x/8Bn4PmX16r0aHrwipUG82+Q1w== text-table@^0.2.0: version "0.2.0" @@ -16782,7 +9969,7 @@ thread-stream@^0.15.1: dependencies: real-require "^0.1.0" -through2@^2.0.3: +through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -16790,36 +9977,25 @@ through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.8, through@~2.3.4, through@~2.3.8: +through@2: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== +tinybench@^2.5.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" + integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA== -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" +tinypool@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.2.tgz#84013b03dc69dacb322563a475d4c0a9be00f82a" + integrity sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ== -title-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" - integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q== - dependencies: - no-case "^2.2.0" - upper-case "^1.0.3" +tinyspy@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.0.tgz#9dc04b072746520b432f77ea2c2d17933de5d6ce" + integrity sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg== tmp@0.0.33, tmp@^0.0.33: version "0.0.33" @@ -16828,48 +10004,11 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -16877,21 +10016,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -16904,14 +10028,6 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -16925,9 +10041,9 @@ tr46@~0.0.3: integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== traverse@^0.6.6: - version "0.6.7" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe" - integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg== + version "0.6.8" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.8.tgz#5e5e0c41878b57e4b73ad2f3d1e36a715ea4ab15" + integrity sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA== tree-kill@^1.2.2: version "1.2.2" @@ -16939,74 +10055,30 @@ treeify@^1.1.0: resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== - -ts-command-line-args@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" - integrity sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" - integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-jest@^29.0.5: - version "29.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.0.5.tgz#c5557dcec8fe434fcb8b70c3e21c6b143bfce066" - integrity sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "^21.0.1" - -ts-node@^10.8.1, ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" @@ -17022,147 +10094,144 @@ ts-node@^10.8.1, ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsc@^2.0.3, tsc@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/tsc/-/tsc-2.0.4.tgz#5f6499146abea5dca4420b451fa4f2f9345238f5" - integrity sha512-fzoSieZI5KKJVBYGvwbVZs/J5za84f2lSTLPYf6AGiIf43tZ3GNrI1QzTLcjtyDDP4aLxd46RTZq1nQxe7+k5Q== - -tsconfck@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-2.0.3.tgz#47b79fc6be3c5ec6ec9b3862d1c959e85038b117" - integrity sha512-o3DsPZO1+C98KqHMdAbWs30zpxD30kj8r9OLA4ML1yghx4khNDzaaShNalfluh8ZPPhzKe3qyVCP1HiZszSAsw== - -tsconfig-paths-jest@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths-jest/-/tsconfig-paths-jest-0.0.1.tgz#a977a5648c434037b69884e644ce1b82bf025b68" - integrity sha512-YKhUKqbteklNppC2NqL7dv1cWF8eEobgHVD5kjF1y9Q4ocqpBiaDlYslQ9eMhtbqIPRrA68RIEXqknEjlxdwxw== +tsconfck@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.1.tgz#803ca0ed8f2f2075639e4061238f04b99ba85e85" + integrity sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg== -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" + json5 "^1.0.2" minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz#f8ef7d467f08ae3a695335bf1ece088c5538d2c1" - integrity sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow== +tsconfig-paths@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== dependencies: - json5 "^2.2.1" + json5 "^2.2.2" minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@1.14.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^2.3.0, tslib@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== -tsup@^6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.7.0.tgz#416f350f32a07b6ae86792ad7e52b0cafc566d64" - integrity sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ== +tsup@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.0.2.tgz#c63192a08386515103e2c44ac5a23bdff75c5fa1" + integrity sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ== dependencies: bundle-require "^4.0.0" cac "^6.7.12" chokidar "^3.5.1" debug "^4.3.1" - esbuild "^0.17.6" + esbuild "^0.19.2" execa "^5.0.0" globby "^11.0.3" joycon "^3.0.1" - postcss-load-config "^3.0.1" + postcss-load-config "^4.0.1" resolve-from "^5.0.0" - rollup "^3.2.5" + rollup "^4.0.2" source-map "0.8.0-beta.0" sucrase "^3.20.3" tree-kill "^1.2.2" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== +tty-table@^4.1.5: + version "4.2.3" + resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.3.tgz#e33eb4007a0a9c976c97c37fa13ba66329a5c515" + integrity sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA== dependencies: - safe-buffer "^5.0.1" + chalk "^4.1.2" + csv "^5.5.3" + kleur "^4.1.5" + smartwrap "^2.0.2" + strip-ansi "^6.0.1" + wcwidth "^1.0.1" + yargs "^17.7.1" -turbo-darwin-64@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.6.3.tgz#fad7e078784b0fafc0b1f75ce9378828918595f5" - integrity sha512-QmDIX0Yh1wYQl0bUS0gGWwNxpJwrzZU2GIAYt3aOKoirWA2ecnyb3R6ludcS1znfNV2MfunP+l8E3ncxUHwtjA== +turbo-darwin-64@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.12.2.tgz#4b5e48065b874b2379a45c2db71ce69d7c35c027" + integrity sha512-Aq/ePQ5KNx6XGwlZWTVTqpQYfysm1vkwkI6kAYgrX5DjMWn+tUXrSgNx4YNte0F+V4DQ7PtuWX+jRG0h0ZNg0A== -turbo-darwin-arm64@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.6.3.tgz#f0a32cae39e3fcd3da5e3129a94c18bb2e3ed6aa" - integrity sha512-75DXhFpwE7CinBbtxTxH08EcWrxYSPFow3NaeFwsG8aymkWXF+U2aukYHJA6I12n9/dGqf7yRXzkF0S/9UtdyQ== +turbo-darwin-arm64@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.12.2.tgz#f952ac488480b869316bc12cf3c022e4e40a6be8" + integrity sha512-wTr+dqkwJo/eXE+4SPTSeNBKyyfQJhI6I9sKVlCSBmtaNEqoGNgdVzgMUdqrg9AIFzLIiKO+zhfskNaSWpVFow== -turbo-linux-64@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.6.3.tgz#8ddc6ac55ef84641182fe5ff50647f1b355826b0" - integrity sha512-O9uc6J0yoRPWdPg9THRQi69K6E2iZ98cRHNvus05lZbcPzZTxJYkYGb5iagCmCW/pq6fL4T4oLWAd6evg2LGQA== +turbo-linux-64@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.12.2.tgz#160ae2e3baf7c3738b9bc2b6b99ba8e2435e9034" + integrity sha512-BggBKrLojGarDaa2zBo+kUR3fmjpd6bLA8Unm3Aa2oJw0UvEi3Brd+w9lNsPZHXXQYBUzNUY2gCdxf3RteWb0g== -turbo-linux-arm64@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.6.3.tgz#846c1dc84d8dc741651906613c16acccba30428c" - integrity sha512-dCy667qqEtZIhulsRTe8hhWQNCJO0i20uHXv7KjLHuFZGCeMbWxB8rsneRoY+blf8+QNqGuXQJxak7ayjHLxiA== +turbo-linux-arm64@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.12.2.tgz#32d3408bc112cf433e3cec37b048da38f28a82ea" + integrity sha512-v/apSRvVuwYjq1D9MJFsHv2EpGd1S4VoSdZvVfW6FaM06L8CFZa92urNR1svdGYN28YVKwK9Ikc9qudC6t/d5A== -turbo-windows-64@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.6.3.tgz#89ac819fa76ad31d12fbfdeb3045bcebd0d308eb" - integrity sha512-lKRqwL3mrVF09b9KySSaOwetehmGknV9EcQTF7d2dxngGYYX1WXoQLjFP9YYH8ZV07oPm+RUOAKSCQuDuMNhiA== +turbo-windows-64@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.12.2.tgz#bef2607f8fe88e5e337daa016ec417191086794e" + integrity sha512-3uDdwXcRGkgopYFdPDpxQiuQjfQ12Fxq0fhj+iGymav0eWA4W4wzYwSdlUp6rT22qOBIzaEsrIspRwx1DsMkNg== -turbo-windows-arm64@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.6.3.tgz#977607c9a51f0b76076c8b158bafce06ce813070" - integrity sha512-BXY1sDPEA1DgPwuENvDCD8B7Hb0toscjus941WpL8CVd10hg9pk/MWn9CNgwDO5Q9ks0mw+liDv2EMnleEjeNA== +turbo-windows-arm64@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.12.2.tgz#784c91ef77b8db17c441d78e487f0b3d570275bf" + integrity sha512-zNIHnwtQfJSjFi7movwhPQh2rfrcKZ7Xv609EN1yX0gEp9GxooCUi2yNnBQ8wTqFjioA2M5hZtGJQ0RrKaEm/Q== turbo@latest: - version "1.6.3" - resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.6.3.tgz#ec26cc8907c38a9fd6eb072fb10dad254733543e" - integrity sha512-FtfhJLmEEtHveGxW4Ye/QuY85AnZ2ZNVgkTBswoap7UMHB1+oI4diHPNyqrQLG4K1UFtCkjOlVoLsllUh/9QRw== + version "1.12.2" + resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.12.2.tgz#aa66ce09dc134f8c3adc7ba9491eb30b4d9491db" + integrity sha512-BcoQjBZ+LJCMdjzWhzQflOinUjek28rWXj07aaaAQ8T3Ehs0JFSjIsXOm4qIbo52G4xk3gFVcUtJhh/QRADl7g== optionalDependencies: - turbo-darwin-64 "1.6.3" - turbo-darwin-arm64 "1.6.3" - turbo-linux-64 "1.6.3" - turbo-linux-arm64 "1.6.3" - turbo-windows-64 "1.6.3" - turbo-windows-arm64 "1.6.3" - -tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: + turbo-darwin-64 "1.12.2" + turbo-darwin-arm64 "1.12.2" + turbo-linux-64 "1.12.2" + turbo-linux-arm64 "1.12.2" + turbo-windows-64 "1.12.2" + turbo-windows-arm64 "1.12.2" + +tus-js-client@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/tus-js-client/-/tus-js-client-3.1.3.tgz#bac62c14c770ba71492072179b55292baa19a074" + integrity sha512-n9k6rI/nPOuP2TaqPG6Ogz3a3V1cSH9en7N0VH4gh95jmG8JA58TJzLms2lBfb7aKVb3fdUunqYEG3WnQnZRvQ== + dependencies: + buffer-from "^1.1.2" + combine-errors "^3.0.3" + is-stream "^2.0.0" + js-base64 "^3.7.2" + lodash.throttle "^4.1.1" + proper-lockfile "^4.1.2" + url-parse "^1.5.7" + +tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -tweetnacl@^1.0.0, tweetnacl@^1.0.3: +tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== @@ -17174,11 +10243,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -17189,155 +10263,121 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + type-fest@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== +type-fest@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +type-fest@^3.0.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== -typechain@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-3.0.0.tgz#d5a47700831f238e43f7429b987b4bb54849b92e" - integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: - command-line-args "^4.0.7" - debug "^4.1.1" - fs-extra "^7.0.0" - js-sha3 "^0.8.0" - lodash "^4.17.15" - ts-essentials "^6.0.3" - ts-generator "^0.1.1" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" -typechain@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.1.1.tgz#9c2e8012c2c4c586536fc18402dcd7034c4ff0bd" - integrity sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ== +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== 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" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== dependencies: - is-typedarray "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" -typedoc-plugin-markdown@^3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.14.0.tgz#17b99ee3ab0d21046d253f185f7669e80d0d7891" - integrity sha512-UyQLkLRkfTFhLdhSf3RRpA3nNInGn+k6sll2vRXjflaMNwQAAiB61SYbisNZTg16t4K1dt1bPQMMGLrxS0GZ0Q== +typedoc-plugin-markdown@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.17.1.tgz#c33f42363c185adf842f4699166015f7fe0ed02b" + integrity sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw== dependencies: handlebars "^4.7.7" -typedoc@^0.23.24: - version "0.23.24" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.24.tgz#01cf32c09f2c19362e72a9ce1552d6e5b48c4fef" - integrity sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA== +typedoc@^0.25.8: + version "0.25.8" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.8.tgz#7d0e1bf12d23bf1c459fd4893c82cb855911ff12" + integrity sha512-mh8oLW66nwmeB9uTa0Bdcjfis+48bAjSH3uqdzSuSawfduROQLlXw//WSNZLYDdhmMVB7YcYZicq6e8T0d271A== dependencies: lunr "^2.3.9" - marked "^4.2.5" - minimatch "^5.1.2" - shiki "^0.12.1" + marked "^4.3.0" + minimatch "^9.0.3" + shiki "^0.14.7" -typescript-logging@^1.0.0: +typescript-logging@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/typescript-logging/-/typescript-logging-1.0.1.tgz#e0f8157943780cf5943aacd53b04cb73d108a0f9" integrity sha512-zp28ABme0m5q/nXabBaY9Hv/35N8lMH4FsvhpUO0zVi4vFs3uKlb5br2it61HAZF5k+U0aP6E67j0VD0IzXGpQ== dependencies: stacktrace-js "1.3.1" -typescript@4.7.4, typescript@>=3.0.0, typescript@^4.5.3, typescript@^4.7.4, typescript@^4.9.3: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -typewise-core@^1.2, typewise-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== - -typewise@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== - dependencies: - typewise-core "^1.2.0" +typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== -typewiselite@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" - integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== - -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== +ua-parser-js@^1.0.37: + version "1.0.37" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" + integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== +ufo@^1.3.0, ufo@^1.3.1, ufo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" + integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -uint8arrays@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" - integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^3.0.0: +uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== dependencies: multiformats "^9.4.2" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -17348,85 +10388,97 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +uncrypto@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -underscore@^1.8.3: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - -undici@^5.4.0: - version "5.13.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.13.0.tgz#56772fba89d8b25e39bddc8c26a438bd73ea69bb" - integrity sha512-UDZKtwb2k7KRsK4SdXWG7ErXiL7yTGgLWvk2AXO1JMjgjh404nFo6tWSCM2xMpJwMPx3J8i/vfqEh1zOqvj82Q== +undici@^5.14.0: + version "5.28.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" + integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== dependencies: - busboy "^1.6.0" + "@fastify/busboy" "^2.0.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +unenv@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.9.0.tgz#469502ae85be1bd3a6aa60f810972b1a904ca312" + integrity sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + consola "^3.2.3" + defu "^6.1.3" + mime "^3.0.0" + node-fetch-native "^1.6.1" + pathe "^1.1.1" + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +unique-names-generator@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/unique-names-generator/-/unique-names-generator-4.7.1.tgz#966407b12ba97f618928f77322cfac8c80df5597" + integrity sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow== universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== +unstorage@^1.9.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.10.1.tgz#bf8cc00a406e40a6293e893da9807057d95875b0" + integrity sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw== + dependencies: + anymatch "^3.1.3" + chokidar "^3.5.3" + destr "^2.0.2" + h3 "^1.8.2" + ioredis "^5.3.2" + listhen "^1.5.5" + lru-cache "^10.0.2" + mri "^1.2.0" + node-fetch-native "^1.4.1" + ofetch "^1.3.3" + ufo "^1.3.1" + +untun@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6" + integrity sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + citty "^0.1.5" + consola "^3.2.3" + pathe "^1.1.1" -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" -upper-case-first@^1.1.0, upper-case-first@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" - integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ== - dependencies: - upper-case "^1.1.1" - -upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== +uqr@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" + integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== uri-js@^4.2.2: version "4.4.1" @@ -17435,40 +10487,18 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urijs@^1.19.7: - version "1.19.11" - resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" - integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== +url-parse@^1.5.7: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: - punycode "1.3.2" - querystring "0.2.0" + querystringify "^2.1.1" + requires-port "^1.0.0" use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + version "1.3.1" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.1.tgz#9be64c3902cbd72b07fe55e56408ae3a26036fd0" + integrity sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ== dependencies: tslib "^2.0.0" @@ -17480,31 +10510,19 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: +use-sync-external-store@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -utf-8-validate@5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" - integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== - dependencies: - node-gyp-build "^4.3.0" - -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== +utf-8-validate@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" + integrity sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA== dependencies: node-gyp-build "^4.3.0" -utf8@3.0.0, utf8@^3.0.0: +utf8@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== @@ -17514,18 +10532,7 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -util@^0.12.0, util@^0.12.3, util@^0.12.4: +util@^0.12.4: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -17536,60 +10543,21 @@ util@^0.12.0, util@^0.12.3, util@^0.12.4: is-typed-array "^1.1.3" which-typed-array "^1.1.2" -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@^2.0.0, v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -17598,73 +10566,105 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -valtio@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.9.0.tgz#d5d9f664319eaf18dd98f758d50495eca28eb0b8" - integrity sha512-mQLFsAlKbYascZygFQh6lXuDjU5WHLoeZ8He4HqMnWfasM96V6rDbeFkw1XeG54xycmDonr/Jb4xgviHtuySrA== +valtio@1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" + integrity sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw== dependencies: - proxy-compare "2.4.0" + proxy-compare "2.5.1" use-sync-external-store "1.2.0" -varint@^5.0.0, varint@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== +video-stream-merger@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/video-stream-merger/-/video-stream-merger-4.0.1.tgz#b0061251bd211121d1256ccf9e2be9477e59d5cb" + integrity sha512-VazYSr8tk6S/zkOq5jpR/ryy1HnGxm5XCw+d2Ejpqy1m6d71oZpyFG82dUkgAo7dg/lk3k4TqvJPtuRUtR8URA== + +viem@^1.0.0, viem@^1.1.4, viem@^1.20.3, viem@^2.7.12, viem@^2.8.16: + version "2.7.12" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.7.12.tgz#c79f68d77f5e46c3b78443df54afb067cbc827c3" + integrity sha512-NbV+Bycw0I4X8y6A04mgJ6+Imt7xXwflgnqisR3JXoJRNc77YSaQCscFN/dmwGLESTkgegJvi+j4nZY32GTpwQ== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + +vite-node@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.3.1.tgz#a93f7372212f5d5df38e945046b945ac3f4855d2" + integrity sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng== dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + cac "^6.7.14" + debug "^4.3.4" + pathe "^1.1.1" + picocolors "^1.0.0" + vite "^5.0.0" -viem@^0.3.26: - version "0.3.31" - resolved "https://registry.yarnpkg.com/viem/-/viem-0.3.31.tgz#8a53da23f3cdfb6c7bbe8f3ecf6f73e8b81e0894" - integrity sha512-4B7oUQkYCGmnd/W+T/miFudx/pZ3V3mRdv3nl1tPy60W5Zlt2lIH+XN9Q0pkHe+5n2Eto/aFZYwRdqGsj6MHmA== - dependencies: - "@adraffy/ens-normalize" "1.9.0" - "@noble/curves" "1.0.0" - "@noble/hashes" "1.3.0" - "@scure/bip32" "1.3.0" - "@scure/bip39" "1.2.0" - "@wagmi/chains" "0.2.16" - abitype "0.8.2" - isomorphic-ws "5.0.0" - ws "8.12.0" - -vite-tsconfig-paths@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.0.5.tgz#c7c54e2cf7ccc5e600db565cecd7b368a1fa8889" - integrity sha512-/L/eHwySFYjwxoYt1WRJniuK/jPv+WGwgRGBYx3leciR5wBeqntQpUE6Js6+TJemChc+ter7fDBKieyEWDx4yQ== +vite-tsconfig-paths@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.1.tgz#28762938151e7c80aec9d70c57e65ddce43a576f" + integrity sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw== dependencies: debug "^4.1.1" globrex "^0.1.2" - tsconfck "^2.0.1" + tsconfck "^3.0.1" -vite@^4.1.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0" - integrity sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg== +vite@^5.0.0: + version "5.0.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== dependencies: - esbuild "^0.16.14" - postcss "^8.4.21" - resolve "^1.22.1" - rollup "^3.10.0" + esbuild "^0.19.3" + postcss "^8.4.32" + rollup "^4.2.0" optionalDependencies: - fsevents "~2.3.2" + fsevents "~2.3.3" + +vite@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.4.tgz#14e9d3e7a6e488f36284ef13cebe149f060bcfb6" + integrity sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.35" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.3.1.tgz#2d7e9861f030d88a4669392a4aecb40569d90937" + integrity sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ== + dependencies: + "@vitest/expect" "1.3.1" + "@vitest/runner" "1.3.1" + "@vitest/snapshot" "1.3.1" + "@vitest/spy" "1.3.1" + "@vitest/utils" "1.3.1" + acorn-walk "^8.3.2" + chai "^4.3.10" + debug "^4.3.4" + execa "^8.0.1" + local-pkg "^0.5.0" + magic-string "^0.30.5" + pathe "^1.1.1" + picocolors "^1.0.0" + std-env "^3.5.0" + strip-literal "^2.0.0" + tinybench "^2.5.1" + tinypool "^0.8.2" + vite "^5.0.0" + vite-node "1.3.1" + why-is-node-running "^2.2.2" + +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== vscode-oniguruma@^1.7.0: version "1.7.0" @@ -17676,776 +10676,52 @@ vscode-textmate@^8.0.0: resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== -wagmi@^0.7.7: - version "0.7.15" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-0.7.15.tgz#da83c1e22641efb33899e203715f1ae4eb28f9b1" - integrity sha512-UGkcgL/bBg880uGEOTmKuWSxe+OtbPv0x1zKrDWi0McwB6o7W1trVVdZ1hCkHemB9HA2BN+svv3ALo9ZG4Xt8Q== - dependencies: - "@coinbase/wallet-sdk" "^3.5.3" - "@tanstack/query-sync-storage-persister" "^4.14.5" - "@tanstack/react-query" "^4.14.5" - "@tanstack/react-query-persist-client" "^4.14.5" - "@wagmi/core" "^0.6.12" - "@walletconnect/ethereum-provider" "^1.8.0" - abitype "^0.1.7" - use-sync-external-store "^1.2.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - -web-encoding@^1.0.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" - integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== - dependencies: - util "^0.12.3" - optionalDependencies: - "@zxing/text-encoding" "0.9.0" - -web3-bzz@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" - integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" - -web3-bzz@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" - integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - -web3-bzz@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.1.tgz#81397be5ce262d03d82b92e9d8acc11f8a609ea1" - integrity sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w== - dependencies: - "@types/node" "^12.12.6" - got "12.1.0" - swarm-js "^0.1.40" - -web3-core-helpers@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" - integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.11" - web3-utils "1.2.11" - -web3-core-helpers@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" - integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== - dependencies: - web3-eth-iban "1.7.4" - web3-utils "1.7.4" - -web3-core-helpers@1.8.1, web3-core-helpers@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz#7904747b23fd0afa4f2c86ed98ea9418ccad7672" - integrity sha512-ClzNO6T1S1gifC+BThw0+GTfcsjLEY8T1qUp6Ly2+w4PntAdNtKahxWKApWJ0l9idqot/fFIDXwO3Euu7I0Xqw== - dependencies: - web3-eth-iban "1.8.1" - web3-utils "1.8.1" - -web3-core-method@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" - integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-utils "1.2.11" - -web3-core-method@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" - integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== - dependencies: - "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-utils "1.7.4" - -web3-core-method@1.8.1, web3-core-method@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.1.tgz#0fc5a433a9fc784c447522f141c0a8e0163c7790" - integrity sha512-oYGRodktfs86NrnFwaWTbv2S38JnpPslFwSSARwFv4W9cjbGUW3LDeA5MKD/dRY+ssZ5OaekeMsUCLoGhX68yA== - dependencies: - "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.8.1" - web3-core-promievent "1.8.1" - web3-core-subscriptions "1.8.1" - web3-utils "1.8.1" - -web3-core-promievent@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" - integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-promievent@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" - integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-promievent@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz#f334c8b2ceac6c2228f06d2a515f6d103157f036" - integrity sha512-9mxqHlgB0MrZI4oUIRFkuoJMNj3E7btjrMv3sMer/Z9rYR1PfoSc1aAokw4rxKIcAh+ylVtd/acaB2HKB7aRPg== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" - integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-providers-http "1.2.11" - web3-providers-ipc "1.2.11" - web3-providers-ws "1.2.11" - -web3-core-requestmanager@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" - integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== - dependencies: - util "^0.12.0" - web3-core-helpers "1.7.4" - web3-providers-http "1.7.4" - web3-providers-ipc "1.7.4" - web3-providers-ws "1.7.4" - -web3-core-requestmanager@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz#272ffa55b7b568ecbc8e4a257ca080355c31c60e" - integrity sha512-x+VC2YPPwZ1khvqA6TA69LvfFCOZXsoUVOxmTx/vIN22PrY9KzKhxcE7pBSiGhmab1jtmRYXUbcQSVpAXqL8cw== - dependencies: - util "^0.12.0" - web3-core-helpers "1.8.1" - web3-providers-http "1.8.1" - web3-providers-ipc "1.8.1" - web3-providers-ws "1.8.1" - -web3-core-subscriptions@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" - integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-core-subscriptions@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" - integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" - -web3-core-subscriptions@1.8.1, web3-core-subscriptions@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz#f5ae1380e92746eadfab6475b8a70ef5a1be6bbf" - integrity sha512-bmCMq5OeA3E2vZUh8Js1HcJbhwtsE+yeMqGC4oIZB3XsL5SLqyKLB/pU+qUYqQ9o4GdcrFTDPhPg1bgvf7p1Pw== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.8.1" - -web3-core@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" - integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-requestmanager "1.2.11" - web3-utils "1.2.11" - -web3-core@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" - integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== - dependencies: - "@types/bn.js" "^5.1.0" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-requestmanager "1.7.4" - web3-utils "1.7.4" - -web3-core@1.8.1, web3-core@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.1.tgz#050b1c408d1f9b7ae539e90f7f7d1b7a7d10578b" - integrity sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw== - dependencies: - "@types/bn.js" "^5.1.0" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-core-requestmanager "1.8.1" - web3-utils "1.8.1" - -web3-eth-abi@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" - integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== - dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.11" - -web3-eth-abi@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" - integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== - dependencies: - "@ethersproject/abi" "^5.6.3" - web3-utils "1.7.4" - -web3-eth-abi@1.8.1, web3-eth-abi@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz#47455d6513217c4b0866fea6f97b1c4afa0b6535" - integrity sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w== - dependencies: - "@ethersproject/abi" "^5.6.3" - web3-utils "1.8.1" - -web3-eth-accounts@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" - integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-eth-accounts@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" - integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== - dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.2" - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-util "^7.0.10" - scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" - -web3-eth-accounts@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz#1ce7387721f118aeb0376291e4d8bbe2ac323406" - integrity sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg== - dependencies: - "@ethereumjs/common" "2.5.0" - "@ethereumjs/tx" "3.3.2" - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-util "^7.0.10" - scrypt-js "^3.0.1" - uuid "^9.0.0" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-utils "1.8.1" - -web3-eth-contract@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" - integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-utils "1.2.11" - -web3-eth-contract@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" - integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== - dependencies: - "@types/bn.js" "^5.1.0" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-utils "1.7.4" - -web3-eth-contract@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz#bdf3e33bbcb79a1b6144dffd6a0deefd2e459272" - integrity sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg== - dependencies: - "@types/bn.js" "^5.1.0" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-core-promievent "1.8.1" - web3-core-subscriptions "1.8.1" - web3-eth-abi "1.8.1" - web3-utils "1.8.1" - -web3-eth-ens@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" - integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-contract "1.2.11" - web3-utils "1.2.11" - -web3-eth-ens@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" - integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-contract "1.7.4" - web3-utils "1.7.4" - -web3-eth-ens@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz#e78a9651fea8282abe8565b001819e2d645e5929" - integrity sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-promievent "1.8.1" - web3-eth-abi "1.8.1" - web3-eth-contract "1.8.1" - web3-utils "1.8.1" - -web3-eth-iban@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" - integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.2.11" - -web3-eth-iban@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" - integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== - dependencies: - bn.js "^5.2.1" - web3-utils "1.7.4" - -web3-eth-iban@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz#c6484e5d68ca644aa78431301e7acd5df24598d1" - integrity sha512-DomoQBfvIdtM08RyMGkMVBOH0vpOIxSSQ+jukWk/EkMLGMWJtXw/K2c2uHAeq3L/VPWNB7zXV2DUEGV/lNE2Dg== - dependencies: - bn.js "^5.2.1" - web3-utils "1.8.1" - -web3-eth-personal@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" - integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth-personal@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" - integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - -web3-eth-personal@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz#00b5ff1898b62044d25ed5fddd8486168d4827cf" - integrity sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-net "1.8.1" - web3-utils "1.8.1" - -web3-eth@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" - integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== - dependencies: - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-accounts "1.2.11" - web3-eth-contract "1.2.11" - web3-eth-ens "1.2.11" - web3-eth-iban "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" - integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== - dependencies: - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-accounts "1.7.4" - web3-eth-contract "1.7.4" - web3-eth-ens "1.7.4" - web3-eth-iban "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - -web3-eth@1.8.1, web3-eth@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.1.tgz#395f6cd56edaac5dbb23e8cec9886c3fd32c430e" - integrity sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg== - dependencies: - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-core-subscriptions "1.8.1" - web3-eth-abi "1.8.1" - web3-eth-accounts "1.8.1" - web3-eth-contract "1.8.1" - web3-eth-ens "1.8.1" - web3-eth-iban "1.8.1" - web3-eth-personal "1.8.1" - web3-net "1.8.1" - web3-utils "1.8.1" - -web3-net@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" - integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-net@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" - integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" - -web3-net@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.1.tgz#2bed4d4b93166724129ec33d0e5dea98880285f4" - integrity sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ== - dependencies: - web3-core "1.8.1" - web3-core-method "1.8.1" - web3-utils "1.8.1" - -web3-provider-engine@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" - integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^3.0.0" - eth-json-rpc-infura "^3.1.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" - integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== - dependencies: - web3-core-helpers "1.2.11" - xhr2-cookies "1.1.0" - -web3-providers-http@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" - integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== +wagmi@^2.5.11, wagmi@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.5.7.tgz#dc5bdba16e8d5a3e8d7af6ab545cf438b564d9d1" + integrity sha512-xSuteMXFKvra4xDddqZbZv/gQlcg3X+To5AoZW7WoAm0iVlF8/vEGpQzCWy6KZs2z1szxPrr0YnH3Zr1Qj4E/A== dependencies: - web3-core-helpers "1.7.4" - xhr2-cookies "1.1.0" + "@wagmi/connectors" "4.1.14" + "@wagmi/core" "2.6.5" + use-sync-external-store "1.2.0" -web3-providers-http@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.1.tgz#8aa89c11a9272f11ddb74b871273c92225faa28d" - integrity sha512-1Zyts4O9W/UNEPkp+jyL19Jc3D15S4yp8xuLTjVhcUEAlHo24NDWEKxtZGUuHk4HrKL2gp8OlsDbJ7MM+ESDgg== - dependencies: - abortcontroller-polyfill "^1.7.3" - cross-fetch "^3.1.4" - es6-promise "^4.2.8" - web3-core-helpers "1.8.1" - -web3-providers-ipc@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" - integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-providers-ipc@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" - integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.7.4" - -web3-providers-ipc@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz#6128a3a3a824d06bf0efcfe86325401f8691a5ca" - integrity sha512-nw/W5nclvi+P2z2dYkLWReKLnocStflWqFl+qjtv0xn3MrUTyXMzSF0+61i77+16xFsTgzo4wS/NWIOVkR0EFA== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.8.1" - -web3-providers-ws@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" - integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - websocket "^1.0.31" - -web3-providers-ws@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" - integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" - websocket "^1.0.32" - -web3-providers-ws@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz#5e5370e07eb8c615ed298ebc8602b283c7b7d649" - integrity sha512-TNefIDAMpdx57+YdWpYZ/xdofS0P+FfKaDYXhn24ie/tH9G+AB+UBSOKnjN0KSadcRSCMBwGPRiEmNHPavZdsA== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.8.1" - websocket "^1.0.32" - -web3-shh@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" - integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-net "1.2.11" - -web3-shh@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" - integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-net "1.7.4" - -web3-shh@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.1.tgz#028a95cf9d3a36020380938b9a127610efbb9be7" - integrity sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g== - dependencies: - web3-core "1.8.1" - web3-core-method "1.8.1" - web3-core-subscriptions "1.8.1" - web3-net "1.8.1" - -web3-utils@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" + defaults "^1.0.3" -web3-utils@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" - integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== +web3-utils@^1.3.4: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" + integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== dependencies: + "@ethereumjs/util" "^8.1.0" bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" + ethereum-cryptography "^2.1.2" ethjs-unit "0.1.6" number-to-bn "1.7.0" randombytes "^2.1.0" utf8 "3.0.0" -web3-utils@1.8.1, web3-utils@^1.0.0-beta.31, web3-utils@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.1.tgz#f2f7ca7eb65e6feb9f3d61056d0de6bbd57125ff" - integrity sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ== +webextension-polyfill-ts@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca" + integrity sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw== dependencies: - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" + webextension-polyfill "^0.7.0" -web3-utils@^1.3.4: - version "1.9.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.9.0.tgz#7c5775a47586cefb4ad488831be8f6627be9283d" - integrity sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ== - dependencies: - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" +"webextension-polyfill@>=0.10.0 <1.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz#ccb28101c910ba8cf955f7e6a263e662d744dbb8" + integrity sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g== -web3@*, web3@^1.0.0-beta.34, web3@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.1.tgz#8ea67215ef5f3a6f6d3381800b527242ea22885a" - integrity sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ== - dependencies: - web3-bzz "1.8.1" - web3-core "1.8.1" - web3-eth "1.8.1" - web3-eth-personal "1.8.1" - web3-net "1.8.1" - web3-shh "1.8.1" - web3-utils "1.8.1" - -web3@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - -web3@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" - integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== - dependencies: - web3-bzz "1.7.4" - web3-core "1.7.4" - web3-eth "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-shh "1.7.4" - web3-utils "1.7.4" +webextension-polyfill@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.7.0.tgz#0df1120ff0266056319ce1a622b09ad8d4a56505" + integrity sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw== webidl-conversions@^3.0.0: version "3.0.1" @@ -18457,49 +10733,6 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -websocket@1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -websocket@^1.0.28, websocket@^1.0.31, websocket@^1.0.32: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -whatwg-fetch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - -whatwg-url-without-unicode@8.0.0-3: - version "8.0.0-3" - resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" - integrity sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig== - dependencies: - buffer "^5.4.3" - punycode "^2.1.1" - webidl-conversions "^5.0.0" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -18528,27 +10761,57 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-pm@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" + integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== + dependencies: + load-yaml-file "^0.2.0" + path-exists "^4.0.0" -which-typed-array@^1.1.2: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" + has-tostringtag "^1.0.1" which@^1.2.9: version "1.3.1" @@ -18564,10 +10827,20 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== +why-is-node-running@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" + integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" window-size@^1.1.1: version "1.1.1" @@ -18577,57 +10850,24 @@ window-size@^1.1.1: define-property "^1.0.0" is-number "^3.0.0" -winston@2.x: - version "2.4.7" - resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.7.tgz#5791fe08ea7e90db090f1cb31ef98f32531062f1" - integrity sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg== - dependencies: - async "^2.6.4" - colors "1.0.x" - cycle "1.0.x" - eyes "0.1.x" - isstream "0.1.x" - stack-trace "0.0.x" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - workerpool@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrap-ansi@^6.2.0: version "6.2.0" @@ -18638,138 +10878,64 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - -ws@8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" - integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== - -ws@8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@^5.1.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== -ws@^7.4.0, ws@^7.4.5, ws@^7.4.6, ws@^7.5.1: +ws@^7.4.6, ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@^8.5.0: +ws@~8.11.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== - dependencies: - cookiejar "^2.1.1" - -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -xxhash-wasm@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" - integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== - -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -18780,17 +10946,12 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== - yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -18800,30 +10961,27 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2: +yaml@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + +yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.3.tgz#9b3a4c8aff9821b696275c79a8bee8399d945207" - integrity sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg== +yaml@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: +yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -18831,31 +10989,16 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.1, yargs-parser@^21.1.1: +yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== - dependencies: - camelcase "^4.1.0" - yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -18879,41 +11022,7 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.1.0" - -yargs@^13.2.4: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.3.1: +yargs@^15.1.0, yargs@^15.3.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== @@ -18930,20 +11039,7 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.3.1: - version "17.7.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" - integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yargs@^17.7.1: +yargs@^17.5.1, yargs@^17.7.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -18956,26 +11052,6 @@ yargs@^17.7.1: y18n "^5.0.5" yargs-parser "^21.1.1" -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" @@ -18986,9 +11062,21 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zustand@^4.1.1: - version "4.1.4" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.1.4.tgz#b0286da4cc9edd35e91c96414fa54bfa4652a54d" - integrity sha512-k2jVOlWo8p4R83mQ+/uyB8ILPO2PCJOf+QVjcL+1PbMCk1w5OoPYpAIxy9zd93FSfmJqoH6lGdwzzjwqJIRU5A== +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + +zustand@4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.1.tgz#0cd3a3e4756f21811bd956418fdc686877e8b3b0" + integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== + dependencies: + use-sync-external-store "1.2.0" + +zustand@^4.3.9: + version "4.5.0" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.0.tgz#141354af56f91de378aa6c4b930032ab338f3ef0" + integrity sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A== dependencies: use-sync-external-store "1.2.0"